Андрей Смирнов
Время чтения: ~11 мин.
Просмотров: 25

Беспроводной датчик температуры и влажности на ESP8266 В 

b678bb.jpg

  • Цена: 2.6USD (18,3RMB)

Здравствуйте! Данный обзор не претендует ни на что кроме Вашего внимания, это взгляд непрофессионала и попытка заинтересовать новых людей данной темой. Копаясь в интернете, я пытался найти самый простой и доступный способ, систематизировать информацию из множества источников. Возможно многие со мной не согласятся, что данный способ прост и доступен, я только за — пишите в комментариях Ваши идеи, делитесь))) Опять же, сервис Народного Мониторинга выбран как пример, бесплатно доступны многие другие. Итак, если Вам интересно, добро пожаловать под cut… Мной среди прочего были заказаны сам модуль и простой USB/UART конвертер на CH340G за 30 центов адаптированный под ESP-01. Флюс традиционно не отмыт, но грех жаловаться за 20 рублей. 1964a8.jpgсобственно сама микросхема6acdae.jpg Подкупило что ничего не нужно мудрить с проводами, как я думал, воткнул 8266 в конвертер и прошивай. Но как водится, при первом запуске что-то пошло не так. Что именно не так, я выяснил довольно быстро, великая штука интернет. Нужно при заливке прошивки замкнуть ноги GND и IO0, была выполнена лёгкая модернизация. Сразу говорю, идея подсмотрена, автору огромное спасибо за труды! В обычном режиме провод не мешается, при прошивке замыкает нужные контакты. Рассмотрим тандем поближе. Все достаточно компактное и лёгкое, на обратной стороне ESP-01 нанесена маркировка выводов. На плате wifi модуля расположились микросхема ESP8266EX и 8Мбит flash памяти P25Q80H

флюс Модуль датчика DHT11 собран достаточно небрежно, кривовато. Да и сам 11й не фонтан, думаю потом перепаяю на 22й.
Достаточно лирики, переходим к практике. 1) На сайте проскакивала ссылка на интересный проект wifi-iot.com/p/esp8266/, по ссылке можно оценить масштаб возможностей. Конфигурируем под себя и скачиваем прошивку. 2) Замыкаем перемычку, запускаем ESP8266 FLASH DOWNLOAD TOOL и прошиваем модуль 3) При первой загрузке в режиме safe mode выставляем параметры точки доступа, датчика и Народного Мониторинга
4) Наслаждаемся Вместо послесловия. Буквально только что нашел похожий модуль на датчике DS18B20, без влажности, но куда более точный В планах выгнать эту сборку на улицу, пусть там работает на литии. А пока питается от USB через конвертер PS Просьба сильно не пинать, пишите в личку по грамматике и стилистике или в комментарии Ваши варианты. Спасибо за внимание! UPD мне напомнили что wifi модуль будет вносить искажения в работу датчика температуры. На улице при температурах ниже 10 градусов при вертикальном расположении эффект я думаю будет не столь значителен. Дома разница около 1 градуса, ESP в полуспящем режиме почти не греется.

Содержание

</span>

  • Технические характеристики модуля
  • Подключение 
  • Пример использования
  • Часто задаваемые вопросы FAQ

Wi-Fi модуль ESP-01 – самый популярный модуль серии ESP8266. Общение с компьютером или микроконтроллером осуществляется с через UART с помощью набора AT-команд. Кроме того, модуль можно использовать как самостоятельное устройство, для этого необходимо в него загрузить свою прошивку. Программировать и загружать прошивки можно через Arduino IDE версии выше 1.6.5. Для прошивки модуля понадобится переходник UART-USB. Модуль ESP-01 может получить широкое распространение для использования в устройствах IoT (Интернет вещей).

Технические характеристики модуля

  • Wi-Fi 802.11 b/g/n
  • Режимы WiFi: клиент, точка доступа
  • Выходная мощность — 19,5 дБ
  • Напряжение питания — 1.8 -3.6 В
  • Ток потребления — 220 мА
  • Портов GPIO : 4
  • Тактовая частота процессора — 80 МГц
  • Объём памяти для кода
  • Оперативная память — 96 КБ
  • Размеры — 13×21 мм

Подключение

Рассмотрим режим AT-команд. Для этого подключим модуль к компьютеру через переходник USB-UART. Назначение выводов модуля (см. рисунок 1):

  • VCC — +3.3 В
  • GND — земля
  • RX, TX — выводы UART
  • ВыводCH_PD  — Chip enable
  • GPIO0, GPIO2 — цифровые контакты

Модулю требуется внешнее питание   3.3 В.

Рисунок 1. Назначение контактов модуля ESP-01

Схема подключения для общения с модулем в режиме AT-команд (рисунок 2): Рисунок 2. Схема подключения модуля ESP-01 к компьютеру по последовательному порту

Рисунок 3. Схема в сборе

Для отправки команд AT-команд в ОС Mac OS X можно использовать программу CoolTerm, в операционной системе Windows программу Termite. Узнать скорость COM-порта для соединения с модулем можно только экспериментально, для разных прошивок она может быть разной. Для моего модуля скорость оказалась равной 9600 бод. Кроме того установить обмен удалось только после отключения и повторного подключения к питанию вывода  CH_PD. После подключения набираем в терминале  AT и должны получить в ответ от модуля OK. Команда AT+GMR выдает номер версии прошивки модуля, команда AT+RST — перезагружает модуль (см. рис. 4). Список основных AT-команд можно посмотреть в этом документе (ESP8266ATCommandsSet.pdf).

Рисунок 4. Отправка AT-команд в модуль из программы Termite

Если режим AT команд для вас не удобен, плату можно настроить с помощью программы AppStack  ESP8266 Config, скачать которую  можно по ссылке http://esp8266.ru/download/esp8266-utils/ESP8266_Config.zip. Внешний вид программы представлен на рисунке 5. Настройка модуля осуществляется с помощью графического интерфейса, при этом выполнение команд можно видеть в мониторе программы (см. рис. 6). В мониторе также можно послать AT-команды из командной строки.

Рисунок 5. Программа AppStack ESP8266 Config

Рисунок 6. Serial monitor программы AppStack ESP8266 Config

Есть два варианта использования данного модуля:

  • в связке с микроконтроллером (например Arduino), который будет управлять модулем по UART;
  • написание собственной прошивки для использования ESP8266 в качестве самостоятельного устройства.

 

Пример использования

Рассмотрим пример подключения к модулю ESP-01 датчика влажности и температуры DHT11 и отправки данных в облачный сервис ThingSpeak (https://thingspeak.com/). Нам понадобятся следующие детали:

  • модуль ESP-01
  • макетная плата
  • датчик влажности и температуры DHT11
  • резистор 10 кОм
  • соединительные провода
  • блок питания 3 — 3.6В

Сначала подключим датчик DS18B20 к модулю ESP-01. DS18B20 – цифровой датчик температуры, работающий по однопроводному интерфейсу 1-Wire. Схема подключения датчика DS18B20 к модулю показана на рис. 7.

Рисунок 7. Схема подключения датчика DHT11 к модулю ESP-01.

Затем необходимо завести профиль в сервисе ThingSpeak. В сервисе есть инструкции для отправки данных в сервис и получения данных из сервиса.

Рисунок 8. Схема в сборе.

Программу будем писать в среде Arduino IDE для ESP8266. Будем использовать библиотеки ESP8266WiFi.h (встроенную) и OneWire.h. Загрузим на плату Arduino скетч из листинга 1 – получение данных с датчика температуры и отправка данных в сервис ThingSpeak. Необходимо внести свои данные для WiFi точки доступа для модуля ESP-01:

  • const char *ssid;
  • const char *password;

а также параметр privateKey для вашего приложения в сервисе ThingSpeak. Листинг 1

// 3d-diy.ru  // Подключаем библиотеку для работы с esp8266  #include    // Подключаем библиотеку DHT для работы с DHT11   #include <dht>   // пподключения контакта DATA  #define DHTPIN 4  // датчик DHT11  #define DHTTYPE DHT11    // создание экземпляра объекта DHT  DHT dht(DHTPIN, DHTTYPE);    // ssid WiFi сети подключения  const char ssid = "********";   // Пароль  WiFi сети подключения   const char password = "******";   // Сервер ThingSpeak  const char* host = "184.106.153.149";   // API KEY вашего приложения ThingSpeak  const char* privateKey = "****************";   // переменные для хранения температуры и влажности  float temp;   float humidity;   // переменная для интервала измерений  unsigned long millis_int1=0;    void setup() {    // запуск последовательного порта     Serial.begin(115200);     delay(10);    Serial.print("Connect to WiFi");     Serial.println(ssid);    // Соединяемся по WiFi    WiFi.begin(ssid, password);        while (WiFi.status() != WL_CONNECTED) {      delay(500);    }    Serial.println("WiFi connected");     // запуск dht    dht.begin();   }      void loop() {  // ждем интервал 10 минут  if(milis()-millis_int1>=10*60000) {    Serial.print("connect to ThingSpeak");    Serial.println(host);        // Используем WiFi клиент     WiFiClient client;  if (!client.connect(host, 80)) {      Serial.println("connection failed");          return;    }    // получить данные температуры    temp = get_data_temperature();    humidity = get_data_humidity();         // Создаем URL с запросом для сервера    String url = "/update?key=";    url += privateKey;    url += "&temp=";     url += temp;    url += "&humidity=";     url += humidity;      // Отправляем запрос на сервер    client.print(String("GET ") + url + " HTTP/1.1rn" + "Host: " + host + "rn" + "Connection: closernrn");    delay(10);        // ответ сервера ThingSpeak    while(client.available()){      String req = client.readStringUntil('r');      Serial.print(req);    }   }  }</dht>

Теперь в сервисе ThingSpeak мы можем смотреть график показаний нашего датчика температуры DHT11 (рисунок 9).

Рисунок 9. График показаний датчика температуры DS18B20 в сервисе ThingSpeak.

Часто задаваемые вопросы FAQ

     1.  Модуль не отвечает на AT-команды

  • Проверьте правильность подключения модуля;
  • Проверьте правильность подключения контактов Rx,Tx к переходнику UART-USB ;
  • Проверьте подключение контакта CH_PD к 3.3 В;
  • Подберите экспериментально скорость обмена по последовательному порту.

     2. Модуль ESP-01 не получает данные температуры от датчика DHT11

  • Проверьте правильность подключения датчика DHT11 к модулю.

     3. Не передаются данные в сервис ThingSpeak

  • Проверьте подключение модуля к точке доступа WiFi;
  • Проверьте подключение точки доступа WiFi к сети интернет;
  • Проверьте правильность запроса к сервису ThingSpeak.

в Инженериум DIY1 год назад

Цель этого проекта состоит в том, чтобы собрать устройство мониторинга температуры и влажности, которое транслирует температуру и влажность на удаленный сервер посредством wi-fi. Нам понадобятся Ардуино Уно (или аналог), датчик температуры и влажности DHT11, wi-fi модуль ESP8266 и сервис В«ThingSpeak.comВ» для этого проекта. Это — замечательный проект, чтобы опробовать ESP8266 для передачи данных, так что начнем!

Шаг 1: Приготовьте всё необходимое

Для этого проекта использован Ардуино Уно, но подойдёт любая плата Ардуино или аналоги.

-Ардуино

-USB — кабель типа А — B и 5-вольтовый источник питания USB

-Беспроводной приемопередатчик ESP8266.

-Датчик температуры/влажности DHT11, хотя DHT22 тоже подойдет

-Макетная плата (не требующая пайки)

-Провода для беспаечной макетной платы

-Резисторы

Шаг 2: Создайте канал ThingSpeak

Чтобы фиксировать температуру и влажность онлайн, у Вас должны быть веб-сайт или веб-сервис, которые могут принимать данные метода GET http. В этом уроке я рекомендую ThingSpeak, но есть и другие службы, так что Вы вполне можете использовать что-то еще, чтобы собирать и хранить Ваши данные.

Если Вы будете использовать ThingSpeak, то Вы должны будете создать канал с двумя полями, один для температуры и один для влажности. На сайте есть много опций для отображения данных в графиках, так что можете изучить их самостоятельно и выбрать те, что Вам больше всего понравятся. Я остановился на двух простых линейных диаграммах с 10 точками переменных, чтобы сгладить случайные колебания данных . ThingSpeak даст ключ для Вашего канала, который Вы должны будете вписать в код, после чего Ваш каналсможет принимать данные.

Шаг 3: Подключение

На картинке Вы можете увидеть переднюю часть ESP8266 с 8 маркированными контактами. ESP8266 питается от 3.3 В, так что удостоверьтесь, что Вы соединяете контакт Vcc с 3.3-вольтовым контактом на контроллере. Это также означает, что Вы должны будете использовать преобразователь логических уровней или собрать делитель напряжения для последовательного соединения от платы контроллера до ESP8266, чтобы ничего не сжечь. Если Вы не захотите покупать преобразователь логических уровней, тогда, то Вы должны будете собрать делитель напряжения, задействовав два резистора.

Я взял резистор на 220 Ом и резистор на 470 Ом, которые приблизительно дадут 3.3 В. Если приемопередатчик требует 3.3 В, а плата контроллера может работать при таком напряжении, нет никакой потребности делать что-либо с соединением приемопередатчик — контроллер.

Точность датчика составляет только +/-5% влажности и 2В°C, так что это не самый точный датчик. Он подходит только для температуры выше нуля. DHT22 более точен и умеет в отрицательные температуры, поэтому, если это важно для Вас, выбирайте его. Оба датчика работают с напряжениями 3.3 — 5В. Сигнальный контакт должен быть подключен через токоограничивающий резистор, номиналом 4.7 кОм.

Схема отображает как соединить провода. Для простоты использования все соединения с 5 В или 3.3 В красные, и все соединения с общим проводом синие. Подключаем провода следующим образом:

С контроллера на приемопередатчик

— RXD | TXD

— TXD | RXD (через делитель напряжения)

— 3.3 В | Vcc, CH_PD, сброс

— GND | GND

С контроллера на датчик температуры/влажности

— 5 В | Vcc

— GND | GND

— D7 | Сигнал (соединение с Vcc через нагрузочный резистор)

Шаг 4: Программирование

Прежде чем использовать код, Вы должны будете загрузить и установить библиотеку DHT от Adafruit. У них есть описание того, как установить, пользоваться их библиотекой и заходить на их хранилище GitHub. Их библиотека имеет разные опции (такие как теплосчетчик — их мы не будем разбирать здесь), но Вы можете самостоятельно выбрать их и использовать, если Вам понадобится!

Бод для ESP8266 установлен в начале .ino файла. Версия ESP8266, которая использовалась в сборке, поддерживает значения 9600 или 115200 бод. Обе из микросхем, которые я заказывал, установлены в 115200 бодов. Но если у вас возникли ошибки, смените бод на 9600 в качестве первого шага в отладке.

Есть несколько мест в коде со значениями в скобках ‘<‘ ‘>’. Это- те места, где Вам нужно будет вставить свои собственные значения, чтобы завершить проект. Это включает имя и пароль для Вашей сети WiFi и ключ для Вашего канала ThingSpeak. Есть код, чтобы использовать красно-зеленый светодиод для отладки и контроля состояния системы, но это не отображено в монтажных схемах. Если Вы хотите знать, верно ли работает работает система, Вы можете добавить пару светодиодов.

Заключительная ремарка, которая может сбить с толку — нельзя загрузить скетч в ардуино, к которому подключен модуль беспроводной связи. Скетч не загрузится, если они будут соединены, так что Вам нужно сначала отсоединить информационный провод — либо с передатчика, либо с контроллера.

Скачать скетч для Arduino IDE — ссылка

Шаг 5: Поехали!

Поздравляю! Вы создали свой персональный беспроводной регистратор температуры и влажности! Вы великолепны! Можно оставить его в подвале и контроллировать влажность и температуру посредством проветривания/обогрева. Можно собрать его на печатной плате для удобства монтажа и использования на месте. Я надеюсь, что вам был полезен этот урок и Вы весело провели время! Следующим шагом можно попробовать запрограммировать ESP8266 непосредственно напрямую, в обход контроллера.

Статья перевод с сайта ingenerium.net

Оригинал статьи был на instructables.com (уже лень искать ссылку на саму статью)

Используемые источники:

  • https://mysku.ru/blog/taobao/68688.html
  • https://3d-diy.ru/wiki/arduino-moduli/wi-fi-modul-esp-01/
  • story/besprovodnoy_datchik_temperaturyi_i_vlazhnosti_na_esp8266_5859997

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации