В статье рассматривается практический вопрос подключения к Arduino и использования двухстрочного 16×2 LCD дисплея с клавиатурой (1602 LCD Keypad Shield) для отображения данных поступающих с датчика температуры и влажности воздуха DHT11. Попутно раскрываются некоторые вопросы, такие как создание и отображение на дисплее собственных символов, доработка платы дисплея. Чтобы не усложнять, кнопки не используются (про использование клавиатуры здесь).

Пост из серии «смарите чё наваял, оно еще и работает!». Само собой, я «стоял на плечах гигантов» — использовал чьи-то наработки и информацию отовсюду.

Итак, LCD дисплей с двумя строками по 16 колонок собран китайсами на плате сразу с кнопками, имеет голубой фон подсветки (не очень качественный как увидим), белые буквы. Приобретен за недорого на наибайке (ebay), доехал местами с погнутыми контактами. Разгибал.

Посылка из Китая. Погнутые контакты

Посылка из Китая. Погнутые контакты

В данной конфигурации дисплея подключить дополнительное оборудование, датчики, не используя паяльник или BreadBoard затруднительно. Поэтому пришлось побыть немного китайцем и понюхать канифоли. В указанных местах, см. фотки, на плату сверху припаяны дополнительные разъемы для подключения дополнительной периферии.

Доработка LCD 1602

Доработка LCD 1602

Дисплей в данной сборке работает в 4-битном режиме. Пины 4—10 задействованы для управления. С аналогового «0» пина считываются нажатия кнопок (в данной конструкции не используются). Распиновка Arduino показана в таблице.

GND
 13
 12
RESET  ~11
 3.3V  ~10 Backlight control
+5V  5V  ~9 Enable pin (read/write)
GND  8 Reset pin
GND
 Vin  7 LCD Data transmission
~6 LCD Data transmission
Button select A0 ~5 LCD Data transmission
A1  4 LCD Data transmission
A2 ~3
A3  2
A4  1 ← TX
A5  0 → RX

При доделке LCD 1602 дисплея выяснена разводка контактов на плате в верхнем правом углу. Оно и правильно, пины 4—7 по-любому заняты.

lcd-shield-pin

Датчик температуры и влажности воздуха DHT11. Диапазон измерения температуры воздуха 0—60℃, погрешность ±2℃. Диапазон измерения влажности воздуха 20%—90%RH, погрешность измерения ±5%RH. Рабочее напряжение:5 В. Датчику много не надо.

Распиновка DHT11:

  1. (слева, буква S) данные
  2. (средний) питание 5В
  3. (справа, знак «минус») GND

Вот он, красава.

DHT11 pinup

DHT11 pinup

 

Рабочая система в сборе.

LCD, DHT11 в сборе

LCD, DHT11 в сборе

Датчик температуры и влажности DHT11 подключен к питанию Arduino, а линия данных к пину 2 Arduino.

Библиотеки для управления использованы стандартные: LiquidCrystal , dht11. Для DHT11 можно нагуглить и другие либы.

Поскольку LCD 1602 с кнопками, то распиновка для использования в программе несколько иная:

Поделка в сборе выводит следующую информацию на экран:

  • Температура (и в скобках порядковый номер замера)
  • Влажность
  • Точка росы. А что такое Dew Point fast не знаю, возможно это температура при которой роса выпадает зело быстро и обильно.
  • Сообщения об ошибках датчика, если таковые будут

 

Исходный код скетча здесь.

Ничего примечательного там нет. Небольшого пояснения требует лишь участок кода, ответственный за создание своего custom символа, в данном случае — это символ градусов. Графическое изображение создано с помощью онлайн веб-сервиса Custom Character Generator for HD44780 LCD Modules, естественно он не единственный такой.

 

Видео о том, как всё вместе дружно работает. Информация «входит и выходит, замечательно выходит!».

 

Кнопки можно было бы использовать для переключения между режимами отображения (температура/влажность — точка росы), обновления информации (типа F5) и т.д. Впрочем, одна кнопка уже работает — RESET :)

UPD. Эта же поделка, но с использованием клавиатуры.