Проект датчика температуры и влажности Arduino DHT11

Линия датчика DHT

Линейка датчиков DHT (DHT11/22) является одной из наиболее часто используемых во многих электронных проектах, от домашних метеостанций до систем автоматизации предприятий, благодаря своей простоте и компактности в качестве датчика температуры/влажности. Хотя более точный и дорогой DHT22 может быть заменен (с некоторыми изменениями в коде), в данном проекте будет использоваться модуль датчика DHT11. Имея базовый 3-контактный интерфейс, датчик DHT11, который будет использоваться в данном проекте, не является отдельной версией 4-контактного датчика, а представляет собой 3-контактный модуль, имеющий встроенный конденсатор и подтягивающий резистор, что устраняет необходимость в дополнительных компонентах при создании данной схемы. Поэтому при сопряжении с платой Arduino модуль датчика DHT11 может быть напрямую подключен к цифровому выводу, который обрабатывает и передает последовательные данные с датчика на микроконтроллер для считывания.

В этом Проект DIY PCBAДанные о температуре и влажности, полученные от датчика DHT11, будут отображаться на OLED-дисплее (органический светодиод) размером 0,96″ 128×64 для наглядного считывания. Преимущество использования i2c OLED-дисплея по сравнению с другими типами дисплеев заключается в том, что он требует только 4-проводного подключения к плате Arduino, а благодаря широкому выбору библиотек его можно легко запрограммировать. Заметной особенностью OLED-дисплея является четкость, резкость и визуальное качество текстов, цифр и изображений, которые он может отображать.

В целом, это довольно простой проект схемы, который подходит для абсолютных новичков, поскольку для его реализации требуется всего несколько компонентов и некоторые базовые навыки кодирования. Однако для тех, кто более продвинут, этот проект может быть улучшен и модернизирован для добавления дополнительных функций, таких как беспроводная связь (RF, LoRa, Печатная плата Bluetooth, Wi-Fi и т.д.), данные RTC (часы реального времени), данные дополнительных датчиков (высота над уровнем моря, атмосферное давление, концентрация газов и т.д.) и многие другие функции. Для реализации этого проекта вам потребуется приобрести компоненты:

  • Arduino Nano (подойдут и другие совместимые с Arduino платы)
  • USB-кабель (совместимый с платой Arduino)
  • Хлебная доска
  • Провода-перемычки "мужчина-мужчина" (7)
  • 0,96″ 128×64 i2c OLED дисплей
  • Модуль датчика DHT11

Проводка

Если вы используете другую плату разработки, для нее может потребоваться другой тип макетной платы. В данном проекте FS Technology использует Arduino Nano, что требует использования макетной платы. Однако если вместо нее используется Arduino Uno, провода перемычек можно подключить непосредственно к контактам платы, что избавит от необходимости использовать макетную плату. Несмотря на смену платы, схема подключения сенсорного модуля DHT11 и OLED-дисплея к плате Arduino остается неизменной. Кроме того, схема подключения датчика температуры и влажности DHT11 приведена ниже.

  • Модуль датчика DHT11: Подключите сигнальный (S) контакт датчика к D2, положительный (+) контакт к +5 В, а отрицательный (-) контакт к GND.
  • OLED: Подключите SDA (последовательные данные) к A4, SCL/SCK (последовательный тактовый генератор) к A5, VDD/VCC (напряжение питания) к +5v и GND к GND.
  • Теперь вы можете подключить плату Arduino через USB-кабель к компьютеру.
Датчик температуры и влажности DHT11

Код проекта

1TP5Включить <Wire.h> 

1TP5Включить <Adafruit_GFX.h> 

1TP5Включить . 

 

#define ширина_экрана 128 

#define высота_экрана 64

#define OLED_RESET 4 

Adafruit_SSD1306 дисплей(ширина_экрана, высота_экрана);

 

1TP5Включить "DHT.h"

#define DHTPIN 2

