Përmbajtje:
- Hapi 1: Përdorimi i harduerit
- Hapi 2: Montagem Do Hardware
- Hapi 3: Firmware Atmega328
- Hapi 4: Programação Em Python
- Hapi 5: Konfiguro Shërbimin Ueb
Video: Shërbimi Web i Irrigações Automatizadas Com Utilizando Python: 5 hapa (me fotografi)
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:28
Neste projeto iremos desenvolver um sistemi de monitoramento para plantações, që janë të lidhura me umidade relativa do ar, pressão atmosférica, temperatura do ar, incidencia UV, velocidade do vento e condição da planta (seca/molhada). Alguns desses dados são obtidos localmente, mund të gjenden jashtë faqes sonë të shërbimit të internetit të lidhura dhe të kryera nga meteorológica (Jo rastësisht, vlerësimet e përdorimit të një Faculdade de Engenharia de Sorocaba). Após adquiridos, os dados serão disponibilizados em uma aplicação web baseada em ThingSpeak.
Hapi 1: Përdorimi i harduerit
Përdorimi për një ndërtim të destinimit të projektit:
1x Qualcomm Dragonboard 410c
1x Mezzanine Sensor i Parë Grove
Sensor 1x me ujë
1x IMU 10OF Grove Sensor v1.0
1x Sensor i Diellit Grove v1.0
1 x USB me miun
1 x Teclado USB
1x Monitor
1x Cabo HDMI
1x Adaptador HDMI-VGA
Acesso à dados da estação meteorológica FYTYRAT
Hapi 2: Montagem Do Hardware
Após conectar a placa Sensor Mezzanine à dragonboard, ekzekutoni një ligação de acordo com o esquemático anterior, sendo:
1: Klikoni për të hyrë në sensorin Groove Sunlight v1.0.
2: +5V i lidhur me Vcc në IMU-10DOF.
3: +5V e Gnd conectados aos pinosrespondentes do sensor Uji.
4: GND IMU-10DOF.
5: SDA/SCL lidhet me korrespondencën e pino në IMU-10.
6: Pino Sig do Sensori i ujit i lidhur me pino 2.
Hapi 3: Firmware Atmega328
Através da Sensors Mezzanine, mund të keni qasje në mikrokontrolluesin Atmega328, ose të përdorni pajisjet tona në platformat, duke përdorur programin tuaj, duke përdorur një IDE Arduíno instalim në DragonBoard. Mund të rishikoni një Mezzanine dhe a DragonBoard që mund të bëni për të bërë sisteme të nevojshme për një programim dhe gravação për firmware pa mikrokontrollues.
Nga firmware embarcado është përgjegjës për të kuptuar si leituras sensores, gjerenciao protokollet e komunikimit dhe operimit të mesmeve, dhe apos një ujë të dosjeve, duke përdorur serial porta për DragonBoard.
*Shkruani në mënyrë të domosdoshme një përfshirje biblioteke të përdorimit pa firmware. Elas podem ser encontradas em:
imu-10DOF
Sensori i dritës së diellit
Përdorimi i firmware -it në kodin encontrado aqui ou aqui:
Hapi 4: Programação Em Python
Për programin e krimit, për nevojat e importit të seguintes: 'urllib2', 'json', 'koha', 'serial', 'paho.mqtt.publish', 'psutil' e 'decimal . Foram definidos duas funções ('comJSON' e 'semJSON') që është e qartë për të vonuar.
import urllib2, json #para pegar os dados da estacaoimport time #para o time.sleep () import serial #para o Arduino import paho.mqtt.publish as published #para publicar import psutil #para configurar o url import decimal #para converter
O Primeiro passo é gravar em uma variável ose endereço de onde serão obtidos os dados da Estação Meteorológica (nuk ka nevojë për gravando na variável 'url'). Për më tepër, inicializamos duas variáveis ('i' e 'j'), përdorin 'i' para pegar os dados mais atuais do Array që iremos të marrim nëpërmjet JSON (si dhe të dhënat më të fundit të Array será 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" #Përcakto URL -në
i = 49 #Para pegar os dados mais atuais da estação
j = 0 #Passo do programa
Entrando jo 'ndërsa (1)', inicializamos a variável 'jsonurl' como 'Asnjë'. Mund të ndryshoni një URL JSON, që ju lejon të përdorni një 'ndërsa', duke përdorur një rivendosje të shpejtë të një përsëritjeje të lakut. Për sa i përket përdorimit të URL -së ose përdorimit të një 'urllib2.urlopen (url)', zgjidhni një argumentim 'timeout = X', dërgoni një sasi të caktuar të emrit në adresën e URL -së për të. Se o programa conseguir abrir a URL dentro do tempo do timeout, ose programi është një realizim i një funksioni 'comJSON' mencionada anteriormente. Në rast se nuk mund të shkurtoni një URL pa kohë, kuptojeni atë duke përdorur '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). Komo 'semJSON' është një derivadë e 'comJSON'. Iremos shpalos një somente a 'comJSON'
ndërsa (1): jsonurl = Asnjë #Inicializa a varivavel como Asnjë print 'Passo:', j print 'Atualizando dados' provoni: jsonurl = urllib2.urlopen (url, timeout = 5) #tenta abrir o url em no máximo 5 segundos nëse jsonurl nuk është Asnjë: printoni 'Dados atualizados' comJSON (jsonurl) #Se conseguiu abrir o URL, mostra todos os dados përveç: nëse jsonurl nuk është Asnjë: print 'Erro ao atualizar dados' semJSON () #Se não abriu o URL, mostra os dados obtidos localmente (do Arduino) kaloni j += 1 print '---------------------------------- ------------------------------------------------------ ---------------------------------------------- / n 'koha.gjumë (1)
Në radhë të parë do të përdorim 'comJSON', do të marrim fjalë për fjalë nga URL -ja për të përdorur një numër të ndryshëm 'dados'. Ju mund të përdorni një grup të caktuar 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 (lexo ((lexo) ()) ose o Arduíno está imprimindo e jogando as Strings convertidas 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 exemplo '[' ReturnDataSet '] [' sens_aver_6_5] ') e então mostramos estes nov Me
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 = noton (ard.readline (). rstrip ())
print "\ nArduino"
nëse ardAgua == 1: print 'Molhado' tjetër: 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']
printoni 'Të dhënat:', të dhëna
print 'Velocidade do Vento:', vel_vento, 'm/s' print 'Umidade do ar:', umidade, '%'
#Konverto
vel_vento = dhjetore. dhjetore (vel_vento.rstrip ()) umidade = dhjetore. dhjetore (umidade.rstrip ())
O próximo passo é enviar todos esses dados coletados. Për më tepër, mund të zgjidhni një kanal identifikimi, një Chave de Escrita e o Host em variáveis, të gjitha konfigurimet e përdorimit të pasigurta të përdorimit, të përdorura të pasigurta në uebfaqe dhe të përdorimit të SSLWebsockets (usamos True, False, False). Criamos mais uma variável que irá gardar 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) dhe então publicitar os dados no servidor usando 'published. të vetme (tema, ngarkesa = tPayload, emri i hostit = mqttHost, port = tPort, tls = tTLS, transport = tTransport) '. Një funcão então acaba e retorna para o loop principal.
#Envia channelID = "344243" #Canal criado para o grupo apiKey = "1PK9ELK0L4AH8CVP" #Código dado pelo ThingSpeak mqttHost = "mqtt.thingspeak.com" #konfigurimet "tcp" tPort = 1883 tTLS = Asnjë nëse përdoretUsecuredWebsockets: tTransport = "websockets" tPort = 80 tTLS = Asnjë nëse përdoretSSLWebsockets: import ssl tTransport = "websockets" tTLS = {'cert_certs'://etc/ssl/"/etc/ss certificates.crt ", 'tls_version': ssl. PROTOCOL_TLSv1} tPort = 443 temë =" kanale/" + channelID +"/publikoj/" + apiKey #Cria variavel com o 'caminho' para o canal tPayload =" field1 = " + str (ardAgua) + "& field2 =" + str (ardTemp) + "& field3 =" + str (ardPres) + "& field4 =" + str (ardUV) + "& field5 =" + str (të dhëna) + "& field6 =" + str (vel_vento) + "& field7 =" + str (umidade) #Organiza todas as variaveis em uma String para ser enviado print 'Enviando dados' try: published.single (tema, ngarkesa = tPagesa, emri i hostit = mqttHost, port = tPort, tls = tTLS, transport = tTransport) #Envia os dados time.sleep (0.5) print 'Dados enviados' përveç: print 'Erro ao enviar dados'
Hapi 5: Konfiguro Shërbimin Ueb
Për të siguruar një shërbim në internet, përdorni një platformë ThingSpeak. Për më tepër, hyni në asnjë faqe thingspeak.com dhe criamos uma conta. Aplikoni një regjistrim dhe hyrje në kontakte, nëse nuk drejtoheni në menunë -> Canais -> Meus Canais dhe entico clicamos pa botoo "Kanali i Novos". Ao clicar, escolhemos o nome do Canal, escrevemos uma descrição para ele, e então decidimos quantos dos 8 campos possíveis utilizaríamos. Asnjë rast, përdorimi 7.
Ao criar um canal, é gerado um ID do Canal, uma Chave de Escrita e uma Chave de Leitura. O ID do Canal se encontra abaixo do nome do canal e a Chave de Escrita na aba "Chaves". Para se të pyes Python për t'u informuar për informacionin e nevojshëm para kanalit, është e nevojshme të konfiguroni ID-në e kanalit:
channelID = "Insira o ID do Canal aqui"
Também com a Chave de Escrita:
apiKey = "Insira a Chave de Escrita"
Të gjitha lidhjet me krizën e kanalit, të gjitha nevojat për konfigurimin e jashtëm të konfigurimeve pa kodin Python në aplikacionin tonë. Py:
useUnsecuredTCP = E vërtetë
useUnsecuredWebsockets = FalseuseSSLWebsockets = I rremë mqttHost = "mqtt.thingspeak.com" nëse përdoretUnsecuredTCP: tTransport = "tcp" tPort = 1883 tTLS = Asnjë nëse useUnsecuredWebsockets: tTransportSockSport = t " websockets "tTLS = {'ca_certs':"/etc/ssl/certs/ca-certificates.crt ", 'tls_version': ssl. PROTOCOL_TLSv1} tPort = 443 temë =" kanale/" + channelID +"/publikoj/" + apiKey
Për një aplikim real real të pranimit, për shembull, për një vlerë të Temperaturës no campo 2 (për escolhemos për një temperaturë), është e nevojshme të tregoni në "fushën2 ="+ndryshimin_temperatura, pa ndryshuar një mënyrë:
tPayload = "field1 =" + str (ardAgua) + "& field2 =" + str (ardTemp) + "& field3 =" + str (ardPres) + "& field4 =" + str (ardUV) + "& field5 =" + str (të dhëna) + "& field6 =" + str (vel_vento) + "& field7 =" + str (umidade)
Konsideroni të drejtën tuaj për të bërë Canal à programação em Python, duke ekzekutuar programin tuaj ose duke përdorur shërbimet e internetit në Web Service. No ThingSpeak, është e mundur të realizohet të bëni një monitorim të através de gráficos.
Recommended:
MONITORAMENTO DA UMIDADE DO SOLO DE UMA HORTA UTILIZANDO ARDUINO E ANDROID: 15 hapa
MONITORAMENTO DA UMIDADE DO SOLO DE UMA HORTA UTILIZANDO ARDUINO E ANDROID: Një ide që nuk ju lejon të monitoroni një umidade ose solo de uma horta dhe paraqitjen e një telefoni celular për shoqërimin real
Shërbimi i Internetit: 3 hapa
Internet Servo: HYRJE Më pëlqen të ushqej zogj në kopshtin tim, por për fat të keq, miu i zi gjithashtu përfiton nga kjo. Kështu që unë mendova për një mënyrë për të parandaluar minjtë që të hanë ushqim për zogjtë. Miu i zi është aktiv vetëm në errësirë, kështu që ne duhet të mbyllim bi
Shërbimi i kursimit të letrës për printerët: 3 hapa
Shërbimi i Kursimit të Letrës për Printerët: Ky program i vogël është i domosdoshëm për njerëzit që kanë ose printer inkjet ose lazer. Nëse printeri juaj ndonjëherë duket se merr jetën e vet kur i dërgoni një punë printimi, nëse fillon të nxjerrë faqe pas faqe me gobbledygook ose faqe bosh dhe
Ndërtimi i ServoBoss, një testues shërbimi nga GadgetGangster.com: 5 hapa
Ndërtimi i ServoBoss, një Servo Tester Nga GadgetGangster.com: Ky është ServoBoss. Shtë një testues servo i aftë të ngasë deri në dymbëdhjetë servos njëkohësisht. Kompleti është i disponueshëm nga GadgetGangster.com Aktualisht ka tetë programe. Programi 1 - Vendosni milisekonda Rregullon daljen në dymbëdhjetë servos (dy grupe
Testues i thjeshtë shërbimi: 13 hapa (me fotografi)
Testues i thjeshtë shërbimi: Pak më i madh se një pullë postare, testuesi i thjeshtë servo ju lejon të kontrolloni dy servise dixhitale ose analoge pa përdorur transmetues ose marrës, thjesht lidhni paketën tuaj të baterisë për të filluar testimin. Përdoreni atë për të kontrolluar shërbimet tuaja para se t'i instaloni