Turinys:
- 1 žingsnis: aparatinės įrangos naudojimas
- 2 žingsnis: Montuokite aparatūrą
- 3 žingsnis: „Atmega328“programinė įranga
- 4 žingsnis: „Python“programa
- 5 veiksmas: sukonfigūruokite „O Web Service“
Video: „Irrigações Automatizadas Com Web Service“„Utilizando Python“: 5 žingsniai (su paveikslėliais)
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:49
Neste projeto iremos desenvolver um system de monitoramento para plantações, que irá obter dados de umidade relativa do ar, pressão atmosferica, temperatura do ar, incidência UV, velocidade do vento e condição da planta (seca/molhada). Alguns desertas dados são obtidos localmente, enquanto outros são obtidos por meio de um Web Service conectado à uma estação meteorológica (No caso, estamos utilizando a da Faculdade de Engenharia de Sorocaba). Após adquiridos, os dados serão disponibilizados em uma aplicação web baseada em ThingSpeak.
1 žingsnis: aparatinės įrangos naudojimas
Naudojimasis konstrukcijos projektavimui:
1x „Qualcomm Dragonboard 410c“
1x „Grove Seeed Sensor Mezzanine“
1x vandens matymo jutiklis
1x IMU 10OF griovelio jutiklis v1.0
1x „Sunlight Grove Sensor v1.0“
1x USB pelė
1x „Teclado USB“
1x monitorius
1x HDMI kabelis
1x HDMI-VGA adapteris
Aceso à dados da estação meteorologija FACENS
2 žingsnis: Montuokite aparatūrą
Apskaičiuokite vietą tarp jutiklio tarpinio sluoksnio ir drakono lentos, atlikite priekinę akordo jungtį arba priekinę priekinę dalį, siųskite:
1: „Conexão directta entre“arba jutiklis „Groove Sunlight v1.0“.
2: +5 V jungtis prie Vcc iki IMU-10DOF.
3: +5V e Gnd conectados aos pinos korespondentai daro vandens jutiklį.
4: GND IMU-10DOF.
5: SDA/SCL, suderinamas su IMU-10.
6: „Pino Sig do Water“jutiklis, prijungtas prie 2.
3 žingsnis: „Atmega328“programinė įranga
„Mezzanine“jutiklių jutikliai, turintys mikrovaldiklį „Atmega328“, „Arduíno“plačiaformos panaudojimo galimybės, tiesioginė programa ir „IDE Arduíno“įdiegimas naudojant „DragonBoard“. Vale ressaltar que a Mezzanine and a DragonBoard em conjunto possuem do to os periféricos requiredary on a programção and gravação do firmware no microcontrolador.
Ar programinės aparatinės įrangos embarcado ir atsakas į realizavimą kaip leituras dos sensores, gerenciando os protokolus de comunicação e operação dos mesmos, ir após and aquisição dos dados, os encaminha via porta serial of a DragonBoard.
*Prireikus, kad būtų įtraukta biblioteka, naudojama ne programinė įranga. Elas podem ser encontradas:
imu-10DOF
Saulės šviesos jutiklis
O programinės aparatinės įrangos naudojimas naudojant „encontrado aqui“arba „aqui“:
4 žingsnis: „Python“programa
Para o programa criado, foram requiredários os seguintes import: „urllib2“, „json“, „time“, „serial“, „paho.mqtt.publish“, „psutil“ir „decimal“. Foram definidos duas funções ('comJSON' e 'semJSON') que serão explicadas mais tarde.
importuoti urllib2, json #para pegar os dados da estacaoimport time #para o time.sleep () importuoti seriją #para o „Arduino“importuoti paho.mqtt.publish as paskelbti #para publicar import psutil #para configurar o url import decimal #para converter
O primeiro passo é gravar em uma variável o endereço de onde serão obtidos os dados da Estação Meteorológica (no caso estamos gravando na variável 'url'). Em seguida, inicializamos duas varáveis ('i' e 'j'), utilizando 'i' para pegar os dados mais atuais do Array que iremos receber via JSON (como a posição mais recente da Array sera a 49, inicializamos 'i' como) 49) e 'j' para contar quantas vezes o código já rodou.
url = "https://www.fieldclimate.com/api/CIDIStationData/GetLast?user_name=facens&user_passw=clima&station_name=002035C0" #Define o URL da estação
i = 49 #Para pegar os dados mais atuais da estação
j = 0 #Passo do programa
Entrando no 'while (1)', inicializamos a varável 'jsonurl' como 'None'. Esta varável irá abrir a URL JSON, portanto ao inicializarmos ela no início do 'while', estamos então resetando ela toda vez que repetirmos o loop. Jei norite, kad URL būtų rodomas kaip naudingas „urllib2.urlopen (url)“, jei norite, spustelėkite skirtuką „timeout = X“, atsiųskite X uma quantidade em segundos limite for URL ser aberto. Jei norite, kad programa pašalintų URL, kurį reikia atlikti naudojant skirtąjį laiką, o programa gali realizuoti „comJSON“meniu. Caso não consiga panaikina URL be tempo estipulado, supranta, kad yra įdomus „semJSON“. Ambos as funções são muito parecidas, tendo como diferença os dados da estação ('comJSON' irá mostrar e enviar os dados da estação, enquanto 'semJSON' não). Como 'semJSON' ir uma função derivada de 'comJSON'. „Iremos“paaiškino „comJSON“
nors (1): jsonurl = Nėra #Inicializa a varivavel como Nėra spausdinimo „Passo:“, j print „Atualizando dados“pabandykite: jsonurl = urllib2.urlopen (url, timeout = 5) #tenta abrir o url em no máximo 5 segundos jei „jsonurl“nėra Nėra: spausdinkite „Dados atualizados“comJSON (jsonurl) #Se conseguiu abrir o URL, mostra todos os dados, išskyrus: jei jsonurl yra Nėra: spausdinkite „Erro ao atualizar dados“semJSON () #Se não abriu o URL, mostra os dados obtidos localmente (do Arduino) pass j += 1 print “---------------------------------- -------------------------------------------------- -------------------------------------------- / n 'laikas.miegoti (1)
Na primeira linha da função 'comJSON', recebemos todos os dados da URL já abertos numa varável 'dados'. Esta irá receber um objeto com duas Arrays, das quais iremos somente usar uma ('ReturnDataSet'). Realizada esta operação, iremos então inicializar o Serial do Arduíno e ler as linhas (readline ()) que o Arduíno está imprimindo e jogando as Strings convertids dentro de variáveis e, então, mostrando esses dados na tela. Recebidos os dados do Arduíno, receberemos os dados da estação, simplesmente acessando os sensores específicos dentro do objeto 'dados' (por examplelo ['ReturnDataSet'] ['sens_aver_6_5]') ir então mostramos estes novos dad.
def comJSON (jsonurl): #envia todos os dados dados = json.loads (jsonurl.read ()) #carrega os dados JSON da página já aberta #Arduino ard = serial. Serial ('/dev/tty96B0', 115200) # inicializa a variavel que receberá os dados do Arduíno #Recebe os dados do Arduíno ardAgua = int (ard.readline (). rstrip ()) ardTemp = float (ard.readline (). rstrip ()) ardPres = int (ard.readline ().strip ()) ardUV = plūdė (ard.readline (). rstrip ())
spausdinti „\ nArduino“
if ardAgua == 1: print 'Molhado' else: print 'Seco' print 'Temperatura:', ardTemp, '*C' print 'Pressao:', ardPres, 'Pa' print 'Ultra-Violeta:', ardUV, ' lx '
#Estacao
print '\ nJSON' print 'URL:', jsonurl #Recebe os dados da estação data = dados ['ReturnDataSet'] ['f_date'] vel_vento = dados ['ReturnDataSet'] ['sens_aver_6_5'] umidade = dados ['ReturnDataSet'] ['sens_aver_19_507']
spausdinti „Duomenys:“, duomenys
spausdinti 'Velocidade do Vento:', vel_vento, 'm/s' print 'Umidade do ar:', umidade, '%'
#Konvertas
vel_vento = dešimtainis. Dešimtainis (vel_vento.rstrip ()) umidade = dešimtainis. Dešimtainis (umidade.rstrip ())
O próximo passo é enviar todos esses dados coletados. Taip pat galite tiksliai nustatyti, ar ID yra kanalas, Chave de Escrita e o Host ir įvairūs, konfigūruoti arba naudotiUnsecuredTCP, useUnsecuredWebsockets e useSSLWebsockets (usamos True, False, False). Criamos mais uma varável que irá guardar o 'caminho' para o canal, e uma outra para guardar, em String, o que será enviado para o servidor (com todas as variáveis convertidas) e então tentar publicar os dados no servidor usando 'public. vienas (tema, naudingoji apkrova = tPayload, pagrindinio kompiuterio pavadinimas = mqttHost, port = tPort, tls = tTLS, transport = tTransport) “. A função então acaba e retorna para o loop principas.
#Envia channelID = "344243" #Canal criado para o grupo apiKey = "1PK9ELK0L4AH8CVP" #Código dado pelo ThingSpeak mqttHost = "mqtt.thingspeak.com" #configurações de comunicação useUnuredSuck "tcp" tPort = 1883 tTLS = Nėra, jei useUnsecuredWebsockets: tTransport = "websockets" tPort = 80 tTLS = Nėra, jei useSSLWebsockets: import ssl tTransport = "websockets" tTLS = {'ca_certs': "/etc/ssl/ sertifikatai.crt ", 'tls_version': ssl. PROTOCOL_TLSv1} tPort = 443 tema =" kanalai/" + kanalo ID +"/paskelbti/" + apiKey #Cria variavel com o 'caminho' para o canal tPayload =" field1 = " + str (ardAgua) + "& field2 =" + str (ardTemp) + "& field3 =" + str (ardPres) + "& field4 =" + str (ardUV) + "& field5 =" + str (duomenys) + "& field6 =" + str (vel_vento) + "& field7 =" + str (umidade) #Organiza todas as variaveis em uma String para ser enviado print 'Enviando dados' try: publis.single (tema, naudingoji apkrova = tPayload, hostname = mqttHost, port = tPort, tls = tTLS, transport = tTransport) #Envia os dados time.sleep (0.5) print 'Dados enviados', išskyrus: print 'Erro ao enviar dados'
5 veiksmas: sukonfigūruokite „O Web Service“
Norėdami pavydėti žiniatinklio tarnybos, naudokite „ThingSpeak“platformą. Para tal, entramos nėra svetainės thingspeak.com ir criamos uma conta. Após a criação e login na contact, nos dirigimos ao cabeçalho de menus -> Canais -> Meus Canais e então clickamos no botão "Novo Canal". Ao clickar, escolhemos o nome do Canal, escrevemos uma descrição para ele, e então decidimos quantos dos 8 campos possíveis utilizaríamos. Nėra kazino, utilizamos 7.
Ao criar um canal, e gerado um ID do Canal, uma Chave de Escrita ir uma Chave de Leitura. Kanalo ID yra enkancra abaixo do nome do canal ir Chave de Escrita su „Chaves“. Para que o código Python envie as informationções obtidas para o canal é, requiredário configurá-lo ao ID do Canal:
channelID = "Insira o ID do Canal aqui"
„Chave de Escrita“tambemas:
apiKey = "Insira ir Chave de Escrita"
Além da conexão com or canal criado, também são vajadis outras configurações no código em Python app.py:
useUnsecuredTCP = Tiesa
useUnsecuredWebsockets = FalseuseSSLWebsockets = False mqttHost = "mqtt.thingspeak.com" if useUnsecuredTCP: tTransport = "tcp" tPort = 1883 tTLS = Nėra, jei useUnsecuredWebsockets: tTransport = "websoles" tfsport websockets "tTLS = {'ca_certs':"/etc/ssl/certs/ca-certificate.crt ", 'tls_version': ssl. PROTOCOL_TLSv1} tPort = 443 topic =" channels/" + channelID +"/paskelbti/" + apiKey
Para que a aplicação web realmente receba, por examplelo, o valor Temperatura no campo 2 (campo que escolhemos para ser a Temperatura), e requiredario indicar o "field2 ="+variável_temperatura, como no código a seguir:
tPayload = "field1 =" + str (ardAgua) + "& field2 =" + str (ardTemp) + "& field3 =" + str (ardPres) + "& field4 =" + str (ardUV) + "& field5 =" + str (duomenys) + "& field6 =" + str (vel_vento) + "& field7 =" + str (drėgnas)
„Tendo vinculado todos os dados do Canal“- programa „Python“, geriausia vykdytoja arba kodavimo programa, skirta tėvams, escolhidos ir enviados ao Web Service. No ThingSpeak, e realus realizar todo o monitoramento através de gráficos.
Rekomenduojamas:
„Pasidaryk pats“GPS sekiklis --- „Python“programa: 5 žingsniai (su paveikslėliais)
Pasidaryk pats „GPS Tracker“--- „Python“programa: Prieš dvi savaites dalyvavau dviračių renginyje. Baigęs norėjau patikrinti maršrutą ir greitį, kuriuo tuo metu važiavau. Deja, to pasiekti nepavyko. Dabar naudoju ESP32 GPS sekikliui sukurti ir imsiuosi jo įrašyti savo dviračių maršrutą
Dviejų spalvų juostos diagrama su grandine „Python“: 5 žingsniai (su paveikslėliais)
Dviejų spalvų juostos diagrama su „CircuitPython“: Pimoroni svetainėje pamačiau šią LED juostos diagramą ir maniau, kad tai gali būti nebrangus ir įdomus projektas, kai užrakinamas „Covid-19“. Jame yra 24 šviesos diodai, raudonos ir žalios spalvos, kiekviename iš jų 12 segmentų, todėl teoriškai turėtumėte sugebėti rodyti r
„Como Subir Datos De Un Acelerómetro“ir „Ubidots“, Utilizando Arduino YÚN: 6 žingsniai
Kompiuteris „Datos De Un Acelerómetro“ir „Ubidots“, Utilizando Arduino YÚN: „Arduino Y Ú N“ir mikrokontroladorų bazė ir „ATmega32u4“ir „Atheros AR9331“. „Atheros“ir „Linux“pagrindinio kompiuterio operacinės sistemos „OpenWrt“, „Arduino Y Ú N cuenta“versija yra „OpenWrt-Yun“versija
Como Hacer ir Abanico Con Iluminación Utilizando Littlebits: 3 žingsniai
Como Hacer Un Abanico Con Illuminación Utilizando Littlebits: En el dia de hoy les mostrare como hacer un abanico con iluminaci ó n utilizando littlebits. Este &ūmus; proyecto puede ser utilizado en una habitaci ó n oscura para que este iluminada
ESP8266 -NODEMCU 3 USD „WiFi“modulis Nr. 2 - belaidžiai kaiščiai, valdomi per WEB PAGE: 9 žingsniai (su paveikslėliais)
ESP8266 -NODEMCU 3 USD „WiFi“modulis Nr. 2 - belaidžiai kaiščiai, valdomi per WEB PAGE: Atėjo naujas šių mikrokompiuterių pasaulis ir tai yra ESP8266 NODEMCU. Tai pirmoji dalis, kuri parodo, kaip galite įdiegti esp8266 aplinką savo „arduino IDE“per pradinį vaizdo įrašą ir kaip dalis