Primal Display: создайте монитор температуры на Raspberry Pi с LCD
Это руководство показывает, как подключить 16x2 LCD, совместимый с HD44780, к Raspberry Pi 3 и выводить живые показания температуры и влажности с датчика DHT11. Инструкции охватывают выбор железа, проводку (4-битный и 8-битный режимы), необходимые библиотеки и полный Python-скрипт.
История
Введение
LCD-дисплей — универсальное дополнение для любого проекта на Raspberry Pi. Подключая HD44780-совместимый экран напрямую к GPIO-выводам, можно выводить данные датчиков или кастомные сообщения без I2C или SPI-адаптеров.
Железо
- HD44780-совместимый 16x2 LCD (стоимость <$10)
- Raspberry Pi 3 (или новее)
- Датчик температуры/влажности DHT11
- Micro-SD карта с Raspbian OS
- 1–2 потенциометра 10 кОм (контраст/яркость)
- Макетная плата, перемычки, блок питания 5 В
Мы используем шесть GPIO-пинов для LCD; этот прямой метод оставляет последовательный порт Pi свободным и устраняет необходимость в I2C-драйверах.
Подключение всего
Доступны два варианта проводки:
- 4-битный режим — использует 4 линии данных, один потенциометр для контраста.
- 8-битный режим — использует 8 линий данных, два потенциометра (контраст и яркость).
В 4-битном режиме 8-битный командный байт разбивается на две 4-битные половины, поэтому шина данных в два раза уже. На практике внутреннее время обработки LCD маскирует любое преимущество скорости 8-битного режима, так что выбирайте исходя из доступных пинов.
Подключение пинов LCD (4-бит)
- Pin 1 (GND) — Земля
- Pin 2 (+5 V) — Питание
- Pin 3 (Vo) — Подвижный контакт потенциометра (контраст)
- Pin 4 (RS) — GPIO 37
- Pin 5 (RW) — Земля (только запись)
- Pin 6 (EN) — GPIO 35
- Pin 7–10 — не используются
- Pin 11 (D4) — GPIO 33
- Pin 12 (D5) — GPIO 31
- Pin 13 (D6) — GPIO 29
- Pin 14 (D7) — GPIO 23
- Pin 15 (LED+) — +5 V
- Pin 16 (LED−) — Земля
Подключение пинов LCD (8-бит)
- Pin 1 — Земля
- Pin 2 — +5 V
- Pin 3 — Подвижный контакт потенциометра (контраст)
- Pin 4 — GPIO 37 (RS)
- Pin 5 — Земля (RW)
- Pin 6 — GPIO 35 (EN)
- Pin 7 (D0) — GPIO 40
- Pin 8 (D1) — GPIO 38
- Pin 9 (D2) — GPIO 36
- Pin 10 (D3) — GPIO 32
- Pin 11 (D4) — GPIO 33
- Pin 12 (D5) — GPIO 31
- Pin 13 (D6) — GPIO 29
- Pin 14 (D7) — GPIO 23
- Pin 15 — +5 V
- Pin 16 — Земля
Подключение датчика DHT11
DHT11 использует три пина: VCC, Data, GND. Соедините VCC с 3.3 В (pin 1); если показания нестабильны, переключите на 5 В (pin 2). Пин Data к GPIO 18 (физический pin 12). Рекомендуется подтягивающий резистор 4.7 кОм между VCC и Data.
Необходимые библиотеки
Убедитесь, что в системе есть инструменты сборки и заголовки Python:
sudo apt-get update
sudo apt-get install build-essential python-dev
Установите RPLCD для управления LCD:
sudo apt-get install python-pip
sudo pip install RPLCD
Установите библиотеку Adafruit DHT11 с GitHub:
sudo apt-get install git
git clone https://github.com/adafruit/Adafruit_Python_DHT.git
cd Adafruit_Python_DHT
sudo python setup.py install
Python-скрипт (8-бит)
Создайте temperature.py в предпочитаемом редакторе (например, nano):
#!/usr/bin/env python3
import RPi.GPIO as GPIO
import time
import Adafruit_DHT
from RPLCD import CharLCD
GPIO.cleanup()
# LCD конфигурация – 8-битный режим
lcd = CharLCD(
numbering_mode=GPIO.BOARD,
cols=16,
rows=2,
pin_rs=37,
pin_e=35,
pins_data=[40, 38, 36, 32, 33, 31, 29, 23]
)
while True:
humidity, temperature = Adafruit_DHT.read_retry(11, 18)
if humidity is None or temperature is None:
print('Failed to retrieve data from sensor')
continue
print(f'Temp: {temperature:.1f} C Humidity: {humidity:.1f} %')
lcd.clear()
lcd.cursor_pos = (0, 0)
lcd.write_string(f'Temp: {int(temperature)} C')
lcd.cursor_pos = (1, 0)
lcd.write_string(f'Humidity: {int(humidity)} %')
time.sleep(5)
Сделайте скрипт исполняемым и запустите:
chmod +x temperature.py
./temperature.py
Альтернатива 4-битный режим
Замените список pins_data на четыре GPIO-пина (например, [33, 31, 29, 23]) и скорректируйте инициализацию LCD соответственно.
Резюме
Следуя этим шагам, вы получите полностью функциональный LCD-дисплей, показывающий температуру и влажность в реальном времени, идеальный для метеостанций, IoT-панелей или учебных проектов.
Читать подробнее
Для глубокого понимания драйверов LCD и продвинутой конфигурации изучите репозиторий Adafruit DHT и документацию RPLCD.
Производственный процесс
- Валёк для теста: от этрусских истоков к современному мастерству
- Эволюция и мастерство современных кеглей для боулинга
- Жидкокристаллические дисплеи (LCD): технология, производство и перспективы
- Освоение подсистемы управления пинами для драйверов устройств Linux
- Drone Pi: двухрежимный квадрокоптер Multiwii + Raspberry Pi для управления со смартфона и пульта
- DIY-проект Arduino LCD: сборка с резисторами, кнопкой и дисплеем 16x2
- Понимание портативных брайлевских дисплеев: ключевые инсайты и инновации
- Два D-триггера 74LS74: полная справочная информация и распиновка
- Atlas Copco представляет генератор азота NGP+ на выставке WIN Expo 2017
- Atlas Copco представляет передовой решения для пластмасс на NPE2018