Índice:
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
Rastrear a temperatura e a umidade é importante se você tiver uma estufa ou se tiver planos futuros de transformá-la em uma mini fazenda inteligente.
No meu primeiro Instructable, demonstrarei como criar um protótipo:
- Conecte um sensor de temperatura e umidade DHT11 a um Arduino Mega 2560
- Programe o Arduino em C para ler os dados do sensor
- Exibir dados de temperatura e umidade em um LCD conectado ao Arduino
- Instrua o Arduino a enviar os dados do sensor para um Raspberry Pi 3 Modelo B +
- Escreva o código em Python para exibir os dados do sensor
Por que usar um RPi e um Arduino juntos?
A conexão Arduino e RPi pode permitir grandes recursos se você precisar de I / O em que o Arduino se destaca e comunicação de rede / multithreading / visuais em que o RPi é muito melhor.
Em outras palavras, vamos usar o Arduino para tarefas de controle intensivo e usar o RPi para tarefas de computação intensiva.
Versões robustas de Arduinos estão disponíveis em Rugged-Circuits
Etapa 1: Obtendo Hardware Arduino e RPi
Os kits iniciais do Arduino estão prontamente disponíveis e permitem que você experimente diferentes tipos de sensores e dispositivos. Comprar um kit inicial sai mais barato em vez de encomendar várias peças separadamente. Forneci alguns links de afiliados abaixo apontando para Banggood e Amazon US.
Arduino Starter Kit (Banggood)
Arduino Starter Kit (Amazon US)
Placa-mãe Element14 RPi 3 B + (Amazon EUA)
Capa Raspberry Pi 3 B + (Amazon EUA)
Cartão Micro SD de 32 GB (Amazon US).
Etapa 2: Conecte o DHT11 e LCD ao Arduino
Etapa 3: programar o Arduino
# arduino-dht11-lcd2004
#Author: Vasoo Veerapen
#https://www.instructables.com/member/VasooV/ # Lê dados de um DHT11 conectado a um Arduino, exibe em um LCD2004 e envia dados por serial para Raspberry Pi
#incluir
#incluir
// O display LCD é definido como o número do dispositivo 0x27 no barramento I2C
LiquidCrystal_I2C lcd (0x27, 20, 4);
// DHT11 está conectado ao pino 8
dht DHT; #define sensorPin 8
// Raspberry Pi está conectado ao Serial 0
#define serialPi Serial
void setup () {
lcd.begin (20, 4); // Inicializa a interface para a tela LCD e especifica as dimensões (largura e altura) do display lcd.init (); lcd.backlight (); serialPi.begin (9600); // Arduino para monitor serial}
void loop () {
// Ler dados do sensor
int sensorData = DHT.read11 (sensorPin); temperatura flutuante = DHT.temperatura; umidade flutuante = DHT.umidade;
// Imprimir temperatura
lcd.setCursor (0, 0); lcd.print ("Temperatura"); lcd.print (temperatura); lcd.print ("C");
// Imprimir umidade
lcd.setCursor (0, 1); lcd.print ("Umidade"); lcd.print (umidade); lcd.print ("%");
// Enviar dados de temperatura e umidade para Raspberry Pi
serialPi.print ("");
// Aguarde 10 segundos
atraso (10000); }
Etapa 4: Configuração de trabalho do Arduino, LCD e DHT11
Etapa 5: conecte o Raspberry Pi ao Arduino
Etapa 6: Código Python RPi para ler os dados seriais da porta USB
# rpi-arduino-dht11
#Raspberry Pi lê dados do sensor de temperatura e umidade do Arduino
import serial, string, time
#Neste exemplo / dev / ttyUSB0 é usado
# Isso pode mudar no seu caso para / dev / ttyUSB1, / dev / ttyUSB2, etc. ser = serial. Serial ('/ dev / ttyUSB0', 9600)
#O seguinte bloco de código funciona assim:
#Se dados seriais estiverem presentes, leia a linha, decodifique os dados UTF8, # … remova os caracteres de fim de linha à direita # … divida os dados em temperatura e umidade # … remova os ponteiros inicial e final () # … imprima a saída enquanto Verdadeiro: if ser.in_waiting> 0: rawserial = ser.readline () cookedserial = rawserial.decode ('utf-8'). Strip ('\ r / n') datasplit = cookedserial.split (',') temperatura = datasplit [0].strip ('') imprimir (temperatura) imprimir (umidade)