Spisu treści:

IN-FORMA: a Plataforma De Informações Sobre Sua Cidade: 5 kroków
IN-FORMA: a Plataforma De Informações Sobre Sua Cidade: 5 kroków

Wideo: IN-FORMA: a Plataforma De Informações Sobre Sua Cidade: 5 kroków

Wideo: IN-FORMA: a Plataforma De Informações Sobre Sua Cidade: 5 kroków
Wideo: A Woodworker’s Quandary | Critical Role | Campaign 3, Episode 8 2024, Lipiec
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 nie przeznaczenie estava fazendo o maior sol?! Imagine, 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. Alem 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.

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 em tempo real as condições daquele local. Além de contar com Todos esses sensores, platforma tem conexão direta com of Google Maps, trazendo informações sobre lub trânsito i localização, e pode conectar-se a outros sistemas de mapamento da região. Uma das inovações trazidas pela plataforma é que ela pode contar com a interaçãoo do usuário, sendo este allowido a solicitar autorizaçãoo para integrar à plataforma suas próprias aplicações fazendo uso dos dados podalasibilido a uso dos dados podlasibilido in.

A IN-FORMA, alem de poder integrar diversos tipos de aplicações desenvolvidas pelos usuários e empresas, conta com um sistema de mapemento 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 criticas. 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 alagamento da região.

Krok 1: Arquitetura Da Plataforma

Arquitetura Da Plataforma
Arquitetura Da Plataforma

A proposta é o desenvolvimento de uma plataforma aberta para integração de diversos dispositivos. Arquitetura do systemu jest podstawą komunikacji Dragonboard na całym świecie, na świecie z połączeniami 96boards, z obsługą AWS przez Amazon lub Framework Mosquitto do ciągłej komunikacji za pośrednictwem protokołu MQTT.

A 96boards jest światem Atmel ATMEGA328 to sprawdzone wejścia cyfrowe i analogowe, które umożliwiają integrację z czujnikami Qualcomm Dragonboard 410c. Komunikacja z Dragonboard i 96 tablicami dającymi informacje o protokole I²C (Inter-Integrated Circuit).

Os dados coletados nos dispositivos são enviados para o servidor por meio zrobić protocolo de comunicação TCP/IP. Brak serwera jako informacji udostępnianych przez publiczne API uma, możliwe jest uzyskanie dostępu do informacji, które są używane w celu uzyskania wymaganych informacji HTTP i interfejsu API uma Restfull. Há, włącznie, uma maneira proste wizualizacje dados w uma Dashboard baseada w HTML5.

Krok 2: Placa Dragonboard

Placa Dragonboard
Placa Dragonboard

Qualcomm Dragonboard 410c jest e um ambiente desenvolvimento para prototypów projektów. Sprzętowy odpowiednik placa possui m.in. 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 za pośrednictwem MQTT entre o servidor local e o servidor principal. Brak linku https://www.digitalocean.com/community/questions/h… można również włączyć samouczek dotyczący instalacji MQTT bez Debiana. Jest to system operacyjny używany w miejscu, w którym rozwija się system Linux Linaro, który jest oparty na Debianie. Brak linku https://www.embarcados.com.br/linux-linaro-alip-na… Można również dołączyć samouczek dotyczący instalacji na Linuksie Linaro-ALIP na Qualcomm DragonBoard 410C.

Qualcomm Dragonboard 410c jest precyzyjny w komunikacji z mezzanine dla odbiorników jako informatyki bez czujnika i enviá-las dla lokalnego lub zdalnego serwera MQTT. Używaj pytona i serialu komunikacyjnego.

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

podczas gdy ser.inWaiting() == 0: ser.write([0])

txt = ''

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

txt = txt + c

dados = txt.split(":")

powrót dados

dados = readData(ser)

Com os dados recebidos, é possível publicar no servidor MQTT. 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 jako paho SERVIDOR_LOGIN = "" SERVIDOR_SENHA = "" SERVIDOR_ENDERECO = "localhost"

klient = paho. Klient()

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

def publicar(dados, cli):

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

podczas gdy cli.publish(nazwa_publikacji, dados[1])[0] != 0:

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

podczas gdy cli.loop() != 0:

przechodzić

z wyjątkiem:

przechodzić

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

Do komunikacji z serwerem lub serwerem Dragonboard można połączyć się z serwerem lub połączyć się z nim przez połączenie 3G, za pomocą lub z modemu 3G HSUPA USB Stick MF 190 za pomocą operatora TIM.

Para emissão de alertas, o sistema conta com um servidor PABX Asterisc. Semper que é necessário emitir 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/).

Krok 3: Czujniki Placa Mezzanine Com

Placa Mezzanine Com Sensores
Placa Mezzanine Com Sensores

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

I) Czujnik luminozydacji

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

Czujnik Leitura do: ldr = analogowyOdczyt (LDRPIN)/10,0

II) Sensor de luz solar "Grove - Sunlight Sensor"

Jest to czujnik wielokanałowy wykrywacz światła ultrafioletowego, podczerwieni i światła widzialnego.

Biblioteca:

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

SI114X SI1145 = SI114X(); nieważna konfiguracja(){ SI114X SI1145 = SI114X(); }

pusta pętla () {

vl = SI1145. Odczyt Widoczny();

ir = SI1145. ReadIR();

uv = podłoga((float)SI1145. ReadUV()/100);

}

III) Czujnik temperatury i umidade

"Grove - Temperature and Humidity Sensor Pro" https://wiki.seeed.cc/Grove-Temperature_and_Humidi… Este sensor to czujnik temperatury i wilgotności względnej.

Biblioteca:

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

DHT dht(DHTPIN, DHTTYPE);

pusta konfiguracja (){

dht.początek(); }

pusta pętla () {

h = dht.odczytWilgotność();

t = dht.odczytTemperatura();

}

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 STAN = 0;

pusta pętla () {

przełącznik (STAN){

przypadek 0: … przerwa;

przypadek 5:

… przerwa;

}

STAN = (STAN+1)%6;

}

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

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

}

Cada leitura de sensor é enviada indywidualmento após a leitura através of função sendSensorData. Esta função recebe o código do sensor (inteiro), o dado a ser enviado e o último dado utilizado. Zobacz houver mudanças leitura ela é enviada. Função dtostrf konwertuje de double para string. Já função sprintf formata ciąg dla ser enviada pela com a função Serial.println.

char sendBuffer[20], temp[10];void sendSensorData(int sensorCode, double data, double lastData){ if(data == lastData) return; dtosrf(dane, 4, 2, temp); sprintf(sendBuffer, "S%d:%s", sensorCode, temp); Serial.println(sendBuffer); } void loop(){ … case 0: h = dht.readHumidity(); sendSensorData(1, h, lastH); ostatni H = h; przerwa; … }

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

Krok 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 dispostos. O processo de eletrólise cria um opornik virtal quando o dispositivo é inundado.

Aby uzyskać dostęp do kodu, użyj IDE do Arduino com jako biblioteca: Pubsub-client (https://pubsubclient.knolleary.net/) ESP8266 (https://github.com/esp8266/Arduino).

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

Krok 5: Pulpit nawigacyjny

Deska rozdzielcza
Deska rozdzielcza

Dashboard tem como główny organ organizacyjny apresentar melhor os conteúdos informativos dos sensores coletados, dando a eles um design mais interativo, alem trazer informações a respeito de pontos turísticos de diversos pontos do da cidade. Foi utilizad a tecnologia HTML5 para seu desenvolvimento.

Zalecana: