Table des matières:

IN-FORMA : une Plataforma De Informações Sobre Sua Cidade : 5 étapes
IN-FORMA : une Plataforma De Informações Sobre Sua Cidade : 5 étapes

Vidéo: IN-FORMA : une Plataforma De Informações Sobre Sua Cidade : 5 étapes

Vidéo: IN-FORMA : une Plataforma De Informações Sobre Sua Cidade : 5 étapes
Vidéo: Conheça quais são os 5 PRINCIPAIS CONCEITOS da Geografia 2024, Juillet
Anonim
IN-FORMA: une Plataforma De Informações Sobre Sua Cidade
IN-FORMA: une Plataforma De Informações Sobre Sua Cidade

Quem nunca saiu de casa com roupas de frio e quando chegou no destino estava fazendo o maior sol?! Imaginez, então, poder acompanhar em tempo real a temperatura de diversos pontos de sua cidade, semper estando preparado para o que der e vier! Ou, então, evitar transitar pelos principais pontos de alagamento durante uma forte tempestade e, até mesmo, saber o índice de radiação UV antes de ir para uma praia ou um parque para se proteger adequadamente contra os danos do sol. Com a IN-FORMA, tudo isso é possível em um só lugar! Você pode acompanhar o trânsito de uma determinada região e ver os principais pontos turísticos por perto. Além de ter acesso a um banco de informações, você pode utilizá-las da forma que desejar. Se você gosta de velejar, por exemplo, pode saber a condição dos ventos no momento para analisar a melhor hora de sair de casa.

A IN-FORMA é a mais nova plateforma web que integra diversos tipos de informações a respeito da sua cidade. São espalhados em diversos pontos da região sensores de temperatura, umidade, luminosidade, entre outros, que fornecem em tempo real as condições daquele local. Além de contar com todos esses sensores, a plateforma tem conexão direta com o Google Maps, trazendo informações sobre o trânsito e localização, e pode conectar-se a outros sistemas de mapeamento da região. Uma das inovações trazidas pela plataforma é que ela pode contar com a interação do usuário, sendo este permitido a solicitar autorização para integrar to plataforma suas próprias aplicações fazendo uso dos dados disponibilizados us to us to us to ariosu osalaso sollicitaos ario aplicações aplicações fazendo uso dos dados disponibilizados us to us ario sollicitálas, po.

A IN-FORMA, além de poder integrar diversos tipos de aplicações desenvolvidas pelos usuários e empresas, conta com um sistema de mapeamento de inundações desenvolvida pela própria. As inundações trazem muitos problemas à população, tanto de saúde pública, quanto ambientais e sociais. Por isso, em cidades com sistemas de drenagem ineficientes, é de extrema importância a pontuação das regiões mais críticas. Com a plateforma, então, é possível saber o nível de água nas ruas em vários pontos da cidade, atraves de aparelhos instalados nas vias ou calçadas. Este sistema é de extrema utilidade em dias de chuva, pois informa os locais mais prejudicados pela água, evitando que a população transite por estes. Além disso, o sistema de drenagem das ruas pode ser melhorado com os dados fornecidos pela plataforma, que mostram o nível da água ao longo do dia e os pontos criticos de alagamento da região.

Étape 1: Arquitetura Da Plataforma

Arquitetura Da Plataforma
Arquitetura Da Plataforma

A proposta é o desenvolvimento de uma plataforma aberta para integração de diversos dispositivos. Une arquitetura do sistema é baseada na comunicação entre uma placa Dragonboard, munida da placa de conexão 96boards, com o service AWS da Amazon utilizando o Framework Mosquitto perpetuar a comunicação via protocolo MQTT.

Un 96boards est à munida de um Atmel ATMEGA328 que provês digitais e analógicas e, com isto, allowe a integração da Qualcomm Dragonboard 410c com sensores. A comunicação entre a Dragonboard e a 96boards se dá através do protocolo I²C (Inter-Integrated Circuit).

Os dados coletados no dispositivos são enviados para o servidor por meio do protocolo de comunicação TCP/IP. Aucun service en tant qu'informations sur les disponibilités de l'API publique, possibilité d'obtenir des informations sur la qualité requise pour l'utilisation de HTTP sur une API Restfull. Ha, inclus, une manière simple de visualiser les données dans un tableau de bord basé sur HTML5.

Étape 2: Placa Dragonboard

Plaça Dragonboard
Plaça Dragonboard

Un Qualcomm Dragonboard 410c é um ambiente de desenvolvimento para prototipagem de projets. Un équivalent matériel placa possui ao Moto G, fabricado pela Motorola. Aucun desenvolvimento da plataforma ela foi utilizada como servidor local para o sistema. Nela é executada o Framework Mosquitto pour promouvoir une interação via MQTT entre o servidor local e o servidor principal. Pas de lien https://www.digitalocean.com/community/questions/h… é possível encontrar um tutorial de como instalar o MQTT no Debian. Ce système opérationnel est utilisé sur la place de développement sur Linux Linaro, basé sur Debian. Pas de lien https://www.embarcados.com.br/linux-linaro-alip-na… é possível encontrar um tutorial de como instalar o Linux Linaro-ALIP na Qualcomm DragonBoard 410C.

Un Qualcomm Dragonboard 410c précis est connecté à la mezzanine pour recevoir les informations fournies sans capteur et enviá-las pour le service MQTT local ou à distance. Utilizamos python e comunicação série.

O código abaixo detalha este processo. Une função readData envia bytes até que o Mezzanine faça uma leitura e devolva a resposta. Ao receber a resposta, lê uma linha inteira do serial que deverá estar no formato "S(código do sensor):(valor do sensor)". Após a leitura, separa o código do valor e retorna.

import serial ser = serial. Serial('/dev/tty96B0', 115200)

def readData(ser):

tandis que ser.inWaiting() == 0: ser.write([0])

txt = ''

while True: c = ser.read() if c == '\n': break elif c == '\r': continue

txt = txt + c

dados = txt.split(":")

retour dados

dados = readData(ser)

Com os dados recebidos, é possível publicar aucun servidor MQTT. A comunicação com o servidor é feita utilizando a biblioteca paho. O código abaixo se conecta a um servidor e, através da função publicar, publica no servidor com o tópico adequado.

importer paho.mqtt.client en tant que paho SERVIDOR_LOGIN = "" SERVIDOR_SENHA = "" SERVIDOR_ENDERECO = "localhost"

client = paho. Client()

client.username_pw_set(SERVIDOR_LOGIN, SERVIDOR_SENHA) client.connect(SERVIDOR_ENDERECO, 1883) client.loop_start()

def publicar(dados, cli):

try: publish_name = '' if dados[0] == 'S1': publish_name = "/qualcomm/umidade" elif dados[0] == 'S2': publish_name = "/qualcomm/temperatura" elif dados[0] = = 'S3': publier_nom = "/qualcomm/luminosidade" elif dados[0] == 'S4': publier_nom = "/qualcomm/luzvisivel" elif dados[0] == 'S5': publier_nom = "/qualcomm/infravermelho " elif dados[0] == 'S6': publish_name = "/qualcomm/ultravioleta" else: return False

tandis que cli.publish(publish_name, dados[1])[0] != 0:

pass print publish_name+" = "+dados[1]

tandis que cli.loop() != 0:

passe

sauf:

passe

O código completo pode ser visto no arquivo "mezzanine_mqtt.py".

Pour la communication avec le serveur Dragonboard est connecté avec le serveur avec une connexion 3G, en utilisant un modem 3G HSUPA Clé USB MF 190 en utilisant un opérateur TIM.

Para emissão de alertas, o sistema conta com um servidor PABX Asterisc. Semper que é necessário émetir um alerta, o servidor é responsável por enviar uma chamada de voz ou uma mensagem de texto para o sistema de emergência da região. Para instalar o Asterisc você pode seguir o link (https://www.howtoforge.com/tutorial/how-to-install-asterisk-on-debian/).

Étape 3: Placa Mezzanine Com Sensores

Plaça Mezzanine Com Sensores
Plaça Mezzanine Com Sensores

Três Sensores se conectam com o Mezzanine: luminosidade, luz solar e temperatura e umidade.

I) Capteur de luminosidade

O capteur LDR é um conduit ativado pela luminosidade que incide sobre ele. A leitura é feita atraves da porta analógica A0.

