Используемое оборудование:
1) Плата nodemcu на базе микросхемы ESP8266
2) Датчик температуры и влажности DHT11
Установка Arduino IDE
Для работы с ESP8266 первым делом необходимо установить среду разработки Arduino IDE. Она свободно распространяется и проблем с ее установкой возникнуть не должно. На данный момент актуальными являются версии Arduino IDE 2.0.1 и Arduino IDE 1.8.19.
После установки необходимо произвести настройки Arduino IDE для работы с ESP8266
- Запускаем Arduino IDE, заходим Файл | Настройки.
- В поле Дополнительные ссылки для Менеджера плат вводим:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
- Заходим в Инструменты | Плата | Менеджер плат и устанавливаем платформу ESP8266
Подключение к сети WiFi
С помощью USB кабеля подключаем нашу плату ESP8266 к ПК. В диспетчере устройств плата должна определиться примерно так:
В Arduino IDEпереходим в Инструменты | Плата и выбираем Generic ESP8266 Module. В пункте Инструменты | Порт указываем правильный номер последовательного порта. В нашем примере это COM4.
Откроем окно терминала (Монитор порта)
Устанавливаем скорость 115200.
Напишем короткую программу для подключения WiFi сети
// импортируем библиотеку поддержки ESP8266
#include <ESP8266WiFi.h>
//Параметры сети WiFi
const char* ssid = "имя вашей сети";
const char* password = "пароль от вашей сети";
void setup() {
// Инициализация порта:
Serial.begin(115200);
// Инициализация WiFi:
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
//Вывод IP платы в терминал
Serial.println(WiFi.localIP());
}
void loop() {
}
Загружаем нашу программу в Ардуино. (Кнопка «загрузить»)
Перед загрузкой открываем мониторинг порта, где после загрузки появится следующее
WiFi connected
И IP устройства в сети
Из этого следует, что мы подключились к сети. Можно двигаться дальше
Подключение датчика температуры и влажности
Используем датчик DHT11
«+» датчика DHT11 соединяем с выводом питания «3V3», «-» с «GND», а «OUT» с одним из входов GPIO. В данном случае будем использовать D1 или GPIO 5
После подключения перейдем в Arduino IDE и подключим библиотеку для работы с датчиком DHT11. Скетч | Подключить библиотеку | Управлять библиотеками. В окне Менеджера библиотек ищем DHT11 и устанавливаем «DHT sensor library».
Теперь мы готовы написать программу для получения данных от датчика температуры и влажности. Точнее мы просто дополним первую программу. Изменения выделены жирным
// импортируем библиотеку поддержки ESP8266
#include <ESP8266WiFi.h>
#include "DHT.h"
#define DHTPIN 5
#define DHTTYPE DHT11
//Параметры сети WiFi
const char* ssid = "имя вашей сети";
const char* password = "пароль от вашей сети";
float temperature;
float humidity;
//объявление объекта DHT
DHT dht (DHTPIN, DHTTYPE);
void setup() {
// Инициализация порта:
Serial.begin(115200);
dht.begin();
// Инициализация WiFi:
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
//Вывод IP платы в терминал
Serial.println(WiFi.localIP());
}
void loop() {
delay(500);
// put your main code here, to run repeatedly:
humidity = dht.readHumidity();
temperature = dht.readTemperature();
if (isnan(humidity) || isnan(temperature)){
Serial.println("Error");
return;
}
Serial.print("Влажность: ");
Serial.print(humidity);
Serial.println(" %\t ");
Serial.print("Температура: ");
Serial.print(temperature);
Serial.println(" *С ");
}
После загрузки это программы в мониторинге порта мы получим
Каждые полсекунды будем получать данные о температуре и влажности в помещении. Для эксперимента можно рукой закрыть датчик и убедиться, что температура и влажность начнут расти.
Использование Blynk
Самый простой способ передать полученные данные о температуре и влажности на наш смартфон в онлайн режиме – это использование библиотеки Blynk. Для начала установим Blynk на смартфон. В сегодняшних реалиях скачивать придется через браузер, рекомендуем сайт 4PDA.
Интерфейс программы весьма прост и понятен.
Создаем новый проект. Выбираем ESP8266 и Wi-Fi. В приложении появится Auth Token, который необходимо скопировать или отправить на почту. Он потребуется для связи приложения и программы.
Дополним нашу программу для связи ее с Blynk. Сначала подключим библиотеку Скетч | Подключить библиотеку | Управлять библиотеками. В окне Менеджера библиотек ищем blynk и устанавливаем.
Сама программа изменится так:
// импортируем библиотеку поддержки ESP8266
#include <ESP8266WiFi.h>
#include "DHT.h"
#include <BlynkSimpleEsp8266.h>
#define DHTPIN 5
#define DHTTYPE DHT11
#define BLYNK_PRINT Serial
char auth[] = "Ваш токен из Blynk";
//Параметры сети WiFi
const char* ssid = "имя вашей сети";
const char* password = "пароль от вашей сети";
float temperature;
float humidity;
//объявление объекта DHT
DHT dht (DHTPIN, DHTTYPE);
void setup() {
// Инициализация порта:
Serial.begin(115200);
dht.begin();
Blynk.begin(auth, ssid, password);
// Инициализация WiFi:
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
//Вывод IP платы в терминал
Serial.println(WiFi.localIP());
}
void loop() {
delay(500);
// put your main code here, to run repeatedly:
humidity = dht.readHumidity();
temperature = dht.readTemperature();
if (isnan(humidity) || isnan(temperature)){
Serial.println("Error");
return;
}
Serial.print("Влажность: ");
Serial.print(humidity);
Serial.println(" %\t ");
Serial.print("Температура: ");
Serial.print(temperature);
Serial.println(" *С ");
Blynk.run();
Blynk.virtualWrite(V2, humidity);
Blynk.virtualWrite(V3, temperature);
}
Обращаем внимание, что для вывода температуры используем виртуальный выход V3, а для влажности V2. Это нужно для привязки в blynk. А также не забудьте в поле char auth[] = "Ваш токен из Blynk" ввести свой токен полученный в приложении Blynk.
В приложение производим следующие настройки добавляем в проект 2 формы Gauge.
В строке Input выбираем V3 для отображения температуры и вводим ограничение до 70 градусов, а для влажности в Input выбираем V2. После добавления этих элементов. Включаем нашу ESP8266, в мониторинге порта видим приходящие данные от датчика. После этого в приложении нажимаем на треугольник в правом верхнем углу
Данные должны отобразится на экране вашего смартфона
Все задача выполнена. Дальше можно поиграться с другими формами в Blynk.
Мы изучили основы Arduino IDE. Подключились к Wi-Fi сети, получили данные от датчика температуры и влажности, а также передали их на смартфон. На сегодня все!