Nodemcu esp8266 arduino wifi

Настройка Arduino IDE для NodeMCU

NodeMCU — это популярная и очень удобная платформа на основе WiFi модуля ESP-8266. По сути, NodeMCU представляет собой плату, на которой размещены: сам модуль ESP-8266, стабилизатор напряжения и USB-UART мост.

NodeMCU

Существуют разные версии ESP8266, но почти для всех используется один и тот же способ настройки среды разработки Arduino IDE. О том, как, собственно, сделать эту настройку и пойдет речь в статье.

Настройка ESP8266 в Arduino IDE

Для этой процедуры необходим доступ в интернет, так как Arduino IDE требуется скачать дополнительные пакеты.

Arduino IDE настройка NodeMcu

В поле Дополнительные ссылки для Менеджера плат пишем такую ссылку:

Arduino IDE настройка NodeMcu

Arduino IDE настройка NodeMcu

В самом низу будет нужный нам пакет «esp8266 by ESP8266

Arduino IDE настройка NodeMcu

Жмём кнопку Установить.

Arduino IDE настройка NodeMcu

Спустя некоторое время пакет скопирует необходимые файлы и в Arduino IDE можно будет выбрать нужную нам плату.

Подключение светодиода к NodeMCU

В качестве примера, подключим к NodeMCU светодиод и напишем программу, которая будет включать и выключать его с периодом в одну секунду.

Для начала посмотрим на схемы выводов NodeMCU.

NodeMCU распиновка схема выводов

Плата имеет 13 цифровых выводов, обозначенных аббревиатурой GPIO. Можем подключить светодиод к любому из них. Пусть это будет вывод D7 (он же GPIO13).

Принципиальная схема

Подключение светодиода к NodeMCU

Внешний вид макета

Подключение светодиода к NodeMCU

NodeMCU работает с напряжением 3.3 Вольта, так что для подключения красного светодиода нам потребуется использовать токозадающий резистор с сопротивлением 65 Ом. Но подойдет и распространенный резистор 200 Ом.

Загрузка программы на NodeMCU с помощью Arduino IDE

Теперь, когда Arduino IDE умеет работать с NodeMCU и светодиод подключен, попробуем загрузить первую программу.

В меню «Инструменты/Плата» выбираем NodeMCU 1.0.

Arduino IDE настройка NodeMcu

const byte ledPin = 13; void setup() < pinMode(ledPin, OUTPUT); >void loop()

Загружаем программу на NodeMCU, смотрим на светодиод 🙂

Заключение

В следующей статье поговорим о том, как создать простейший веб-сервер на базе NodeMCU (да и вообще на любой ESP8266), который позволит нам через WiFi управлять любыми устройствами.

Читайте также:  Какие есть wifi усилители

Источник

Дружимся с ESP

Последние пару лет практически все прототипирование несложных IoT-устройств я делаю на NodeMCU, хотя зачастую она и великовата по размеру, и дороговата, и избыточна по функционалу. А все потому, что имела неудачный опыт с ESP-01, которая совершенно не поддавалась прошивке. Сейчас пришло время преодолеть этот барьер и освоить другие железки, от которых мне нужно следующее — Wi-Fi и пины для подключения периферии.

В этой статье разберем подключение к платформе Интернета вещей наиболее популярных плат с интерфейсом Wi-Fi. Их можно использовать, чтобы управлять своим устройством дистанционно или чтобы снимать показания с сенсоров через интернет.

Несколько представленных в статье модулей (ESP-01, ESP-07, ESP-12E, ESP-12F) и плат (Goouuu Mini-S1, WeMos D1 mini и NodeMCU V2) базируются на контроллере ESP8266, использование которого позволяет простым и дешевым способом добавить в своё устройство беспроводную связь через Wi-Fi.

Так выглядит модельный ряд модулей на базе чипа ESP8266.

Последняя плата из тех, о которых я расскажу (ESP32 WROOM DevKit v1), построена на контроллере семейства ESP32 — более продвинутой по своим возможностям версии ESP8266.

