Найти тему
Квазартек

Интернет вещей. ESP8266. Подключение к WiFi. Измерение температуры и влажности. Blynk. Управление Ардуино с помощью смартфона

Используемое оборудование:

1) Плата nodemcu на базе микросхемы ESP8266

2) Датчик температуры и влажности DHT11

ESP8266
ESP8266

Установка 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

Менеджер плат
Менеджер плат
-3

Подключение к сети WiFi

С помощью USB кабеля подключаем нашу плату ESP8266 к ПК. В диспетчере устройств плата должна определиться примерно так:

-4

В 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() {

}

Загружаем нашу программу в Ардуино. (Кнопка «загрузить»)

-7

Перед загрузкой открываем мониторинг порта, где после загрузки появится следующее

WiFi connected
WiFi connected

WiFi connected

И IP устройства в сети

Из этого следует, что мы подключились к сети. Можно двигаться дальше

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

Используем датчик DHT11

DHT11. Температура и влажность
DHT11. Температура и влажность
ESP8266
ESP8266
Схема контактов ESP8266
Схема контактов ESP8266

«+» датчика 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(" *С ");

}

После загрузки это программы в мониторинге порта мы получим

-12

Каждые полсекунды будем получать данные о температуре и влажности в помещении. Для эксперимента можно рукой закрыть датчик и убедиться, что температура и влажность начнут расти.

Использование Blynk

Самый простой способ передать полученные данные о температуре и влажности на наш смартфон в онлайн режиме – это использование библиотеки Blynk. Для начала установим Blynk на смартфон. В сегодняшних реалиях скачивать придется через браузер, рекомендуем сайт 4PDA.

Blynk
Blynk

Интерфейс программы весьма прост и понятен.

Создаем новый проект. Выбираем ESP8266 и Wi-Fi. В приложении появится Auth Token, который необходимо скопировать или отправить на почту. Он потребуется для связи приложения и программы.

-14

Дополним нашу программу для связи ее с 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.

-15

В строке Input выбираем V3 для отображения температуры и вводим ограничение до 70 градусов, а для влажности в Input выбираем V2. После добавления этих элементов. Включаем нашу ESP8266, в мониторинге порта видим приходящие данные от датчика. После этого в приложении нажимаем на треугольник в правом верхнем углу

-16

Данные должны отобразится на экране вашего смартфона

-17

Все задача выполнена. Дальше можно поиграться с другими формами в Blynk.

Мы изучили основы Arduino IDE. Подключились к Wi-Fi сети, получили данные от датчика температуры и влажности, а также передали их на смартфон. На сегодня все!