#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

 

 void настройка() {

 dht.начать();

 

 дисплей.начать(SSD1306_SWITCHCAPVCC, 0x3C);

 дисплей.clearDisplay();

}

 

 void петля() {

 дисплей.clearDisplay();

 дисплей.setTextSize(1);

 дисплей.setTextColor(SSD1306_WHITE);

 

 дисплей.setCursor(0, 15);

 дисплей.вывести("Температура:");

 дисплей.setCursor(80, 15);

 дисплей.вывести(dht.readTemperature());

 дисплей.setCursor(110, 15);

 дисплей.вывести(" C");

 

 дисплей.setCursor(0, 35);

 дисплей.вывести("Влажность:");

 дисплей.setCursor(80, 35);

 дисплей.вывести(dht.readHumidity());

 дисплей.setCursor(110, 35);

 дисплей.вывести(“%”);

 дисплей.дисплей();

 задержка(2000);

О коде

  • Одним из преимуществ работы с i2c OLED дисплеем является невероятное количество поддержки, доступной в Интернете в виде библиотек с открытым исходным кодом, которые могут значительно помочь в программировании дисплея из среды Arduino IDE. В этом проекте библиотеки Adafruit SSD1306 и GFX являются основными двумя библиотеками, которые используются для взаимодействия OLED-дисплея с Arduino. Поскольку вся информация о настройке уже настроена в файлах библиотеки, основные команды используются в IDE, что упрощает использование дисплея. Если у вас нет этих библиотек, загруженных и установленных в IDE, вы можете столкнуться с ошибками компиляции, поэтому убедитесь, что у вас установлены последние версии библиотек в Arduino IDE.
  • Код начинается с определения библиотек, необходимых для настройки OLED-дисплея: Wire, Adafruit SSD1306 и Adafruit GFX. Они необходимы для работы OLED-дисплея с Arduino.
  • Во втором блоке определяются несколько параметров, относящихся к OLED-дисплею, которые включают ширину и высоту экрана (128 x 64 пикселей) и контакт сброса OLED (A4).
  • Далее определяются библиотеки, необходимые для взаимодействия датчика DHT11 с Arduino, в частности, библиотека 'DHT'. Цифровой вывод, к которому подключается датчик DHT на плате Arduino (цифровой вывод 2 - D2), также определяется вместе с конкретной моделью датчика DHT, которую мы используем, - датчиком DHT11.
  • Теперь вводится секция void setup, одна из двух важнейших функций в каждом коде Arduino. Здесь мы запускаем датчик DHT11 (dht.begin()), а также OLED-дисплей, и прежде чем перейти к разделу void loop, OLED-дисплей очищается от всех предыдущих визуальных эффектов (display.clearDisplay()).
  • Что касается секции void loop, основной части кода, которая постоянно повторяется (в цикле), пока есть питание на плате Arduino, она в основном состоит из функций, специфичных для OLED, которые сначала устанавливают размер текста, цвет текста и курсор (где мы хотим, чтобы текст печатался на OLED). Впоследствии мы даем команду OLED печатать строки текста в различных местах дисплея, которые в основном представляют собой информацию о температуре (в градусах Цельсия) и влажности (%), считываемую датчиком DHT11. С помощью этих простых команд, созданных на основе определенных библиотек, мы можем легко выводить любую информацию на дисплей.
  • Функция задержки в самом конце кода настроена на обновление OLED-дисплея каждые 2000 миллисекунд последними данными, считанными с датчика. Однако вы можете изменить это время в зависимости от того, как часто вы хотели бы получать актуальную информацию непосредственно от датчика.

Резюмируйте

Имея фундаментальное понимание этого проекта и основных принципов взаимодействия датчика с OLED-дисплеем, несомненно, существует множество способов, которыми этот проект может быть усовершенствован и улучшен. Чаще всего, подобная установка может быть интегрирована в более крупный проект метеостанции путем добавления дополнительных датчиков, большего дисплея, беспроводных возможностей, корпуса и т.д. Как показал этот проект, просто ознакомившись с некоторыми библиотеками Arduino, которые доступны для использования, можно без особых усилий создать свою собственную метеостанцию. Будущий проект может включать беспроводную передачу таких погодных данных с одной платы микроконтроллера на другую для мониторинга удаленной среды или централизованного управления автономной системой. Тем не менее, подобные проекты отлично подходят для ознакомления с электроникой абсолютного новичка и могут быть ориентированы на более опытных пользователей. Производитель PCBA которые, возможно, захотят изучить другие аспекты электроники. 

Блог о проектах DIY электроники

Таймер прерывания Arduino UNO

Таймер прерывания Arduino UNO Таймер - это функция, встроенная в каждый микроконтроллер и выполняющая определенные функции, связанные с течением времени. Функция таймера

Читать далее "
Аппаратные характеристики ESP32: вывод, преобразователь и процессор

Аппаратные характеристики ESP32: вывод, преобразователь и процессор ESP32, разработанный компанией Shanghai Espressif Systems, - это недорогой микроконтроллер с низким энергопотреблением, широко используемый в Интернет

Читать далее "
Лучшие программы для проектирования макетов печатных плат: Какая программа лучше для Вас

Лучшие программы для проектирования макетов печатных плат: Какая программа лучше для Вас В Китае есть поговорка: "Наточи топор, прежде чем рубить дрова". Это означает, что

Читать далее "
Рекомендации по печатной плате клавиатуры для горячей замены

Рекомендации по печатной плате с горячей заменой клавиатуры Традиционные платы PCBA полагаются на процесс пайки для надежного крепления компонентов к поверхности печатной платы. В то время как

Читать далее "