Перейти к содержанию

Читаем данные с датчиков (DHT11, Blynk, Aimylogic)

Материал из Wiki yaboard

Вступление

В данной статье рассмотрим вариант получения данных с датчиков посредством голосового запроса Алисе. Для примера будем использовать датчик DHT11 подключенный к NodeMCU и добавленный в проект Blynk.
Данная статья будет являться лишь примером получения данных с датчиков с помощью http get запроса. По данному примеру можно будет "пробросить" датчики, возвращающие ответ в различных форматах.

Собираем простейший датчик

В данном примеру будут использованы следующие компоненты:

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

Собираем простейшую схему, как на рис.1.

Рис. 1. Собираем простейшую схему
Внимание! Для работы с nodemcu в Arduino IDE требуется настройка с платой. Пример настройки можно найти здесь: https://robotclass.ru/articles/node-mcu-arduino-ide-setup/. Также потребуется установка библиотек Blynk - скачать можно здесь: http://help.blynk.cc/en/articles/512105-how-to-install-blynk-library-for-arduino-ide.

Подключаем плату к ПК и прошиваем следующей прошивкой:

#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include "DHT.h"

int custT = 0;
int custH = 0;

char auth[] = "Токен_Blynk";
char ssid[] = "Имя_точки_доступа_Wifi";
char pass[] = "Пароль_Wifi";

#define DHTPIN D1 
#define DHTTYPE DHT11 // DHT 11

DHT dht(DHTPIN, DHTTYPE);

void setup()
{
  Serial.begin(9600);
  Blynk.begin(auth, ssid, pass);
  dht.begin();
}

void loop()
{
  Blynk.run();
  int h = dht.readHumidity(); //получаем влажность
  int t = dht.readTemperature(); //получаем температуру
  if (h != custH){	//если показания отличаются от прошлых - отправляем их на виртуальный пин
    Blynk.virtualWrite(V0, h);
    custH = h;
  }
  if (t != custT){	//если показания отличаются от прошлых - отправляем их на виртуальный пин
    Blynk.virtualWrite(V1, t);
    custT = t;
  }
}

Не забываем изменить параметры:
char auth[] = "Токен_Blynk";
char ssid[] = "Имя_точки_доступа_Wifi";
char pass[] = "Пароль_Wifi";