Leitura do capteur: ldr = analogRead(LDRPIN)/10.0

II) Capteur de lumière solaire "Grove - Sunlight Sensor"

Este é um capteur multicanal capaz de detectar luz ultravioleta, infra-vermelho e luz visível.

Bibliothèque:

Utilizando a biblioteca disponível através do link abaixo, conectamos o sensor atraves da porta I2C disponível. A leitura é feita da seguinte maneira:

SI114X SI1145 = SI114X(); void setup(){ SI114X SI1145 = SI114X(); }

boucle vide(){

vl = SI1145. LireVisible();

ir = SI1145. ReadIR();

uv = étage((float)SI1145. ReadUV()/100);

}

III) Capteur de température et d'humidité

"Grove - Capteur de température et d'humidité Pro" https://wiki.seeed.cc/Grove-Temperature_and_Humidi… Este sensor é capaz de detectar temperatura e umidade relativa.

Bibliothèque:

Conectamos este sensor na porta analógica A0 e utilizamos o seguinte código para leitura:

DHT dht (DHTPIN, DHTTYPE);

void setup(){

dht.begin(); }

boucle vide(){

h = dht.readHumidity();

t = dht.readTemperature();

}

Para juntar a leitura dos 3 sensores no Mezzanine, criamos uma máquina de estados, onde cada estado é responsável por uma leitura. Como são 6 leituras no total, teremos 6 estados, organizado da seguinte forma:

int ETAT = 0;

boucle vide(){

commutateur (ÉTAT){

cas 0: … rupture;

cas 5:

… Pause;

}

ÉTAT = (ÉTAT+1)%6;

}

Para evitar leituras desnecessárias, o estágio atual só executa quando a Qualcomm DragonBoard 410c está pronta para receber as informações. Para isto, utilizamos uma espera ocupada:

void loop(){ while (!Serial.available()) delay(10); while (Serial.available()) Serial.read();

}

Cada leitura de sensor et enviada individualmento após a leitura atraves da função sendSensorData. Esta função recebe o código do sensor (inteiro), o dado a ser enviado e o último dado utilizado. Se houver mudanças na leitura ela é enviada. Un função dtostrf converte de double para string. Já un função sprintf formata une chaîne pour ser enviada pela serial com un função Serial.println.

char sendBuffer[20], temp[10];void sendSensorData(int sensorCode, double data, double lastData){ if(data == lastData) return; dtostrf(données, 4, 2, temp); sprintf(sendBuffer, "S%d:%s", sensorCode, temp); Serial.println(sendBuffer); } boucle vide(){ … case 0: h = dht.readHumidity(); sendSensorData(1, h, lastH); dernierH = h; Pause; … }

O código completo pode ser visto no arquivo "sensores.ino".

Étape 4: Capteur De Alagamento Utilizando NodeMCU

Capteur De Alagamento Utilizando NodeMCU
Capteur De Alagamento Utilizando NodeMCU
Capteur De Alagamento Utilizando NodeMCU
Capteur De Alagamento Utilizando NodeMCU
Capteur De Alagamento Utilizando NodeMCU
Capteur De Alagamento Utilizando NodeMCU

O NodeMCU foi utilizado para fazer a leitura do nível da água, utilizando um sensor de fácil criação. Utilizando um pedaço de aproximadamente 30cm de um cabo de par trançado, quattro fios foram dispostos. O processo de eletrólise cria um resistance virtal quando o dispositivo é inundado.

Para o desenvolvimento do código, utilizada a IDE do Arduino com as bibliotecas: Pubsub-client (https://pubsubclient.knolleary.net/) ESP8266 (https://github.com/esp8266/Arduino).

O código completo pode ser visto no arquivo "sensorAlagamento.ino".

Étape 5: Tableau de bord

Tableau de bord
Tableau de bord

A Dashboard tem como principal objetivo organizar e apresentar melhor os conteúdos informativos dos sensores coletados, dando a eles um design mais interativo, além trazer informações a respeito de pontos turísticos de diversos pontos da cidade e do trânsito local. Foi utilizada a tecnologia HTML5 para seu desenvolvimento.

Conseillé: