Orodha ya maudhui:
- Hatua ya 1: Utilizado wa vifaa
- Hatua ya 2: Montagem Fanya vifaa
- Hatua ya 3: Firmware Atmega328
- Hatua ya 4: Programu ya Em Python
- Hatua ya 5: Configurando O Huduma ya Wavuti
Video: Irrigações Automatizadas Com Huduma ya Mtandao Utilizando Python: Hatua 5 (na Picha)
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:54
Neste projeto iremos desenvolver um sistema de monitoramento para plantações, que irá obter dados de umidade relativa do ar, pressão atmosférica, temperatura do ar, incidência UV, velocidade do vento e condição da planta (seca / molhada). Alguns desses dados são obtidos localmente, enquanto outros são obtidos por meio de um Web Service conectado à uma estação meteorológica (Hakuna mpango, utumiaji wa Kituo cha Engenharia de Sorocaba). Após adquiridos, os dados serão disponibilizados em uma aplicação web baseada em ThingSpeak.
Hatua ya 1: Utilizado wa vifaa
Matumizi ya huduma kwa ajili ya ujenzi wa mpango huu:
1x Qualcomm Dragonboard 410c
1x Grove Seed Sensor Mezzanine
Sensorer ya Maji ya Maji ya 1x
1x IMU 10OF Grove Sensor v1.0
1x Nuru ya Grove Sensor v1.0
1x Panya USB
1x Teclado USB
Mfuatiliaji wa 1x
1x Cabo HDMI
1x Adaptador HDMI-VGA
Acesso à dados da estação meteorológica FACENS
Hatua ya 2: Montagem Fanya vifaa
Sawa inayofanana na sensorer ya Mezzanine kwenye ubao wa joka, fanya ligação de acordo com o esquemático anterior, sendo:
1: Conexão direta entre o sensor Groove Sunlight v1.0.
2: + 5V conectado ao Vcc fanya IMU-10DOF.
3: + 5V e Gnd conectados aos pinos waandishi wanafanya sensa ya Maji.
4: GND IMU-10DOF.
5: SDA / SCL conectado ao pino correspondente do IMU-10.
6: Pino Sig kufanya sensa ya Maji conectado ao pino 2.
Hatua ya 3: Firmware Atmega328
Através da Sensors Mezzanine, ni uwezekano wa kupata microcontrolador Atmega328, kwa njia ya utumiaji wa programu ya Arduíno, na programu hii, utumie IDE Arduíno instalada na DragonBoard. Utaftaji wa Mezzanine na DragonBoard ni pamoja na njia inayofaa ya kufanya kazi kwa programu ya programu na programu ya firmware bila microcontrolador.
O firmware firmware is a audiável for realizar as leituras dos sensores, gerenciando os protocolos de comunicação and operação dos mesmos, and a apos a aquisição dos dados, os encaminha via porta serial para a DragonBoard.
* Pode inahitajika kutumia inciplas bibliotecas utilizadas no firmware. Elas podem ser encontradas em:
imu-10DOF
Sensor ya jua
O firmware utilizado pode ser encontrado aqui ou aqui:
Hatua ya 4: Programu ya Em Python
Para o programa criado, foram needários os seguintes imports: 'urllib2', 'json', 'time', 'serial', 'paho.mqtt.publish', 'psutil' e 'decimal'. Foram definidos duas funções ('comJSON' e 'semJSON') ni nini maana ya maelezo mafupi zaidi.
kuagiza urllib2, json #para pegar os dados da estacaoimport time #para o time.sleep () kuagiza serial #para o Arduino kuagiza paho.mqtt.publish kama kuchapisha #para publicar kuagiza psutil #para configurar o url kuagiza 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 variáveis ('i' e 'j'), utilizando 'i' para pegar os dados mais atuais do Array que iremos receiver kupitia JSON (como a posição mais recente da 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" #Fafanua URL yako
i = 49 #Para pegar os dados mais atuais da estação
j = 0 #Passo hufanya programu
Entrando no 'while (1)', inicializamos a variável 'jsonurl' como 'Hamna'. Esta variável irrr a URL JSON, portanto ao inicializarmos ela no início do 'while', ni pamoja na kuweka upya orodha ya watu wanaosema tena kitanzi. Je! Unataka kutumia URL kutumia URL ya urllib2.urlopen (url) ', podendo também adicionar um argumento' timeout = X ', sendo X uma quantidade em segundos limite for URL URL. Tazama programu yako ikiwa unaleta URL ya muda wa kumaliza muda, na programu hii inaweza kutambuliwa kwa njia ya msingi ya 'comJSON'. Caso não consiga abrir a URL no tempo estipulado, realiza-se a função 'semJSON'. Ambos as funções são muito parecidas, tendo como diferença os dados da estação ('comJSON' ilá mostrar e enviar os dados da estação, enquanto 'semJSON' não). Como 'semJSON' ni uma função derivada de 'comJSON'. Iremos explicar somente ni 'comJSON'
wakati (1): jsonurl = Hakuna #Ininstiza como ya varivavel Hakuna chapa 'Passo:', j chapa 'Atualizando dados' jaribu: jsonurl = urllib2.urlopen (url, muda wa kumaliza = 5) #tenta abrir o url em no máximo 5 segundos ikiwa jsonurl sio Hamna: chapa 'Dados atualizados' comJSON (jsonurl) #Se unajumuisha URL, most todos os dados isipokuwa: ikiwa jsonurl haipo: chapa 'Erro ao atualizar dados' semJSON () #Se não abriu o URL, mostra os dados obtidos localmente (fanya Arduino) pita j + = 1 chapa '---------------------------------- -------------------------------------------------- -------------------------------------------- / n 'wakati (1)
Na primeira linha da função 'comJSON', vipokezi todos os dados da URL ni zaidi ya 'dados'. Esta it is receiver um objeto com duas Arrays, kwa sababu ya shughuli zingine za kutumia uma ('ReturnDataSet'). Kutumia huduma hii ni moja kwa moja, unaweza kufanya hivyo kwa njia ya siri na kufanya mfululizo kwa njia ya simu (kusoma mstari ()) kwa njia ya Arduíno ikiwa ni pamoja na Minyororo kama vile minyororo inayotokana na dhana za aina tofauti, sehemu nyingine, maandishi mengi zaidi. 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 notvos notos.
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 #Rece os osos do Arduíno ardAgua = int (ard.readline (). rstrip ()) ardTemp = kuelea (ard.readline (). rstrip ()) ardPres = int (ard.readline ().rstrip ()) ardUV = kuelea (ard.readlineline), rstrip ())
chapa "\ nArduino"
ikiwa ardAgua == 1: chapa 'Molhado' mwingine: chapisha 'Seco' chapisha 'Temperatura:', ardTemp, '* C' chapa 'Pressao:', ardPres, 'Pa' print 'Ultra-Violeta:', ardUV, ' lx '
#Estacao
chapa '\ nJSON' chapa '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']
chapisha 'Data:', data
chapisha 'Velocidade do Vento:', vel_vento, 'm / s' print 'Umidade do ar:', umidade, '%'
#Badilisha
vel_vento = decimal. Decimal (vel_vento.rstrip ()) umidade = decimal. Decimal (umidade.rstrip ())
O próximo passo ni enviar todos esses dados coletados. Para isso, precisamos colocar a ID do canal, a Chave de Escrita e o Host in variáveis, além de configurar o useUnsecuredTCP, useUnsecuredWebsockets and useSSLWebsockets (usamos True, False, False). Criamos mais uma variável que irá guardar o 'caminho' para o canal, e uma outra for guardar, em String, o que será enviado para o servidor (com todas as variáveis convertidas) in então tentar publicar os dados no servidor usando 'chapisha. moja (mada, malipo ya malipo = tPata mzigo, jina la mwenyeji = mqttHost, bandari = tPort, tls = tTLS, usafirishaji = Usafirishaji) '. Função então acaba e retorna para o loop kuu.
#Envia channelID = "344243" #Canal criado para o grupo apiKey = "1PK9ELK0L4AH8CVP" # Código dado pelo ThingSpeak mqttHost = "mqtt. "tcp" tPort = 1883 tTLS = Hakuna ikiwa matumiziUnsecuredWebsockets: tTransport = "websockets" tPort = 80 tTLS = Hakuna ikiwa matumiziSSLWebsockets: kuagiza ssl tTransport = "websockets" tTLS = {'ca_certs': "/ etc / ssl / certs / caert vyeti. str (ardAgua) + "& field2 =" + str (ardTemp) + "& field3 =" + str (ardPres) + "& field4 =" + str (ardUV) + "& field5 =" + str (data) + "& field6 =" + str (vel_vento) + "& field7 =" + str (umidade) #Organiza todas as variaveis em uma String para ser enviado print 'Enviando dados' try: publish.single (mada, malipo ya mzigo = tPayload, hostname = mqttHost, bandari = tPort, tls = tTLS, usafirishaji = Usafirishaji) #Envia os dados time. lala (0.5) chapa 'Dados enviados' isipokuwa: chapa 'Erro ao enviar dados'
Hatua ya 5: Configurando O Huduma ya Wavuti
Para enviar os dados obtidos ao Web Service, utilizamos a plataforma ThingSpeak. Bado tal, entramos hakuna tovuti thingspeak.com na criamos uma conta. Maagizo haya ni ya kuingia kwenye akaunti, na tunakutajia orodha ya menyu -> Manispaa -> Njia za Wakaazi na sehemu za "Novo Canal". 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. Hakuna caso, utilizamos 7.
Canal um canal, é gerado um ID do Canal, uma Chave de Escrita na uma Chave de Leitura. O ID kufanya Canal se encontra abaixo do nome do canal e a Chave de Escrita na aba "Chaves". Para que o código Python envie as informações obtidas para o canal is, needário configurá-lo ao ID do Canal:
channelID = "Insira o ID kufanya Mfereji wa maji"
E também com a Chave de Escrita:
apiKey = "Insira a Chave de Escrita"
Além da conexão com o canal criado, também são needárias outras configurações no código em Python programu.py:
useUnsecuredTCP = Kweli
useUnsecuredWebsockets = FalseuseSSLWebsockets = False mqttHost = "mqtt.thingspeak.com" ikiwa matumiziUnsecuredTCP: tTransport = "tcp" tPort = 1883 tTLS = Hakuna ikiwa useUnsecuredWebsockets: tTransport = "websockets" tPort = 80 tTort = 80 tTort = 80 tets websockets "tTLS = {'ca_certs':" / etc / ssl / certs / ca-certificates.crt ", 'tls_version': ssl. PROTOCOL_TLSv1} tPort = 443 mada =" vituo / "+ channelID +" / chapisha / "+ apiKey
Para for a aplicação web realmente recebe, for exemplo, o valor Temperatura no campo 2 (campo que escolhemos para ser a Temperatura), inahitajika kwa sababu ya "field2 =" + variável_temperatura, como no código a seguir:
tPayload = "uwanja1 =" + str (ardAgua) + "& field2 =" + str (ardTemp) + "& field3 =" + str (ardPres) + "& field4 =" + str (ardUV) + "& field5 =" + str (data + "& shamba6 =" + str (vel_vento) + "& uwanja7 =" + str (umidade)
Tendo vinculado todos os dados do Canal kwa programu ya Chatu, hufanya kazi kwa njia hii ikiwa ni pamoja na utumiaji wa huduma za Wavuti. No ThingSpeak, ni uwezekano wa kutambuliwa kwa njia ya ufuatiliaji wa mikutano.
Ilipendekeza:
Ufuatiliaji wa Joto la ESP8266 Nodemcu Kutumia DHT11 kwenye Mtandao wa Mtandao - Pata Joto la Chumba na Unyevu kwenye Kivinjari chako: Hatua 6
Ufuatiliaji wa Joto la ESP8266 Nodemcu Kutumia DHT11 kwenye Mtandao wa Mtandao | Pata Joto la Chumba na Unyevu kwenye Kivinjari chako: Halo jamani leo tutafanya unyevu & mfumo wa ufuatiliaji wa joto kwa kutumia ESP 8266 NODEMCU & Sensor ya joto ya DHT11. Joto na unyevu utapatikana kutoka kwa Sensorer ya DHT11 & inaweza kuonekana kwenye kivinjari ambayo ukurasa wa wavuti utasimamia
Saa ya Mtandao ya ESP8266 bila RTC yoyote - Saa ya Nodemcu NTP Hakuna RTC - MRADI WA BAHATI YA MTANDAO: Hatua 4
Saa ya Mtandao ya ESP8266 bila RTC yoyote | Saa ya Nodemcu NTP Hakuna RTC | MRADI WA SAA YA MTANDAO
Jinsi ya Kukarabati / Huduma Sharp Optonica RP-114H yako: Hatua 11 (na Picha)
Jinsi ya Kukarabati / Huduma Sharp Optonica RP-114H yako: Kwa hivyo hii ndio jinsi nilimaliza kutengeneza na kuhudumia turntable yangu ya wima, Optonica RP-114H. Nilinunua hii kutoka kwa mtu ambaye alidai ilikuwa inahudumiwa na inafanya kazi kikamilifu. aina ya kunung'unika, kwa hivyo ilipotokea haikuhudumiwa kabisa na e
Yote katika Benki moja ya Nguvu ya Huduma inayosafirika: Hatua 11 (na Picha)
Yote katika Benki Moja ya Nguvu ya Huduma inayoweza Kubebeka: Kumwaga Mizigo au Kuzima Umeme ni jambo la kawaida sana katika nchi zinazoendelea kama India, Afrika Kusini, Bangladesh nk. Msimu wa kumwaga mzigo sio msimu unaopendwa na mtu yeyote. Inaathiri sana shughuli zetu za kila siku na haswa moo zetu
Huduma-O-Matic !: Hatua 8 (na Picha)
Kujali-O-Matic!: Kujisikia chini, kushindwa, kupunguzwa moyo, au kuchoka tu? Unaweza kutumia kipimo kizuri cha utunzaji wa kibinafsi kutoka kwa Care-O-Matic, utunzaji wa kibinafsi " mashine ya kuuza "! Kimsingi ni 12x16x4 " baraza la mawaziri lenye rafu tatu na vyumba sita (Me-T