Mündəricat:
- Addım 1: Hardware Utilizado
- Addım 2: Montagem Hardware edin
- Addım 3: Firmware Atmega328
- Addım 4: Proqram Em Python
- Addım 5: Veb Xidmətini Konfiqurasiya edin
Video: Irrigações Automatizadas Com Web Service Utilizando Python: 5 Addım (Şəkillərlə)
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:48
Planlaşdırılan sistemlərin monitorinqi sistemin, sistemin, atmosferin, temperaturun, ultrabənövşəyi şüaların, hava və hava şəraitinin qorunması ilə əlaqədardır. Alguns desses atos são obtidos localmente, enquanto outros são obtidos by the web service may meta de um Web Service conectado à uma estacão meteorológica (No caso, estamos utilizando in a Faculdade de Engenharia de Sorocaba). Əlavə olaraq, ThingSpeak -in əsas veb saytlarıdır.
Addım 1: Hardware Utilizado
Layihə qurmaq üçün istifadə edin:
1 ədəd Qualcomm Dragonboard 410c
1x Grove Görən Sensor Mezzanine
1x Su Görən Sensor
1x IMU 10OF Grove Sensor v1.0
1x Günəş işığı Grove Sensoru v1.0
1x Siçan USB
1x Teclado USB
1x Monitor
1x Cabo HDMI
1x Adaptador HDMI-VGA
FACENS meteoroloji coğrafiyası ilə əlaqədardır
Addım 2: Montagem Hardware edin
Əjdaha taxtasında Sensor Mezzanine ilə əlaqə qurun, ön hissəni idarə edin:
1: Groove Günəş işığı v1.0 sensoru.
2: +VV və ya IMU-10DOF ilə 5V əlaqə.
3: +5V və Su sensoru müxbirləri bir -biri ilə əlaqə qururlar.
4: GND IMU-10DOF.
5: SDU/SCL, IMU-10 ilə əlaqə qurur.
6: Pino Sig do Su sensoru conectado ao pino 2.
Addım 3: Firmware Atmega328
Mövsüm Sensorları, Atmega328 mikroprosessorlarını və ya əməliyyat sistemlərini istifadə edərək, bu proqramlar və proqramlar, bir IDE Arduino quraşdırmaq üçün DragonBoard istifadə edə bilərsiniz. Əməliyyat sistemi, DragonBoard və ya mikrokontrolör üçün proqram təminatı və proqram təminatı üçün lazım olan hər şeyi birləşdirə bilər.
Sensor sensorlar, əməliyyat protokolları və əməliyyat sistemləri ilə əlaqəli, DragonBoard üçün bir sıra proqramlar hazırladıqdan sonra cavablandırın.
*Proqram təminatı olmadan bibliotecas daxil olmaq üçün proqram təminatı tələb olunur. Əlavə məlumatları təqdim edirik:
imu-10DOF
Günəş işığı sensoru
Proqram təminatını istifadə edin:
Addım 4: Proqram Em Python
Proqramlar idxal edildikdə, bunlar idxal olunur: 'urllib2', 'json', 'time', 'serial', 'paho.mqtt.publish', 'psutil' e 'decimal'. Funksiyaların müəyyən edilməsi ('comJSON' və 'semJSON') başa düşüləndir.
import urllib2, json #para pegar os dados da estacaoimport time #para o time.sleep () serial serial #para o Arduino idxal paho.mqtt.dövr olaraq nəşr et #para publicar idxal psutil #para configurar o url idxal decimal #para çeviricisi
Başlanğıc məlumatları, həm də Estação Meteorológica ilə əlaqəli (və ya 'url' versiyası yoxdur) xidmətlər göstərir. Müxtəlif məlumatların ('i' e 'j') və ya JSON vasitəsi ilə bir sıra məlumatların istifadəsinə icazə verilir (bu, 49 -cu il tarixində və ya sonda). 49) e -j 'pul və ya digər vasitələrlə.
url = "https://www.fieldclimate.com/api/CIDIStationData/GetLast?user_name=facens&user_passw=clima&station_name=002035C0" #URL də estação
i = 49 #İstifadəçilərin fikirlərini öyrənə bilərsiniz
j = 0 #Proqram hazırlayın
Xeyr 'while (1)' yazın, 'heç bir şey yoxdur' yazın. Hər hansı bir URL JSON ilə əlaqələndirildikdə, "heç bir zaman" yoxlanılmalı, bu müddət ərzində yenidən qurulmalı və ya sıfırlanmalıdır. Bir URL istifadə edərək, 'urllib2.urlopen (url)' və ya 'zaman aşımı = X' mövzularında daha çox məlumat əldə edə bilərsiniz. Proqramı bir URL ilə vaxt itkisinə və ya "comJSON" funksiyasını yerinə yetirdiyiniz vaxta qədər təxirə salmağa çalışın. İstənilən vaxt URL-də heç bir sürət yoxdursa, "semJSON" funksiyasını yerinə yetirin. Funksiyaların bir hissəsi olaraq, bir tərəfdən də digər tərəfdən fərqli olaraq, ("comJSON" və ya digər tərəfdən də "dostJSON 'não"). 'SemJSON' və ya 'comJSON' funksiyalarının mənası. İremos "comJSON" sözünü açıqladı
while (1): jsonurl = None #Inicializa a varivavel como Yox çap et 'Passo:', j print 'Atualizando dados' cəhd edin: jsonurl = urllib2.urlopen (url, timeout = 5) #tenta abrir o url em no máximo 5 segundos jsonurl yoxdursa: print 'Dados atualizados' comJSON (jsonurl) #Se conseguiu abrir o URL, ustra todos os dados except: jsonurl None: print 'Erro ao atualizar dados' semJSON () #Se não abriu o URL, mostra os dados obtidos localmente (do Arduino) pass j += 1 print '---------------------------------- -------------------------------------------------- -------------------------------------------- / n 'vaxt.yuxu (1)
Başlanğıcda 'comJSON', URL -lərin son versiyaları 'dados' ilə əlaqədardır. Alıcılar bir sıra məlumatları əldə edə bilsələr də, 'ReturnDataSet' istifadə edə bilərsiniz. Əməliyyat sistemləri, rəsmi məlumat və ya proqramlar, Arduino və ya Arxa liner kimi oxunur (oxu xətti ()) və ya Strings kimi müxtəlif simvollar, mətnlər və mətnlər dəyişdirilə bilər. Recebidos os atos do Arduíno, reseptoremos os dados da estação, simplesmente acessando os sensors Específicosos sensors específicos dentos do objeto 'dados' (məs. Exemplo '[' ReturnDataSet '] [' sens_aver_6_5] ') e -poçt xəbərləri ilə tanış olun.
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) # Arduíno ilə əlaqəli hər hansı bir məlumat əldə etmək üçün #Recebe os dados do Arduíno ardAgua = int (ard.readline (). rstrip ()) ardTemp = float (ard.readline (). rstrip ()) ardPres = int (ard.readline) ().rstrip ()) ardUV = float (ard.readline (). rstrip ())
"\ nArduino" yazdırın
if ardAgua == 1: print 'Molhado' else: print 'Seco' print 'Temperatura:', ardTemp, '*C' print 'Pressao:', ardPres, 'Pa' print 'Ultra-Violeta:', ardUV, ' lx '
#Estacao
çap '\ nJSON' çap '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']
"Data:", məlumatları çap edin
'Velocidade do Vento:', vel_vento, 'm/s' yazdır 'Umidade do ar:', ümidade, '%' yazdır
#Çevirin
vel_vento = decimal. Ondalık (vel_vento.rstrip ()) umidade = decimal. Ondalık (umidade.rstrip ())
Əlavə etmək üçün ən çox bəyəndiyiniz şeylər babas koletadosdur. Əlavə olaraq, bir kanalın kimliyi müəyyən edilir, bir Ev sahibi və ya bir Ev sahibi tərəfindən təyin edilir, UseUnsecuredTCP, UseUnsecuredWebsockets və UseSSLWebsockets (True, False, False) istifadə olunur. Cariamos mais uma variável que irá guardar o 'caminho' para o channel, e uma outra para guardar, em String, or que enviado para o servidor (com todas as variáveis convertidas) və ya heç bir xidmət təqdim etməmək üçün yayımlayın. tək (mövzu, yük = tPayload, ana bilgisayar adı = mqttHost, port = tPort, tls = tTLS, nəqliyyat = tTransport) '. Əməliyyat müdiri üçün əsas vəzifə.
#Envia channelID = grupo apiKey = "1PK9ELK0L4AH8CVP" # Saxlayın dado kaynağı ThingSpeak mqttHost = "mqtt.thingspeak.com" o "344243" #Canal criado para # configurações de Comunicação useUnsecuredTCP = True useUnsecuredWebsockets = False useSSLWebsockets = False useUnsecuredTCP əgər: tTransport = "tcp" tPort = 1883 tTLS = useUnsecuredWebsockets olmadıqda: tTransport = "websockets" tPort = 80 tTLS = UseSSLWebsockets: import ssl tTransport = "websockets" tTLS = {'ca_certs':///// sertifikatlar.crt ", 'tls_version': ssl. PROTOCOL_TLSv1} tPort = 443 mövzu =" kanallar/" + kanalID +"/dərc etmək/" + apiKey #Cria variavel com o 'caminho' kanal o kanal tPayload =" field1 = " + str (ardAgua) + "& field2 =" + str (ardTemp) + "& field3 =" + str (ardPres) + "& field4 =" + str (ardUV) + "& field5 =" + str (data) + "& field6 =" + str ", port = tPort, tls = tTLS, transport = tTransport) #Envia os dados time.sleep (0.5) print 'Dados enviados' istisna olmaqla: print 'Erro ao enviar dados'
Addım 5: Veb Xidmətini Konfiqurasiya edin
Veb Xidməti və ya ThingSpeak -dən istifadə etmək üçün ən yaxşı məlumatları əldə edin. Əlavə olaraq, heç bir şey yoxdur sitespeak.com və s. Menyuya daxil olmaq üçün heç bir məhdudiyyət yoxdur -> Canais -> Mənə heç bir şey "Novo Canal" üçün heç bir icazə verilmədi. Başqa sözlə, Kanalda heç bir məlumat yoxdur, bu proqramlar 8 və ya daha çox istifadə edilə bilər. Caso yoxdur, utilizamos 7.
Kanal və ya Kanalın kimliyi, Chave de Escrita və Chave de Leitura kanalları. Kanalın kimliyini və ya "Chaves" adlı bir kanalın adını çəkə bilərsiniz. Python, Kanal məlumatlarını öyrənmək üçün, Kanalın kimliyini və ya konfiqurasiyasını öyrənmək üçün istifadə olunur:
channelID = "Kanalın şəxsiyyət vəsiqəsi"
Chave de Escrita ilə əlaqə qurun:
apiKey = "Insire a Chave de Escrita"
Python app.py ilə heç bir əlaqəsi yoxdursa, konfiqurasiya etmək lazım deyil.
useUnsecuredTCP = Doğrudur
useUnsecuredWebsockets = FalseuseSSLWebsockets = False mqttHost = "mqtt.thingspeak.com" if useUnsecuredTCP: tTransport = "tcp" tPort = 1883 tTLS = None if useUnsecuredWebsockets: tTransTortSportSifariş verilsin mi? " websockets "tTLS = {'ca_certs':"/etc/ssl/certs/ca-sertifikatlar.crt ", 'tls_version': ssl. PROTOCOL_TLSv1} tPort = 443 mövzu =" kanallar/" + kanalID +"/yayım/" + apiKey
İstifadəçilərə verilən məlumata görə, heç bir cəsarətlə Temperatura 2 (bir temperaturun olmaması üçün), "sahə2 ="+dəyişkən_temperatura, heç bir şərtlə:
tPayload = "field1 =" + str (ardAgua) + "& field2 =" + str (ardTemp) + "& field3 =" + str (ardPres) + "& field4 =" + str (ardUV) + "& field5 =" + str (data) + "& field6 =" + str (vel_vento) + "& field7 =" + str (ümid)
Python və ya Canal proqramlarından istifadə etməklə Veb Xidməti ilə əlaqəli proqramlar hazırlanır. ThingSpeak yoxdur, bu proqramın monitorinqi də mümkün olacaq.
Tövsiyə:
MONITORAMENTO DA UMIDADE DO SOLO DE UMA HORTA UTILIZANDO ARDUINO E ANDROID: 15 addım
MONITORAMENTO DA UMIDADE DO SOLO DE UMA HORTA UTILIZANDO ARDUINO E ANDROID: Həqiqətən, bir monitor və ya bir cama hüququ təqdim etmək üçün heç bir problem yoxdur
Combo Subir Datos De Un Acelerómetro a Ubidots, Utilizando Arduino YÚN: 6 Addım
Bir Ubidots, Utilotsando Arduino YN: Arduino Y Ú və ya ATmega32u4 və ya Atheros AR9331 mikrokontrolör məlumatlarını təqdim edir. OpenWrt, Arduino Y & Uacute ilə birlikdə, OpenWrt-Yun versiyasının ən yaxşı versiyasıdır
Saat və Web Səhifəsi Mətn Güncellemesi ilə ESP8266 POV Fan: 8 Addım (Şəkillərlə)
Saat və Veb Səhifə Mətn Güncellemesi olan ESP8266 POV Fan: Bu dəyişkən bir sürətdir, POV (Vizyonun Davamlılığı), Fasiləli olaraq vaxt göstərən Fan və anında yenilənə bilən iki mətn mesajıdır. həm də iki mətni dəyişməyimə imkan verən tək səhifəli bir veb serverdir
Yüksək Çözünürlüklü Web Kamera: 9 Addım (Şəkillərlə birlikdə)
Yüksək Çözünürlüklü Veb Kamera: Bir neçə ildir ki, RPi əsaslı veb -kamera (PiCam modulu ilə) istifadə edirdim. İstehsal olunan görüntülər qaydasındadı, amma sonra keyfiyyətdən artıq razı qalmadığım anlar oldu. Yüksək qətnaməli bir veb kamera hazırlamaq qərarına gəldim. Aşağıdakı hissələr
"Charlotte's Web" Stili LED Filament Saatı: 10 Addım (Şəkillərlə birlikdə)
"Charlotte's Web" Stili LED Filament Saatı: LED filamentli ampulləri ilk gördüyümdən bəri filamentlərin bir şey üçün yaxşı olması lazım olduğunu düşünürəm, amma mənim üçün yerli elektronika hissələri mağazasının bağlanmasına qədər davam etdi. parçalamaq niyyəti ilə bir neçə ampul almaq