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

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

Линейка датчиков DHT (DHT11/22) является одной из наиболее часто используемых во многих электронных PCBA проектов, начиная от домашних метеостанций и заканчивая системами автоматизации предприятий, благодаря своей простоте и компактности в качестве датчика температуры/влажности. Хотя более точный и дорогой DHT22 может быть заменен (с некоторыми изменениями в коде), в данном проекте будет использоваться модуль датчика DHT11. Имея базовый 3-контактный интерфейс, датчик DHT11, который будет использоваться в данном проекте, не является отдельной версией 4-контактного датчика, а представляет собой 3-контактный модуль, имеющий встроенный конденсатор и подтягивающий резистор, что устраняет необходимость в дополнительных компонентах при создании данной схемы. Поэтому при сопряжении с платой Arduino модуль датчика DHT11 может быть напрямую подключен к цифровому выводу, который обрабатывает и передает последовательные данные с датчика на микроконтроллер для считывания. В этом проекте данные о температуре и влажности с датчика DHT11 будут отображаться на OLED-дисплее (органический светодиод) размером 0,96″ 128×64 для наглядного считывания. Преимущество использования i2c OLED-дисплея по сравнению с другими типами дисплеев заключается в том, что он требует только 4-проводного подключения к плате Arduino, а благодаря широкому выбору библиотек его можно легко запрограммировать. Заметной особенностью OLED-дисплея является четкость, резкость и визуальное качество текстов, цифр и изображений, которые он может отображать. В целом, это довольно простой проект, который подходит для абсолютных новичков, поскольку для его реализации требуется всего несколько компонентов и некоторые базовые навыки кодирования. Однако для тех, кто более продвинут, этот проект можно улучшить и усовершенствовать, добавив дополнительные функции, такие как беспроводная связь (RF, LoRa, Печатная плата Bluetooth, WiFi и т.д.), данные RTC (часы реального времени), данные дополнительных датчиков (высота над уровнем моря, атмосферное давление, концентрация газов и т.д.) и многие другие функции. Вот компоненты, необходимые для этого проекта:

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

Проводка

В зависимости от вашей платы Arduino, вам может потребоваться или не потребоваться макетная плата для подключения платы. В данном примере используется Arduino Nano, поэтому требуется макетная плата, но если вы используете, например, Arduino Uno, то провода-перемычки можно подключить от компонентов на макетной плате непосредственно к контактам платы. Однако провода от модуля датчика DHT11 и OLED к плате Arduino остаются прежними. Принципиальная схема также приведена ниже.

  • Модуль датчика 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Включить <Adafruit_SSD1306.h> 

 

#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

PCB Surface Finishes

PCB surface treatment is a crucial process in manufacturing and assembly. It is usually applied to the exposed pads and gold fingers to protect them

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

Проект пожарной сигнализации с датчиком пламени Arduino

Проект пожарной сигнализации с датчиком пламени Arduino Этот проект предполагает создание базовой системы пожарной сигнализации с использованием Arduino, сопряженной с датчиком пламени.

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

Проект светодиода со звуковой активацией Arduino - FS PCBA

Проект Arduino "Светодиод со звуковой активацией" - FS PCBA В этом проекте будет построена базовая схема Arduino, использующая в основном модуль двухцветного светодиода (светоизлучающего диода).

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