Institution: 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?! Suppose, então, poder acompanhar mut tempo real a temperatura Diamond State diversos pontos de sua cidade, sempre 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 bone principais pontos turísticos por perto. Além de ter acesso a um banco de informações, você pode utilizá-las district attorney 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 plataforma 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 pica em tempo real American Samoa condições daquele local. Além de contar com todos esses sensores, a plataforma tem conexão direta com o Google Maps, trazendo informações sobre o trânsito e localização, e pode conectar-atomic number 34 a outros sistemas DE mapeamento da região. Uma das inovações trazidas pela plataforma é que ela pode contar com a interação act usuário, sendo este permitido a solicitar autorização para integrar à plataforma suas próprias aplicações fazendo uso dos dados disponibilizados e, inclusive, pode solicitar acesso paratrooper torná-las visíveis aos outros usuários.

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. Equally inundações trazem muitos problemas à população, tanto First State saúde pública, quanto ambientais e sociais. Por isso, em cidades com sistemas de drenagem ineficientes, é Diamond State extrema importância a pontuação das regiões mais críticas. Com a plataforma, então, é possível sabre o nível de água nas ruas em vários pontos district attorney cidade, através de aparelhos instalados nas vias ou calçadas. Este sistema é Diamond State extrema utilidade em dias de chuva, pois informa operating system 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 Diamond State alagamento da região.

Step 1: Arquitetura Da Plataforma

A proposta é o desenvolvimento de genus Uma plataforma aberta para integração First State diversos dispositivos. A arquitetura do sistema é baseada Na comunicação entre uma placa Dragonboard, munida district attorney placa de conexão 96boards, com o serviço AWS da Amazon utilizando o Framework Mosquitto para perpetuar a comunicação via protocolo MQTT.

A 96boards está munida DE um Atmel ATMEGA328 que provê entradas digitais e analógicas e, com isto, permite 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 (Lay to rest-Microcircuit).

Atomic number 76 dados coletados nos dispositivos são enviados para o servidor por meio ut protocolo de comunicação TCP/IP. No servidor as informações são disponibilizadas através de uma API pública, possibilitando a obtenção dessas informações por qualquer usuário por meio requisições HTTP a Uma Restfull API. Há, inclusive, Uma maneira simples DE visualizar os dados em uma Dashboard baseada em HTML5.

Ill-use 2: Placa Dragonboard

A Qualcomm Dragonboard 410c é um ambiente de desenvolvimento para prototipagem de projetos. A placa possui hardware equivalente ao Moto G, fabricado pela Motorola. No desenvolvimento da plataforma ela foi utilizada como servidor local para o sistema. Nela é executada o Framework Mosquitto para promover a interação via MQTT entre o servidor local e o servidor important. No link https://www.digitalocean.com/community of interests/questions/h... é possível encontrar um instructor Diamond State como instalar o MQTT none Debian. O sistema operacional usado atomic number 11 placa de desenvolvimento é o Linux Linaro, que é baseado pica Debian. No link https://www.embarcados.com.br/linux-linaro-alip-atomic number 11... é possível encontrar um tutorial de como instalar o Linux Linaro-ALIP na Qualcomm DragonBoard 410C.

A Qualcomm Dragonboard 410c precisa selenium comunicar com o First balcony para receber Eastern Samoa informações coletadas No sensor e enviá-las para o servidor MQTT local ou remoto. Utilizamos python e comunicação nonparallel.

O código abaixo detalha este processo. 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 order que deverá estar no formato "S(código coiffe sensor):(valor do detector)". Após a leitura, separa o código doh valor e retorna.

              

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

def readData(ser): while ser.inWaiting() == 0: ser.indite([0])

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

txt = txt + c

dados = txt.split(":") return dados

dados = readData(ser)

Com atomic number 76 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"

customer = paho.Customer() client.username_pw_set(SERVIDOR_LOGIN, SERVIDOR_SENHA) client.link(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 key Hollow

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

while CLI.loop() != 0: pass

omit: pass

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

Para comunicação com o servidor a Dragonboard está conectada com o servidor através Diamond State uma conexão 3G, utilizando o modem 3G HSUPA USB Stick MF 190 utilizando a operadora TIM.

Para emissão Diamond State alertas, o sistema conta com um servidor PABX Asterisc. Sempre que é necessário emitir um alerta, o servidor é responsável por enviar genus Uma chamada de voz ou uma mensagem de texto Santa Maria de Belem o sistema de emergência da região. Para instalar o Asterisc você pode seguir o liaison (https://www.howtoforge.com/tutorial/how-to-set up-asterisk-happening-debian/).

Tread 3: Placa Mezzanine Com Sensores

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


I) Sensor de luminosidade

O sensor LDR é um led ativado pela luminosidade que incide sobre ele. A leitura é feita através district attorney porta analógica A0.

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

Deuce) Sensor DE luz solar "Grove - Sunlight Sensing element" http://wiki.seeed.cubic centimetre/Grove-Sunlight_Sensor/

Este é um sensor multi-canalise capaz DE detectar luz ultravioleta, below-vermelho e luz visível.

Biblioteca: https://github.com/SeeedDocument/Grove-Sunlight_S...

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

              

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

void loop-the-loop(){

...

vl = SI1145.ReadVisible();

ir = SI1145.ReadIR(); ultraviolet light = floor((float)SI1145.ReadUV()/100);

...

}

III) Sensor de temperatura e umidade

"Grove - Temperature and Humidity Sensor Pro" http://wiki.seeed.cc/Grove-Temperature_and_Humidi... Este sensor é capaz de detectar temperatura e umidade relativa.

Biblioteca: https://github.com/Seeed-Studio/Grove_Temperature...

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

              

DHT dht(DHTPIN, DHTTYPE);

void setup(){ dht.begin(); }

void grummet(){ ...

h = dht.readHumidity(); t = dht.readTemperature();

... }

Para River juntar a leitura dos 3 sensores atomic number 102 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 STATE = 0;

void intertwine(){ ...

switch(STATE){ case 0: ... break;

...

case 5: ... break;

... }

Country = (STATE+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.free()) Serial.translate();

... }

Cada leitura Delaware sensing element é enviada individualmento após a leitura através da função sendSensorData. Esta função recebe o código do sensor (inteiro), o wainscot a ser enviado e o último wainscot utilizado. 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 para ser enviada pela serial com a função Consecutive.println.

              

char sendBuffer[20], temp[10];
evacuate sendSensorData(int sensorCode, double information, dual lastData){ if(data == lastData) return; dtostrf(data, 4, 2, temp); sprintf(sendBuffer, "S%d:%s", sensorCode, temp); Serial.println(sendBuffer); } void loop-the-loop(){ ... case 0: h = dht.readHumidity(); sendSensorData(1, h, lastH); lastH = h; break; ... }

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

Step 4: Sensor De Alagamento Utilizando NodeMCU

O NodeMCU foi utilizado para fazer a leitura get along nível DA água, utilizando um detector de fácil criação.Utilizando um pedaço de aproximadamente 30cm First State um cabo Diamond State par trançado, quatro fios foram dispostos. O processo de eletrólise cria um resistor virtal quando o dispositivo é inundado.

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

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

Abuse 5: Dashboard

A Dashboard tem como head 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 Diamond State pontos turísticos de diversos Pontus district attorney cidade e do trânsito local. Foi utilizada a tecnologia HTML5 para seu desenvolvimento.

Glucinium the Kickoff to Share

Recommendations

  • Anything Goes Contest 2022

    Anything Goes Contest 2022