Cuprins:

IN-FORMA: a Plataforma De Informações About Sua Cidade: 5 Steps
IN-FORMA: a Plataforma De Informações About Sua Cidade: 5 Steps

Video: IN-FORMA: a Plataforma De Informações About Sua Cidade: 5 Steps

Video: IN-FORMA: a Plataforma De Informações About Sua Cidade: 5 Steps
Video: Tribo da Periferia - Magazine (Official Music Video) 2024, Iulie
Anonim
IN-FORMA: a Plataforma De Informações About Sua Cidade
IN-FORMA: a Plataforma De Informações About Sua Cidade

Quem nunca saiu de casa com roupas de frio e quando a ajuns no destino estava fazendo o maior sol ?! Imagine, então, poder acompanhar em tempo real a temperature de diverse pontos of sua cidade, semper este pregătit pentru o care der e vier! Ou, então, evita transitar pelos principal 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 adequately contra os danos do sol. Com a IN-FORMA, tot așa este posibil și în același loc! Você pode acompanhar o trânsito de uma determinată região e ver os principal pontos turísticos por perto. Além de ter acesso a um banco de informações, você can use-the da forma that desejar. Se voci gosta de velejar, de exemplu, poți să știi condiția dosarilor nu momentului pentru analiza a melhorului orei de la casa.

A IN-FORMA este o mai nouă platformă web care integrează diverse tipuri de informații la respeito da sua cidade. São espalhados em diverse pontos da região sensores de temperatura, umidade, luminosidade, între alți, care furnizează em tempo real as conditiones daquele local. Além de contar com tous esses sensores, a platform tem conexão direta com o Google Maps, trazendo informações sobre o trânsito e localização, și puteți conecta-se la alți sisteme de mapare a regiunii. Uma das inovações trazidas pela platform é que ela can contar com a interação do usuário, sendo this permitido a solicitar autorização para integrar à plataforma suas próprias aplicações fazendo use dos dados disponibilised e, inclusive, you can solicitar acesso for torná-las visíveis to others usuários.

A IN-FORMA, além de poder integrar diverse tipuri de aplicații dezvoltate de utilizatorii și companiile, contează cu un sistem de mapare a inundațiilor dezvoltate pela própria. As inundações trazem muitos problems à população, tanto de health public, how ambientais e social. Por isso, em cidades com sistemes de drenagem ineficientes, é de extrema importância a pontuação das regiões mais critiques. Com a platform, então, é possível saber o nível de água nas ruas em vários pontos da cidade, através de aparelhos instalados nas vias ou calçadas. Este sistem este de extrema utilitate em dias de chuva, pois informa os locais mais prejudicados pela água, evitând că a populație tranzitează prin aceste. Além disso, o sistema de drenagem das ruas pode ser melhorado com os dados fornecidos pela platform, that mostram o nível da água ao longo do dia e os pontos críticos de alagamento da região.

Pasul 1: Arquitetura Da Plataforma

Arquitetura Da Plataforma
Arquitetura Da Plataforma

A proposta é o development de uma platform aberta for integração de diverse dispozitive. 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 folosind o Framework Mosquitto pentru perpetuar a comunicação via protocolo MQTT.

A 96boards is munida de um Atmel ATMEGA328 care provede intrate digitais și analogice și, cu toate acestea, permite o integrare de la Qualcomm Dragonboard 410c cu senzori. O comunicație între un Dragonboard și un 96boards se dă através de protocol I²C (Inter-Integrated Circuit).

Os dados coletados nos dispozitive são enviados for o server por meio do protocol de comunicație TCP / IP. Niciun server ca informații disponibile pentru accesarea API-urilor publice, posibilitate de obținere a informațiilor disponibile pentru utilizatorii care necesită HTTP pentru a utiliza o API Restfull. Há, inclusive, uma manieră simplă de vizualizare a datelor pe uma Dashboard bazată pe HTML5.

Pasul 2: Placa Dragonboard

Placa Dragonboard
Placa Dragonboard

A Qualcomm Dragonboard 410c este un mediu de dezvoltare pentru prototipagem de proiecte. A placa possui hardware equivalente ao Moto G, fabricado pela Motorola. No development from platform ela foi used as server local for o system. Nela este executat în Framework Mosquitto pentru promovarea interacțiunii prin intermediul MQTT între serverul local și serverul principal. Niciun link https://www.digitalocean.com/community/questions/h… este posibil să găsiți un tutorial de instalare sau MQTT în Debian. O sistem operațional folosit pe placa de dezvoltare este Linux Linaro, care este bazat pe Debian. Niciun link https://www.embarcados.com.br/linux-linaro-alip-na… este posibil să găsiți un tutorial de instalare a Linux Linaro-ALIP pe Qualcomm DragonBoard 410C.

A Qualcomm Dragonboard 410c necesită comunicarea cu Mezzanine pentru receber ca informații coletate no sensor e enviá-las para o server MQTT local sau remoto. Utilizați python și comunicație serial.

O cod abaixo detalha este procesul. A função readData envia bytes até que o Mezzanine faça uma leitura e devolva a răspuns. Ao receber a resposta, lê uma linha inteira do serial that deverá estar no format "S (cod do sensor):(valor do sensor)". Após a leitura, separa o cod do valor și retorna.

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

