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

Материал из Онлайн справочника
Версия от 23:12, 3 января 2018; Myagkij (обсуждение | вклад) (→‎Код)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску

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


Черновик


Считывание данных с датчика температуры и влажности 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В). Отключите перемычку и снова перезагрузите модуль.

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

Схема


Код

#include "ESP8266WiFi.h"                                         // Подключаем библиотеку ESP8266WiFi
#include <aREST.h>                                               // Подключаем библиотеку aREST
#include "DHT.h"                                                 // Подключаем библиотеку DHT

#define DHTPIN  2                                                // Номер вывода GPIO, в данном случае используем GPIO2 
#define DHTTYPE DHT11                                            // Тип используемого датчика

aREST rest = aREST();                                            // Создаем объект aREST

DHT dht(DHTPIN, DHTTYPE);                                        // Создаем объект датчика
 
const char* ssid     = "название точки";                         // Укажите здесь в кавычках название вашей точки доступа
const char* password = "пароль точки";                           // Укажите здесь в кавычках пароль вашей точки доступа

#define LISTEN_PORT           80                                 // Номер входящего порта

WiFiServer server(LISTEN_PORT);                                  // Создаем сервер

float temperature;                                               // Переменная для хранения данных температуры
float humidity;                                                  // Переменная для хранения данных влажности

void setup(void)
{
  Serial.begin(115200);                                          // Инициализируем последовательный порт

  dht.begin();                                                   // Инициализируем датчик

  rest.variable("temperature", &temperature);                    // Подключаем переменную температуры к REST API для удаленного доступа
  rest.variable("humidity", &humidity);                          // Подключаем переменную влажности REST API для удаленного доступа

  rest.set_id("1");                                              // Задаем модулю ID
  rest.set_name("esp8266");                                      // Задаем модулю имя

  // Подключаемся к точке доступа
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi connected");

  server.begin();                                                // Запускаем сервер 
  Serial.println("Server started");

  Serial.println(WiFi.localIP());                                // Выводим в монитор порта IP адрес сервера

}

void loop() {
  delay(2000);                                                   // задержка в 2 секунды между измерениями

  humidity = dht.readHumidity();                                 // Считываем данные влажности 
  temperature = dht.readTemperature();                           // Считываем данные температуры

  // Обработка внешних запросов REST
  WiFiClient client = server.available();
  if (!client) {
    return;
  }
  while (!client.available()) {
    delay(1);
  }
  rest.handle(client);

}

См.также

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