תוכן עניינים:
- שלב 1: שימוש בחומרה
- שלב 2: Montagem Do Hardware
- שלב 3: קושחה Atmega328
- שלב 4: Programação Em Python
- שלב 5: Configurando O Web Service
![Irrigações Automatizadas Com Web Service Utilizando Python: 5 שלבים (עם תמונות) Irrigações Automatizadas Com Web Service Utilizando Python: 5 שלבים (עם תמונות)](https://i.howwhatproduce.com/images/001/image-1022-104-j.webp)
וִידֵאוֹ: Irrigações Automatizadas Com Web Service Utilizando Python: 5 שלבים (עם תמונות)
![וִידֵאוֹ: Irrigações Automatizadas Com Web Service Utilizando Python: 5 שלבים (עם תמונות) וִידֵאוֹ: Irrigações Automatizadas Com Web Service Utilizando Python: 5 שלבים (עם תמונות)](https://i.ytimg.com/vi/sBFGitIvD2A/hqdefault.jpg)
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:17
![Irrigações Automatizadas Com Web Service Utilizando Python Irrigações Automatizadas Com Web Service Utilizando Python](https://i.howwhatproduce.com/images/001/image-1022-105-j.webp)
Neste projeto iremos desenvolver um system of de monitoramento for plantações, que irá obter dados de umidade relativa do ar, pressão atmosférica, temperaturea 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 Service Service conectado à uma estação meteorológica (ללא caso, estamos utilizando a da Faculdade de Engenharia de Sorocaba). מידע נוסף, אנו יכולים להשתמש ב- ThingSpeak באינטרנט.
שלב 1: שימוש בחומרה
![שימוש בחומרה שימוש בחומרה](https://i.howwhatproduce.com/images/001/image-1022-106-j.webp)
Foi utilizado para a construção deste projeto:
1x קוואלקום דרגוןבורד 410c
1x ביניים בחיישן של Grove Seeed
1x חיישן שנראה במים
1x IMU 10OF Grove חיישן v1.0
1x חיישן חורש של Sunlight Grove v1.0
1x עכבר USB
1x USB Teclado
צג 1x
1x קאבו HDMI
1x מתאם HDMI-VGA
Acesso à dados da estação meteorológica FACENS
שלב 2: Montagem Do Hardware
![Montagem Do Hardware Montagem Do Hardware](https://i.howwhatproduce.com/images/001/image-1022-107-j.webp)
Após conectar a placa Sensor Mezzanine à dragonboard, בצע ligação de acordo com o esquemático הקדמי, שלח:
1: גישה לחיישן Groove Sunlight v1.0.
2: +5V חיבור ao Vcc לעשות IMU-10DOF.
3: +5V e Gnd conectados aos pinos correspondentses do sensor water.
4: GND IMU-10DOF.
5: SDA/SCL conectado ao pino correspond do do IMU-10.
6: חיישן Pino Sig do Water conectado ao pino 2.
שלב 3: קושחה Atmega328
Através da Sensors Mezzanine, אפשר לקבל גישה למיקרו-בקרה Atmega328, או להשתמש במתקני פלטפורמות של ארדואינו, תוכנת תוכניות והפעלה, שימוש במתקן IDE Arduíno על DragonBoard. Vale ressaltar que a Mezzanine e a DragonBoard em conjunto possoem todo os periféricos needsários para a programação and gravação do firmware no microcontrolador.
הקושחה הקשורה וההתייחסות לתגובה היא כמו חיפוש אחר חיישנים, פרוטוקולים של קומוניקה ואופרה של mesmos, והגדרות של אמצעי חיפוש ודוגמאות באמצעות סידורי סדרה של DragonBoard.
*יש צורך בכל הקשור לתנ ך ללא תוכנות קושחה. Elas podem ser encontradas em:
imu-10DOF
חיישן אור השמש
O קושחה שימושית pode ser encontrado aqui ou aqui:
שלב 4: Programação Em Python
![Programação Em Python Programação Em Python](https://i.howwhatproduce.com/images/001/image-1022-108-j.webp)
Para o programa criado, foram needsários os seguintes יבוא: 'urllib2', 'json', 'time', 'serial', 'paho.mqtt.publish', 'psutil' e 'decimal'. Foram definidos duas funções ('comJSON' e 'semJSON') que serão explicadas mais tarde.
import urllib2, json #para pegar os dados da estacaoimport time #para o time.sleep () יבוא סדרתי #para o Arduino יבוא paho.mqtt.publish as publish #para publicar יבוא psutil #parara configurar או url יבוא עשרוני #ממיר פרה
O primeiro passo é gravar em uma variável o endereço de onde serão obtidos os dados da Estação Meteorológica (אין 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 receber via 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" #הגדר כתובת 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 variável 'jsonurl' como 'None'. ניתן לשנות את כתובת ה- URL של JSON, אך לא ניתן לעשות זאת בעוד 'זמן', אך ניתן לאפס אותה שוב ושוב ללולאה. כתובת האתר או כתובת האתר משתמשת בכתובת 'urllib2.urlopen (url)', והודעות נוספות על טיעון 'timeout = X', שלח X על מנת להגדיר מספר מגבלות עבור כתובת האתר. אפשר לתכנן תוכנה לשפר את כתובת ה- URL לקצב פסק הזמן, או לתכנת את האפשרות 'comJSON' mencionada anteriormente. 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' irá mostrar e enviar os dados da estação, enquanto 'semJSON' não). Como 'semJSON' é uma função derivada de 'comJSON'. Iremos הסביר סומנטיים ל- 'comJSON'
while (1): jsonurl = None #Inicializa a varivavel como None print 'Passo:', j print 'Atualizando dados' try: jsonurl = urllib2.urlopen (url, timeout = 5) #tenta abrir o url em no máximo 5 segundos אם jsonurl אינו None: הדפס את 'Dados atualizados' comJSON (jsonurl) #ראה מידע אודות כתובת האתר, אם כן, למעט: אם jsonurl הוא None: הדפס 'Erro ao atualizar dados' semJSON () #Se não abriu o URL, mostra os dados obtidos localmente (do Arduino) לעבור j += 1 הדפסה '---------------------------------- -------------------------------------------------- -------------------------------------------- / n 'זמן. ישן (1)
Na primeira linha da função 'comJSON', recebemos todos os dados da URL já abertos numa variá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 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' (לדוגמא '[' ReturnDataSet '] [' sens_aver_6_5] ') e então mostramos esta novos dados na.
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) ().rstrip ()) ardUV = float (ard.readline (). rstrip ())
הדפס "\ n ארדואינו"
אם ardAgua == 1: הדפס 'Molhado' אחר: הדפס 'Seco' הדפסה 'Temperatura:', ardTemp, '*C' print 'Pressao:', ardPres, 'Pa' print 'Ultra-Violeta:', ardUV, ' lx '
#אסטקאו
הדפס '\ nJSON' הדפס 'כתובת 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']
הדפס 'נתונים:', נתונים
הדפס 'Velocidade do Vento:', vel_vento, 'm/s' print 'Umidade do ar:', umidade, '%'
#המרה
vel_vento = decimal. Decimal (vel_vento.rstrip ()) umidade = decimal. Decimal (umidade.rstrip ())
O próximo passo é enviar todos esses dados coletados. Para isso, precisamos colocar a ID do channel, a Chave de Escrita e o Host em variáveis, além de configurar o useUnsecuredTCP, useUnsecuredWebsockets e useSSLWebsockets (usamos True, False, False). Criamos mais uma variá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 publicar os dados no servidor usando 'publish. single (topic, payload = tPayload, hostname = mqttHost, port = tPort, tls = tTLS, transport = tTransport) '. A função então acaba e retorna para o loop principal.
= #Envia ערוץ מעקב "344,243" פסקה criado #Canal o Grupo apiKey = "1PK9ELK0L4AH8CVP" # Código דדו מלון פלו ThingSpeak mqttHost = "mqtt.thingspeak.com" # configurações דה comunicação useUnsecuredTCP = useUnsecuredWebsockets True = False useSSLWebsockets = False אם useUnsecuredTCP: tTransport = "tcp" tPort = 1883 tTLS = אין אם useUnsecuredWebsockets: tTransport = "websockets" tPort = 80 tTLS = None if useSSLWebsockets: יבוא ssl tTransport = "websockets" tTLS = {'ca_certs': "/etc/ssl/certs/ca- certificates.crt ", 'tls_version': ssl. PROTOCOL_TLSv1} tPort = 443 topic =" channel/" + channelID +"/publish/" + apiKey #Cria variavel com o 'caminho' עבור תעלה tPayload =" field1 = " + 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 מחרוזת להדפסה 'Enviando dados' try: publish.single (topic, payload = tPayload, hostname = mqttHost, port = tPort, tls = tTLS, transport = tTransport) #Envia os dados time.sleep (0.5) הדפס 'Dados enviados' למעט: הדפס 'Erro ao enviar dados'
שלב 5: Configurando O Web Service
![שירות האינטרנט Configurando O שירות האינטרנט Configurando O](https://i.howwhatproduce.com/images/001/image-1022-109-j.webp)
לקבלת מידע נוסף על שירות אינטרנט, שימוש ב- ThingSpeak פלטפורמה. לפרטים, entramos no site thingspeak.com e criamos uma conta. אנו יכולים להתחבר לאתר, אך לא ניתן להשתמש בתפריטים -> Canais -> Meus Canais e então clicamos no botão "תעלת נובו". 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. אין caso, utilizamos 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 que o código Python Envie as informações obtidas para o canal é, needsário configurá-lo ao ID for Canal:
channelID = "Insira o ID do Canal aqui"
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 needsárias outras configurações no código em Python app.py:
useUnsecuredTCP = True
useUnsecuredWebsockets = FalseuseSSLWebsockets = False mqttHost = "mqtt.thingspeak.com" if useUnsecuredTCP: tTransport = "tcp" tPort = 1883 tTLS = None if useUnsecuredWebsockets: tTransport = "websockets" tTortSport = 80 tTSLS = tSTSLS = tSTSLTSTSS = tSTSSTonsSTTSSSTSSTSSSTSSTSSTSSONTSONTSONTSONTSONTSONTSONTSONTSONTSONTSONTSONTSONTSONTSONTSONTSONS websockets "tTLS = {'ca_certs':"/etc/ssl/certs/ca-certificates.crt ", 'tls_version': ssl. PROTOCOL_TLSv1} tPort = 443 topic =" ערוצים/" + channelID +"/publish/" + apiKey
Para que a aplicação web realmente receba, לדוגמא, או ערך Temperatura no campo 2 (campo que escolhemos para ser a Temperatura), é needario 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 (data) + "& field6 =" + str (vel_vento) + "& field7 =" + str (umidade)
אנו יכולים לעשות זאת באמצעות תעלת תוכנת Python, מנהלת מערכת ההפעלה או שירות השירותים. No ThingSpeak, é possível realizar todo o monitoramento através de gráficos.
מוּמלָץ:
MONITORAMENTO DA UMIDADE DO SOLO DE UMA HORTA UTILIZANDO ARDUINO E ANDROID: 15 שלבים
![MONITORAMENTO DA UMIDADE DO SOLO DE UMA HORTA UTILIZANDO ARDUINO E ANDROID: 15 שלבים MONITORAMENTO DA UMIDADE DO SOLO DE UMA HORTA UTILIZANDO ARDUINO E ANDROID: 15 שלבים](https://i.howwhatproduce.com/images/001/image-567-j.webp)
MONITORAMENTO DA UMIDADE DO SOLO DE UMA HORTA UTILIZANDO ARDUINO E ANDROID: A ideia do nosso projeto é monitorar a umidade do solo de uma horta e apresentar and tela do celular para acompanhamento real
Como Subir Datos De Un Acelerómetro a Ubidots, Utilizando Arduino YÚN: 6 שלבים
![Como Subir Datos De Un Acelerómetro a Ubidots, Utilizando Arduino YÚN: 6 שלבים Como Subir Datos De Un Acelerómetro a Ubidots, Utilizando Arduino YÚN: 6 שלבים](https://i.howwhatproduce.com/images/001/image-1809-10-j.webp)
Como Subir Datos De Un Acelerómetro a Ubidots, Utilizando Arduino YÚN: Arduino Y Ú N es un microcontrolador basado en el ATmega32u4 y el Atheros AR9331. מערכת ההפעלה של מערכת ההפעלה של מערכת הפעלה לינוקס מבוססת OpenWrt, אל Arduino Y Ú
Como Hacer Un Abanico Con Iluminación Utilizando Littlebits: 3 שלבים
![Como Hacer Un Abanico Con Iluminación Utilizando Littlebits: 3 שלבים Como Hacer Un Abanico Con Iluminación Utilizando Littlebits: 3 שלבים](https://i.howwhatproduce.com/images/004/image-10202-j.webp)
Como Hacer Un Abanico Con Iluminación Utilizando Littlebits: En el dia de hoy les mostrare como hacer un abanico con iluminaci ó n utilizando littlebits.Este ´ proyecto puede ser utilizado en una habitaci & oacura
E.S.D.U (יחידת Droid Service Emergency): 7 שלבים
![E.S.D.U (יחידת Droid Service Emergency): 7 שלבים E.S.D.U (יחידת Droid Service Emergency): 7 שלבים](https://i.howwhatproduce.com/images/007/image-20142-j.webp)
E.S.D.U (יחידת Droid Service Emergency): היום אנו הולכים לבנות E.S.D.U (יחידת Droid Service Emergency). ה- E.S.D.U מחולק ל -3 כיתות: משטרה, כיבוי אש ורפואה. כל אלה עדיין לא מפותחים במלואם, אבל אני מקווה שנוכל לשדרג ולפתח אותם יחד כקומיקס
Desplazamiento De Un Objeto Mediante El Calculo De Área En Python: 8 שלבים (עם תמונות)
![Desplazamiento De Un Objeto Mediante El Calculo De Área En Python: 8 שלבים (עם תמונות) Desplazamiento De Un Objeto Mediante El Calculo De Área En Python: 8 שלבים (עם תמונות)](https://i.howwhatproduce.com/images/003/image-6598-8-j.webp)
Desplazamiento De Un Objeto Mediante El Calculo De Área En Python: Para calcular el desplazamiento de un objeto, teniendo en cuenta los principios de la f í sica, es posible encontrar el á rea de su movimiento en una gr á fica de velocidad . אמברגו של חטא, el calculo de esta á rea n