OLED термометр и гигрометр на HTU21D

В предыдущих статьях рассказывал о датчике температуры и влажности HTU21D, так же, показывал пример подключения его к ESP8266. Сегодня приведу пример подключения датчика HTU21D к Arduino UNO с отображением показаний на OLED дисплей.

Необходимые детали:
► Контроллер Arduino UNO R3 на CH340G x 1 шт.
► Провода DuPont, 2,54 мм, 20 см x 1 шт.
► Датчика температуры и влажности HTU21D x 1 шт.
► OLED-дисплей 0.96,128х64, 3.3-5B, SPI, IIC, синий x 1 шт.

Описание:
В данном примере с помощью контроллера Arduino UNO будем считывать показания с датчика HTU21D, полученные данные (температура и влажность) отобразим, последовательно на OLED дисплеи, так же будем дублировать данные в «Последовательный порт»

Подключение:
Подключение не сложное, так как датчик HTU21D и OLED дисплей работают по шине I2C, подключение будет к одним выводам Arduino UNO. Теперь подключаем интерфейс I2C, выводы A4 и A5 (Arduino UNO) подключаем к выводам DA и CL (HTU21D), затем к этим же выводам подключаем OLED дисплей, вывод SDA и SCL. Далее, осталось подключить питание, выводы с HTU21D (VCC и GND) и выводы OLED дисплея (V3V и GND), подключаем к Arduino UNO (3.3V и GND). Вот и все, для удобства приведу сеху подключения.

Установка библиотеки:
В данном примере используются две библиотеки «SparkFunHTU21D» и «OLED_I2C» скачать ее можно с «Менеджер библиотек» или в конце статьи, на 20.09.2021 версия 1.0.5.

В строке поиска вводим «HTU21D» находим библиотеку «SparkFunHTU21D» и устанавливаем ее.

Библиотеку «OLED_I2C» скачиваем файлом в конце статьи.

Программа:
Теперь, у нас все готово, копируем скетч в Arduino IDE или скачайте готовый файл и загружаем его в Arduino IТеперь, у нас все готово, копируем скетч в Arduino IDE или скачайте готовый файл и загружаем его в NodeMCU, незабываем указать свои данные сети.UNO

/* 
Тестировалось на Arduino IDE 1.8.5
Дата тестирования 19.09.2021г.
*/

#include <Wire.h>                            // Подключаем библиотеку Wire
#include <OLED_I2C.h>                        // Подключение библиотеки OLED_I2C
OLED  myOLED(SDA, SCL, 8); 
#include "SparkFunHTU21D.h"                  // Подключаем библиотеку SparkFunHTU21D
HTU21D myHumidity;                           // Создаем объект для работы с датчиком                
                             
extern uint8_t MegaNumbers[];                // Подключение больших шрифтов
extern uint8_t SmallFont[];                  // Подключение маленьких

void setup()
{
  Serial.begin(9600);                        // Открытие последовательного порта на скорости 9600
  Serial.println("HTU21D Example!");         // Отправка сообщения в последовательного порт
  myOLED.begin();                            // Инициализация OLED
  myHumidity.begin();                        // Инициализация HTU21D
}

void loop()
{
  float humd = myHumidity.readHumidity();    // Считываем влажность
  float temp = myHumidity.readTemperature(); // Считываем температуру
   
  myOLED.clrScr();                                     // Очищаем экран
  myOLED.setFont(MegaNumbers);                         // Включаем большой шрифт
  myOLED.print(String(myHumidity.readTemperature() , 1), CENTER, 12); 
  myOLED.setFont(SmallFont);                           // Включаем маленький шрифт
  myOLED.print("Temperature", CENTER, 57);               // Отображение надписи
  myOLED.update();                                     // Обновляем информацию на дисплее
  delay(1000);  

  myOLED.clrScr();                                     // Очищаем экран
  myOLED.setFont(MegaNumbers);                         // Включаем большой шрифт
  myOLED.print(String(myHumidity.readHumidity() , 1), CENTER, 12); 
  myOLED.setFont(SmallFont);                           // Включаем маленький шрифт
  myOLED.print("Humidity", CENTER, 57);               // Отображение надписи
  myOLED.update();                                     // Обновляем информацию на дисплее
  delay(1000);     
  
  Serial.print("Temperature:");              // Отправка сообщения
  Serial.print(temp, 1);                     // Отправка температуры
  Serial.print("C");                         // Отправка сообщения
  Serial.print(" Humidity:");                // Отправка сообщения
  Serial.print(humd, 1);                     // Отправка влажности
  Serial.print("%");                         // Отправка сообщения
  Serial.println();                          // Отправка сообщения
  delay(1000);                               // Пауза
}

 Скачать скетч

Открываем «Мониторинг порта«, где можно увидеть показания температуры и влажности.

Ссылки
  Библиотека OLED_I2C
  Библиотека SparkFunHTU21D

Купить на Aliexpress
  Контроллер Arduino UNO R3 на CH340G
  Контроллер Arduino UNO R3 на Atmega16U2
  Провода DuPont, 2,54 мм, 20 см
  OLED-дисплей 0.96,128х64, белый, DC 3.3-5B, SPI, IIC
  Датчика температуры и влажности HTU21D

Купить в Самаре и области
  Контроллер Arduino UNO R3 на CH340G
  Контроллер Arduino UNO R3 на Atmega16U2
  Провода DuPont, 2,54 мм, 20 см
 OLED-дисплей 0.96,128х64, 3.3-5B, SPI, IIC, белый
 Датчика температуры и влажности HTU21D

О нас Сергей

Посмотреть также

Начало работы с STM32 в Arduino IDE — руководство для начинающих

Начало работы с STM32 в Arduino IDE — руководство для начинающих

В этой статье расскажу как начать программировать микроконтроллеры серии STM32 с помощью среды разработки Arduino …

Один комментарий

  1. Александр

    Здравствуйте! У меня не отображается минусовая температура. Что может быть?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *