Sommario:

IN-FORMA: una Plataforma De Informações Sobre Sua Cidade: 5 Passi
IN-FORMA: una Plataforma De Informações Sobre Sua Cidade: 5 Passi

Video: IN-FORMA: una Plataforma De Informações Sobre Sua Cidade: 5 Passi

Video: IN-FORMA: una Plataforma De Informações Sobre Sua Cidade: 5 Passi
Video: Tribo da Periferia - Magazine (Official Music Video) 2024, Luglio
Anonim
IN-FORMA: una Plataforma De Informações Sobre Sua Cidade
IN-FORMA: una 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 acompanhar em tempo real a temperatura de diversos pontos de sua cidade, sempre stando 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 adeguatamente 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 è una nuova piattaforma web che integra diversi tipi di informazioni in un respeito dalla sua cidade. São espalhados em diversi ponti da região sensori di temperatura, umiditàde, luminosidade, entre outros, que fornecem em tempo real as condições daquele local. Além de contar con tutti i nostri sensori, una piattaforma di connessione diretta con Google Maps, trazendo informazioni su più informazioni o transito e localizzazione, e pode conectar-se a altri sistemi di mappatura della regione. Uma das inovações trazidas pela plataforma é que ela pode contar com a interação do usuário, sendo este allowido a solicitar autorização para integrar à plataforma suas próprias aplicações fazendo uso dos dados disponibilizados e, inclusive, pode tornasá-las acessos acessos out.

A IN-FORMA, além de poder integrar diversi tipi di applicazioni desenvolvidas pelos usuários e imprese, conta con un sistema di mappatura 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. Per questo motivo, em cidades com sistemas de drenagem ineficientes, é de extrema importância a pontuação das regiões mais críticas. Com a plataforma, 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 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 críticos de aagamento da região.

Passaggio 1: architettura da piattaforma

Arquitetura Da Plataforma
Arquitetura Da Plataforma

Una proposta di sviluppo di una piattaforma aberta per l'integrazione di diversi dispositivi. Un'architettura del sistema è basata sulla comunicazione tra una piattaforma Dragonboard, collega la piattaforma di connessione 96boards, con il servizio AWS da Amazon utilizzando Framework Mosquitto per perpetuare una comunicazione tramite il protocollo MQTT.

Una 96boards è collegata a un Atmel ATMEGA328 che può essere collegata a sensori digitali e analogici e, insieme, consente l'integrazione dei sensori di Qualcomm Dragonboard 410c. Una comunicazione tra una Dragonboard e un 96boards se dá através do protocolo I²C (Inter-Integrated Circuit).

Tutti i dati collegati ai dispositivi non sono disponibili per il server per mezzo del protocollo di comunicazione TCP/IP. Nessun server come informazioni sulla disponibilità di altre API pubbliche, è possibile ottenere informazioni su qualsiasi utilizzo delle mie richieste HTTP e un'API Restfull. Ha, incluso, una semplice visualizzazione dei dati in una dashboard basata su HTML5.

Passaggio 2: Dragonboard Placa

Placa Dragonboard
Placa Dragonboard

A Qualcomm Dragonboard 410c è un ambiente di sviluppo per il prototipo di progetto. Un hardware placa possui equivalente ao Moto G, fabbricato pela Motorola. No desenvolvimento da plataforma ela foi utilizada como servidor local para o sistema. Nela è eseguito o Framework Mosquitto per promover a interação via MQTT entre o servidor local e o servidor principal. Nessun collegamento https://www.digitalocean.com/community/questions/h… è possibile incontrare un tutorial come installare o MQTT senza Debian. Il sistema operativo utilizzato è stato risolto in base a Linux Linaro, che è basato su Debian. Nessun collegamento https://www.embarcados.com.br/linux-linaro-alip-na… è possibile incontrare un tutorial su come installare Linux Linaro-ALIP su Qualcomm DragonBoard 410C.

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

O código abaixo detalha este process. 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 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):

while ser.inWaiting() == 0: ser.write([0])

txt = ''

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

txt = txt + c

dati = txt.split(":")

tornare dado

dati = readData(ser)

Com os dados recebidos, é possível publicar no 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.

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):

prova: 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:

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

mentre cli.loop() != 0:

passaggio

tranne:

passaggio

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

Per comunicare con il server di Dragonboard è collegato con il server tramite una connessione 3G, utilizzando il modem 3G HSUPA USB Stick MF 190 utilizzando un operatore TIM.

Per l'invio di avvisi, o sistema di contatto con un server PABX Asterisc. Sempre que é necessario emitir um alerta, o servidor é responsável por enviar uma chamada de voz ou uma mensagem de texto para o system de emergência da região. Per installare o Asterisc você pode seguir o link (https://www.howtoforge.com/tutorial/how-to-install-asterisk-on-debian/).

Passaggio 3: Placa Mezzanine con sensori

Placa Mezzanine Con Sensori
Placa Mezzanine Con Sensori

Três Sensors se conectam com o Mezzanine: luminosità, luce solare e temperatura e umidità.

I) Sensore di luminosità

Il sensore LDR é um led attivato pela luminosidade que incide sobre ele. A leitura é feita através da porta analógica A0.

Sensore di lettura: ldr = analogRead(LDRPIN)/10.0

II) Sensore di luce solare "Grove - Sensore di luce solare"

Questo è un sensore multicanale capaz de Detectar luz ultravioleta, infra-vermelho e luz visível.

Biblioteca:

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

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

ciclo vuoto(){

vl = SI1145. ReadVisible();

ir = SI1145. LeggiIR();

uv = floor((float)SI1145. ReadUV()/100);

}

III) Sensore di temperatura e umiditàde

"Grove - Sensore di temperatura e umidità Pro" https://wiki.seeed.cc/Grove-Temperature_and_Humidi… Il sensore di temperatura e umidità è relativo.

Biblioteca:

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

DHT dht(DHTPIN, DHTTYPE);

void setup(){

dht.begin(); }

ciclo vuoto(){

h = dht.readHumidity();

t = dht.readTemperature();

}

Per ogni condizione di 3 sensori senza Mezzanine, c'è una macchina per gli stati, onde cada è stato è responsável per qualsiasi cosa. Como são 6 leituras no total, teremos 6 stados, organizado da seguinte forma:

int STATO = 0;

ciclo vuoto(){

interruttore(STATO){

caso 0: … rottura;

caso 5:

… rottura;

}

STATO = (STATO+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 è invidiabile individualmento após a leitura através 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 hover mudanças na leitura ela é enviada. Una funzione di conversione di doppia stringa. Já una função sprintf formata a string per 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(data, 4, 2, temp); sprintf(sendBuffer, "S%d:%s", sensorCode, temp); Serial.println(sendBuffer); } void loop(){ … case 0: h = dht.readHumidity(); sendSensorData(1, h, lastH); ultimoH = h; rottura; … }

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

Passaggio 4: 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
Sensor 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, quatro fios foram dispostis. Il processo di elettrizzazione crea un resistore virtuale quando il dispositivo è inondato.

Para o desenvolvimento do código, foi 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".

Passaggio 5: dashboard

Pannello di controllo
Pannello di controllo

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

Consigliato: