Mundarija:
- 1 -qadam: Uskuna uskuna
- 2 -qadam: Montagem Do Hardware
- 3 -qadam: Atmega328 dasturiy ta'minoti
- 4 -qadam: Python dasturi
- 5 -qadam: O veb -xizmatini sozlash
Video: Irrigações Automatizadas Com Web Service Utilizando Python: 5 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:28
Planshetlar va tizimlar, shuningdek, atmosfera havosi, harorat, ultrabinafsha nurlari, velosipedlar va shamollatish tizimlari (planshetlar) bilan bog'liq. Alguns desses dados são obtidos localmente, enquanto outros saão obtidos for meio de um Web Service conectado à uma estacaão meteorológica (no caso, estamos utilizando a faculdade de Engenharia de Sorocaba). Bu ThingSpeak veb -saytlari uchun juda muhim vazifadir.
1 -qadam: Uskuna uskuna
Loyihani amalga oshirish uchun quyidagilar zarur:
1 marta Qualcomm Dragonboard 410c
1 ta Grove ko'radigan sensorli mezzanin
1x suv ko'rish sensori
1x IMU 10OF Grove Sensor v1.0
1x Quyosh nuri Grove sensori v1.0
1x sichqoncha USB
1x Teclado USB
1x monitor
1x Cabo HDMI
1x Adaptador HDMI-VGA
Yuzlar ob -havosi
2 -qadam: Montagem Do Hardware
Ajdaho paneli sensori o'rnatilgandan so'ng, oldinga siljishni bajaring:
1: Quyosh nuri v1.0 sensori.
2: +VV yoki IMU-10DOF uchun 5V konektado.
3: +5V va Gend konvektorlari suv sensori.
4: GND IMU-10DOF.
5: SDA/SCL, IMU-10 muxbiri bilan aloqa o'rnatadi.
6: Pino Sig do suv sensori konektado yoki pino 2.
3 -qadam: Atmega328 dasturiy ta'minoti
Datchiklar Mezzanine-ni, shuningdek, Atmega328 mikrokontroldorini, shuningdek, dasturiy ta'minotni, shuningdek, DragonBoard-da IDE-ni o'rnatish uchun mo'ljallangan. DragonBoard va Mezzanine dasturlari bir vaqtning o'zida dasturiy ta'minot va mikrokreditlovchilar uchun dasturiy ta'minotni o'rnatishni talab qiladi.
DragonBoard portali orqali o'rnatilgan operatsion tizimlar, operatsion tizimlar va operatsion tizimlar uchun javob beradigan dasturiy ta'minotni o'rnatish.
*Bibliotecas -ni o'z ichiga olgan dasturiy ta'minotni o'rnatish kerak. Boshqacha qilib aytganda:
imu-10DOF
Quyosh nuri sensori
Siz dasturiy ta'minotni ishlatishingiz mumkin:
4 -qadam: Python dasturi
Import qilinadigan dasturlar, masalan, import: 'urllib2', 'json', 'time', 'serial', 'paho.mqtt.publish', 'psutil' e 'o'nlik'. Ma'lumotlar funktsiyalari ('comJSON' e 'semJSON') aniqlanadi.
import urllib2, json #para pegar os dados da estacaoimport time #para o time.sleep () import serial #para o Arduino import paho.mqtt.publish sifatida chop eting #para publicar import psutil #para configurar o url import kasr #para konvertori
Boshlang'ich ma'lumotlarga ko'ra, siz "Meteorolagika" da ("url" da hech qanday ma'lumot yo'q), shuningdek, har xil turdagi havolalarni ishlatishingiz mumkin. Ma'lumotlar almashinuvi ('i' e 'j'), JSON orqali ma'lumotlarni uzatish uchun to'lovlarni qabul qilish (masalan, 49 -sonli, oxirgi qatorda). 49) e 'j' pul miqdorini o'lchash.
url = "https://www.fieldclimate.com/api/CIDIStationData/GetLast?user_name=facens&user_passw=clima&station_name=002035C0" #URL manzilini aniqlang
i = 49 #Para -karta sizning xohishingizga ko'ra
j = 0 #Dasturni bajaring
Yo'q, "while (1)" ni kiriting, "hech kim" ni "jsonurl" ga yozib qo'ying. Agar siz JSON -ni o'zgartirmasangiz, u holda "hech qachon", yoki hech bo'lmaganda "qayta tiklash" yoki "o'chirish" tugmachalari o'rnatiladi. Siz URL manzilini "urllib2.urlopen (url)", "argumento time time = X '", "Xavfsizlik", "Xavfsizlik" va "URL -manzil" kabi boshqa funktsiyalarni ishlatishingiz mumkin. Vaqt o'tishi bilan siz URL manzilini tezlashtirishingiz mumkin, shunda siz "comJSON" dasturini ishga tushirasiz. Agar siz "semJSON" funktsiyasini amalga oshirsangiz, URL-ni tezlashtirish mumkin emas. O'yin -kulgilar, o'yin -kulgilar va boshqa vazifalar ('comJSON' mos yozuvlar va ilovalar, eng muhimi 'semJSON' não). "SemJSON" buyrug'i "comJSON" funktsiyasini yaratadi. Iremos "comJSON" ni tushuntiradi
while (1): jsonurl = Yo'q #Inicializa a varivavel como Yo'q chop etish 'Passo:', j print 'Atualizando dados' harakat qilib ko'ring: jsonurl = urllib2.urlopen (url, timeout = 5) #tenta abrir o url em no máximo 5 segundos agar jsonurl None bo'lmasa: chop etish 'Dados atualizados' comJSON (jsonurl) #See conseguiu abrir o URL, mostra todos os dados except: if 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 'vaqt. uxlash (1)
Bu erda "comJSON" funktsiyasi, shuningdek, "dados" raqamli URL -manzili mavjud. Qabul qiluvchilarni ro'yxatga olish va tarqatish bo'yicha qatorlar, masalan, "ReturnDataSet"). Operatsion operatsiyalar, operatsion tizimlar va operatsion tizimlar, shuningdek, ketma -ket ketma -ket (o'qish liniyasi) (yoki o'qish liniyasi) (yoki o'qish satrlari) Stringlar bilan almashtiriladi, shuningdek, o'z navbatida, matnli yozuvlarni o'zgartiradi. Arduino -ni, ota -onani qabul qilishni, qabul qilishni osonlashtiradigan, "dada" (masalan, "misol" ["ReturnDataSet"] ['sens_aver_6_5]') qurilmalari bilan ishlashni osonlashtiradi..
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 -da mavjud bo'lgan har qanday turdagi ishlarni bajarish uchun #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" ni chop eting
if ardAgua == 1: print 'Molhado' else: chop etish 'Seco' print 'Temperatura:', ardTemp, '*C' print 'Pressao:', ardPres, 'Pa' print 'Ultra-Violeta:', ardUV, ' lx '
#Estakao
chop etish / \ JJON 'chop etish' 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']
"Ma'lumotlar:", ma'lumotlarni chop eting
chop etish 'Velocidade do Vento:', vel_vento, 'm/s' chop etish 'Umidade do ar:', umidade, '%'
#Konvert
vel_vento = o'nlik. O'nli (vel_vento.rstrip ()) umidvor = o'nlik. O'nlik (umidade.rstrip ())
Ota -onalar haqida eslatmalarni o'qing. Shunday qilib, kanalning identifikatori aniqlanadi, shuningdek, serverni sozlash va sozlashUsececuredTCP, useUnsecuredWebsockets va useSSLWebsockets (to'g'ri, noto'g'ri, noto'g'ri). Bu kanalni, kanallarni, kanallarni, chiziqlarni, shuningdek, xizmatlarni (masalan, turli xil konvertatsiya qilish uchun) o'z ichiga oladi, shuning uchun hech qanday xizmat ko'rsatilmaydi. yagona (mavzu, yuk = tPayload, xost nomi = mqttHost, port = tPort, tls = tTLS, transport = tTransport) '. Boshqaruv dasturining bosh direktori.
#Envia channelID = Grupo apiKey = "1PK9ELK0L4AH8CVP" # kod dado pelo ThingSpeak mqttHost = "mqtt.thingspeak.com" Ey "344243" #Canal criado para # configurações de comunicação useUnsecuredTCP = True useUnsecuredWebsockets = FALSE useSSLWebsockets = FALSE useUnsecuredTCP bo'lsa: tTransport = "tcp" tPort = 1883 tTLS = UseUnsecuredWebsockets bo'lsa, hech kim: tTransport = "websockets" tPort = 80 tTLS = UseSSLWebsockets bo'lsa, hech kim yo'q: import ssl tTransport = "websockets" tTLS = {'ca_certs'://etc/ sertifikatlar.crt ", 'tls_version': ssl. PROTOCOL_TLSv1} tPort = 443 mavzu =" kanallar/" + kanalID +"/nashr etish/" + apiKey #Cria variavel com o 'caminho' para 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) chop etish 'Dados enviados' bundan mustasno: chop etish 'Erro ao enviar dados'
5 -qadam: O veb -xizmatini sozlash
ThingSpeak -ni Internet -xizmatlar yoki Internet -xizmatlar bilan bir vaqtda ko'rish mumkin. Yozuvlar, saytlar hech narsa emas, va hokazo. Menyudan keyin menyu -> Canais -> Meus Canais va Entertainment clicamos "Novo Canal" uchun hech qanday cheklovlar yo'q. Bu kanalni ochish, eskolemosni o'rnatish va o'chirish uchun zarur bo'lgan barcha ma'lumotlarni o'z ichiga oladi. Kaso yo'q, utilizamos 7.
Bu kanal, kanal va boshqa kanallar, Chave de Escrita va Chave de Leitura. "Kanal" nomli kanalni identifikatsiya qilish - bu "Chaves" kanali. Python-ni kanaldan foydalanib, ma'lumot olish mumkin, shuning uchun kanalni identifikatsiya qilish kerak:
channelID = "Kanalni identifikatsiya qilish"
Chave de Escrita bilan bog'laning:
apiKey = "Insire a Chave de Escrita"
Python app.py -dan boshqa hech qanday konfiguratsiya qilinmagan bo'lsa ham, konfiguratsiya qilinmaydi:
useUnsecuredTCP = To'g'ri
useUnsecuredWebsockets = FalseuseSSLWebsockets = False mqttHost = "mqtt.thingspeak.com" if useUnsecuredTCP: tTransport = "tcp" tPort = 1883 tTLS = None if useUnsecuredWebsockets: tTranstSortSportSport = "WebSock Nets veb-rozetkalari "tTLS = {'ca_certs':"/etc/ssl/certs/ca-sertifikatlar.crt ", 'tls_version': ssl. PROTOCOL_TLSv1} tPort = 443 topic =" kanallar/" + kanalID +"/nashr/" + apiKey
Masalan, veb -saytni qayta ishlash, masalan, harorat 2 -toifa emas (masalan, temperatura uchun eskolemos), "maydon2 ="+o'zgaruvchan_temperatura, hech qanday sabab yo'q:
tPayload = "field1 =" + str (ardAgua) + "& field2 =" + str (ardTemp) + "& field3 =" + str (ardPres) + "& field4 =" + str (ardUV) + "& field5 =" + str (ma'lumotlar) + "& field6 =" + str (vel_vento) + "& field7 =" + str (umidsiz)
Python -da dasturlar va dasturlar, shuningdek, Internet -xizmatlar yordamida amalga oshiriladi. ThingSpeak yo'q, shuning uchun siz ularni grafika bo'yicha nazorat qilishingiz mumkin.
Tavsiya:
Batareya bilan ishlaydigan ofis. Quyosh panellari va shamol turbinasi: Sharq/G'arbni avtomatik almashtirish bilan quyosh tizimi: 11 qadam (rasmlar bilan)
Batareya bilan ishlaydigan ofis. Quyosh tizimi Sharq/G'arbning avtomatik panellari va shamol turbinasi bilan almashinuvi bilan: Loyiha: 200 kvadrat metrli ofis batareyali bo'lishi kerak. Ofis, shuningdek, ushbu tizim uchun zarur bo'lgan barcha tekshirgichlar, batareyalar va komponentlarni o'z ichiga olishi kerak. Quyosh va shamol energiyasi batareyalarni zaryad qiladi. Faqat kichik muammo bor
NaTaLia ob -havo stantsiyasi: Arduino quyosh energiyasi bilan ishlaydigan ob -havo stantsiyasi to'g'ri yo'l bilan amalga oshirildi: 8 qadam (rasmlar bilan)
NaTaLia ob -havo stantsiyasi: Arduino quyosh energiyasi bilan ishlaydigan ob -havo stantsiyasi to'g'ri yo'lga qo'yildi: 1 yil davomida 2 xil joyda muvaffaqiyatli ishlaganimdan so'ng, men quyosh energiyasi bilan ishlaydigan ob -havo stantsiyasining loyiha rejalari bilan bo'lishaman va uning qanday qilib uzoq vaqt yashay oladigan tizimga aylanganini tushuntiraman. quyosh energiyasidan o'tgan davrlar. Agar ergashsangiz
MySQL, PHP5 va Python bilan Arduino YÚN -ga kirishni boshqarish: 11 qadam (rasmlar bilan)
MySQL, PHP5 va Python yordamida Arduino YÚN -ga kirishni boshqarish: Salom do'stlar! Siz bilganingizdek, sentyabr oyida Arduino, Arduino YUN ning yangi premyerasi. Bu kichkina do'stning Linux o'rnatilgan tizimi bor, uning yordamida biz siz o'ylagan hamma narsani ishga sola olamiz (hech bo'lmaganda hozirgacha). Ma'lumotlar juda oz bo'lsa -da
QuizzPi, Python bilan Raspberry Pi trivia o'yini: 7 qadam (rasmlar bilan)
QuizzPi, Python bilan Raspberry Pi trivia o'yini: QuizzPi - arja tipidagi trivia o'yini. QuizzPi tug'ilgan, chunki men qizimga o'yin -kulgi berishim kerak edi. U 7 yoshda va u allaqachon yangi texnologiyalardan foydalanishni talab qilmoqda, g'oya ham qiziqarli, ham o'qimishli narsalarni yaratish edi
Vaqt o'tishi bilan rasmlar uchun kamera osonlashtirildi: 22 qadam (rasmlar bilan)
Vaqt o'tishi bilan suratga olish uchun kamera osonlashtirildi. Men boshqa ko'rsatmalarni vaqtni tez suratga olish filmlarini suratga olishni tekshirib ko'rdim. U kino qismini juda yaxshi yoritgan. U filmlar yaratish uchun yuklab olishingiz mumkin bo'lgan bepul dasturiy ta'minot haqida gapirib berdi. Men o'z -o'zimga aytdim, men o'ylaymanki, agar men qila olsam