Сегодня вы узнаете, как собрать электронный термогигрометр на базе Arduino и датчика влажности DHT11.
OLED, который вам понадобится, по диагонали 3,3 см (1,3”) и 128х64 точек, работающий на SPI-шине.



Чтобы обмениваться данными с дисплеем нужно будет установить библиотеку u8glib. С ее помощью будут выводиться числа, буквы, растровые изображения на комнатный термометр-гигрометр.

Шаг 1: Подключение к Arduino




Органический светодиод (OLED) – диод, в котором эмиссивный электролюминесцентный слой сделан из органического полимера, который начинает испускать свет под действием электрического тока. Этот слой органического полупроводника расположен между двумя электродами, обычно как минимум один из электродов светопроницаемый.

Дисплей, который я использую, по диагонали 3,3 см (1,3”), 128х64 точки, работает на четырехпроводном последовательном периферийном интерфейсе (шине SPI). Дисплей монохромный синий, потребляет 0,04 Вт энергии, что в десять раз меньше требуемой мощности обычного ЖК-дисплея 16х2.

OLED можно перенастроить для работы с другими шинами (I2C, например) или с трехпроводной SPI шиной. Для этого нужно перепаять один или два резистора с обратной стороны платы дисплея. Они отмечены нулями (на фото).

Для перенастройки на работу с i2c шиной – перепаять резистор BS1 на 1, а резистор BS0 оставить на 0.
Для перенастройки на работу с трехпроводной SPI шиной – перепаять резистор BS1 на 0, а резистор BS0 на 1.

Шаг 2: Немного о датчике DHT11


Датчик DHT11 – самый распространенный, недорогой цифровой датчик влажности и температуры. С помощью емкостного датчика влажности и термистора сенсор получает данные об окружающем воздухе, и отправляет результат на вывод данных (то есть не использует аналоговый выход). Его крайне просто использовать, но он требует четкой синхронизации обмена данными. Единственный минус датчика – он делает измерения каждые две секунды, то есть ваши данные фактически запаздывают на две секунды.

Характеристики:

  • малый размер, низкая стоимость
  • рабочее напряжения 3-5 В
  • максимальный ампераж в режиме запроса данных – 2,5 мА
  • диапазон измерения влажности воздуха 20-80%, погрешность не превышает 5%
  • диапазон измерения температуры 0-50°С, погрешность не превышает 2°С
  • частота измерений не превышает 1 Гц (одно измерение в секунду)

Шаг 3: Компоненты для сборки термогигрометра





Вам понадобятся следующие компоненты:

Шаг 4: Подключение датчика и дисплея




Ознакомьтесь со схемой подключения к макетной плате. Положительный и отрицательный выводы под напряжением и датчика, и дисплея подключите соединительными проводами к земле и к 5В выводу платы контроллера.

Подключите соединительным проводом выходной разъем датчика к разъему A0 микроконтроллера.

Подключите пины OLED дисплея к пинам микроконтроллера в следующем порядке:

  • пин DIN дисплея с пином 13 контроллера
  • пин CLK с пином 11
  • пин CS с пином 10
  • пин D/C с пином 9
  • пин RES с пином 8

Пины 13, 11, 10, 9 и 8 используются для передачи данных через интерфейс SPI платой Arduino Uno, а также являются разъемом ICSP с нижней стороны платы контроллера.
После подключения можно загрузить код в контроллер (загрузить его можно также и до подключения).

Шаг 5: Загружаем код

Этот этап достаточно простой, просто загрузите два файла с расширением «.INO» (они называются Farenheit и Celsius, для измерения в Фаренгейтах и Цельсиях соответственно), откройте их в программе Arduino IDE и загрузите в Arduino Uno.

Если вам не нравится шрифт, его можно поменять редактируя код. Для этого просто загрузите поддерживаемые шрифты в библиотеку u8glib.

Загрузите библиотекидля DHT и u8glib, разархивируйте и загрузите в папку библиотек (/Program Files(x86)/Arduino/Libraries (default)).

Последний файл с кодом для SSD1306 128X32 и 128X64 с SPI шиной, и для двуцветных OLED дисплеев (1/4 желтых, 3/4 синих диодов, SSD1306).

Файлы

Шаг 6: Испытания



Ваш датчик влажности и температуры на Ардуино на базе микропроцессора Arduino собран и теперь вы можете узнать температуру и влажность окружающего воздуха, когда вам угодно.