Taula de continguts:

IN-FORMA: a Plataforma D'Informacions sobre Sua Cidade: 5 Steps
IN-FORMA: a Plataforma D'Informacions sobre Sua Cidade: 5 Steps

Vídeo: IN-FORMA: a Plataforma D'Informacions sobre Sua Cidade: 5 Steps

Vídeo: IN-FORMA: a Plataforma D'Informacions sobre Sua Cidade: 5 Steps
Vídeo: Conheça quais são os 5 PRINCIPAIS CONCEITOS da Geografia 2024, Desembre
Anonim
IN-FORMA: a Plataforma De Informações Sobre Sua Cidade
IN-FORMA: a 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 ?! Imagine, então, poder acompanyar em tempo real a temperatura de diversos ponts de la seva ciutat, sempre estant preparat per al que der e vier! Ou, então, evitar transitar pelos principals ponts d'alagament durant uma forte tempestade e, até mesmo, saber o índice de radiação UV abans d'ir per a uma praia o um parc per a ser protegit adequadament contra els danos do sol. Com a IN-FORMA, tot això és possible fins a un lloc tan sol! Você pode acompanhar o trânsito de uma determinada região e ver os principals pontos turísticos por perto. Alem de ter acesso a um bank of informationções, você can use-the da forma that desejar. Se você gosta de velejar, per exemple, pot saber a condició dos vents no moment per analitzar a millor hora de sair de casa.

A IN-FORMA és una nova plataforma web que integra diversos tipus d'informació a respeit de la seva ciutat. São espalhados em diversos ponts da região sensores de temperatura, umidade, luminosidade, entre altres, que fornecem em tempo real as conditions daquele local. Além de contar com tots esses sensores, a plataforma tem conexão direta com o Google Maps, trazendo informações sobre o trânsito e localização, i podeu connectar-se a altres sistemes de mapeamento da região. Uma das inovações trazidas pela plataforma é que ela can contar com a interação do usuário, sendo este permitido a solicitar autorización para integrar a plataforma suas próprias aplicações fazendo uso dos dados disponibles i, inclusive, podeu sol·licitar acessió per tornar-les visíveis als altres usuaris.

A IN-FORMA, além de poder integrar diversos tipus d’aplicacions desenvolupades pelos usuaris i empreses, compta amb un sistema de mapeament d’inundacions desenvolupades pela pròpria. As inundações trazem muitos problemes à populació, tant de salut pública, quant ambientais i socials. Per tant, em cidades com sistemes de drenagem ineficients, és d’extrema importància a pontuação das regiões mais critiques. Com a plataforma, então, é possível saber o nível de água nas ruas em vários pontos da cidade, através d'aparells instal·lats en vies o calçades. Este sistema é de extrema utilidad em dias de chuva, pois informa os locais mais prejudicados pela água, evitando que a la població transita per aquests. 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 críticos de alagamento da região.

Pas 1: Arquitetura Da Plataforma

Arquitetura Da Plataforma
Arquitetura Da Plataforma

A proposta és o desenvolupament de la seva plataforma aberta per a la integració de diversos dispositius. A arquitetura do sistema é baseada na comunicação entre uma placa Dragonboard, munida da placa de conexão 96boards, com o serviço AWS da Amazon utilitzant o Framework Mosquitto per perpetuar a comunicação via protocolo MQTT.

A 96boards està munida de um Atmel ATMEGA328 que prové d'entrades digitals i analògiques i, com això, permet una integració de Qualcomm Dragonboard 410c amb sensors. Una comunicació entre un Dragonboard i un 96boards es dóna através del protocol I²C (Circuit inter-integrat).

Os dados coletados nos dispositivos são enviados para o servidor por meio do protocolo de comunicação TCP / IP. No hi ha servidor com a informació disponible disponible a través de l’API pública, possibilitat d’obtenir informació útil per obtenir un usuari per mitjà de requeriments HTTP a la vostra API Restfull. Inclou, incloent-hi, una manera senzilla de visualitzar-los en un Dashboard basat en HTML5.

Pas 2: Placa Dragonboard

Placa Dragonboard
Placa Dragonboard

A Qualcomm Dragonboard 410c és un ambient de desenvolupament per a prototipatge de projectes. A placa possui hardware equivalent al Moto G, fabricado pela Motorola. No hi ha desenvolupament de la plataforma que ha estat utilitzat com a servidor local per al sistema. Nela és executat o Framework Mosquitto per promoure una interacció mitjançant MQTT entre el servidor local i el servidor principal. Cap enllaç https://www.digitalocean.com/community/questions/h… és possible trobar un tutorial de com instal·lar o MQTT no Debian. El sistema operacional utilitzat a la placa de desenvolupament és o Linux Linaro, que està basat en Debian. Cap enllaç https://www.embarcados.com.br/linux-linaro-alip-na… es pot trobar amb un tutorial de com instal·lar Linux Linaro-ALIP en Qualcomm DragonBoard 410C.

A Qualcomm Dragonboard 410c precisa comunicar-se amb Mezzanine para receber as informações coletadas no sensor e enviá-las para o servidor MQTT local o remoto. Utilitzem python i comunicação serial.

O código abaixo detalha aquest procés. A 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 format "S (código do sensor):(valor do sensor)". Após a leitura, separa o codi do valor e retorna.

importació serial = serial. Serial ('/ dev / tty96B0', 115200)

def readData (ser):

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

txt ="

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

txt = txt + c

dados = txt.split (":")

tornar dados

dados = readData (ser)

Com els dados recebidos, es pot publicar sense servidor MQTT. A comunicação com o server is feita using a biblioteca paho. O código abaixo se conecta a un servidor e, através da função publicar, publica no servidor com o tòpic adequat.

import paho.mqtt.client as 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': publish_name = "/ qualcomm / luminosidade" elif dados [0] == 'S4': publish_name = "/ qualcomm / luzvisivel" elif dados [0] == 'S5': publish_name = "/ qualcomm / infravermelho "elif dados [0] == 'S6': publish_name =" / qualcomm / ultravioleta "else: return False

mentre cli.publish (publica_nom, dados [1]) [0]! = 0:

passa imprimir nom_publicar + "=" + dados [1]

mentre cli.loop ()! = 0:

passar

excepte:

passar

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

Per a la comunicació amb el servidor a Dragonboard està connectat amb el servidor através d’una connexió 3G, utilitzant el mòdem 3G HSUPA USB Stick MF 190 mitjançant una operadora TIM.

Per a emissió d'alertes, o sistema compta amb un servidor PABX Asterisc. Sempre que és necessari emetre-ho alerta, o el servidor és responsable per enviar una chamada de veu o un missatge de text per al sistema d’emergència de regió. Per instal·lar o Asterisc pot seguir o enllaçar (https://www.howtoforge.com/tutorial/how-to-install-asterisk-on-debian/).

Pas 3: Placa Mezzanine Com Sensores

Placa Mezzanine Com Sensores
Placa Mezzanine Com Sensores

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

I) Sensor de lluminositat

O sensor LDR is led ativado pela luminosidade que incide sobre ele. A leitura é feita através da porta analògica A0.

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

II) Sensor de llum solar "Grove - Sensor de llum solar"

Aquest és un sensor multi-canal capaç de detectar llum ultravioleta, infravermell i llum visible.

Biblioteca:

Utilitzant una biblioteca disposível através do link abaixo, connectem o sensor através da porta I2C disponível. A leitura és feita de la següent manera:

SI114X SI1145 = SI114X (); configuració nul·la () {SI114X SI1145 = SI114X (); }

bucle buit () {

vl = SI1145. ReadVisible ();

ir = SI1145. ReadIR ();

uv = sòl ((flotador) SI1145. ReadUV () / 100);

}

III) Sensor de temperatura e umidade

"Grove - Sensor de temperatura i humitat Pro" https://wiki.seeed.cc/Grove-Temperature_and_Humidi… Aquest sensor és capaç de detectar temperatura i umitat relativa.

Biblioteca:

Connectem aquest sensor a porta analògica A0 i utilitzem el següent codi per a leitura:

DHT dht (DHTPIN, DHTTYPE);

configuració nul·la () {

dht.begin (); }

bucle buit () {

h = dht.readHumidity ();

t = dht.readTemperature ();

}

Per juntar a leitura dos 3 sensores no Mezzanine, criamos uma machine de estados, on cada estat és responsable per uma leitura. Com a 6 lleis no total, tenim 6 estats, organitzat per la següent forma:

int ESTAT = 0;

bucle buit () {

commutador (ESTAT) {

cas 0: … trencar;

cas 5:

… trencar;

}

ESTAT = (ESTAT + 1)% 6;

}

Per evitar les lleis necessàries, o està atual només executat quan un Qualcomm DragonBoard 410c està pronta per rebre com a informació. Per a això, utilitzeu una espera ocupada:

bucle buit () {while (! Serial.available ()) delay (10); while (Serial.available ()) Serial.read ();

}

Cada leitura de sensor és enviada individualment após a leitura através da função sendSensorData. Aquesta funció rebut o codi del sensor (inteiro), o donat a ser enviat i o últim fet servir. Se houver mudanças na leitura ela é enviada. A função dtostrf converte de doble para string. Já a função sprintf formata a string for ser enviada pela serial com a função Serial.println.

char sendBuffer [20], temp [10]; void sendSensorData (int sensorCode, double data, double lastData) {if (data == lastData) return; dtostrf (dades, 4, 2, temp); sprintf (sendBuffer, "S% d:% s", sensorCode, temp); Serial.println (sendBuffer); } void loop () {… cas 0: h = dht.readHumidity (); sendSensorData (1, h, lastH); últimH = h; trencar; …}

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

Pas 4: Sensor d'alagament utilitzant NodeMCU

Sensor De Alagamento Utilitzant NodeMCU
Sensor De Alagamento Utilitzant NodeMCU
Sensor De Alagamento Utilitzant NodeMCU
Sensor De Alagamento Utilitzant NodeMCU
Sensor De Alagamento Utilitzant NodeMCU
Sensor De Alagamento Utilitzant NodeMCU

O NodeMCU va ser utilitzat per a fer una lectura de nível da àgua, utilitzant un sensor de fàcil criação. O procés d’eletrólise cria um resistor virtal quan o device is inundado.

Per al desenvolupament del codi, es va utilitzar un IDE d'Arduino com a biblioteques: Pubsub-client (https://pubsubclient.knolleary.net/) ESP8266 (https://github.com/esp8266/Arduino).

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

Pas 5: Tauler de control

panell
panell

A Dashboard tem as principal objectiu organizar e presentar melhor os conteúdos informativos dos sensores coletados, dando a eles um design more interativo, allem trazer informações a respeito de pontos turísticos de diversos ponts da ciutat i do trânsito local. S'ha utilitzat una tecnologia HTML5 per al seu desenvolupament.

Recomanat: