Всем привет!
Как-то выпросил я у коллеги по работе для изучения отладочную плату 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 запустим порт-монитор.
На этом пока все. Всем пока!
Продолжение следует…
[…] прошлый раз мы рассматривали связку NodeMCU + Blynk, сегодня рассмотрим […]