Все представленные модели можно программировать и загружать прошивки через Arduino IDE точно так же, как при работе с Arduino.

Настройка среды программирования Arduino IDE

По умолчанию среда IDE настроена только на AVR-платы. Для платформ, представленных ниже, необходимо добавить в менеджере плат дополнительную поддержку.

1) Открываем среду программирования Arduino IDE.

http://arduino.esp8266.com/stable/package_esp8266com_index.json, https://dl.espressif.com/dl/package_esp32_index.json

4) В пункте меню Tools (Инструменты) -> Board (Плата) выбираем Boards manager (Менеджер плат).

Находим в списке платформы на ESP8266 и нажимаем на кнопку Install (Установить).

6) Надпись INSTALLED сообщает, что дополнения успешно установлены.

7) Аналогичным образом устанавливаем дополнение для ESP32.

8) Теперь нам доступны к программированию платформы с модулем ESP8266 и ESP32.

9) Для подключения плат к платформе Интернета вещей используем библиотеку EspMQTTClient. Чтобы ее установить, в пункте меню Tools (Инструменты) выбираем Manage Libraries (Управлять библиотеками). Находим и устанавливаем библиотеку EspMQTTClient. Может появиться сообщение об установке дополнительных библиотек. Выбираем “Install all”.

Примечание — Также для работы с платами понадобится установить драйверы CH340 (WeMos и Goouuu) и CP2102 (для остальных). Их отсутствие повлияет на то, найдет ли Arduino IDE COM-порт, к которому подключена плата.

Код прошивки

Для прошивки всех используемых ниже модулей используем один и тот же код.

  1. Установка Wi-Fi соединения
  2. Подключение к объекту на платформе Rightech IoT Cloud по протоколу MQTT
  3. Отправка рандомных значений по температуре («base/state/temperature») и влажности («base/state/humidity») каждые 5 секунд (PUB_DELAY)
  4. Получение сообщений о переключении света («base/relay/led1»)
#include "Arduino.h" #include "EspMQTTClient.h" /* https://github.com/plapointe6/EspMQTTClient */ /* https://github.com/knolleary/pubsubclient */ #define PUB_DELAY (5 * 1000) /* 5 seconds */ EspMQTTClient client( "", "", "dev.rightech.io", "" ); void setup() < Serial.begin(9600); >void onConnectionEstablished() < client.subscribe("base/relay/led1", [] (const String &payload) < Serial.println(payload); >); > long last = 0; void publishTemperature() < long now = millis(); if (client.isConnected() && (now - last >PUB_DELAY)) < client.publish("base/state/temperature", String(random(20, 30))); client.publish("base/state/humidity", String(random(40, 90))); last = now; >> void loop()

Работоспособность кода будем проверять на платформе Rightech IoT Cloud, именно поэтому в качестве адреса MQTT-брокера указан dev.rightech.io. Идентификаторами клиентов служат идентификаторы объектов, созданных на платформе. Под каждую проверку я завела на платформе отдельный объект, именно поэтому во всех скринах кодов, которые будут далее представлены, отличается только строка .

Читайте также:  Лджи телевизоры интернет вай фай

Прим. — Можно подключаться и к одному и тому же объекту, тогда можно использовать один и тот же код для прошивки всех плат без изменений, однако следите, чтобы в таком случае платы не подключались к одному и тому же объекту одновременно, иначе случится коллизия.

Модули на базе ESP8266

Для работы с модулями на базе ESP8266 есть два варианта:

  1. Работа с AT командами (в стандартной прошивке Wi-Fi модуль общается с управляющей платой через «AT-команды» по протоколу UART);
  2. Wi-Fi модуль как самостоятельный контроллер (все представленные модули очень умные: внутри чипа прячется целый микроконтроллер, который можно программировать на языке C++ через Arduino IDE).

В статье будем рассматривать второй вариант — прошивка модулей в виде самостоятельного полноценного устройства. Здесь также есть два варианта прошивки с точки зрения железа:

Рассмотрим второй вариант — использовать адаптер на базе чипа CP2102 (например, такой https://www.chipdip.ru/product/cp2102-usb-uart-board-type-a?frommarket=https%3A%2F%2Fmarket.yandex.ru%2Fsearch%3Frs%3DeJwzSvKS4xKzLI&ymclid=16146772489486451735000001). Обязательно обратите внимание на то, чтобы адаптер позволял выдавать выходное напряжение 3.3 В, не больше!

1. ESP-01

ESP-01 — самый популярный модуль на ESP8266. PCB антенна обеспечивает дальность до 400 м на открытом пространстве.

Внешний вид

Питание

Родное напряжение модуля — 3,3 В. Его пины не толерантны к 5 В. Если вы подадите напряжение выше, чем 3,3 В на пин питания, коммуникации или ввода-вывода, модуль выйдет из строя.

Подключение периферии

2 порта ввода-вывода общего назначения

Распиновка

Подключение к IoT

Аппаратная часть

Источник

NodeMCU, подключение к WiFi,http сервер и т.д. в Arduino IDE.

Немного подробней о функциях. WiFi.status() возвращает статус подключения , может пригодиться :

  • WL_CONNECTED: если подключение выполнено успешно.
  • WL_IDLE_STATUS: когда WiFi-сеть переключается с одного статуса на другой.
  • WL_NO_SSID_AVAIL:если заданный SSID находится вне зоны доступа.
  • WL_CONNECT_FAILED: если неправильный пароль.
  • WL_DISCONNECTED: если модуль не находится в режиме станции.
Читайте также:  Пропала настройка вай фай

Функция WiFi.mode()задает режим работы WiFi модуля :

Добавим еще немного кода, думаю в комментариях все понятно :

Serial.print("Subnet mask: "); 
// "Маска подсети: "
Serial.println(WiFi.subnetMask());
Serial.print("Gete: ");
// "Шлюз: "
Serial.println(WiFi.gatewayIP());
Serial.print("DNS 1: ");
// "DNS первый сервер: "
Serial.println(WiFi.dnsIP(0));
Serial.print("DNS 2: ");
// "DNS второй сервер: "
Serial.println(WiFi.dnsIP(1));

Включение HTTP сервера :

К сети мы подключились, давайте теперь настроим простой Web сервер. Для этого нам потребуется библиотека ESP8266WebServer. Сразу перейдем к скетчу :

#include #include ESP8266WebServer server(80); // включение сервера на порту:80 const char* ssid = "Ваш ssid"; const char* password = "password"; void headroot(void) // Процедура обработки запроса GET , "/" < server.send(200, "text/plain" , "Hellow the Web Server"); // Ответ сервера 200 , text/plain значит текстовые данные (заголовок Content-Type) >void setup() < Serial.begin(115200); const char* ssid = "Ваш ssid"; const char* password = "password"; Serial.print("Connecting to "); Serial.println(ssid); WiFi.mode(WIFI_STA); // Задаем режим работы WIFI_STA (клиент) WiFi.begin(ssid, password); // Подключаемся while (WiFi.status() != WL_CONNECTED) // Ждем пока статус не станет WL_CONNECTED < delay(500); >Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); // показывает наше IP server.on("/",headroot); // Ответ сервера на запрос главной страницы server.begin(); //Запуск сервера > void loop() < server.handleClient(); //обработка текущих входящих HTTP-запросов delay(1); >

Может немного изменить нашу функцию ответа сервера. Пусть будет html:

void headroot(void) 
String webPage text/html" , webPage);
>

В функции ответа сервера мы может делать любые действия кроме самого ответа. Например давайте узнаем наш IP и выведем его на страничке:

void headroot(void) 
String web ="";
web += "Html текс";
web += WiFi.localIP().toString();
web += "my local IP";
server.send(200, "text/html" , web );
>

­Вот наверное и все. Успехов.

Ошибка в тексте? Выделите её и нажмите «Ctrl + Enter»

Источник

Оцените статью
Adblock
detector