NodeMCU + Blynk. Часть 1.

Всем привет!

Как-то выпросил я у коллеги по работе для изучения отладочную плату NodeMCU. NodeMCU — эта отладочная плата на основе Wi-Fi модуля ESP8266 от компании Espressif Systems. Данная плата предназначена для управления различными электронными устройствами в локальной сети, либо через интернет, по средствам Wi-Fi, путем передачи этим устройствам различных команд управления. Разрабатывалась данная плата в первую очередь для интернета вещей — IoT, поэтому активно используется всеми DIY-щиками для создания системы — Умный дом.

Плата NodeMCU  выглядит следующим образом:

Распиновка данной платы:

В таблице ниже приведено соответствие GPIO платы NodeMCU и чипа ESP8266:

*D0(GPIO16) может быть использован только как GPIO чтение/запись. Нет поддержки прерываний. Нет PWM/I2C/OW.

На плате NodeMCU мы с вами можем видеть разъем micro-USB, через который и «заливаются» прошивки, или как их называют ардуинщики — скетчи. При подключении платы к ПК в системе появляется виртуальный COM порт, который и нужно выбирать в настройках IDE для «заливки» скетча.

Плата достаточно компактная, размеры моей платы 49х26 мм, что с легкостью позволяет использовать ее в различных проектах. Так же производитель позаботился о любителях BreadBoard, поэтому оснастил плату двумя гребенками контактов со стандартным для BreadBoard шагом. Половину пространства всей платы занимает чип ESP8266. Данный чип оснащен микропроцессором с тактовой частотой 80 МГц, который запросто можно разогнать до 160 МГц. На борту NodeMCU аж целых 4 Мб флеш-памяти.

Плата NodeMCU обладает 11 портами ввода-вывода общего назначения (GPIO). Часть портов имеет дополнительные функции:

  • D9, D10 — UART
  • D1, D2  — I²C/TWI
  • D5 — D8 — SPI
  • D1 — D10 — выходы с ШИМ (PWM)
  • A0 — аналоговый вход с АЦП

Перед подключением платы к ПК необходимо установить драйвер для преобразователя USB-UART на CP2102 от SILABS, именно он установлен на плате NodeMCU. Если у Вас установлена Windows 10, то драйвера уже интегрированы в систему.

После установки драйвера, займемся настройкой Arduino IDE, именно в ней мы и будем писать свой скетч. Заходим в настройки Arduino IDE, и в графе «Дополнительные ссылки для Менеджера плат» прописываем вот эту ссылку http://arduino.esp8266.com/stable/package_esp8266com_index.json

 Затем проходим в раздел «Инструменты->Плата->Менеджер плат» где выбираем ESP8266. Скачиваем и устанавливаем последнюю версию.

 Далее заходим в раздел «Инструменты->Плата» и выбираем плату NodeMCU 1.0.

Затем снова проходим по тому же пути, и указываем номер виртуального COM порта, под которым у Вас в системе определился переходник USB-UART на CP2102, в нашем случае это COM8, при этом в разделе «Upload Speed» устанавливаем скорость 115200.

Так же, для полноценной работы платы NodeMCU с приложением Blynk, нам нужно будет скачать некоторые библиотеки. Заходим в раздел «Скетч -> Подключить библиотеку -> Управлять библиотеками».

Откроется Менеджер библиотек:

В Менеджере библиотек необходимо найти и установить следующие библиотеки:

  • Blynk
  • OneWire
  • DallasTemperature

Отвлечемся немного от Arduino IDE и приступим к настройке приложения Blynk. Для начала идем в App Store или в Play Market и скачиваем приложение Blynk. У меня оно уже установлено, поэтому вместо «Установить» у меня отображается «Открыть», у Вас будет «Установить».

После установки Blynk нужно будет зарегистрироваться, для этого Вам понадобиться ввести адрес электронной почты и пароль. Позже на Ваш электронный адрес будет отправлен так называемый Auth Token. Он необходим, чтобы связать между собой нашу плату NodeMCU и приложение Blynk.

После этого в приложении Blynk необходимо создать проект, задать ему имя и выбрать тип соединения Wi-Fi:

После создания проекта Вам будет отправлен Auth Token.

Само приложение Blynk условно бесплатное. В нем имеется куча всего интересного, например: кнопки, слайдеры, джойстики, таймеры, графики, счетчики, светодиоды, LCD и много всего еще, устанешь перечислять 🙂 Но все эти элементы управления покупаются за так называемую — энергию. Изначально каждому новому пользователю начисляется по 2000 единиц энергии. Когда бесплатные единицы энергии закончатся, дополнительные единицы энергии придется покупать за реальные деньги. Ниже приведены доступные элементы управления в приложении Blynk:

Чтобы наша связка NodeMCU+Blynk заработала, необходимо, используя Arduino IDE, написать простенький скетч, в котором мы будем просто включать и выключать светодиод на плате NodeMCU, и измерять температуру при помощи цифрового датчика температуры DS18B20, подключенного к порту D2 платы NodeMCU. На фото ниже показано подключение датчика DS18B20 к порту D2 платы NodeMCU:

В приложении Blynk мы создадим кнопку, воспользовавшись таким инструментом как Button, а также используя такие инструменты приложения как индикаторы — Gauge, и графики — SuperChart, будем выводить показания температуры на индикатор, а также будем строить график изменения температуры.

Напишем скетч в Arduino IDE:

#define BLYNK_PRINT Serial

#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <OneWire.h>
#include <DallasTemperature.h>

// Вы должны получить Auth Token в приложении Blynk.

char auth[] = "*************************"; // Ваш Auth Token


char ssid[] = "**************"; // Имя вашей WiFi сети
char pass[] = "*********";   // Пароль вашей WiFi сети


// Датчик DS18B20 подключаем к порту D2 чипа ESP8266
#define ONE_WIRE_BUS D2

// Настройка сети OneWire для работы с OneWire устройствами
OneWire oneWire(ONE_WIRE_BUS);

// OneWire устройство - DS18B20
DallasTemperature sensors(&oneWire);

float tempSensor1; // Переменная в которй будем хранить значение температуры

// Введите ID датчика температуры DS18B20
uint8_t sensor1[8] = { 0x28, 0xFF, 0xD0, 0xF7, 0xC1, 0x17, 0x05, 0xA4 };

void setup()
{

  // Настраиваем и запускаем COM порт
  Serial.begin(115200);
  
  // Подключаемся к сервису Blynk
  Blynk.begin(auth, ssid, pass);

// Запуск библиотеки
  sensors.begin();

}

void loop()
{
  Blynk.run();
  sensors.requestTemperatures();
  tempSensor1 = sensors.getTempC(sensor1);
  Blynk.virtualWrite(10, tempSensor1); //вывод данных на виртуальный пин V10
   
  //Отправляем данные о температуре в COM порт
  Serial.print("Temp: ");
  Serial.print(tempSensor1);
  Serial.println(" oC"); 
}

Создадим проект в приложении Blynk, добавив на экран кнопку, индикатор и график:

При нажатии кнопки ON зажигается светодиод на плате NodeMCU, при нажатии на кнопку OFF светодиод гаснет. На индикаторе отображается текущая температура, а на графике отображается изменение текущей температуры. Параллельно будем выводить данные о температуре в COM порт, для этого в Arduino IDE запустим порт-монитор.

На этом пока все. Всем пока!

Продолжение следует…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.