Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Отслеживание температуры и влажности важно, если у вас есть теплица или вы планируете превратить теплицу в мини-смарт-ферму.
Для моего первого Instructable я продемонстрирую, как создать прототип:
- Подключите датчик температуры и влажности DHT11 к Arduino Mega 2560
- Запрограммируйте Arduino на C для чтения данных датчика
- Отображение данных о температуре и влажности на ЖК-дисплее, подключенном к Arduino
- Дайте указание Arduino отправить данные датчика на Raspberry Pi 3 Model B +.
- Напишите код на Python для отображения данных датчика
Зачем использовать вместе RPi и Arduino?
Соединение Arduino и RPi может обеспечить большие возможности, если вам нужен ввод-вывод, в котором Arduino превосходит Arduino, и сетевое взаимодействие / многопоточность / визуальные эффекты, с которыми RPi намного лучше.
Другими словами, мы собираемся использовать Arduino для задач с интенсивным управлением и использовать RPi для задач с интенсивными вычислениями.
Защищенные версии Arduinos доступны в Rugged-Circuits.
Шаг 1. Получение оборудования Arduino и RPi
Стартовые комплекты Arduino легко доступны и позволяют экспериментировать с различными типами датчиков и гаджетов. Покупка стартового комплекта обойдется дешевле, чем заказ отдельных деталей. Ниже я предоставил несколько партнерских ссылок, указывающих на Banggood и Amazon US.
Стартовый комплект Arduino (Banggood)
Стартовый комплект Arduino (Amazon, США)
Материнская плата Element14 RPi 3 B + (Amazon, США)
Корпус Raspberry Pi 3 B + (Amazon, США)
Карта Micro SD 32 ГБ (Amazon, США).
Шаг 2: Подключите DHT11 и ЖК-дисплей к Arduino
Шаг 3: запрограммируйте Arduino
# arduino-dht11-lcd2004
# Автор: Васу Вирапен
#https://www.instructables.com/member/VasooV/ # Считывает данные с DHT11, подключенного к Arduino, отображает на LCD2004 и отправляет данные по последовательному каналу на Raspberry Pi.
#включают
#включают
// ЖК-дисплей определяется как номер устройства 0x27 на шине I2C
LiquidCrystal_I2C lcd (0x27, 20, 4);
// DHT11 подключен к выводу 8
dht DHT; #define sensorPin 8
// Raspberry Pi подключен к Serial 0
#define serialPi Serial
void setup () {
lcd.begin (20, 4); // Инициализирует интерфейс для ЖК-экрана и задает размеры (ширину и высоту) дисплея lcd.init (); lcd.backlight (); serialPi.begin (9600); // Arduino к последовательному монитору}
void loop () {
// Считываем данные датчика
int sensorData = DHT.read11 (sensorPin); температура поплавка = температура DHT; влажность поплавка = DHT. влажность;
// Распечатать температуру
lcd.setCursor (0, 0); lcd.print («Температура»); lcd.print (температура); lcd.print («C»);
// Распечатать влажность
lcd.setCursor (0, 1); lcd.print («Влажность»); lcd.print (влажность); lcd.print ("%");
// Отправляем данные о температуре и влажности в Raspberry Pi
serialPi.print ("");
// Ждем 10 секунд
задержка (10000); }
Шаг 4: Рабочая настройка Arduino, LCD и DHT11
Шаг 5: подключите Raspberry Pi к Arduino
Шаг 6. Код Python RPi для чтения последовательных данных USB-порта
# rpi-arduino-dht11
#Raspberry Pi считывает данные датчиков температуры и влажности с Arduino
импортный серийный номер, строка, время
# В этом примере используется / dev / ttyUSB0
# В вашем случае это может измениться на / dev / ttyUSB1, / dev / ttyUSB2 и т. Д. Ser = serial. Serial ('/ dev / ttyUSB0', 9600)
# Следующий блок кода работает так:
# Если присутствуют последовательные данные, прочитать строку, декодировать данные UTF8, # … удалить символы конца строки # … разделить данные на температуру и влажность # … удалить начальный и конечный указатели () # … распечатать вывод, пока Истина: если ser.in_waiting> 0: rawserial = ser.readline () cookedserial = rawserial.decode ('utf-8'). Strip ('\ r / n') datasplit = cookedserial.split (',') temperature = datasplit [0].strip ('') печать (температура) печать (влажность)