Innholdsfortegnelse:
- Trinn 1: Dragonbord 410c - Publicação Dos Sensores - Analogicos
- Trinn 2: Sensores Digitais - Publicação
- Trinn 3: Codigo Para Acionamento Sirene
- Trinn 4: Codigo Twitter - Post
- Trinn 5: Centro De Comando
- Trinn 6: Codigo Twitter - Monitoração
- Trinn 7: Estrutura AWS
Video: Centro De Comando Emergencias - Erupção De Vulcão E Terremotos: 7 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:23
Projeto acadêmico para atender cenário de colaboração através da internet para divulgação de desastres naturais, onde será possível a detecção dos acontecimentos através de sensores IOT de temperatura, luminosidade, oscilação (tilte) e botão de Ainda no cenário de colaboração prevemos integração com o Twitter e aplicativos com suporte mqtt para acionamento do alerta.
Diante a possibilidade de diversos meios de entrada na solução, caberá um centro de de operações avaliar se a informação esta correta evitando assim falsos-positivos dos dispositivos automatizado e avaliar a possibilidade de fakenews. Tal tomada de decisão é crucial diante ao pânico que um alarme falso pode gerar.
For å få en varsling kan vi også vurdere SMS, e -post, sirene og twitter.
For å fortsette å bruke rekordene fra AWS inkluderer IOT CORE, EC2 og SNS
Sensores da DragonBord 410c
klienter android mqtt
Send til do desenvolvido for python
Forfattere:
Diego Fernandes dos Santos - [email protected]
Gabriel Piovani Moreira dos Santos - [email protected]
Gustavo Venancio Luz - [email protected]
Paulo Henrique Almeida Santos - [email protected]
Trinn 1: Dragonbord 410c - Publicação Dos Sensores - Analogicos
Abaixo o codigo de publicação dos sensores analógicos, os sensores de temperatura e luminosidade estão configurados para que assim que detectarem uma variação fora do padrão pré estabelecido enviarem um alerta através do protocolo mqtt sinalizando um evento.
Este alerta começa a contagem regressiva que pode ser suspensa ou acelerada pelo operador.
O contador para o alerta começa contagem regressiva em 60 seguntos, and todo novo alerta detectado decresce o contador em 20 segundos.
programa rodando dentro da dragon borad 410c
#!/usr/bin/python3import spidev fra libsoc import gpio fra import av søvn
# Importa lib para comunicacao com MOSQUITTO import paho.mqtt.client as mqtt
spi = spidev. SpiDev () spi.open (0, 0) spi.max_speed_hz = 10000 spi.mode = 0b00 spi.bits_per_word = 8
#Usando a porta ADC1 channel_select1 = [0x01, 0x80, 0x00]
#Para usar a porta ADC2 use o seguinte vetor de configuraҧ࣠o channel_select2 = [0x01, 0xA0, 0x00]
def on_connect (mqttc, obj, flags, rc): print ("rc:" + str (rc))
def on_message (mqttc, obj, msg): print (msg.topic + "" + str (msg.qos) + "" + str (msg.payload))
def on_publish (mqttc, obj, mid): print ("Message ID:" + str (mid) + "\ n") pass
# Criamos o client e setamos suas configuracoes mqttc = mqtt. Client ()
mqttc.on_message = on_message mqttc.on_connect = on_connect mqttc.on_publish = on_publish
pub = mqtt. Client ("grupo3")
# Conexao com localhost, vi kan teste for å gjøre labredes. broker_address = "34.230.74.201"
pub.connect (megleradresse)
hvis _navn _ == '_ main_': gpio_cs = gpio. GPIO (18, gpio. DIRECTION_OUTPUT)
med gpio.request_gpios ([gpio_cs]): contador = 0 adc_value_old = 0 adc_value2_old = 0 mens contador <50: gpio_cs.set_high () sover (0.00001) gpio_cs.set_low () rx = spi.xfer (channel_select1) g) contador = contador + 1 adc_value = (rx [1] << 8) & 0b1100000000 adc_value = adc_value | (rx [2] & 0xff) adc_value = (((adc_value * 5) / 1024) - 0,5) * 100 print ("Temperatura: % f / n" % adc_value) pub.publish ("temperatura", str (adc_value)) # teste para acionar contador do alarme, teste ultima leitura + 5%
hvis adc_value_old == 0: adc_value_old = adc_value if adc_value> (adc_value_old*1.05): pub.publish ("ALARME", "ON") print ("Alarmado temperatura") adc_value_old = adc_value sleep (1)
gpio_cs.set_high () sleep (0.00001) gpio_cs.set_low () rx = spi.xfer (channel_select2) gpio_cs.set_high () contador = contador + 1 adc_value2 = (rx [1] << 8) & 0b1100000000 adc_value2 = adc_ (rx [2] & 0xff) adc_value2 = adc_value2 /10 print ("Luminosidade: % f / n" % adc_value2) pub.publish ("luminosidade", str (adc_value2))
# teste para acionar contador do alarme, teste ultima leitura + 50%
if adc_value2_old == 0: adc_value2_old = adc_value2 if adc_value2> (adc_value2_old*1.5): pub.publish ("ALARME", "ON") print ("Alarmado Luminosidade") adc_value2_old = adc_value2 sleep (3)
Trinn 2: Sensores Digitais - Publicação
código para publicação dos sensores digitais
Os sensores digitais neste projeto foram o tilte que detecta os tremores e o botão para simular o uso de um botão de pânico.
quando detectado uma anomalia ou botão de pânico pressionado a contagem regressiva é iniciada.
programa rodando dentro da dragon borad 410c
fra libsoc_zero. GPIO importknapp fra libsoc_zero. GPIO import Tilt fra tid importer søvnimport paho.mqtt.client som mqtt import sys
def on_connect (mqttc, obj, flags, rc): print ("Conectado" + str (rc))
def on_message (mqttc, obj, msg): print (msg.topic + "" + str (msg.qos) + "" + str (msg.payload))
def on_publish (mqttc, obj, mid): # print ("Message ID:" + str (mid) + "\ n") pass
def detectaTilt (): count = 0 sleep_count = 0 mens True: prøv: tilt.wait_for_tilt (1) unntatt: sleep_count += 1 annet: count += 1 sleep_count += 1 hvis sleep_count> 999: pause
print ("count:", count) if count> 200: pub = mqttc.publish ("TERREMOTO", "ON") pub = mqttc.publish ("SISMOGRAFO", str (count)) # Criamos o client e setamos suas konfiguracoes mqttc = mqtt. Client ()
mqttc.on_message = on_message mqttc.on_connect = on_connect mqttc.on_publish = on_publish
topic = "grupo3"
# Conexao com localhost, vi kan teste for å gjøre labredes. mqttc.connect ("34.230.74.201", 1883)
tilt = Tilt ('GPIO-A')
btn = Knapp ('GPIO-C')
while True: sleep (0,25) detectaTilt () if btn.is_pressed (): pub = mqttc.publish ("PANICO", "ON") print ("Botao ON") sleep (1) pub = mqttc.publish ("PANICO "," AV ") # else: # pub = mqttc.publish (" PANICO "," OFF ") # print (" Botao OFF ")
Trinn 3: Codigo Para Acionamento Sirene
Codigo para subscrição para acionamento da SIRENE, programa rodando dentro da dragon board 410c
# Importa lib para comunicacao com MOSQUITTOimport paho.mqtt.client som mqtt
fra libsoc_zero. GPIO import LED fra tid import sleep led = LED ('GPIO-E') #led.off ()
# Definer o que fazer ao conectar def on_connect (klient, obj, flagg, rc): print ("ConexÃà £ o estabelecida com broker")
# Definer o que fazer ao receber uma mensagem def on_message (client, obj, message): print ("LED" + str (message.payload.decode ("utf-8")) if str (message.payload.decode ("utf-8")) == "on": print ("Sirene ligada") led.on () else: print ("Sierene apagada") led.off ()
# IP do broker broker_address = "34.230.74.201"
# Cria o cliente sub = mqtt. Client ("grupo3")
sub.connect (megleradresse)
sub.on_message = on_message sub.on_connect = on_connect
# Inkreve no topico sub.abonner ("SIRENE", qos = 0)
# Loop para escuta sub.loop_forever ()
Trinn 4: Codigo Twitter - Post
Código para publicação do twitter assim que acionado o alarme.
hvor kan du bruke virtuelle maskiner fra AWS EC2
#!/usr/bin/env python #---------------------------------------- ------------------------------- # twitter-post-status #-legger ut en statusmelding til tidslinjen din # --- -------------------------------------------------- ------------------ import paho.mqtt. abonnere som abonnere
importtid
fra twitter import *
#------------------------------------------------- ---------------------- # hva skal vår nye status være? #------------------------------------------------- ---------------------- new_status = "#Terremoto Procure uma zona segura-teste"
#------------------------------------------------- ---------------------- # last inn API-legitimasjonen vår # ---------------------- ------------------------------------------------- import sys sys.path.append (".") importkonfigurasjon
#------------------------------------------------- ---------------------- # lag twitter API-objekt # ---------------------- ------------------------------------------------ twitter = Twitter (auth = OAuth ('senha removeida))
#------------------------------------------------- ---------------------- # legg ut en ny status # twitter API-dokument: https://dev.twitter.com/rest/reference/post/statu… #------------------------------------------------- ----------------------
mens 1: m = subscribe.simple ("twitteralarme", hostname = "172.31.83.191", beholdt = usant) hvis m.topic == "twitteralarme" og str (m.payload.decode ("utf-8")) == "på": resultater = twitter.statuses.update (status = (new_status)+str (time.time ())) # print ("oppdatert status: % s" % new_status)
Trinn 5: Centro De Comando
en brukerhåndbok for å oppdage eller varsle en brukerhåndbok for bruk av regressiva for en mens du bruker den. O operador pode cancelar o envio ou acionar o envio imediato do alerta.
Para uso do dasboard utilizamos um android do phone for a compesa of operação do centro de comando.
hvor kan du bruke virtuelle maskiner fra AWS EC2
import paho.mqtt.client som pahoimport paho.mqtt.subonner as subscribe import paho.mqtt.publish as publish import json import time import six import ssl from time import sleep
emner = ['#']
gatilho = 0 hora_disparo = 0 publish.single ("ACIONADO", "OFF", qos = 1, hostname = "172.31.83.191") publish.single ("sensor1", "OFF", qos = 1, hostname = "172.31.83.191 ") publish.single (" sensor2 "," OFF ", qos = 1, hostname =" 172.31.83.191 ")
connflag = Falsk
def on_connect (klient, brukerdata, flagg, rc): global connflag connflag = True print (connflag) print ("Tilkobling returnert resultat:" + str (rc))
def on_message (client, userdata, msg): # print ("teste") print (msg.topic+""+str (msg.payload))
def on_log (klient, brukerdata, nivå, buf): print (msg.topic+""+str (msg. Payload))
mqttc = paho. Client ("Broker_MSG") mqttc.on_connect = on_connect mqttc.on_message = on_message
awshost = "data.iot.us-east-1.amazonaws.com" awsport = 8883 clientId = "a2rczvc6ni8105" thingName = "Ufscar2018" caPath = "aws-iot-rootCA.crt" certPath = "9e85dfd42a-certificate.pem. crt "keyPath =" 9e85dfd42a-private.pem.key "mqttc.tls_set (caPath, certfile = certPath, keyfile = keyPath, cert_reqs = ssl. CERT_REQUIRED, tls_version = ssl. PROTOCOL_TLSv1_2, ciphc.cnt, keepalive = 60) mqttc.loop_start ()
mens 1: hora = time.time () sleep (.1) publish.single ("LEDTERREMOTO", "on", qos = 1, hostname = "172.31.83.191")
# if connflag == True: # mqttc.publish ("melding", json.dumps ({'melding': "TERREMOTO"}), qos = 1) hvis gatilho == 1: publish.single ("TEMPO", str (round (hora_disparo-hora, 0)), qos = 1, hostname = "172.31.83.191") publish.single ("LEDTERREMOTO", "on", qos = 1, hostname = "172.31.83.191") else: publiser.single ("TEMPO", "99", qos = 1, hostname = "172.31.83.191") # print ("") if (hora> hora_disparo) og (gatilho == 1): # print ("TERREMOTO") # print (connflag) if connflag == True: # mqttc.publish ("melding", json.dumps ({'melding': "TERREMOTO"}), qos = 1) # mqttc.publish ("melding", "TERREMOTO ", qos = 1) mqttc.publish (" melding ", json.dumps (" TERREMOTO - PROCURE UMA ZONA SEGURA "), qos = 1)
# print ("teste SNS") # publish.single ("LED", "on", hostname = "172.31.83.191") publish.single ("SIRENE", "on", qos = 1, hostname = "172.31. 83.191 ") publish.single (" TEMPO "," TERREMOTO ", qos = 1, hostname =" 172.31.83.191 ") publish.single (" ACIONADO "," OFF ", qos = 1, hostname =" 172.31.83.191 ") publish.single ("twitteralarme", "on", qos = 1, hostname = "172.31.83.191") publish.single ("twitter", "TERREMOTO - PROCURE UMA ZONA SEGURA", qos = 1, hostname = "172.31.83.191 ") gatilho = 0 søvn (5) m = subscribe.simple (emner, vertsnavn =" 172.31.83.191 ", beholdt = Falsk) hvis m.topic ==" ACIONADO "og str (m.payload.decode (" utf-8 ")) ==" OFF ": gatilho = 0 print (" cancelado ") hvis m.topic ==" medico "og str (m.payload.decode (" utf-8 ")) ==" på ": if connflag == True: mqttc.publish (" medico ", json.dumps (" MEDICOS - EMERGENCIA TERREMOTO "), qos = 1) if m.topic ==" bombeiro "og str (m.payload.decode ("utf -8")) == "on": if connflag == True: mqttc.publish ("bombeiro", json.dumps ("BOMBEIRO - EMERGENCIA TERREMOTO"), qos = 1) if m.topic == " ambulancia "og str (m.payloa d.decode ("utf -8")) == "on": if connflag == True: mqttc.publish ("ambulancia", json.dumps ("AMBULANCIA - EMERGENCIA TERREMOTO"), qos = 1) hvis m. topic == "urgente" og str (m.payload.decode ("utf-8")) == "on": publish.single ("ACIONADO", 1, qos = 1, hostname = "172.31.83.191") gatilho = 1 hora_disparo = time.time ()+5 if str (m.payload.decode ("utf-8")) == "ON": if gatilho == 1: print ("acelerado 20") hora_disparo = hora_disparo -20 annet: print ("Acionado") publish.single ("ACIONADO", 1, qos = 1, hostname = "172.31.83.191") gatilho = 1 hora_disparo = time.time ()+60
Trinn 6: Codigo Twitter - Monitoração
kan overvåke twitter, og kan sende innlegg til regiao de sorocaba
hvor kan du bruke virtuelle maskiner fra AWS EC2
n
fra twitter import *import config import paho.mqtt.publiser som publiser
fra tid av importer søvn
twitter = Twitter (auth = OAuth (config.access_key, config.access_secret, config.consumer_key, config.consumer_secret))
breddegrad = -23,546211 lengdegrad = -46,637840 alcance = 50 resultados = 1
publish.single ("twitter_alarme", "ON", hostname = "34.230.74.201")
result_count = 0 last_id = Ingen flagg = 0
for i i området (60): #----------------------------------------- ------------------------------ # utfør et søk basert på breddegrad og lengdegrad # twitter API-dokumenter: https:// dev. twitter.com/rest/reference/get/search… #------------------------------------- ---------------------------------- prøve: query = twitter.search.tweets (q = "#Terremoto", geokode = " %f, %f, %dkm" %(breddegrad, lengdegrad, alcanse), max_id = last_id) print ("leu")
unntatt: print ("erro acesso twitter") pause
for resultat i spørringen ["statuser"]:
#------------------------------------------------- ---------------------- # behandler bare et resultat hvis det har en geografisk plassering # ----------------- -------------------------------------------------- ---- if result ["geo"]: result_count += 1 last_id = result ["id"] sleep (1) if result_count == resultados: flag += 1 publish.single ("twitter_alarme", "ON", hostname = "34.230.74.201") publish.single ("twitter", "TERREMOTO - DETECTADO", hostname = "34.230.74.201") pause
Trinn 7: Estrutura AWS
Utilizamos uma maquina virtual rodando ubuntu and estrutura AWS EC2
Bruker en AWS IOT CORE for tjenesten for MQTT og konfigurasjoner som er i samsvar med menyen
Utnyttede emner for AWS SNS kan også brukes til å dele AWS IOT CORE
Anbefalt:
Arduino bilvarslingssystem for omvendt parkering - Trinn for trinn: 4 trinn
Arduino Car Reverse Parking Alert System | Trinn for trinn: I dette prosjektet skal jeg designe en enkel Arduino Car Reverse Parking Sensor Circuit ved hjelp av Arduino UNO og HC-SR04 Ultrasonic Sensor. Dette Arduino -baserte bilreverseringssystemet kan brukes til autonom navigasjon, robotavstand og andre områder
Trinn for trinn PC -bygging: 9 trinn
Steg for trinn PC -bygging: Rekvisita: Maskinvare: HovedkortCPU & CPU -kjøler PSU (strømforsyningsenhet) Lagring (HDD/SSD) RAMGPU (ikke nødvendig) CaseTools: Skrutrekker ESD -armbånd/mathermal pasta m/applikator
Tre høyttalerkretser -- Trinn-for-trinn opplæring: 3 trinn
Tre høyttalerkretser || Trinn-for-trinn opplæring: Høyttalerkretsen styrker lydsignalene som mottas fra miljøet til MIC og sender den til høyttaleren der forsterket lyd produseres. Her vil jeg vise deg tre forskjellige måter å lage denne høyttalerkretsen på:
Comando Por Voz - DragonBoard410c: 5 trinn
Comando Por Voz - DragonBoard410c: Este guia ir á ensinar a instalar e configar o programa Julius junto com o Coruja, que s ã o respectivamente um programa de reconhecimento de voz e o modelo ac ú stico em Portugu ê s.A vantagem da utiliza ç ã o do Ju
Centro De Cómputo Para Niños Con Raspberry Pi: 7 trinn
Centro De Cómputo Para Niños Con Raspberry Pi: Estos ser á n los primeros pasos de la Raspberry Pi og para ello necesitaremos: Raspberry Pi 2 Adaptador de red a micro USB Tarjeta micro SD (de 8 gb) Cable HDMI Cargador Rat ó n Teclado para computadoraEn caso de contar con un Kit de inicio