Բովանդակություն:
- Քայլ 1: Dragonbord 410c - Publicação Dos Sensores - Analogicos
- Քայլ 2. Sensores Digitais - Publicação
- Քայլ 3: Codigo Para Acionamento Sirene
- Քայլ 4: Codigo Twitter - Տեղադրեք
- Քայլ 5: Centro De Comando
- Քայլ 6: Codigo Twitter - Monitoração
- Քայլ 7: Estrutura AWS
Video: Centro De Comando Emergencias - Erupção De Vulcão E Terremotos: 7 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:48
Projeto acadêmico para atender cenário de colaboração através da internet for divulgação de desastres naturais, onde será possibile a detecção dos acontecimentos através de sensores IOT de temperatura, luminosidade, oscilação (tilte)) e botã. Ainda no cenário de colaboração prevemos integração com o Twitter- ը և aplicativos com suporte mqtt para acionamento do alerta- ն:
Diante a possibilidade de diversos meios de entrada na solução, caberá um centre de de operações avaliar se a informação esta correta evitando assim falsos-positivos dos dispositivos automatizado եւ avaliar a possibilidade de fakenews- ի միջոցով: Tal tomada de decisão é important diante ao pânico que um alarme falso pode gerar.
Կատարել է զգուշացում, որը հաշվի է առնում SMS- ի, մեր հաճախորդների հաճախորդների, էլեկտրոնային փոստի, Twitter- ի և էլեկտրոնային փոստի հասցեները:
O projeto contou com uso de recursos da AWS ներառյալ IOT CORE, EC2 և SNS
Sensores da DragonBord 410c
clientes android mqtt
Sendo todo desenvolvido em python
Ավտոմեքենաներ:
Դիեգո Ֆերնանդես դոս Սանտոս - [email protected]
Գաբրիել Պիովանի Մորեյրա դոս Սանտոս - [email protected]
Գուստավո Վեննասիո Լուզ - [email protected]
Պաուլո Հենրիկե Ալմեյդա Սանտոս - [email protected]
Քայլ 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 detearem uma variação fora do padrão pré estabelecido enviarem um alerta através do Protoko mqtt sinalizando.
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 տարբեր, և toda novo alerta deteado decresce o contador em 20 սեգունդներ:
programa rodando dentro da dragon borad 410c
#!/usr/bin/python3 ներմուծել spidev libsoc- ից ներմուծել gpio ժամանակից ներմուծել քուն
# Importa lib para comunicacao com MOSQUITTO ներմուծել 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 usa a porta ADC2 use o seguinte vetor de configuraçàchannel o channel_select2 = [0x01, 0xA0, 0x00]
def on_connect (mqttc, obj, flags, rc): print ("rc:" + str (rc))
def on_message (mqttc, obj, msg): տպել (msg.topic + "" + str (msg.qos) + "" + str (msg.payload))
def on_publish (mqttc, obj, mid): print ("Message Id:" + str (mid) + "\ n") pass
# Criamos o client and 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 (միջնորդի_հասցե)
եթե _ անունը _ == '_ հիմնական_' ՝ gpio_cs = gpio. GPIO (18, gpio. DIRECTION_OUTPUT)
gpio.request_gpios- ով ([gpio_cs]): contador = 0 adc_value_old = 0 adc_value2_old = 0 մինչդեռ contador <50:) 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 տպագիր ("peratերմաստիճանը. % f / n" % adc_value) pub.publish ("temperatura", str (adc_value)) # teste para acionar contador do alarme, teste ultima leitura + 5%
եթե adc_value_old == 0: adc_value_old = adc_value եթե 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 () քուն (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 = | (rx [2] & 0xff) adc_value2 = adc_value2 /10 տպել ("Luminosidade: % f / n" % adc_value2) pub.publish ("luminosidade", str (adc_value2))
# teste para acionar contador do alarme, teste ultima leitura + 50%
եթե adc_value2_old == 0: adc_value2_old = adc_value2 եթե adc_value2> (adc_value2_old*1.5): pub.publish ("ALARME", "ON") print ("Alarmado Luminosidade") adc_value2_old = adc_value2 քուն (3)
Քայլ 2. Sensores Digitais - Publicação
código para publicação dos sensores digitais
Os sensores digitais neste projeto foram o tilte que detea os tremores e o botão para simular o uso de um botão de pânico- ի համար:
quando deteado uma anomalia ou botão de pânico pressionado a contagem regressiva é iniciada.
programa rodando dentro da dragon borad 410c
libsoc_zero. GPIO ներմուծման կոճակ libsoc_zero. GPIO ներմուծումից Tilt from time import քնի ներմուծում paho.mqtt.client as mqtt import sys
def on_connect (mqttc, obj, flags, rc): տպել («Conectado» + փող (rc))
def on_message (mqttc, obj, msg): տպել (msg.topic + "" + str (msg.qos) + "" + str (msg.payload))
def on_publish (mqttc, obj, mid): # print ("Message Id:" + str (mid) + "\ n") pass
def deteaTilt (): count = 0 sleep_count = 0 while True: try: tilt.wait_for_tilt (1) բացառությամբ: sleep_count += 1 այլ: count += 1 sleep_count += 1 եթե sleep_count> 999: ընդմիջում
տպել ("հաշվել.", հաշվել) եթե հաշվել> 200: pub = mqttc.publish ("TERREMOTO", "ON") pub = mqttc.publish ("SISMOGRAFO", str (count)) # 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
թեմա = "grupo3"
# Conexao com localhost, uma vez que testamos fora do labredes: mqttc.connect ("34.230.74.201", 1883)
թեքում = թեքություն ('GPIO-A')
btn = Կոճակ ('GPIO-C')
իսկ True: "," OFF ") # else: # pub = mqttc.publish (" PANICO "," OFF ") # print (" Botao OFF ")
Քայլ 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 as mqtt
libsoc_zero. GPIO ներմուծել LED ժամանակից ներմուծել քուն led = LED ('GPIO-E') #led.off ()
# Սահմանել o que fazer ao conectar def on_connect (client, obj, flags, rc): print («Conex࣠o estabelecida com broker»)
# Սահմանել 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 () այլապես ՝ 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
# Առանց թեմայի ավելացրեք ենթաբաժանորդագրություն:
# Loop para escuta sub.loop_forever ()
Քայլ 4: Codigo Twitter - Տեղադրեք
Código para publicação do twitter assim que acionado o alarme.
código rodando na maquina virtual da AWS EC2
#!/usr/bin/env python #---------------------------------------- ---------------------------------- # twitter-post-status #-տեղադրում է կարգավիճակի հաղորդագրություն ձեր ժամանակացույցին # --- ------------------------------------------------------ ------------------ ներմուծել paho.mqtt.subscribe as subscribe
ներմուծման ժամանակը
twitter ներմուծումից *
#----------------------------------------------------- ---------------------- # ինչպիսի՞ն պետք է լինի մեր նոր կարգավիճակը: #----------------------------------------------------- ---------------------- new_status = "#Terremoto Procure uma zona segura-teste"
#----------------------------------------------------- ---------------------- # բեռնել մեր API հավատարմագրերը # ---------------------- ---------------------------------------------------- ներմուծում sys sys.path.append (".") ներմուծել կազմաձևը
#----------------------------------------------------- ---------------------- # ստեղծել twitter API օբյեկտ # ---------------------- ---------------------------------------------------- թվիթեր = Twitter (author = OAuth ('senha removeida))
#----------------------------------------------------- ---------------------- # տեղադրեք նոր կարգավիճակ # twitter API- ի փաստաթղթեր ՝ https://dev.twitter.com/rest/reference/post/statu… #----------------------------------------------------- ----------------------
մինչդեռ 1: m = subscribe.simple ("twitteralarme", hostname = "172.31.83.191", պահպանվում է = False) եթե m.topic == "twitteralarme" և str (m.payload.decode ("utf-8")) == "on": results = twitter.statuses.update (status = (new_status)+str (time.time ())) # print ("updated status: % s" % new_status)
Քայլ 5: Centro De Comando
semper que acionado կամ dispitivo ձեռնարկ կամ մենք հայտնաբերել ենք մեր alerta manual do usuário é acionada uma contagem regressiva para envio de mensagem: O operador pode cancellar o envio ou acionar o envio imediato do alerta:
Օգտագործելով dasboard- ի օգտագործումը Android- ի համար, կարող եք օգտագործել հեռախոսը `օգտագործելով օպերատորների կենտրոնական ծառայություններ:
código rodando na maquina virtual da AWS EC2
ներմուծել paho.mqtt.client որպես pahoimport paho.mqtt.subscribe as subscribe ներմուծել paho.mqtt. հրապարակել որպես հրապարակել ներմուծում json ներմուծման ժամանակ ներմուծել վեց ներմուծման ssl ժամանակ ներմուծման քուն
թեմաներ = ['#']
gatilho = 0 hora_disparo = 0 publik.single ("ACIONADO", "OFF", qos = 1, hostname = "172.31.83.191") published.single ("sensor1", "OFF", qos = 1, hostname = "172.31.83.191 ") published.single (" sensor2 "," OFF ", qos = 1, hostname =" 172.31.83.191 ")
connflag = Սխալ
def on_connect (հաճախորդ, տվյալների տվյալներ, դրոշներ, rc).
def on_message (client, userdata, msg): # print ("teste") print (msg.topic+""+str (msg.payload))
def on_log (client, userdata, level, 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), Keepalive = 60) mqttc.loop_start ()
մինչդեռ 1: hora = time.time () sleep (.1) published.single ("LEDTERREMOTO", "on", qos = 1, hostname = "172.31.83.191")
# if connflag == Trueիշտ: # mqttc.publish («հաղորդագրություն», json.dumps ({'հաղորդագրություն': "TERREMOTO"}), qos = 1) եթե gatilho == 1: published.single ("TEMPO", փող. (կլոր (hora_disparo-hora, 0)), qos = 1, hostname = "172.31.83.191") published.single ("LEDTERREMOTO", "on", qos = 1, hostname = "172.31.83.191") այլ: հրապարակել.մեկ ("TEMPO", "99", qos = 1, hostname = "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 (" հաղորդագրություն ", json.dumps (" TERREMOTO - PROCURE UMA ZONA SEGURA "), qos = 1)
# print ("teste SNS") # published.single ("LED", "on", hostname = "172.31.83.191") published.single ("SIRENE", "on", qos = 1, hostname = "172.31. 83.191 ") published.single (" TEMPO "," TERREMOTO ", qos = 1, hostname =" 172.31.83.191 ") published.ingle (" ACIONADO "," OFF ", qos = 1, hostname =" 172.31.83.191 ") published.single ("twitteralarme", "on", qos = 1, hostname = "172.31.83.191") published.single ("twitter", "TERREMOTO - PROCURE UMA ZONA SEGURA", qos = 1, hostname = "172.31.83.191 ") gatilho = 0 քուն (5) մ = բաժանորդագրվել: պարզ (թեմաներ, հյուրընկալողի անուն =" 172.31.83.191 ", պահպանված = Կեղծ), եթե m.topic ==" ACIONADO "և փող (m.payload.decode (" utf-8 ")) ==" OFF ": gatilho = 0 տպագիր (" չալլադո "), եթե m.topic ==" medico "և փող (m.payload.decode (" utf-8 ")) ==" on ": if connflag == Trueիշտ: mqttc.publish (" medico ", json.dumps (" MEDICOS - EMERGENCIA TERREMOTO "), qos = 1) եթե m.topic ==" bombeiro "և փող (m.payload.decode («utf -8»)) == «միացված է». եթե connflag == Trueիշտ է. շտապօգնություն »և փող. (մ. Payloa դ. ծածկագիր («utf -8»)) == «միացված». թեմա == "urgente" and str (m.payload.decode ("utf-8")) == "on": published.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 այլ. Տպել («Acionado») publik.single («ACIONADO», 1, qos = 1, hostname = "172.31.83.191") gatilho = 1 hora_disparo = time.time ()+60
Քայլ 6: Codigo Twitter - Monitoração
código monitoração twitter, pesquisa post na regiao de sorocaba
código rodando na maquina virtual da AWS EC2
n
twitter ներմուծումից *ներմուծում կազմաձևում ներմուծում paho.mqtt.հրապարակեք որպես հրապարակում
ժամանակից ներմուծել քուն
twitter = Twitter (author = OAuth (config.access_key, config.access_secret, config.consumer_key, config.consumer_secret))
լայնություն = -23.546211 երկայնություն = -46.637840 ալկանցիա = 50 արդյունք = 1
published.single ("twitter_alarme", "ON", hostname = "34.230.74.201")
result_count = 0 last_id = Ոչ մի դրոշ = 0
i- ի համար (60). #--------------------------------------------- ------------------------------ # կատարեք որոնում ՝ հիմնված լայնության և երկայնության վրա # twitter API փաստաթղթերը ՝ https:// dev. twitter.com/rest/reference/get/search… #------------------------------------- ---------------------------------- փորձել: query = twitter.search.tweets (q = "#Terremoto", geocode = " %f, %f, %dkm" %(լայնություն, երկայնություն, ալկանս), max_id = last_id) տպագիր ("leu")
բացառությամբ `տպագիր (« erro acesso twitter ») ընդմիջում
հարցման ["կարգավիճակներ"] արդյունքի համար.
#----------------------------------------------------- ---------------------- # արդյունքը մշակեք միայն այն դեպքում, եթե այն ունի տեղաբաշխում # ----------------- ------------------------------------------------------ ---- if result ["geo"]: result_count += 1 last_id = result ["id"] քնել (1) if result_count == resultados: flag += 1 published.single ("twitter_alarme", "ON", hostname = "34.230.74.201") publik.single ("twitter", "TERREMOTO - DETECTADO", hostname = "34.230.74.201") ընդմիջում
Քայլ 7: Estrutura AWS
Utilizamos uma maquina virtual rodando ubuntu na estrutura AWS EC2
Օգտագործեք AWS IOT CORE- ը ՝ օգտագործելով MQTT- ի կոնֆիգուրացիաները, ինչպես նաև համապատասխանում է տղամարդու տիպին:
Օգտվեք թեմաներից AWS SNS- ից, որոնք անհրաժեշտ են AWS IOT CORE- ին
Խորհուրդ ենք տալիս:
Arduino մեքենայի հետադարձ կայանման ահազանգման համակարգ - Քայլ առ քայլ: 4 քայլ
Arduino մեքենայի հետադարձ կայանման ահազանգման համակարգ | Քայլ առ քայլ. Այս նախագծում ես նախագծելու եմ մի պարզ Arduino մեքենայի հետադարձ կայանման սենսորային միացում ՝ օգտագործելով Arduino UNO և HC-SR04 ուլտրաձայնային տվիչ: Այս Arduino- ի վրա հիմնված Car Reverse ազդանշանային համակարգը կարող է օգտագործվել ինքնավար նավարկության, ռոբոտների ռանգի և այլ տեսականու համար
Քայլ առ քայլ համակարգչային շենք. 9 քայլ
Քայլ առ քայլ համակարգչի կառուցում. Պարագաներ. Սարքավորումներ. Մայրական համակարգիչ CPU coolerPSU (Էներգամատակարարման միավոր) Պահեստավորում (HDD/SSD) RAMGPU (պարտադիր չէ) Գործ CaseTools: Պտուտակահան ESD ապարանջան/matsthermal paste w/aplikator
Comando Por Voz - DragonBoard410c: 5 քայլ
Comando Por Voz - DragonBoard410c: Este guia ir á ensuli a instalar e configurar o programa Julius junto com o Coruja, que s ã o respectivamente um programa de reconhecimento de voz e o modelo ac ú stico em Portugueseu ê s. A vantagem da utiliza ç ã o do Ju
Ձայնային թռիչք Arduino Uno- ի հետ Քայլ առ քայլ (8 քայլ) `8 քայլ
Ձայնային թռիչք Arduino Uno- ի հետ Քայլ առ քայլ (8 քայլ). Ուլտրաձայնային ձայնային փոխարկիչներ L298N Dc կանացի ադապտեր էներգիայի մատակարարում արական dc pin Arduino UNOBreadboard և անալոգային նավահանգիստներ ՝ կոդը փոխարկելու համար (C ++)
Centro De Cómputo Para Niños Con Raspberry Pi: 7 քայլ
Centro De Cómputo Para Niños Con Raspberry Pi. Estos ser á n los primeros pasos de la Raspberry Pi և այլընտրանքային եղանակներով. Raspberry Pi 2 Adaptador 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