সুচিপত্র:
- ধাপ 1: হার্ডওয়্যার ইউটিলিজাডো
- ধাপ 2: Montagem Do Hardware
- ধাপ 3: ফার্মওয়্যার Atmega328
- ধাপ 4: প্রোগ্রাম এমো পাইথন
- ধাপ 5: কনফিগারেন্ডো হে ওয়েব সার্ভিস
ভিডিও: Irrigações Automatizadas Com Web Service Utilizando Python: 5 টি ধাপ (ছবি সহ)
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 08:02
Neste projeto iremos desenvolver um sistema de monitoramento para plantações, que irá obter dados de umidade relaiva 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 (কোন ক্যাসো, estamos utizando a da Faculdade de Engenharia de Sorocaba)। Após adquiridos, os dados serão disponibilizados em uma aplicação web baseada em ThingSpeak।
ধাপ 1: হার্ডওয়্যার ইউটিলিজাডো
একটি গঠনমূলক প্রজেক্টের জন্য ব্যবহারযোগ্য ব্যবহার:
1x কোয়ালকম ড্রাগনবোর্ড 410c
1x গ্রোভ সেন্সর মেজানিন দেখেছি
1x জল সেন্সর
1x IMU 10OF Grove Sensor v1.0
1x সানলাইট গ্রোভ সেন্সর v1.0
1x মাউস ইউএসবি
1x Teclado USB
1x মনিটর
1x Cabo HDMI
1x Adaptador HDMI-VGA
Acesso à dados da estação meteorológica FACENS
ধাপ 2: Montagem Do Hardware
Após conectar a placa Sensor Mezzanine à dragonboard, execute a ligação de acordo com o esquemático anterior, sento:
1: Conexão direta entre o sensor Groove Sunlight v1.0।
2: +5V conectado ao Vcc do IMU-10DOF।
3: +5V e Gnd conectados aos pinos সংবাদদাতা ওয়াটার সেন্সর।
4: GND IMU-10DOF।
5: এসডিএ/এসসিএল সংযোগ
6: পিনো সিগ ডু ওয়াটার সেন্সর কানেকট্যাডো এও পিনো 2।
ধাপ 3: ফার্মওয়্যার Atmega328
Através da Sensors Mezzanine, é possível acessar um microcontrolador Atmega328, o mesmo utilizado em plataformas Arduíno, e programá-lo diretamente, utilizando a IDE Arduíno instalada na DragonBoard। Vale ressaltar que a Mezzanine e a DragonBoard em conjunto possuem todo os periféricos essentialários para a programmação e gravação do firmware no microcontrolador।
O firmware embarcado é responsável por realizar as leituras dos sensores, gerenciando os protocolos de comunicação e operação dos mesmos, e após a aquisição dos dados, os encaminha via porta serial para a DragonBoard।
*Pode ser essentialario a inclusão das bibliotecas utilizadas no firmware। Elas podem ser encontradas em:
imu-10DOF
সূর্যালোক সেন্সর
হে ফার্মওয়্যার ইউটিলিজাডো পোড সের এনকন্ট্রাডো অ্যাকুই বা অ্যাকুই:
ধাপ 4: প্রোগ্রাম এমো পাইথন
Para o programma Criado, foram essentialários os seguintes imports: 'urllib2', 'json', 'time', 'serial', 'paho.mqtt.publish', 'psutil' e 'decimal'। Foram definidos duas funções ('comJSON' e 'semJSON') que serão explicadas mais tarde।
আমদানি 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 or url import 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 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" #Define or URL da estação
i = 49 #প্যারা পেগার ওস দাদোস মাইস এটুয়াইস দা এস্তানো
j = 0 #পাসো প্রোগ্রাম করুন
Entrando no 'while (1)', inicializamos a variável 'jsonurl' como 'None'। Esta variável irá abrir a URL JSON, pferento ao inicializarmos ela no início do 'while', estamos então resetando ela toda vez que repetirmos o loop। O próximo passo é abrir o URL usando a função 'urllib2.urlopen (url)', podendo também adicionar um तर्क 'timeout = X', sendo X uma quantidade em segundos limite para o URL ser aberto। Se o programma conseguir abrir a URL dentro do tempo do timeout, or programma is realizar a função 'comJSON' mencionada anteriormente। Caso não consiga abrir a URL no tempo estipulado, realiza-se a função 'semJSON'। অ্যাম্বোস ফানেস সাও মুইটো প্যারিসিডাস, টেন্ডো কমো ডিফেরেনিয়া ওস দাদোস দা এস্তানো ('comJSON' irá mostrar e enviar os dados da estação, enquanto 'semJSON' não)। Como 'semJSON' é uma função derivada de 'comJSON'। আইরেমস এক্সপ্লিকার সুমেন্ট একটি '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 কোনটি না হয়: প্রিন্ট করুন 'Dados atualizados' comJSON (jsonurl) #Se conseguiu abrir o URL, mostra todos os dados ব্যতীত: যদি jsonurl কোনটি না হয়: মুদ্রণ করুন 'ইরো এও অ্যাটুলিজার দাদোস' semJSON () #Se não abriu o URL, Mostra os dados obtidos localmente (do Arduino) pass j += 1 print '---------------------------------- -------------------------------------------------- -------------------------------------------- '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' (por exemplo '[' ReturnDataSet '] [' sens_aver_6_5] ') e entã no noo estamos t mostmos ।
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 ())
মুদ্রণ "r n আরডুইনো"
যদি ardAgua == 1: প্রিন্ট 'মোলহাদো' অন্য: প্রিন্ট 'Seco' প্রিন্ট 'Temperatura:', ardTemp, '*C' print 'Pressao:', ardPres, 'Pa' print 'Ultra-Violeta:', ardUV, ' lx '
#ইস্টাকাও
মুদ্রণ 'J 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 = দশমিক। দশমিক (vel_vento.rstrip ()) umidade = দশমিক। দশমিক (umidade.rstrip ())
O próximo passo é enviar todos esses dados coletados। Para isso, precisamos colocar a ID do canal, a Chave de Escrita e o Host em variáveis, além de configurar or useUnsecuredTCP, useUnsecuredWebsockets and useSSLWebsockets (usamos সত্য, মিথ্যা, মিথ্যা)। 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 tentar publicar os dados no servidor usando 'প্রকাশ করুন। একক (বিষয়, পেলোড = tPayload, hostname = mqttHost, port = tPort, tls = tTLS, transport = tTransport) '। A função então acaba e retorna para o loop প্রধান।
#Envia channelID = "344243" #Canal criado para o grupo apiKey = "1PK9ELK0L4AH8CVP" #Código dado pelo ThingSpeak mqttHost = "mqtt.thingspeak.com" #configurações de comunicação useUssecureTuseUnsecureTuseUnsecureTuseUnsecureTuseUssecureTuseUssecureTuseUssecureTuseUssecureTuseUsecureSUseUsecureTuseUseUsecureTuseUseUsecureTsUsecureSUceUnseUsecureTuseUsUsecureTuseUsUsecureTuseUsUsecureTuseUsUsecureTuseUceUsUseUsUsUsUsUsUsUsUsUsUsUsUEXUSEQUESECUSEUSCULESUCCULESUCLESUSEUCCULESUCLESUSEUSEQUESEQUESEQUESEQUESUSE "tcp" tPort = 1883 tTLS = NU ব্যবহার করলে অসুরক্ষিত ওয়েবসকেটস certificate.crt ", 'tls_version': ssl. PROTOCOL_TLSv1} tPort = 443 topic =" channels/" + channelID +"/published/" + apiKey #Cria variavel com o 'caminho' para o canal 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 String para ser enviado print 'Enviando dados' try: published.single (topic, payload = tPayload, hostname = mqttHost, port = tPort, tls = tTLS, transport = tTransport) #Envia os dados time.sleep (0.5) প্রিন্ট 'Dados enviados' ছাড়া: print 'Erro ao enviar dados'
ধাপ 5: কনফিগারেন্ডো হে ওয়েব সার্ভিস
Para enviar os dados obtidos ao Web Service, utilizamos a plataforma ThingSpeak। Para tal, entramos no site thingspeak.com e criamos uma conta। Após a criação e login na conta, nos dirigimos ao cabeçalho de menus -> Canais -> Meus Canais e então clicamos no botão "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 utizaríamos। ক্যাসো নেই, ইউটিলিজামোস 7।
Ao criar um খাল, é 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 é, essentialário configurá-lo ao ID do 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 essentialárias outras configurações no código em Python app.py:
useUnsecuredTCP = সত্য
useUnsecuredWebsockets = FalseuseSSLWebsockets = মিথ্যা mqttHost = "mqtt.thingspeak.com" if useUnsecuredTCP: tTransport = "tcp" tPort = 1883 tTLS = None use useUnsecuredWebsockets: tTransport = "tsTsLTs" websockets "tTLS = {'ca_certs':"/etc/ssl/certs/ca-certificate.crt ", 'tls_version': ssl. PROTOCOL_TLSv1} tPort = 443 topic =" channels/" + channelID +"/প্রকাশ/" + apiKey
Para que a aplicação web realmente receba, por exemplo, o valor 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 (ডেটা) + "& field6 =" + str (vel_vento) + "& field7 =" + str (umidade)
Tendo vinculado todos os dados do Canal à programmação em Python, basta executor o código que todos os dados escolhidos são enviados ao Web Service। 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: A ideia do nosso projeto é monitorar a umidade do solo de uma horta e apresentar na 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: Arduino Y Ú N es un microcontrolador basado en el ATmega32u4 y el Atheros AR9331। Siendo el Atheros un procesador capaz de soportar un sistema operativo linux basado en OpenWrt, el Arduino Y Ú N cuenta con una version llamada OpenWrt-Yun।
Como Hacer Un Abanico Con Iluminación Utilizando Littlebits: 3 ধাপ
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 ó n oscura para que que este;
কিভাবে সহজ ধাপ এবং ছবি দিয়ে একটি কম্পিউটারকে আলাদা করা যায়: 13 টি ধাপ (ছবি সহ)
কিভাবে সহজ ধাপ এবং ছবি দিয়ে একটি কম্পিউটারকে ডিসাসেম্বল করবেন: এটি একটি পিসি কিভাবে ডিসাসেম্বল করা যায় সে সম্পর্কে একটি নির্দেশনা। বেশিরভাগ মৌলিক উপাদানগুলি মডুলার এবং সহজেই সরানো হয়। তবে এটি গুরুত্বপূর্ণ যে আপনি এটি সম্পর্কে সংগঠিত হন। এটি আপনাকে অংশগুলি হারানো থেকে রক্ষা করতে সহায়তা করবে, এবং পুনরায় সমাবেশ তৈরিতেও সহায়তা করবে
ESP8266 -NODEMCU $ 3 ওয়াইফাই মডিউল #2 - WEB PAGE এর মাধ্যমে ওয়্যারলেস পিন নিয়ন্ত্রণ: 9 টি ধাপ (ছবি সহ)
ESP8266 -NODEMCU $ 3 ওয়াইফাই মডিউল #2 - WEB PAGE এর মাধ্যমে ওয়্যারলেস পিন নিয়ন্ত্রণ: এই মাইক্রো কম্পিউটিং এর একটি নতুন জগৎ এসেছে এবং এই জিনিসটি হল ESP8266 NODEMCU। এটিই প্রথম অংশ যা দেখায় কিভাবে আপনি আপনার আরডুইনো আইডিইতে esp8266 এর পরিবেশ ইনস্টল করতে পারেন ভিডিওটি শুরু করার মাধ্যমে এবং এর অংশ হিসাবে