Съдържание:
- Стъпка 1: Използване на хардуера
- Стъпка 2: Монтажен хардуер
- Стъпка 3: Фърмуер Atmega328
- Стъпка 4: Програмиране на Python
- Стъпка 5: Конфигурирайте O уеб услуга
Видео: Irrigações Automatizadas Com Web Service Използване на Python: 5 стъпки (със снимки)
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:54
Neste projeto iremos desenvolver um system de monitoringramento para plantações, que irá obter dados de umidade relativa do ar, pressão atmosférica, temperature 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 (No caso, estamos utilizando a da Faculdade de Engenharia de Sorocaba). Após adquiridos, os dados serão disponibilizados em uma applicação web baseada em ThingSpeak.
Стъпка 1: Използване на хардуера
Foi utilizado para a construção deste projeto:
1x Qualcomm Dragonboard 410c
1x Мецанин сензор за виждане на Grove
1x сензор за вода
1x IMU 10OF Grove Sensor v1.0
1x сензор за слънчева светлина Grove v1.0
1x USB мишка
1x Teclado USB
1x монитор
1x Cabo HDMI
1x адаптер HDMI-VGA
Acesso à dados da estação meteorológica FACENS
Стъпка 2: Монтажен хардуер
Após conectar a placa Sensor Mezzanine à dragonboard, изпълнете ligação de acordo com o esquemático anterior, sendo:
1: Conexão direta entre o senzor Groove Sunlight v1.0.
2: +5V свързване ao Vcc до IMU-10DOF.
3: +5V e Gnd conectados aos pinos съответства на сензор за вода.
4: GND IMU-10DOF.
5: SDA/SCL conectado ao pino korespondente do IMU-10.
6: Pino Sig do сензор за вода conectado ao pino 2.
Стъпка 3: Фърмуер Atmega328
Através da Sensors Mezzanine, който има достъп до микроконтролатор Atmega328, за да използва мезоплатформата Arduíno, директно в програмата, използва IDE Arduíno инсталиран на DragonBoard. Vale ressaltar que a Mezzanine и a DragonBoard em consonto possuem todo os periféricos neophodários para a programáção e gravação do firmware no microcontrolador.
Отказът на фърмуера е реагиран като реализиран като leituras dos sensores, gerenciando os protocolos de comunicação и operação dos mesmos, e após aquisição dos dados, os encaminha чрез porta сериен за DragonBoard.
*Настройка на необходимостта и включването на библиотеки без използване на фърмуер. Elas podem ser encontradas em:
imu-10DOF
Сензор за слънчева светлина
O използване на фърмуера pode ser encontrado aqui ou aqui:
Стъпка 4: Програмиране на Python
За програмата за крио, за необходимото от seguintes внос: 'urllib2', 'json', 'time', 'serial', 'paho.mqtt.publish', 'psutil' и 'decimal'. Foram definidos duas funções ('comJSON' и '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 като публикува #para publicar импортира psutil #para конфигуратор o url импортира десетичен #para конвертор
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 чрез 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 адреса на estação
i = 49 #Para pegar os dados mais atuais da estação
j = 0 #Passo do програма
Въвеждане на „while (1)“, инициализация на различен „jsonurl“като „Няма“. Esta variável irá abrir a URL JSON, portanto ao inicializarmos ela no início do 'while', estamos então resetando ela toda vez que repetirmos o loop. За пръв път можете да премахнете URL адреса и да използвате „urllib2.urlopen (url)“, да зададете добавка към аргумента „timeout = X“, да изпратите X uma quantidade em segundos limite за URL адрес aberto. Можете да въведете програма за съгласуване или да въведете URL адрес за темпо до изчакване, за да реализирате програма като „comJSON“предварителен вариант. Caso não consiga abrr a URL no tempo estipulado, realize-se a função 'semJSON'. Ambos като 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) #Вижте съкращението на URL адреса, повечето от тях са с изключение на: ако jsonurl е Няма: отпечатайте 'Erro ao atualizar dados' semJSON () #Se não abriu o URL, mostra os dados obtidos localmente (do Arduino) pass j += 1 print '---------------------------------- -------------------------------------------------- -------------------------------------------- / n 'време.сън (1)
На първо място, да се забавлява „comJSON“, да се отбележи, че можете да добавите към URL адреса, за да промените „дадос“. 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ão mostramos estes novos dados na tela tambo.
def comJSON (jsonurl): #envia todos os dados dados = json.loads (jsonurl.read ()) #carrega os dados JSON да 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 ())
отпечатайте „\ nArduino“
ако ardAgua == 1: отпечатайте „Molhado“иначе: отпечатайте „Seco“отпечатайте „Температура:“, ardTemp, „*C“отпечатайте „Pressao:“, ardPres, „Pa“отпечатайте „Ultra-Violeta:“, ardUV, “lx '
#Естакао
отпечатайте '\ nJSON' печат 'URL:', jsonurl #Recebe os dados да 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 and ID do channel, a Chave de Escrita e or Host em variáveis, além de configuration on 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 tentar publicar os dados no servidor usando 'публикува. единичен (тема, полезен товар = tPayload, име на хост = mqttHost, порт = tPort, tls = tTLS, транспорт = tTransport) “. A funçã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" #конфигуриране на comunicação = "tcp" tPort = 1883 tTLS = Няма, ако useUnsecuredWebsockets: tTransport = "websockets" tPort = 80 tTLS = Няма, ако useSSLWebsockets: import ssl tTransport = "websockets" tTLS = {'ca_certs': "/etc/ssl certifikati.crt ", 'tls_version': ssl. PROTOCOL_TLSv1} tPort = 443 topic =" канали/" + channelID +"/публикация/" + apiKey #Cria variavel com o 'caminho' para o канал tPayload =" field1 = " + str (ardAgua) + "& field2 =" + str (ardTemp) + "& field3 =" + str (ardPres) + "& field4 =" + str (ardUV) + "& field5 =" + str (данни) + "& 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: Конфигурирайте O уеб услуга
За да можете да добавите към уеб услугата, използвайки платформата ThingSpeak. Para tal, entramos no site thingspeak.com e criamos uma conta. Após a criação e login in 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 descriptionção para ele, e então decidimos quantos dos 8 campos possíveis utilizaríamos. Без касо, използване 7.
Ao criar um channel, é 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 като informações obtidas para or channel é, необходимото конфигуриране-lo ao ID до Canal:
channelID = "Влизане в ID за Canal aqui"
E também com a Chave de Escrita:
apiKey = "Insira a Chave de Escrita"
Além da conexão com o channel criado, também são neophodárias outras configurações no código em Python app.py:
useUnsecuredTCP = Истина
useUnsecuredWebsockets = FalseuseSSLWebsockets = False mqttHost = "mqtt.thingspeak.com", ако useUnsecuredTCP: tTransport = "tcp" tPort = 1883 tTLS = Няма, ако useUnsecuredWebsockets: tTransport = "websosTSS tSS tSS" websockets "tTLS = {'ca_certs':"/etc/ssl/certs/ca-certificates.crt ", 'tls_version': ssl. PROTOCOL_TLSv1} tPort = 443 topic =" канали/" + channelID +"/публикация/" + apiKey
Para que a applicação web realmente receba, por exemplo, o valor Temperature no campo 2 (campo que escolhemos para ser a a Temperature), é 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)
Тендозирайте, че можете да добавите Canal в програмата на Python, изпълнете изпълнението на програмата или да направите това, като дадос есколхидос в уеб услугата. No ThingSpeak, é possível realizar todo o monitoringramento através de gráficos.
Препоръчано:
[2020] Използване на два (x2) Micro: бита за управление на RC автомобил: 6 стъпки (със снимки)
[2020] Използване на два (x2) Micro: бита за управление на RC автомобил: Ако имате два (x2) micro: бита, мислили ли сте да ги използвате за дистанционно управление на RC автомобил? Можете да управлявате RC автомобил, като използвате един micro: bit като предавател и друг като приемник. Когато използвате MakeCode редактор за кодиране на micro: b
IoT Keychain Finder Използване на ESP8266-01: 11 стъпки (със снимки)
IoT Keychain Finder Използване на ESP8266-01: Искате ли като мен винаги да забравя къде сте държали ключовете си? Никога не мога да намеря ключовете си навреме! И поради този мой навик, закъснях за колежа си, тази лимитирана серия разпродажба на екстри от Междузвездни войни (все още се тревожа!), Среща (тя никога не избра
Neopixel Ws2812 Rainbow LED Glow с M5stick-C - Стартиране на Rainbow на Neopixel Ws2812 Използване на M5stack M5stick C Използване на Arduino IDE: 5 стъпки
Neopixel Ws2812 Rainbow LED Glow с M5stick-C | Изпълнение на Rainbow на Neopixel Ws2812 Използване на M5stack M5stick C Използване на Arduino IDE: Здравейте момчета в тази инструкция ще се научим как да използваме неопиксели ws2812 светодиоди или LED лента или LED матрица или LED пръстен с m5stack m5stick-C платка за разработка с Arduino IDE и ние ще направим модел на дъга с него
Направи си сам „Измервателен уред за използване на компютър ROG Base“Използване на Arduino и Python: 5 стъпки (със снимки)
Направи си сам „Измерител за използване на компютър ROG Base“Използване на Arduino и Python: ************************************* +На първо място, тези инструкции са написани от неносещ англоговорящ … не е професор по английски, така че, моля, информирайте за някаква граматическа грешка, преди да ми се подигравате.: P +и моля, не имитирайте
Използване на променлив ток със светодиоди (част 4) - новите технологии: 6 стъпки (със снимки)
Използване на променлив ток със светодиоди (част 4) - новите технологии: Някои от препятствията в общото приемане на светодиодите в дома са относително високата цена на лумен и сложните и тромави системи за преобразуване на енергия. През последните месеци редица нови разработки обещават да ни доближат крачка до