ESP8266:Примеры/Считывание данных с датчика температуры и влажности DHT11/DHT22 подключенного к модулю ESP-01

Материал из Онлайн справочника
Перейти к: навигация, поиск

Проверка/Оформление/Редактирование: Мякишев Е.А.


Ambox content.png Черновик


Считывание данных с датчика температуры и влажности DHT11 подключенного к модулю ESP-01

В этом примере демонстрируется cчитывание данных с датчика температуры и влажности DHT11 подключенного к модулю ESP-01.

Для выполнения этого примера вам необходимо:

  • Установить аддон ESP8266 для IDE Arduino;
  • Установить библиотеки: ESP8266WiFi, aREST, DHT и Adafruit sensor;
  • Собрать схему и подключить конвертер USB FTDI к компьютеру, но не подключайте пока перемычку идущую на вывод VCC модуля ESP-01;
  • Вставить код программы в Arduino IDE;
  • Выбрать в меню Иструменты->Порт: соответствующий COM-порт;
  • Выбрать в меню "Инструменты->Плата" плату "Generic ESP8266 Module";
  • Нажать кнопку "Загрузка";
  • Подключить перемычку идущую на вывод VCC модуля ESP-01. Т.к. вывод GPIO0 подключен к земле, модуль при включении перейдет в режим загрузки;
  • Дождаться загрузки;
  • Открыть монитор порта и наблюдать за успешным подключением модуля к точке доступа, скопировать IP-адрес;
  • Открыть браузер и перейти по следующему адресу(без "<>") и получить данные температуры: <IP-адрес модуля>/temperature
  • Перейти по следующему адресу(без "<>") и получить данные влажности: <IP-адрес модуля>/humidity
  • Примечание: Если после загрузки скетча и открытия монитора порта, модуль не может подключиться и вы видите много "." просто отключите и подключите обратно перемычку идущую на вывод VCC модуля ESP-01.
  • Примечание: Если вы перезагрузили модуль и обнаружили в мониторе порта иероглифы, а сам модуль отказывается подключаться, проверьте отключили ли вы перемычку идущую от GPIO0 к земле(желательно подключить GPIO0 через 10кОм резистор к 3.3В). Отключите перемычку и снова перезагрузите модуль.

Необходимые компоненты

Схема

Esp-01 dht11 rest api 1.png


Pinout ESP8266.jpg

Код

  1. #include "ESP8266WiFi.h"                                         // Импортируем библиотеку ESP8266WiFi
  2. #include <aREST.h>                                               // Импортируем библиотеку aREST
  3. #include "DHT.h"                                                 // Импортируем библиотеку DHT
  4.  
  5. #define DHTPIN  2                                                // Номер вывода GPIO, в данном случае используем GPIO2
  6. #define DHTTYPE DHT11                                            // Тип используемого датчика
  7.  
  8. aREST rest = aREST();                                            // Создаем объект aREST
  9.  
  10. DHT dht(DHTPIN, DHTTYPE);                                        // Создаем объект датчика
  11.  
  12. const char* ssid     = "название точки";                         // Укажите здесь в кавычках название вашей точки доступа
  13. const char* password = "пароль точки";                           // Укажите здесь в кавычках пароль вашей точки доступа
  14.  
  15. #define LISTEN_PORT           80                                 // Номер входящего порта
  16.  
  17. WiFiServer server(LISTEN_PORT);                                  // Создаем сервер
  18.  
  19. float temperature;                                               // Переменная для хранения данных температуры
  20. float humidity;                                                  // Переменная для хранения данных влажности
  21.  
  22. void setup(void)
  23. {
  24.   Serial.begin(115200);                                          // Инициализируем последовательный порт
  25.  
  26.   dht.begin();                                                   // Инициализируем последовательный порт
  27.  
  28.   rest.variable("temperature", &temperature);                    // Подключаем переменную температуры к REST API для удаленного доступа
  29.   rest.variable("humidity", &humidity);                          // Подключаем переменную влажности REST API для удаленного доступа
  30.  
  31.   rest.set_id("1");                                              // Задаем модулю ID
  32.   rest.set_name("esp8266");                                      // Задаем модулю имя
  33.  
  34.   // Подключаемся к точке доступа
  35.   WiFi.begin(ssid, password);
  36.   while (WiFi.status() != WL_CONNECTED) {
  37.     delay(500);
  38.     Serial.print(".");
  39.   }
  40.  
  41.   Serial.println("");
  42.   Serial.println("WiFi connected");
  43.  
  44.   server.begin();                                                // Запускаем сервер
  45.   Serial.println("Server started");
  46.  
  47.   Serial.println(WiFi.localIP());                                // Выводим в монитор порта IP адрес сервера
  48.  
  49. }
  50.  
  51. void loop() {
  52.   delay(2000);                                                   // задержка в 2 секунды между измерениями
  53.  
  54.   humidity = dht.readHumidity();                                 // Считываем данные влажности
  55.   temperature = dht.readTemperature();                           // Считываем данные температуры
  56.  
  57.   // Обработка внешних запросов REST
  58.   WiFiClient client = server.available();
  59.   if (!client) {
  60.     return;
  61.   }
  62.   while (!client.available()) {
  63.     delay(1);
  64.   }
  65.   rest.handle(client);
  66.  
  67. }

См.также

Внешние ссылки