Satura rādītājs:
- 1. darbība: Dragonbord 410c - Publicação Dos Sensores - Analogicos
- 2. darbība: Sensores Digitais - Publicação
- 3. solis: Codigo Para Acionamento Sirene
- 4. solis: Codigo Twitter - ziņa
- 5. solis: Centro De Comando
- 6. solis: Codigo Twitter - Monitoração
- 7. darbība: Estrutura AWS
Video: Centro De Comando Emergencias - Erupção De Vulcão E Terremotos: 7 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:55
Projeto acadêmico para atender cenário de colaboração através da internet para divulgação de desastres naturais, onde será possível and detecção dos acontecimentos através de sensores IOT de temperatura, luminosidade, oscilação (tilte) e botão de pânico. Ainda no cenário de colaboração prevemos integração com o Twitter and aplicativos com comportation mqtt para acionamento do alerta.
Diante a Iespējamie de diversos meios de entrada na solução, Caberá um centro de de operações avaliar se a informationção esta koreta evitando assim falsos-positivos dos dispositivos automatizado e avaliar a possibleilidade de factenews. Tal tomada de decisão é essential diante ao pânico que um alarme falso pode gerar.
Como solução de alerta de mensagem estamos apsvērumi vai lietošanas noteikumi SMS, alerta através de cliente mqtt, e -pasts, sirēna un twitter.
AWS, izmantojot IOT CORE, EC2 un SNS, atkārtotas izmantošanas kontūras
Sensores da DragonBord 410c
clientes android mqtt
Sendo todo desenvolvido em python
Autores:
Diego Fernandes dos Santos - [email protected]
Gabriels Piovani Moreira dos Santos - [email protected]
Gustavo Venancio Luz - [email protected]
Paulo Henrique Almeida Santos - [email protected]
1. darbība: 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 segments, and todo novo alerta detectado decresce o contador em 20 segundos.
programma rodando dentro da dragon borad 410c
#!/usr/bin/python3import spidev no libsoc importēt gpio no laika importēšanas miega
# Importa lib para comunicacao com MOSQUITTO importēt paho.mqtt.client kā 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 izmantojiet portu ADC2, izmantojiet konfigurāciju, lai konfigurētu kanālu_select2 = [0x01, 0xA0, 0x00]
def on_connect (mqttc, obj, karogi, 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 ("Ziņojuma ID:" + str (vidū) + "\ n") caurlaide
# 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, uma vez que testamos fora do labredes. broker_address = "34.230.74.201"
pub.connect (broker_address)
ja _name _ == '_ main_': gpio_cs = gpio. GPIO (18, gpio. DIRECTION_OUTPUT)
ar gpio.request_gpios ([gpio_cs]): contador = 0 adc_value_old = 0 adc_value2_old = 0, savukārt contador <50: gpio_cs.set_high () miega (0.00001) gpio_cs.set_low () rx = spi.xfer (channel_select1) gpio) contador = contador + 1 adc_value = (rx [1] << 8) & 0b1100000000 adc_value = adc_value | (rx [2] un 0xff) adc_value = ((((adc_value * 5)) / 1024) - 0,5) * 100 drukāt ("Temperatūra: % f / n" % adc_value) pub.publish ("temperatūra", str (adc_value)) # teste para acionar contador do alarme, teste ultima leitura + 5%
if 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 miega režīms (1)
gpio_cs.set_high () miegs (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_value2 = adc (rx [2] un 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%
ja adc_value2_old == 0: adc_value2_old = adc_value2 ja adc_value2> (adc_value2_old*1.5): pub.publish ("ALARME", "ON") print ("Alarmado Luminosidade") adc_value2_old = adc_value2 miega
2. darbība: Sensores Digitais - Publicação
código para publicação dos sensores digitalis
Os sensores digitalis 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 vai botāniskais preses spiediens un infekcijas regresīva un iniciada.
programma rodando dentro da dragon borad 410c
no libsoc_zero. GPIO importēšanas poga no libsoc_zero. GPIO importēšana Noliekt no laika importēšanas miega importēšana paho.mqtt.client kā mqtt importēšanas sistēma
def on_connect (mqttc, obj, karogi, 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 ("Ziņojuma ID:" + str (vidū) + "\ n") pass
def detectaTilt (): count = 0 sleep_count = 0, kamēr True: try: tilt.wait_for_tilt (1), izņemot: sleep_count += 1 else: count += 1 sleep_count += 1, ja sleep_count> 999: break
print ("count:", count), ja skaits> 200: pub = mqttc.publish ("TERREMOTO", "ON") pub = mqttc.publish ("SISMOGRAFO", str (skaits)) # 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
topic = "grupo3"
# Conexao com localhost, uma vez que testamos fora do labredes. mqttc.connect ("34.230.74.201", 1883)
noliekt = noliekt ('GPIO-A')
btn = Poga ('GPIO-C')
kamēr True: miega režīms (0,25) detectaTilt (), ja btn.is_pressed (): pub = mqttc.publish ("PANICO", "ON") drukāt ("Botao ON") miega režīms (1) pub = mqttc.publish ("PANICO "," OFF ") # else: # pub = mqttc.publish (" PANICO "," OFF ") # print (" Botao OFF ")
3. solis: Codigo Para Acionamento Sirene
SIRENE Codigo para subscrição para acionamento da, programma rodando dentro da dragon board 410c
# Importa lib para comunicacao com MOSQUITTOimport paho.mqtt.client as mqtt
no libsoc_zero. GPIO importa gaismas diode no laika importēšanas miega led = LED ('GPIO-E') #led.off ()
# Define o que fazer ao conectar def on_connect (klients, obj, karodziņi, rc): print ("ConexÃÆ'à £ £ estabelecida com broker")
# Define o que fazer ao receber uma mensagem def on_message (client, obj, message): print ("LED" + str (message.payload.decode ("utf-8")))) ja 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 (broker_address)
sub.on_message = on_message sub.on_connect = on_connect
# Nepaaugstiniet tēmu, lai abonētu ("SIRENE", qos = 0)
# Loop para escuta sub.loop_forever ()
4. solis: Codigo Twitter - ziņa
Código para publicação do twitter assim que acionado o alarmme.
virtuālais kods AWS EC2
#!/usr/bin/env python #---------------------------------------- ------------------------------- # twitter-post-status #-ievieto statusa ziņojumu savā laika skalā # --- -------------------------------------------------- ------------------ importēt paho.mqtt.subscribe as subscribe
importa laiks
no twitter importa *
#------------------------------------------------- ---------------------- # kādam vajadzētu būt mūsu jaunajam statusam? #------------------------------------------------- ---------------------- new_status = "#Terremoto Procure uma zona segura-teste"
#------------------------------------------------- ---------------------- # ielādējiet mūsu API akreditācijas datus # ---------------------- ------------------------------------------------ importēt sys sys.path.append (".") importēšanas konfigurācija
#------------------------------------------------- ---------------------- # izveidot twitter API objektu # ---------------------- ------------------------------------------------ twitter = Twitter (auth = OAuth ('senha removeida))
#------------------------------------------------- ---------------------- # ievietojiet jaunu statusu # twitter API dokumenti: https://dev.twitter.com/rest/reference/post/statu… #------------------------------------------------- ----------------------
kamēr 1: m = abonēt.vienkāršs ("twitteralarme", saimniekdatora nosaukums = "172.31.83.191", saglabāts = nepatiess), ja m.topic == "twitteralarme" un str (m.payload.decode ("utf-8")) == "ieslēgts": rezultāti = twitter.statuses.update (status = (new_status)+str (time.time ())) # print ("atjaunināts statuss: % s" % new_status)
5. solis: Centro De Comando
semper que acionado um dispositivo manual or detectado um alerta manual do usuário é acionada uma contagem regressiva para envio de mensagem. Operatoru podu atcelšana vai envio vai acionar o envio imediato do alerta.
Lai izmantotu datora dēli, izmantojiet Android tālruni, lai uzzinātu par operētājsistēmas centru.
virtuālais kods AWS EC2
importēt paho.mqtt.client kā pahoimport paho.mqtt.abonēt kā abonēt importēt paho.mqtt.publicēt kā publicēt importēt json importa laiku importēt sešus importēt ssl no laika importēšanas miega
tēmas = ['#']
gatilho = 0 hora_disparo = 0 public.single ("ACIONADO", "OFF", qos = 1, resursdatora nosaukums = "172.31.83.191") public.single ("sensors1", "IZSLĒGTS", qos = 1, saimniekdatora nosaukums = "172.31.83.191 ") publicēt.single (" sensors2 "," IZSLĒGTS ", qos = 1, saimniekdatora nosaukums =" 172.31.83.191 ")
connflag = Nepareizi
def on_connect (klients, lietotāja dati, karodziņi, rc): global connflag connflag = True print (connflag) print ("Savienojuma atgrieztais rezultāts:" + str (rc))
def on_message (klients, lietotāja dati, ziņojums): # print ("teste") print (msg.topic+""+str (msg.payload))
def on_log (klients, lietotāja dati, līmenis, 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, šifrēšanas avoti), keepalive = 60) mqttc.loop_start ()
kamēr 1: hora = laiks.laiks () miegs (.1) public.single ("LEDTERREMOTO", "ieslēgts", qos = 1, saimniekdatora nosaukums = "172.31.83.191")
# if connflag == True: # mqttc.publish ("message", json.dumps ({'message': "TERREMOTO"}), qos = 1) if gatilho == 1: publis.single ("TEMPO", str. (apaļš (hora_disparo-hora, 0)), qos = 1, resursdatora nosaukums = "172.31.83.191") publicēt.single ("LEDTERREMOTO", "ieslēgts", qos = 1, saimniekdatora nosaukums = "172.31.83.191") cits: publicēt.single ("TEMPO", "99", qos = 1, resursdatora nosaukums = "172.31.83.191") # print ("") if (hora> hora_disparo) and (gatilho == 1): # print ("TERREMOTO") # print (connflag) if connflag == True: # mqttc.publish ("message", json.dumps ({'message': "TERREMOTO"}), qos = 1) # mqttc.publish ("message", "TERREMOTO" ", qos = 1) mqttc.publish (" ziņojums ", json.dumps (" TERREMOTO - PROCURE UMA ZONA SEGURA "), qos = 1)
# print ("teste SNS") # public.single ("LED", "ieslēgts", saimniekdatora nosaukums = "172.31.83.191") public.single ("SIRENE", "ieslēgts", qos = 1, saimniekdatora nosaukums = "172.31. 83.191 ") publicēt.single (" TEMPO "," TERREMOTO ", qos = 1, resursdatora nosaukums =" 172.31.83.191 ") publiskot.single (" ACIONADO "," OFF ", qos = 1, hostname =" 172.31.83.191 ") public.single ("twitteralarme", "ieslēgts", qos = 1, saimniekdatora nosaukums = "172.31.83.191") public.single ("twitter", "TERREMOTO - PROCURE UMA ZONA SEGURA", qos = 1, resursdatora nosaukums = "172.31.83.191 ") gatilho = 0 miega (5) m = abonēt.vienkāršs (tēmas, saimniekdatora nosaukums =" 172.31.83.191 ", saglabāts = nepatiess), ja m.topic ==" ACIONADO "un str (m.payload.decode (" utf-8 ")) ==" OFF ": gatilho = 0 print ("ancelado"), ja m.topic == "medico" un str (m.payload.decode ("utf-8")) == "on ": if connflag == True: mqttc.publish (" medico ", json.dumps (" MEDICOS - EMERGENCIA TERREMOTO "), qos = 1) ja m.topic ==" bombeiro "un str (m.payload.decode ("utf -8")) == "on": if connflag == True: mqttc.publish ("bombeiro", json.dumps ("BOMBEIRO - EMERGENCIA TERREMOTO"), qos = 1) ja m.topic == " ambulancia "un str (m.payloa d.decode ("utf -8")) == "on": if connflag == True: mqttc.publish ("ambulancia", json.dumps ("AMBULANCIA - EMERGENCIA TERREMOTO"), qos = 1) ja m. topic == "urgente" un str (m.payload.decode ("utf-8")) == "on": public.single ("ACIONADO", 1, qos = 1, resursdatora nosaukums = "172.31.83.191") gatilho = 1 hora_disparo = laiks.laiks ()+5, ja str (m.payload.decode ("utf-8")) == "ON": ja gatilho == 1: print ("acelerado 20") hora_disparo = hora_disparo -20 cits: print ("Acionado") publiskot.single ("ACIONADO", 1, qos = 1, resursdatora nosaukums = "172.31.83.191") gatilho = 1 hora_disparo = time.time ()+60
6. solis: Codigo Twitter - Monitoração
código monitoração do twitter, pesquisa post na regiao de sorocaba
virtuālais kods AWS EC2
n
no twitter importēt *importēt konfigurāciju importēt paho.mqtt.publish kā publicēt
no laika importēt miegu
twitter = Twitter (auth = OAuth (config.access_key, config.access_secret, config.consumer_key, config.consumer_secret))
platums = -23,546211 garums = -46,637840 alcance = 50 resultados = 1
public.single ("twitter_alarme", "ON", resursdatora nosaukums = "34.230.74.201")
result_count = 0 last_id = Nav karoga = 0
i diapazonā (60): #----------------------------------------- ------------------------------ # veiciet meklēšanu, pamatojoties uz platumu un garumu # twitter API dokumenti: https:// dev. twitter.com/rest/reference/get/search… #------------------------------------- ---------------------------------- mēģiniet: query = twitter.search.tweets (q = "#Terremoto", ģeokods = " %f, %f, %dkm" %(platums, garums, alcance), max_id = last_id) print ("leu")
izņemot: drukāt ("erro acesso twitter") pārtraukums
rezultātam vaicājumā ["statuses"]:
#------------------------------------------------- ---------------------- # apstrādājiet rezultātu tikai tad, ja tam ir ģeogrāfiska atrašanās vieta # ----------------- -------------------------------------------------- ---- if result ["geo"]: result_count += 1 last_id = result ["id"] miega (1) if result_count == resultados: flag += 1 publiskot.single ("twitter_alarme", "ON", resursdatora nosaukums = "34.230.74.201") publicēt.single ("twitter", "TERREMOTO - DETECTADO", hostname = "34.230.74.201") pārtraukums
7. darbība: Estrutura AWS
Izmantojiet maquina virtuālo rodando ubuntu un estrutura AWS EC2
Utilizamos a AWS IOT CORE para vai serviss de MQTT on one configuraramos as aõões conforme o tipo de mensagem
Lietotāju tēmas, kas saistītas ar AWS SNS que eram acionados pelo AWS IOT CORE
Ieteicams:
Arduino brīdinājuma sistēma par automašīnas novietošanu atpakaļgaitā Soli pa solim: 4 soļi
Arduino brīdinājuma sistēma par automašīnas novietošanu atpakaļgaitā Soli pa solim: Šajā projektā es izveidošu vienkāršu Arduino automašīnas atpakaļgaitas stāvvietas sensora shēmu, izmantojot Arduino UNO un ultraskaņas sensoru HC-SR04. Šo uz Arduino bāzēto automašīnas reverso brīdinājuma sistēmu var izmantot autonomai navigācijai, robotu diapazonam un citiem diapazoniem
Soli pa solim datora veidošana: 9 soļi
Soli pa solim datora veidošana: Piegādes: Aparatūra: mātesplateCPU & CPU dzesētājs PSU (barošanas bloks) Krātuve (HDD/SSD) RAMGPU (nav nepieciešams) Korpuss Instrumenti: skrūvgriezis ESD rokassprādze/matermālā pasta ar aplikatoru
Trīs skaļruņu shēmas -- Soli pa solim apmācība: 3 soļi
Trīs skaļruņu shēmas || Soli pa solim apmācība: Skaļruņu ķēde pastiprina no vides saņemtos audio signālus uz MIC un nosūta to skaļrunim, no kura tiek radīts pastiprināts audio. Šeit es parādīšu trīs dažādus veidus, kā izveidot šo skaļruņu shēmu, izmantojot:
Akustiskā levitācija ar Arduino Uno soli pa solim (8 soļi): 8 soļi
Akustiskā levitācija ar Arduino Uno soli pa solim (8 soļi): ultraskaņas skaņas pārveidotāji L298N līdzstrāvas adaptera strāvas padeve ar vīriešu līdzstrāvas tapu Arduino UNOBreadboard un analogie porti koda konvertēšanai (C ++)
Centro De Cómputo Para Niños Con Raspberry Pi: 7 soļi
Centro De Cómputo Para Niños Con Raspberry Pi: Estos ser á n los primeros pasos de la Raspberry Pi y para ello necesitaremos: Raspberry Pi 2 Adapter de red and micro USB Tarjeta micro SD (de 8 gb) Cable HDMI Cargador Rat ó n Teclado para computadoraEn caso de contar con un Kit de inicio