readData def (ser):

în timp ce ser.inWaiting () == 0: ser.write ([0])

txt ="

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

txt = txt + c

dados = txt.split (":")

return dados

dados = readData (ser)

Cu datele recebite, aveți posibilitatea să publicați niciun server MQTT. A comunicação com o server is feita using a biblioteca paho. O cod abaixo se conectează la un server și, através de funcționare publică, publica nu server com o tópico adecvat.

import paho.mqtt.client ca 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

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

trece print nume_publicare + "=" + dados [1]

în timp ce cli.loop ()! = 0:

trece

cu exceptia:

trece

O cod complet poate fi văzut fără arhiva "mezzanine_mqtt.py".

Pentru comunicație cu serverul Dragonboard este conectat cu serverul atras de uma conexiune 3G, folosind modemul 3G HSUPA USB Stick MF 190 folosind o operatoare TIM.

Pentru emisie de alerte, o sistemă conține un server PABX Asterisc. Semper that is necessário emitir um alerta, o server is responsável por send uma chamada de voice ou uma mensagem de text pentru o sistem de emergență de regiune. Pentru instalarea lui Asterisc você poți urma linkul (https://www.howtoforge.com/tutorial/how-to-install-asterisk-on-debian/).

Pasul 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 luminositate

O sensor LDR é um led ativado pela luminosidade that incide over ele. A leitura é feita através da porta analógica A0.

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

II) Senzor de lumină solară "Grove - Senzor de lumină solară"

Este un senzor multi-canal capabil să detecteze lumina ultravioletă, infraroșu și lumină vizibilă.

Biblioteca:

Utilizând o bibliotecă disponível através do link abaixo, conectamos o sensor através da porta I2C disponível. A leitura é feita da următoarea manieră:

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

bucla nulă () {

vl = SI1145. ReadVisible ();

ir = SI1145. ReadIR ();

uv = etaj ((plutitor) SI1145. ReadUV () / 100);

}

III) Sensor de temperatura și umiditate

"Grove - Temperature and Umidity Sensor Pro" https://wiki.seeed.cc/Grove-Temperature_and_Humidi… Acest senzor este capabil să detecteze temperatura și umiditatea relativă.

Biblioteca:

Conectăm acest senzor na poartă analogică A0 și utilizăm următorul cod pentru leitura:

DHT dht (DHTPIN, DHTTYPE);

configurare nulă () {

dht.begin (); }

bucla nulă () {

h = dht.readHumidity ();

t = dht.readTemperature ();

}

Para juntar a leitura dos 3 sensores no Mezzanine, criamos uma machine de estados, unde fiecare stat este responsabil pentru uma leitura. Como são 6 leituras no total, teremos 6 stados, organizat de următoarea formă:

int STATE = 0;

bucla nulă () {

comutator (STATE) {

caz 0: … pauză;

cazul 5:

… pauză;

}

STATE = (STATE + 1)% 6;

}

Pentru a evita leziunile necesare, este atual doar executat când un Qualcomm DragonBoard 410c este pronta pentru receber as informationções. Pentru asta, utilizăm uma espera ocupată:

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

}

Cada leitura de sensor é enviada individualmento após a leitura através da função sendSensorData. Această funcție primește codul senzorului (inteiro), o dată a fost trimisă sau ultimul dat folosit. Se houver mudanças na leitura ela é enviada. A função dtostrf converte de double 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 (date, 4, 2, temp); sprintf (sendBuffer, "S% d:% s", sensorCode, temp); Serial.println (sendBuffer); } void loop () {… caz 0: h = dht.readHumidity (); sendSensorData (1, h, lastH); lastH = h; pauză; …}

O cod complet poate fi văzut nu arquivo "sensores.ino".

Pasul 4: Senzor De Alagamento Utilizând NodeMCU

Sensor De Alagamento Utilizando NodeMCU
Sensor De Alagamento Utilizando NodeMCU
Sensor De Alagamento Utilizando NodeMCU
Sensor De Alagamento Utilizando NodeMCU
Sensor De Alagamento Utilizando NodeMCU
Sensor De Alagamento Utilizando NodeMCU

O NodeMCU a fost folosit pentru fazer a leitura do nível da água, folosind um sensor de ușor criză. Utilizând um pedaç de aproximativ 30cm de um cap de par trançado, quatro fios foram dispostos. O proces de eletrólise cria um resistor virtal when the device is inundado.

Pentru o dezvoltare a codului, a fost utilizat un IDE de Arduino cu bibliotecile: Pubsub-client (https://pubsubclient.knolleary.net/) ESP8266 (https://github.com/esp8266/Arduino).

O cod complet poate fi văzut fără arhiva "sensorAlagamento.ino".

Pasul 5: Tablou de bord

Bord
Bord

A Dashboard tem as principal object organizar e apresentar melhor os conteúdos informativos dos sensores coletados, dando a they um design mais interativo, além trazer informações a respeito de pontos turísticos de divers pontos da cidade și do trânsito local. A fost utilizată o tehnologie HTML5 pentru dezvoltarea sa.

Recomandat: