Как nodemcu v3 esp8266 подключить wi fi роутер

Introduction: Create a WiFi Access Point and Provide a Web Server on NodeMCU V3

in the previous article I already discussed about how to use NodeMCU ESP8266. In the article I explain about how to add NodeMCU ESP8266 to Arduini IDE.

There are several ways to communicate via the internet using NodeMCU ESP8266. Making NodeMCU as a client, access point, and a combination of the two. and in this article I will show you how to make NodeMCU an access point

I suggest to read this article first before «Get Started With ESP8266 (NodeMCU Lolin V3)» continuing this tutorial.

Step 1: Required Component

This is the component that we need:

  • NodeMCU ESP8266
  • Laptop or Android Phone
  • Micro USB

Step 2: Programming

Make sure you have added the ESP8266 Board to Arduino IDE. If not, you must read this article first «Get Started With ESP8266 (NodeMCU Lolin V3)». After the board has been added, let’s move on to the discussion.

Download the file that I have provided below. open the file and upload to NodeMCU.

Step 3: Access the Webserver

After the program has finished uploading, NodeMCU can be used immediately.

these are the steps to use it:

  • Open Serial Monitor on Arduino IDE.
  • Press reset on NodeMCU
  • Note the IP address that appears.
  • Look for the SSID with the name «NodeMCU».
  • Connect your cellphone or laptop with the SSID name above.
  • Open the browser and enter the IP address that was noted earlier.

Step 4: Result

After the HP or laptop has been confirmed connected to the SSID that was made earlier, the words «You are connected» will appear

Цель работы

Научиться подключаться к WiFi сети с микроконтроллера Arduino и передавать данные по WiFi.

Задачи работы

  1. Добавить поддержку микроконтроллера NodeMCU на базе WiFi-модуля ESP8266
  2. Разработать скетч для подключения к WiFi сети и передачи данных по беспроводному каналу связи.

Инструменты для выполения работы

  1. Компьютер с подключением к сети Internet
  2. Микроконтроллер NodeMCU V3 на базе EPS8266-12E

Теоретическая часть

Плата NodeMCU построена на базе модуля WiFi ESP8266.

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

Для работы с этой платой была добавлена поддержка среды разработки Arduino IDE. Практически все библиотеки для обычной Arduino так же работают и для этой платы, однако ее распиновка отличается от распиновки плат Arduino. Так, на плате есть один аналоговый вход (A0), на котором работает 10-битный АЦП. Цифровым пинам 0-15 Arduino соответствуют выходы, обозначенные GPIO1-GPIO16. Например, если в Arduino IDE используется пин 12, ему будет соответствовать контакт, обозначенный на плате как D6 (GPIO12). Пины GPIO1 — GPIO5, GPIO10, GPIO12-GPIO15 поддерживают ШИМ.
Характеристики платы:
поддержка WiFi протоколов 802.11 b/g/n
Wi-Fi Direct (P2P), soft-AP
встроенный стек TCP/IP
SDIO 2.0, SPI, UART
встроенный PLL, регуляторы, и система управления питанием
Номинальное напряжение: 3,3 В
Входное напряжение: 3,7–20 В
Максимальный потребляемый ток: 220 мА
D9, D10 — UART
D1, D2 — I²C (D1 — SCL(SCK), D2 — SDA)
D5–D8 — SPI

 

Выполнение работы

Добавление поддержки микроконтроллера NodeMCU на базе WiFi-модуля ESP8266

Для добавления поддержки NodeMCU в среду Arduino IDE нужно выполнить следующие шаги:

  1. Открываем настройки (Файл -> Настройки)
  2. Находим дополнительные ссылки для менеджера плат и нажимаем справа кнопку редактирования (выделена на скриншоте)
  3. Добавляем URL: http://arduino.esp8266.com/stable/package_esp8266com_index.json
  4. Сохраняем и заходим в менеджер плат (Инструменты -> Плата: -> Менеджер плат)
  5. Вводим в поиск «esp8266» и устанавливаем пакет esp8266
  6. Создаем новый скетч и сохраняем его как Esp8266Test.
  7. Выбираем плату «NodeMCU 1.0 (ESP-12E Module)» (Инструменты -> Плата:). Ниже в меню «Инструменты» вводим настройки для CPU Frequency, Flash Size и Upload Speed как показано на скриншоте (скорее всего, будут стоять именно такие, если плата отличается от изображенной выше, настройки могут отличаться).
  8. Выбираем нужный порт.

Разработка скетча для подключения к WiFi сети и передачи данных по беспроводному каналу связи.

Скетч для работы с WiFi используем библиотеки, аналогичные стандартной библиотеке WiFi для обычных Arduino. При работе с обычной Arduino и каким-либо WiFi шилдом будут подключаться аналогичные заголовочные файлы, только без префикса «ESP8266».
Подключаем заголовочные файлы

#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>

Указываем параметры WiFi сети

const char *essid=»WIFI_ESSID»;
const char *key=»WIFI_KEY»;

WIFI_ESSID и WIFI_KEY заменяем на имя и пароль используемой WiFi сети.
В функции setup() запускаем Serial и подключаемся к WiFi

Serial.begin(9600);
WiFi.begin(essid,key);
while(WiFi.status() != WL_CONNECTED)
{
    delay(500);
    Serial.print(«.»);
}
Serial.println(«WiFi connected»);

В функции loop выполняем GET запрос на WEB-страницу удаленного сервера. Для этого подключаемся к серверу

WiFiClient client;
if(!client.connect(«wl.unn.ru»,80))
{
    Serial.println(«connection failed»);
    return;

Отправляем сгенерированный вручную GET запрос

client.print(«GET /laboratory/?page=1 HTTP/1.1\r\nConnection: close\r\n\r\n»);

Ждем ответа от сервера

unsigned long timeout = millis();
while(client.available()==0)
{
    if(millis()-timeout>5000)
    {
        Serial.println(«>>> Client Timeout !»);
        client.stop();
        return;
    }
}

Выводим ответ и спим 10 секунд

while(client.available())
{
    String line=client.readStringUntil(‘\r’);
    Serial.print(line);
}
delay(10000);

Загружаем скетч на плату и открываем менеджер порта. Там раз в десять секунд должен появляться код веб-страницы, пришедший в ответ от сервера wl.unn.ru.

Начиная свое знакомство с микроконтроллером ESP8266, первым делом захочется подключиться к Wi-Fi и попробовать сетевые возможности данного микроконтроллера. Для работы с Wi-Fi в NodeMCU существует специальный модуль, который так и называется WiFi module. Данный модуль позволяет устанавливать различные режимы работы и настраивать подключения к Wi-Fi сети.

Существует три режима работы Wi-Fi в ESP8266

  1. Клиент. (STA)
  2. Точка доступа. (AP)
  3. Совмещенный режим. (STA + AP)
  4. Wi-Fi выключен.

Клиент

1

Один из самых часто используемый режимов работы это режим клиента. Для того чтобы подключиться достаточно несколько строк кода, где нужно указать SSID и пароль вашей Wi-Fi сети.

cfg = {}  
cfg.ssid = "MY-NET"     -- SSID 
cfg.pwd = "myPassword"  -- пароль
cfg.save = false  -- не сохранять настройки (по умолчанию true)

wifi.setmode(wifi.STATION) -- выбор режима
wifi.sta.config(cfg)    -- установка настроек и подключения к Wi-Fi

Точка доступа

2

В режиме точки доступа, ESP8266 создает свою собственную сеть, к которой могут присоединиться другие устройства (телефон, ПК и т.д). Максимальное количество устройств, которые могут быть одновременно подключены — пять. Данный режим часто используется как промежуточный этап перед подключением ESP8266 к WiFi в режиме клиента. Например, для первоначальной настройки.

cfg={
 ssid="NODE-XXXXXX",
 pwd="password"
}
wifi.setmode(wifi.SOFTAP)
wifi.ap.config(cfg)

Если пароль не указывать, то будет создана открытая точка. При подключении, ESP8266 по умолчании выдается ip адрес 192.168.4.1, а клиенту 192.168.4.2

Совмещенный режим

12121

Совмешенный режим Station + AP, когда ESP8266 создает свою собственную сеть и одновременно подключается к другой сети.

!!! Имейте ввиду что при использовании  совмещенного режима используется один и тот же канал для обеих сетей, поскольку ESP8266 может прослушивать только один канал.

cfg_ap={
 ssid="NODE-XXXXXX",
 pwd="password"
}
cfg_sta={ 
ssid="NET", 
pwd="password" 
}

wifi.setmode(wifi.STATIONAP)
wifi.ap.config(cfg_ap)
wifi.sta.config(cfg_sta)

События

Для отслеживания различных событий существую функция callback на которую можно подписаться.

wifi.eventmon.register(wifi.eventmon.STA_CONNECTED, function(T)
  print("STA_CONNECTED") -- вызовется при подключении к сети
  dofile('my_script.lua')
end)

wifi.eventmon.register(wifi.eventmon.STA_DISCONNECTED, function(T)
  print("STA_DISCONNECTED")  -- вызовется при отключении от сети
end

Например, если ваш скрипт передает данные на сервер, то пока подключение с сетью не будет установлено, нет смысла запускать ваш скрипт раньше.

Событие вызывается каждый раз при подключении или отключении от сети (в зависимости на какое событие вы подписались), это нужно учитывать в вашем коде.

Поиск сетей

Чтобы иметь возможность сканировать доступные сети, в модули существует функция wifi.sta.getap(), но доступ к этой функция есть только в режиме клиента или совмещенный. При попытки запустить ее из режима точки доступа, выдаст ошибку с предупреждением.

function listap(t)  -- callback функция
    for k,v in pairs(t) do -- разбираем таблицу
        print(k.." : "..v)  -- выводим значения в консоль
    end
end
wifi.sta.getap(1, listap) -- 1 это формат данных возвращаемой таблицы

Сегодня я постарался написать об основных функциях которые потребуются для работы ESP8266 с Wi-Fi сетями, о других возможностях Wi-Fi модуля можно узнать если внимательно изучить документацию.

You can use WiFi with the NodeMCU (ESP8266) even without a WiFi router. All you need to do is create a NodeMCU WiFi Access Point and the device will now act as a WiFi gateway.

NodeMCU WiFi Access Point Code

For this tutorial, we will modify the code shown on my NodeMCU web server article. The example code below also uses the same schematic (a LED on D7).

[the_ad id=»3059″]

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>

// Replace with your network credentials
const char* ssid = "<YOUR WIFI SSID>";
const char* password = "<YOUR WIFI PASSWORD>";

ESP8266WebServer server(80);   //instantiate server at port 80 (http port)

String page = "";
int LEDPin = 13;
void setup(void){
  //the HTML of the web page
  page = "<h1>Simple NodeMCU Web Server</h1><p><a href=\"LEDOn\"><button>ON</button></a>&nbsp;<a href=\"LEDOff\"><button>OFF</button></a></p>";
  //make the LED pin output and initially turned off
  pinMode(LEDPin, OUTPUT);
  digitalWrite(LEDPin, LOW);
   
  delay(1000);
  Serial.begin(115200);
  WiFi.softAP(ssid, password); //begin WiFi access point
  Serial.println("");

  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.softAPIP()); 
   
  server.on("/", [](){
    server.send(200, "text/html", page);
  });
  server.on("/LEDOn", [](){
    server.send(200, "text/html", page);
    digitalWrite(LEDPin, HIGH);
    delay(1000);
  });
  server.on("/LEDOff", [](){
    server.send(200, "text/html", page);
    digitalWrite(LEDPin, LOW);
    delay(1000); 
  });
  server.begin();
  Serial.println("Web server started!");
}
 
void loop(void){
  server.handleClient();
}

You’ll see that we used WiFi.softAP() instead of WiFi.begin() (on line 22) — this creates the NodeMCU WiFi access point. Then to print the NodeMCU’s ip, which we need to view the server page, we use WiFi.softAPIP() (line 34).

[the_ad id=»3059″]

Upload the code above to your NodeMCU. If successful, the device should be visible as a WiFi access point with the SSID and password you specified in the code above.

You can also use this method to send data between two NodeMCUs. Basically, one device acts as a client and one as a server and also as the access point. The data will only be between the two and so will be much more secure compared to having a WiFi gateway/router.

NodeMCU Lua – плата на основе популярного модуля ESP8266 (рисунок 1) предназначена для создания IoT устройств (устройств Интернета вещей), которым необходима передача или получение данных в интернет с помощью технологии Wi-Fi.

Содержание

  • Технические характеристики модуля
  • Примеры использования (скриптовый язык Lua)
  • Примеры использования (скетч в среде программирования Arduino IDE)

NodeMCU Lua – плата на основе популярного модуля ESP8266 (рисунок 1) предназначена для создания IoT устройств (устройств Интернета вещей), которым необходима передача или получение данных в интернет с помощью технологии Wi-Fi.


Технические характеристики модуля

  • Процессор 32-битный
  • WiFi – 802.11 b/g/n
  • Напряжение питания 3,3 В
  • Внешнее питание 3.6–20 В
  • Ток потребления: режим передачи данных– 200 мА, режим приёма данных – 60 мА
  • Подсоединение к компьютер – вход microUSB
  • Имеет встроенную flash память 4 Mб
  • Поддержка в базовой прошивке интерпретатора Lua
  • Возможность обновления прошивки по Wi-Fi
  • Наличие встроенного датчика температуры

В чем же преимущества данной платы на основе модуля ESP8266? Во-первых, на плате присутствует интерфейс UART-USB с разъемом micro USB, что позволяет подключать его к компьютеру без переходников. Во вторых, она имеет выводы для всех доступных контактов ESP8266. А это 11 портов ввода-вывода общего назначения, некоторые из которых имеют дополнительные функции (см. рисунок 1).

Naznachenie-vyvodov-NodeMcu.jpg

Рисунок 1. Назначение выводов NodeMcu

В-третьих, на данной плате установлена прошивка, которая может интерпретировать команды скриптового языка Lua. Lua — это встраиваемый язык сценариев, который является маленьким, быстрым и очень мощным. С помощью команд Lua для NodeMCU можно выполнять следующие действия:

  • использование платы в качестве WiFi точки доступа
  • подключаться (в том числе и автоматическое) к точке доступа WiFi
  • режим пониженного энергопотребления (уход в сон)
  • перенаправлять вывод
  • выполнять операции со списком файлов в flash-памяти
  • управление пользовательским таймером и таймером WatchDog
  • управление GPIO1 выводами
  • создание веб-сервера
  • обмениваться даннымиI2C — устройствами
  • считывать данные на выводе АЦП

Можно не только выполнять команды Lua в терминале, но и cоздавать файлы в flash-памяти ESP8266 и вызывать их на иcполнение. Рассмотрим примеры напиcания программ для модуля на языке Lua, а также в среде программирования Arduino IDE.


Примеры использования (скриптовый язык Lua)

Рассмотрим пример написания скрипта на языке Lua для платы NodeMCU. Будем использовать программу ESPlorer (рисунок 2), которую вместе с можно скачать со страницы тут.

Okno-programmy-ESPlorer.jpg

Рисунок 2. Окно программы ESPlorer.

Напишем скрипт создания простейшего веб-сервера, чтобы при обращении к модулю по HTTP с него выдавалась информация. Создадим для этого файл server1.lua и запишем в него код, представленный в листинге 1. Листинг 1

serverport = 80

server=net.createServer(net.TCP)

server:listen(serverport,

function(connection)

connection:send("HTTP/1.1 200 OK\nContent-Type: text/html\nRefresh: 10\n\n" ..

"<!DOCTYPE HTML>" ..

"<html><body>" ..

"<b>Server </b></br>" ..

" ChipID : " .. node.chipid() .. "<br>" ..

" MAC : " .. wifi.sta.getmac() .. "<br>" ..

" Heap : " .. node.heap() .. "<br>" ..

" Timer Ticks : " .. tmr.now() .. "<br>" ..

"</html></body>")

connection:on("sent",function(connection) connection:close() end)

end

)

Сохраним файл server1.lua в модуле и запустим.  Для проверки работы севера подключимся к точке доступа модуля и наберем в браузере ее адрес: http://192.168.4.1 (рисунок 3). Для запуска сервера при загрузке модуля необходимо в конце нашего autorun-файла init.lua добавить строку: dofile(server1.lua)

Obrashchenie-k-serveru-na-NodeMCU.jpg

Рисунок 3. Обращение к серверу на NodeMCU


Примеры использования (скетч в среде программирования Arduino IDE)

Рассмотрим создание программ дя платы NodeMCU в среде программирования Arduino IDE. Для этого необходимо установить Arduino IDE для ESP8266. На компьютере уже должно быть установлено программное обеспеченние Arduino IDE версии не ниже 1.6.5. На рисунках 4-8 представлены скриншоты процесса установки Arduino IDE для ESP8266.

05.jpg

Рисунок 4. 

06.jpg

Рисунок 5.

 

07.jpg

Рисунок 6.

 

08-1024x820.jpg

Рисунок 7.

Рассмотрим пример подключения аналогового датчика освещенности (фоторезистора) к плате NodeMCU ESP8266 и отправку данных по протоколу MQTT в интернет на сервер http://www.mqtt-dashboard.com/.

Схема соединений представлена на рис. 8.

Skhema-podklyucheniya-Nodemcu-Lua-Wi-Fi-1024x480.jpg

Рисунок 8. Схема подключения.

Для написания скетча необходима библиотека pubsubclient  для общения с брокером MQTT . Разархивируйте скачанный файл в папку библиотеки IDE Arduino. Откройте в Arduino IDE скетч _2.ino. Вам необходимо внести в скетч изменения параметров SSID и пароля для точки подключения платы NodeMCU к вашей WiFi сети.

const char* ssid = «your_wifi_hotspot»;

const char* password = «your_wifi_password»;

Загружаем скетч на нашу плату NodeMCU, открываем монитор последовательного порта и если соединения указаны правильно, увидим следующий результат (рисунок 9).

Soedinenie-s-brokerom-po-seti.jpg

Рисунок 9. Соединение с брокером по сети.

После того, как NodeMCU подключился к wifi и брокеру MQTT, он публикует данные о освещенности для брокера MQTT по теме OsoyooData (рисунок 10).

Otpravka-dannyh-datchika-osveshchennosti.jpg

Рисунок 10. Отправка данных датчика освещенности.

Мы будем использовать на любом устройстве (например планшете или компьютере) MQTT-клиент, чтобы подписаться на тему OsoyooData от того же брокера MQTT и получать значения освещенности в реальном времени.

  • Как быть если забыли пароль на роутере
  • Как macbook подключить к роутеру
  • Как будет работать роутер если его перезагрузить
  • Как lan поменять на wan в dsl роутере
  • Как быть если забыл пароль доступа роутера