ዝርዝር ሁኔታ:
- ደረጃ 1: Dragonbord 410c - Publicação Dos Sensores - Analogicos
- ደረጃ 2 ሴንሰርስ ዲጂታስ - Publicação
- ደረጃ 3: Codigo Para Acionamento Sirene
- ደረጃ 4: ኮዲጎ ትዊተር - ልጥፍ
- ደረጃ 5 ሴንትሮ ዴ ኮማንዶ
- ደረጃ 6: Codigo Twitter - Monitoração
- ደረጃ 7 - Estrutura AWS
ቪዲዮ: ሴንትሮ ዴ ኮማንዶ ኤመርጀንሲስ - ኤሩçኦ ዴ ቮልካኦ ኢ ቴሬሞቶስ 7 ደረጃዎች
2024 ደራሲ ደራሲ: John Day | [email protected]. ለመጨረሻ ጊዜ የተሻሻለው: 2024-01-30 07:31
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ã. 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 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 é ወሳኝ diante ao pânico que um alarme falso pode gerar.
ኮሞ solução de alerta de mensagem estamos considerrando o uso do envio de SMS, alerta através de cliente mqtt, email, sirene e twitter.
O projeto contou com uso de recursos da AWS incluindo IOT CORE ፣ EC2 e SNS
Sensores da DragonBord 410c
ደንበኞች 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 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 para o alerta começa contagem regressiva em 60 seguntos, e todo novo alerta detectado decresce o contador em 20 segundos.
programa rodando dentro da dragon borad 410c
#!/usr/bin/python3import spidev ከ libsoc አስመጪ ጂፒኦ ከጊዜ ወደ ጊዜ እንቅልፍ
# Importa lib para comunicacao com MOSQUITTO paho.mqtt.client ን እንደ 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]
#ፓራ በረንዳ ADC2 ይጠቀሙ o seguinte vetor de configuraç࣠o channel_select2 = [0x01, 0xA0, 0x00]
def on_connect (mqttc ፣ obj ፣ ባንዲራዎች ፣ አርሲ): ማተም ("rc:" + str (rc))
def on_message (mqttc, obj, msg): አትም (msg.topic + "" + str (msg.qos) + "" + str (msg.payload))
def on_publish (mqttc, obj, mid): ማተም ("የመልዕክት መታወቂያ" + str (አጋማሽ) + "\ n") ማለፍ
# Criamos o ደንበኛ እና setamos suas configuracoes mqttc = mqtt. Client ()
mqttc.on_message = on_message mqttc.on_connect = on_connect mqttc.on_publish = ላይ_አታተም
መጠጥ ቤት = mqtt. Client ("grupo3")
# Conexao com localhost ፣ uma vez que testamos fora do labredes። ደላላ_አድራሻ = "34.230.74.201"
pub.connect (የደላላ_አድራሻ)
_ ስም _ == '_ main_': 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: gpio_cs.set_high () እንቅልፍ (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] & 0xff) adc_value = (((adc_value * 5) / 1024) - 0.5) * 100 ህትመት ("Temperatura: % f / n" % adc_value) pub. ያትሙ ("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") ህትመት ("Alarmado temperatura") adc_value_old = adc_value እንቅልፍ (1)
gpio_cs.set_high () እንቅልፍ (0.00001) gpio_cs.set_low () rx = spi.xfer (channel_select2) gpio_cs. (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") ህትመት ("Alarmado Luminosidade") adc_value2_old = adc_value2 እንቅልፍ
ደረጃ 2 ሴንሰርስ ዲጂታስ - Publicação
código para publicação dos 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 ማስመጣት ከጊዜ ወደ ጊዜ አስመጣ የእንቅልፍ ማስመጣት paho.mqtt.client እንደ mqtt import sys
def on_connect (mqttc ፣ obj ፣ ባንዲራዎች ፣ አርሲ): ማተም ("Conectado" + str (rc))
def on_message (mqttc, obj, msg): አትም (msg.topic + "" + str (msg.qos) + "" + str (msg.payload))
def on_publish (mqttc, obj, mid): # ህትመት ("የመልዕክት መታወቂያ" + str (አጋማሽ) + "\ n") ማለፍ
def deteaTilt (): count = 0 sleep_count = 0 ሳለ እውነት ፦ ይሞክሩ ፦ tilt.wait_for_tilt (1) ካልሆነ በስተቀር የእንቅልፍ_ቁጥር += 1 ሌላ ፦ ቆጠራ += 1 የእንቅልፍ_ቁጥር += 1 የእንቅልፍ_ቁጥር> 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 = ላይ_አታተም
ርዕስ = "grupo3"
# Conexao com localhost ፣ uma vez que testamos fora do labredes። mqttc.connect ("34.230.74.201" ፣ 1883)
ያጋደለ = ያጋደለ ('GPIO-A')
btn = አዝራር ('GPIO-C')
እውነት እያለ እንቅልፍ (0.25) deteaTilt () btn.is_pressed (): pub = mqttc.publish ("PANICO", "ON") ህትመት ("Botao ON") እንቅልፍ (1) pub = mqttc.publish ("PANICO") "፣" ጠፍቷል ") # ሌላ ፦ # 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 ('GPIO-E') #led.off ()
# ግንኙነትን (ደንበኛ ፣ obj ፣ ባንዲራዎች ፣ አርሲ) ላይ ያብራሩ / ያትሙ (“Conex࣠o estabelecida com ደላላ”)
# መልዕክቱን (ደንበኛ ፣ obj ፣ መልእክት): ሕትመት ("LED" + str (message.payload.decode ("utf-8")))) str ከሆነ (message.payload.decode ("utf-8")) == "ላይ": ህትመት ("Sirene ligada") led.on () ሌላ: ህትመት ("Sierene apagada") led.off ()
# አይፒ ለደላላ ደላላ_አድራሻ = "34.230.74.201"
# Cria o cliente sub = mqtt. Client ("grupo3")
ንዑስ ግንኙነት (ደላላ_አድራሻ)
sub.on_message = on_message sub.on_connect = on_connect
# ምንም የቶፒኮ ንዑስ አይጨምር። በደንበኝነት ይመዝገቡ ("SIRENE" ፣ qos = 0)
# Loop para escuta sub.loop_forever ()
ደረጃ 4: ኮዲጎ ትዊተር - ልጥፍ
Código para publicação do twitter assim que acionado o alarme.
código rodando na maquina ምናባዊ ዳ AWS EC2
#!/usr/bin/env python #---------------------------------------- ------------------------------- # ትዊተር-ልጥፍ-ሁኔታ #-ለጊዜ መስመርዎ የሁኔታ መልእክት ይለጥፋል # --- -------------------------------------------------- ------------------ አስመጣ paho.mqtt.subscribe በማድረግ ደንበኝነት ይመዝገቡ
የማስመጣት ጊዜ
ከትዊተር ማስመጣት *
#------------------------------------------------- ---------------------- # አዲሱ አቋማችን ምን መሆን አለበት? #------------------------------------------------- ---------------------- new_status = "#Terremoto Procure uma zona segura-teste"
#------------------------------------------------- ---------------------- # የኤፒአይ ማስረጃዎቻችንን ይጫኑ # ---------------------- ------------------------------------------------- ማስመጣት sys sys.path.append (".") የማስመጣት ውቅር
#------------------------------------------------- ---------------------- # የትዊተር ኤፒአይ ነገር ይፍጠሩ # ---------------------- ------------------------------------------------- ትዊተር = ትዊተር (auth = OAuth ('senha removida))
#------------------------------------------------- ---------------------- # አዲስ ሁኔታ # የትዊተር ኤፒአይ ሰነዶችን ይለጥፉ https://dev.twitter.com/rest/reference/post/statu… #------------------------------------------------- ----------------------
1: m = subscribe.simple ("twitteralarme" ፣ የአስተናጋጅ ስም = "172.31.83.191" ፣ ተይዞ = ውሸት) m.topic == "twitteralarme" እና str (m.payload.decode ("utf-8")) ከሆነ == "በርቷል": ውጤቶች = twitter.statuses.update (status = (new_status)+str (time.time ())) # print ("updated status: % s" % new_status)
ደረጃ 5 ሴንትሮ ዴ ኮማንዶ
semper que acionado um dispositivo manual ou detectado um alerta manual do usuário é acionada uma contagem regressiva para envio de mensagem. ኦ ኦፔራዶር ነቀርሳ ነካ ወይም ኦቪዮ ኦው አኒዮር ኦ envio imediato do alerta።
Para uso do dasboard utilizamos um android do telefone para compor a mesa de operação do centro de comando.
código rodando na maquina ምናባዊ ዳ AWS EC2
ማስመጣት paho.mqtt.client እንደ pahoimport paho.mqtt.subscribe በማድረግ ደንበኝነት ይመዝገቡ paho.mqtt.pub ስናተም ያትሙ አስመጪ json ማስመጣት ጊዜ ከውጭ ማስመጣት እንቅልፍ ስድስት ማስመጣት ssl
ርዕሶች = ['#']
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 ") ማተም. ነጠላ (" sensor2 "," OFF ", qos = 1, የአስተናጋጅ ስም =" 172.31.83.191 ")
connflag = ሐሰት
def on_connect (ደንበኛ ፣ የተጠቃሚ መረጃ ፣ ባንዲራዎች ፣ አር.ሲ.) - ዓለም አቀፋዊ connflag connflag = እውነተኛ ህትመት (connflag) ህትመት (“የግንኙነት ውጤት ተመለሰ” + str (rc))
def on_message (ደንበኛ ፣ የተጠቃሚ መረጃ ፣ msg) - # ህትመት ("teste") ህትመት (msg.topic+""+str (msg.payload))
def on_log (ደንበኛ ፣ የተጠቃሚ ውሂብ ፣ ደረጃ ፣ buf) ፦ ማተም (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, cipshot), keepalive = 60) mqttc.loop_start ()
1: ሆራ = ጊዜ። ጊዜ () እንቅልፍ (.1) ማተም (ነጠላ)
# ከሆነ connflag == እውነት ፦ # mqttc.publish ("መልዕክት" ፣ json.dumps ({'message': "TERREMOTO"}) ፣ qos = 1) gatilho == 1: publish.single ("TEMPO", str (ዙር (hora_disparo-hora ፣ 0)) ፣ qos = 1 ፣ የአስተናጋጅ ስም = “172.31.83.191”) print.single (“LEDTERREMOTO” ፣ “on” ፣ qos = 1 ፣ የአስተናጋጅ ስም =”172.31.83.191”) ሌላ ፦ ያትሙ.ብቻ ("TEMPO", "99", qos = 1, የአስተናጋጅ ስም = "172.31.83.191") # ህትመት ("") ከሆነ (ሆራ> ሆራ_ዲስፓሮ) እና (gatilho == 1): # ህትመት ("TERREMOTO") # ህትመት (ኮኔፍላግ) connflag == እውነት ከሆነ # mqttc.publish ("መልዕክት" ፣ json.dumps ({'መልእክት' ፦ "TERREMOTO"}) ፣ qos = 1) # mqttc.publish ("መልዕክት" ፣ "TERREMOTO "፣ qos = 1) mqttc.publish (" መልዕክት "፣ json.dumps (" TERREMOTO - PROCURE UMA ZONA SEGURA "), qos = 1)
# ህትመት ("teste SNS") # print.single ("LED", "on", hostname = "172.31.83.191") publish.single ("SIRENE", "on", qos = 1, hostname = "172.31. 83.191 ") print.single (" TEMPO "," TERREMOTO ", qos = 1, hostname =" 172.31.83.191 ") publish.single (" ACIONADO "," OFF ", qos = 1, hostname =" 172.31.83.191 ")) print.single ("twitteralarme", "on", qos = 1, hostname = "172.31.83.191") publish.single ("twitter", "TERREMOTO - PROCURE UMA ZONA SEGURA", qos = 1, hostname = "172.31 M. utf-8 ")) ==" ጠፍቷል ": gatilho = 0 ህትመት (" ካንካላዶ ") m.topic ==" medico "እና str (m.payload.decode (" utf-8 ")) ==" በርቷል ": connflag == እውነት ከሆነ mqttc.publish (" medico ", json.dumps (" MEDICOS - EMERGENCIA TERREMOTO "), qos = 1) m.topic ==" bombeiro "እና str (m.payload.decode ("utf -8")) == "ላይ": connflag == እውነት ከሆነ mqttc.publish ("bombeiro", json.dumps ("BOMBEIRO - EMERGENCIA TERREMOTO"), qos = 1) m.topic == " አምቡላንስሲያ”እና str (m.payloa d.decode ("utf -8")) == "on": connflag == እውነት ከሆነ mqttc.publish ("ambulancia", json.dumps ("AMBULANCIA - EMERGENCIA TERREMOTO"), qos = 1) m. ርዕስ == "አስቸኳይ" እና str (m.payload.decode ("utf-8")) == "ላይ": publish.single ("ACIONADO", 1, qos = 1, hostname = "172.31.83.191") gatilho = 1 hora_disparo = time.time ()+5 str ከሆነ (m.payload.decode ("utf-8")) == "በርቷል": gatilho == 1: ማተም ("acelerado 20") hora_disparo = hora_disparo -20 ሌላ: ህትመት ("አቺዮናዶ") ማተም። ነጠላ ("ACIONADO" ፣ 1 ፣ qos = 1 ፣ የአስተናጋጅ ስም = "172.31.83.191") gatilho = 1 hora_disparo = time.time ()+60
ደረጃ 6: Codigo Twitter - Monitoração
código monitoração do twitter, pesquisa post na regiao de sorocaba
código rodando na maquina ምናባዊ ዳ AWS EC2
n
ከትዊተር ማስመጣት *የማስመጣት ውቅረት አስመጣ paho.mqtt.p እንደ ህትመት ያትሙ
ከጊዜ ወደ ጊዜ እንቅልፍ ያስመጣሉ
ትዊተር = ትዊተር (auth = OAuth (config.access_key ፣ config.access_secret ፣ config.consumer_key ፣ config.consumer_secret))
ኬክሮስ = -23.546211 ኬንትሮስ = -46.637840 alcance = 50 resultados = 1
publish.single ("twitter_alarme", "ON", የአስተናጋጅ ስም = "34.230.74.201")
result_count = 0 last_id = ምንም ባንዲራ = 0
በክልል (60) ውስጥ- #----------------------------------------- ------------------------------ # በኬክሮስ እና ኬንትሮስ ላይ በመመርኮዝ ፍለጋን ያካሂዱ # twitter ኤፒአይ ሰነዶች https:// dev. twitter.com/rest/reference/get/search… #------------------------------------- ---------------------------------- ይሞክሩ: መጠይቅ = twitter.search.tweets (q = "#Tereremoto") ፣ ጂኦኮድ = " %ረ ፣ %ረ ፣ %dkm" %(ኬክሮስ ፣ ኬንትሮስ ፣ አልካንስ) ፣ max_id = last_id) ህትመት ("leu")
በስተቀር: ማተም ("erro acesso twitter") እረፍት
ለጥያቄ ውጤት [“ሁኔታ”]
#------------------------------------------------- ---------------------- # የጂኦግራፊያዊ አቀማመጥ ካለው ውጤቱን ብቻ ያስኬዳል ----------------- -------------------------------------------------- ---- ውጤት ከሆነ ["ጂኦ"]: result_count += 1 last_id = ውጤት ["መታወቂያ"] እንቅልፍ (1) ከሆነ result_count == resultados: flag += 1 publish.single ("twitter_alarme", "ON", የአስተናጋጅ ስም = "34.230.74.201") publish.single ("ትዊተር" ፣ "TERREMOTO - DETECTADO" ፣ የአስተናጋጅ ስም = "34.230.74.201") እረፍት
ደረጃ 7 - Estrutura AWS
Utilizamos uma maquina ምናባዊ rodando ubuntu እና estrutura AWS EC2
Utilizamos a AWS IOT CORE para o serviço de MQTT onde configuramos as aes conforme o tipo de mensagem
Utilizmos ርዕሶች AWS SNS que eram acionados pelo AWS IOT CORE ን ያደርጋሉ
የሚመከር:
በ Flick ውስጥ የጨዋታ ንድፍ በ 5 ደረጃዎች 5 ደረጃዎች
በ 5 ደረጃዎች ውስጥ በ Flick ውስጥ የጨዋታ ንድፍ -ፍሊክስ ጨዋታን በተለይም በእውነቱ እንደ እንቆቅልሽ ፣ የእይታ ልብ ወለድ ወይም የጀብድ ጨዋታ የመሰለ ቀላል መንገድ ነው።
የአርዱዲኖ መኪና የተገላቢጦሽ የመኪና ማቆሚያ ማስጠንቀቂያ ስርዓት - ደረጃዎች በደረጃ: 4 ደረጃዎች
የአርዱዲኖ መኪና የተገላቢጦሽ የመኪና ማቆሚያ ማንቂያ ስርዓት | ደረጃዎች በደረጃ-በዚህ ፕሮጀክት ውስጥ አርዱዲኖ UNO እና HC-SR04 Ultrasonic Sensor ን በመጠቀም ቀላል የአርዱዲኖ መኪና የተገላቢጦሽ የመኪና ማቆሚያ ዳሳሽ ወረዳ እቀዳለሁ። ይህ በአርዱዲኖ ላይ የተመሠረተ የመኪና ተገላቢጦሽ የማስጠንቀቂያ ስርዓት ለራስ ገዝ አሰሳ ፣ ሮቦት ሬንጅንግ እና ለሌላ ክልል አር
በ Raspberry Pi 4B ላይ የፊት ለይቶ ማወቅ በ 3 ደረጃዎች 3 ደረጃዎች
በ Raspberry Pi 4B ላይ የፊት ለይቶ ማወቅ በ 3 እርከኖች-በዚህ መመሪያ ውስጥ የሹንያፊትን ቤተመፃሕፍት በመጠቀም ከ Rasyaberry O/S ጋር Raspberry Pi 4 ላይ የፊት ለይቶ ማወቅን እናከናውናለን። ሹነፊታ የፊት መታወቂያ/ማወቂያ ቤተ -መጽሐፍት ነው። ፕሮጀክቱ ፈጣን የመለየት እና የማወቅ ፍጥነትን ለማሳካት ያለመ ነው
በ GameGo ላይ በ ‹GoGo› ላይ ማለቂያ ከሌላቸው ደረጃዎች ጋር የመሣሪያ ስርዓት - 5 ደረጃዎች (ከስዕሎች ጋር)
በ GameGo ላይ በ MakeGo Arcade የመጫወቻ ማዕከል ላይ ገደብ የለሽ ደረጃዎች ያለው የመሣሪያ ስርዓት - GameGo በ TinkerGen STEM ትምህርት የተገነባ የ Microsoft Makecode ተኳሃኝ የሆነ የሬትሮ ጨዋታ ተንቀሳቃሽ ኮንሶል ነው። እሱ በ STM32F401RET6 ARM Cortex M4 ቺፕ ላይ የተመሠረተ እና ለ STEM አስተማሪዎች ወይም የሬትሮ ቪዲዮ ጨዋታን መፍጠር መዝናናትን ለሚወዱ ሰዎች ብቻ የተሰራ ነው
ሴንትሮ ደ ኮምፕቶ ፓራ ኒኖስ ኮን Raspberry Pi: 7 ደረጃዎች
ሴንትሮ ደ ኮምፕቶ ፓራ ኒñስ ኮን Raspberry Pi: Estos ser á n los primeros pasos de la Raspberry Pi y para ello necesitaremos: Raspberry Pi 2 Adaptador de red a micro USB Tarjeta micro SD (de 8 gb) ገመድ HDMI HDMI Cargador Rat ó n Teclado para computadoraEn caso de contar con un Kit de inicio