Данный алгоритм актуален на 24.04.2024, операционная система Mac OS.
Программирование модуля ESP8266 для управления встроенным на плате светодиодом, достаточно просто, если правильно использовать следующие шаги установки и настройки.
Весь процесс может занять не более 30минут, в зависимости от скорости интернета, параметров компьютера и времени на подключение модуля к компьютеру.
Мы будем использовать Wi-Fi модуль NodeMCU V3 ESP8266 ESP-12 (CH340):
Для начала работы необходимо скачать и установить приложение Arduino IDE, предназначенное для создания и загрузки программ на Arduino-совместимые платы. Для этого скачаем Arduino IDE с официального сайта arduino.cc:
После установки Arduino IDE необходимо скачать требуемые библиотеки для микроконтроллера ESP8266:
Библиотеки скачаны, теперь можем приступить к прошивке платы, но прежде необходимо установить подключение модуля ESP8266 к порту компьютера.
В данном случае были использованы переходники micro-USB на USB Type-C, так как модуль имеет гнездо подключения с разъемом micro-USB, а компьютер только USB Type-C.
Набор для коммуникации:
Подключение в сборе:
Для взаимодействия с компьютером нужно определить порт (гнездо USB), который можно найти эмпирически, путем подключения-отключения модуля от USB порта компьютера, в моем случае 1410. Затем необходимо подключить плату, в данном случае использовал LOLIN(WEMOS) D1 ESP-WROOM-02
Плата подключена, можно приступить к созданию первого sketch для прошивки модуля кодом управления (моргания) встроенного светодиода на плате.
Для этого в меню Arduino IDE откроем пример file -> examples -> 01.Basics -> Blink
.
Данный sketch выглядит следующим образом, на базе которого можно управлять временем включения и выключения меняя параметр delay
:
Код готов, ESP8266 подключена можно нажимать upload для прошивки микроконтроллера
Дожидаемся результата загрузки:
И смотрим на плату, где светодиод моргает с прерыванием в 1 секунду:
Путем изменения delay
можно перенастроить период включения диода, после чего нужно повторить upload, дождаться окончания перепрошивки модуля и убедиться, что работа диода происходит корректно.
Видео инструкция изменения периода Вкл/Выкл диода доступна по ссылке:
Результат работы модуля с новой прошивкой:
Нам понадобится:
Монтажа ESP8266 на макетной плате:
Прежде чем программировать микроконтроллер, предлагаю подключать светодиод к ESP8266 на примере примитивной схемы. Для этого нам понадобится резистор для понижения тока, так как наш светодиод рассчитан на напряжение макс 2.8в, то для того, чтоб он не перегорел последовательно подключим к нему резистор номиналом в 220 Ом. Для первоначальной проверки работы светодиода давайте подключим его к ноге ESP8266 с выходом 3v на плюс светодиода (длинная ножка), далее к короткой ножке подсоединим резистор, а ногу резистора к ноге микроконтроллера G, в итоге все выглядит так (желтым показана цепочка подключения):
Для управления внешним светодиодом меняем подключение плюса светодиода с ноги ESP8266 3v на ногу D0. И также обновим sketch, в котором поменяем константы в исходном коде ниже, где первым параметром функции pinMode
вместо LED_BUILTIN
устанавливаем адрес D0
.
Также редактируем цикл loop
, где в обоих функциях digitalWrite
меняем имя первого параметра LED_BUILTIN
на D0
Первоначальный код:
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
Преобразованный код:
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(D0, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(D0, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(D0, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
нажимаем upload
И дожидаемся результата загрузки sketch в микроконтроллер.
Поздравляю вы собрали и запрограммировали свое первое устройство.
Если светодиод не заморгал, то, возможно, он сгорел, и мы можем проверить работоспособность данного sketch используя мультиметр.
Перед началом работы со следующим блоком, давайте научимся отправлять и читать информацию в мониторе порта. Монитор порта — это встроенная консоль, которая есть в Arduino IDE. В правом верхнем углу можно увидеть кнопку с лупой, она и открывает нам монитор порта.
Для начала работы с портом нужно открыть новый скетч и запустить монитор порта с помощью блока setup
методом begin
, где в скобках укажем скорость связи с Arduino (115200
), чтобы он открылся при запуске:
void setup() {
Serial.begin(115200);
}
Чтобы отправить информацию в порт, например, "Hello, world", давайте применим метод println
(), и будем выводить данную фразу в консоль с периодичностью 1 секунда с помощью следующего кода:
void setup() {
Serial.begin(115200);
}
void loop() {
Serial.println("Hello World!");
delay(1000);
}
Но, это еще не все, после того как загрузили скетч, открываем порт и выбираем скорость, которую мы указали в методе begin
:
После того, как мы синхронизировали скорости, можем увидеть результат работы скетча в консоли.
На основе данного материала, теперь вы понимаете минимальные основы пользования монитором порта
Основной фишкой микроконтроллера ESP8266 является возможность подключатся и передавать данные в сети Wi-Fi. Давайте пройдем инструкцию по подключению модуля к сети Wi-Fi. Для этого нам понадобится готовый скетч, где потребуется ввести название сети (ssid), к которой нужно подключиться, и пароль к ней. Для работы в сети Wi-Fi надо использовать встроенную библиотеку ESP8266WiFi.h
#include "ESP8266WiFi.h"
// WiFi parameters to be configured
const char* ssid = "xxxx"; // введите имя сети
const char* password = "xxxx"; // введите пароль
void setup(void)
{
Serial.begin(115200);
// Connect to WiFi
WiFi.begin(ssid, password);
}
void loop() {
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print("try to connect WiFi: ");
Serial.println(ssid);
}
Serial.print("WiFi connected to ssid: ");Serial.println(ssid);
// Print the IP address
// Serial.println(WiFi.localIP());
Serial.print("уровень сигнала WiFi: ");Serial.print(WiFi.RSSI());Serial.print(" dBm");
if (WiFi.RSSI()*-1 <= 60){
Serial.println(" (отличный уровень сигнала)");}
else if (WiFi.RSSI()*-1 > 60 && WiFi.RSSI()*-1 <= 70){
Serial.println(" (хороший уровень сигнала)");
}
else if (WiFi.RSSI()*-1 > 70 && WiFi.RSSI()*-1 <= 80){
Serial.println(" (средний уровень сигнала)");
}
else if (WiFi.RSSI()*-1 > 80 && WiFi.RSSI()*-1 <= 90){
Serial.println(" (плохой уровень сигнала)");
}
else if (WiFi.RSSI()*-1 > 90) {
Serial.println(" (очень слабый уровень сигнала)");
}
Serial.println("");
delay(5000);
}
При правильном вводе данных названия сети(ssid) и пароля у вас в консоли (монитор порта) появится примерно следующая информация:
Монитор уровня сигнала будет сообщать насколько стабильное у вас подключение: