Wemos d1 r2 и mini на основе esp8266

Connect With WPA

This example shows you how to connect to a WPA2 Personal encrypted 802.11b/g network with the Arduino WiFi shield. Your Arduino Software (IDE) serial monitor will provide information about the connection once it has connected.

Circuit

The WiFi shield uses pins 10, 11, 12, and 13 for the SPI connection to the HDG104 module. Digital pin 4 is used to control the slave select pin on the SD card.

You should have access to a 802.11b/g wireless network that connects to the internet for this example. You will need to change the network settings in the sketch to correspond to your particular networks SSID.

For networks using WPA/WPA2 Personal encryption, you need the SSID and password. The shield will not connect to networks using WPA2 Enterprise encryption.

In the above image, the board would be stacked below the WiFi shield.

Code

/*
 This example connects to an unencrypted Wifi network.
 Then it prints the  MAC address of the Wifi shield,
 the IP address obtained, and other network details.
 Circuit:
 * WiFi shield attached
 created 13 July 2010
 by dlf (Metodo2 srl)
 modified 31 May 2012
 by Tom Igoe
 */#include <SPI.h>#include <WiFi.h>char ssid = «yourNetwork»;     //  your network SSID (name)char pass = «secretPassword»;  // your network passwordint status = WL_IDLE_STATUS;     // the Wifi radio’s statusvoid setup() {
  //Initialize serial and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }
  // check for the presence of the shield:
  if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println(«WiFi shield not present»);
    // don’t continue:
    while (true);
  }
  String fv = WiFi.firmwareVersion();
  if (fv != «1.1.0») {
    Serial.println(«Please upgrade the firmware»);
  }
  // attempt to connect to Wifi network:
  while (status != WL_CONNECTED) {
    Serial.print(«Attempting to connect to WPA SSID: «);
    Serial.println(ssid);
    // Connect to WPA/WPA2 network:
    status = WiFi.begin(ssid, pass);
    // wait 10 seconds for connection:
    delay(10000);
  }
  // you’re connected now, so print out the data:
  Serial.print(«You’re connected to the network»);
  printCurrentNet();
  printWifiData();}void loop() {
  // check the network connection once every 10 seconds:
  delay(10000);
  printCurrentNet();}void printWifiData() {
  // print your WiFi shield’s IP address:
  IPAddress ip = WiFi.localIP();
  Serial.print(«IP Address: «);
  Serial.println(ip);
  Serial.println(ip);
  // print your MAC address:
  byte mac6;
  WiFi.macAddress(mac);
  Serial.print(«MAC address: «);
  Serial.print(mac5, HEX);
  Serial.print(«:»);
  Serial.print(mac4, HEX);
  Serial.print(«:»);
  Serial.print(mac3, HEX);
  Serial.print(«:»);
  Serial.print(mac2, HEX);
  Serial.print(«:»);
  Serial.print(mac1, HEX);
  Serial.print(«:»);
  Serial.println(mac, HEX);}void printCurrentNet() {
  // print the SSID of the network you’re attached to:
  Serial.print(«SSID: «);
  Serial.println(WiFi.SSID());
  // print the MAC address of the router you’re attached to:
  byte bssid6;
  WiFi.BSSID(bssid);
  Serial.print(«BSSID: «);
  Serial.print(bssid5, HEX);
  Serial.print(«:»);
  Serial.print(bssid4, HEX);
  Serial.print(«:»);
  Serial.print(bssid3, HEX);
  Serial.print(«:»);
  Serial.print(bssid2, HEX);
  Serial.print(«:»);
  Serial.print(bssid1, HEX);
  Serial.print(«:»);
  Serial.println(bssid, HEX);
  // print the received signal strength:
  long rssi = WiFi.RSSI();
  Serial.print(«signal strength (RSSI):»);
  Serial.println(rssi);
  // print the encryption type:
  byte encryption = WiFi.encryptionType();
  Serial.print(«Encryption Type:»);
  Serial.println(encryption, HEX);
  Serial.println();}

See Also:

  • WiFi library – Your reference for the WiFi Library.
  • WiFi Shield – Product details for the retired WiFi Shield.
  • Getting started – Getting started with the retired WiFi Shield.
  • Connect No Encryption — Demonstrates how to connect to an open network.
  • Connect With WEP — Demonstrates how to connect to a network that is encrypted with WEP.
  • Scan Networks — Displays all WiFi networks in range.
  • Simple Web Server WiFi – Turn on and off an LED accessing this simple Web Server.
  • UDP NTP Client — Query a Network Time Protocol (NTP) server using UDP.
  • WiFi Chat Server — Set up a simple chat server.
  • WiFi Web Client — Connect to a remote webserver.
  • WiFi Web Client Repeating — Repeatedly make HTTP calls to a server.
  • WiFi Web Server — Serve a webpage from the WiFi shield with Analog Input values.
  • WiFi Send Receive UDP String — Send and receive a UDP string.

Last revision 2018/08/23 by SM

Flashing your ESP8266

If you’re using an ESP8266-12 you just need to plug the ESP into your computer. If you’re using an ESP-01, you need an FTDI programmer to connect it to your computer. To establish a serial communication between your ESP8266 and a FTDI Programmer as shown in the schematic diagram below.

Open the flasher that you just downloaded and a window should appear (as shown in the following figure).

Press the button “Flash” and it should start the flashing process immediately (You might have to change some of the settings on the Advanced tab). After finishing this process, it should appear a green circle with a check icon.

Использование ESP8266 в качестве HTTP сервера в режиме Wi-Fi Station (STA)

Теперь давайте перейдем к следующему примеру, который демонстрирует, как переключить ESP8266 в режим Station (STA) и выдавать веб-страницы для любого клиента, подключенного к существующей сети.

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

Теперь можно загрузить скетч в ESP8266.

Доступ к веб-серверу в режиме STA

После загрузки скетча откройте монитор последовательного порта со скоростью 115200 бит/с и нажмите кнопку RESET на ESP8266. Если всё в порядке, он выведет динамический IP адрес, полученный от вашего маршрутизатора, и покажет сообщение, что HTTP сервер запущен.

Рисунок 12 – Веб-сервер ESP8266 NodeMCU. Режим станции. Монитор последовательного порта – сервер запущен

Затем загрузите браузер и введите IP адрес, указанный на мониторе последовательного порта. NodeMCU должен выдать веб-страницу, показывающую текущее состояние светодиодов и две кнопки для управления ими. Если в это время взглянуть на монитор последовательного порта, то можно увидеть состояние выводов GPIO NodeMCU.

Рисунок 13 – Веб-сервер ESP8266 NodeMCU. Режим станции. Веб-страницаРисунок 14 – Веб-сервер ESP8266 NodeMCU. Режим станции. Монитор последовательного порта – доступ к веб-странице

Теперь нажмите кнопку ON светодиода 1, чтобы включить его, наблюдая за URL. После нажатия кнопки ESP8266 получает запрос на URL адрес /led1on. Затем он включает светодиод 1 и отображает веб-страницу с обновленным состоянием светодиодов. Одновременно он выводит состояние вывода GPIO в монитор последовательного порта.

Рисунок 15 – Веб-сервер ESP8266 NodeMCU. Режим станции. Веб-страница – управление светодиодамиРисунок 16 – Веб-сервер ESP8266 NodeMCU. Режим станции. Монитор последовательного порта – управление светодиодами

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

Объяснение кода

Если вы сравните этот код вместе с предыдущим примером, единственное отличие состоит в том, что мы не настраиваем точку доступа, а вместо этого с помощью функции  подключаемся к существующей сети.

Пока ESP8266 пытается подключиться к сети, мы проверяем состояние подключения с помощью функции .

Данная функция возвращает следующие статусы:

  • WL_CONNECTED: возвращается при подключении к сети Wi-Fi;
  • WL_NO_SHIELD: возвращается, когда Wi-Fi модуль не подключен;
  • WL_IDLE_STATUS: временное состояние, возвращаемое при вызове , и остающееся активным до тех пор, пока не истечет количество попыток подключения (что приводит к WL_CONNECT_FAILED), или пока не будет установлено соединение (что приводит к WL_CONNECTED);
  • WL_NO_SSID_AVAIL: возвращается, когда нет доступных SSID;
  • WL_SCAN_COMPLETED: возвращается, когда сканирование сетей завершено;
  • WL_CONNECT_FAILED: возвращается при неудаче подключения после всех попыток;
  • WL_CONNECTION_LOST: возвращается при потере соединения;
  • WL_DISCONNECTED: возвращается при отключении от сети.

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

Единственная разница между режимами AP и STA состоит в том, что один создает сеть, а другой подключается к существующей сети. Остальная часть кода для обработки HTTP запросов и выдачи веб-страниц в режиме STA такая же, как и в режиме AP, описанном выше. Это включает в себя:

  • объявление выводов GPIO NodeMCU, к которым подключены светодиоды;
  • определение нескольких методов для обработки входящих HTTP запросов;
  • определение метода для обработки HTTP ошибки 404;
  • создание пользовательских функций, которые выполняются при вводе определенного URL;
  • создание HTML страницы;
  • стилизация веб-страницы;
  • создание кнопок и отображение их состояния.

WiFi Web Server

In this example, you will use the WiFi module of your board to create a simple Web server. Using the WiFi 1010 library, your device will be able to answer a HTTP request received from the WiFI connection. After opening a browser and navigating to your WiFi’s IP address, your board will respond with just enough HTML for a browser to display the input values from all six analog pins.

This example is written for a network using WPA encryption. For WEP or WPA, change the Wifi.begin() call accordingly.

Circuit

The WiFi module is integrated on your board and you don’t need any special circuitry to get this tutorial to work.

Please note: these three boards use dedicated pins to communicate and select the WiFi module, therefore you have no restriction in the usage of the available digital pins connected to the header pins.

Code

You should have access to a 802.11b/g wireless network that connects to the internet for this example. You will need to change the network settings in the sketch to correspond to your particular networks SSID.

For networks using WPA/WPA2 Personal encryption, you need the SSID and password. The shield will not connect to networks using WPA2 Enterprise encryption.

WEP network passwords are hexadecimal strings known as keys. A WEP network can have 4 different keys; each key is assigned a «Key Index» value. For WEP encrypted networks, you need the SSID, the key, and key number.

See Also:

  • WiFi NINA library – Your reference for the WiFi NINA Library.
  • AP_SimpleWebServer : A simple web server to manage a LED with AP feature
  • ConnectNoEncryption : Demonstrates how to connect to an open network
  • ConnectWithWEP : Demonstrates how to connect to a network that is encrypted with WEP
  • ConnectWithWPA : Demonstrates how to connect to a network that is encrypted with WPA2 Personal
  • ScanNetworks : Displays all WiFi networks in range
  • ScanNetworksAdwanced : Displays all WiFi networks, also the encrypted ones, in range
  • SimpleWebServerWiFi : A simple web server to manage a LED
  • WiFiChatServer : Set up a simple chat server
  • WiFiPing : Demonstrates how to ping a website or IP address
  • WiFiSSLClient : Connect to a website using SSL
  • UdpNTPClient : Query a Network Time Protocol (NTP) server using UDP
  • WiFiUdpSendReceiveString : Send and receive a UDP string
  • WiFiWebClient : Connect to a remote webserver
  • WiFiWebClientRepeating : Make repeated HTTP calls to a webserver

Last revision 2018/07/12 by SM

Собираем всё вместе

На приведенной ниже схеме показаны соединения, необходимые для ESP-01, а на фотографиях показан завершенный макет на беспаечной макетной плате. Цвета проводов на схеме соответствуют цветам проводов на фотографиях.

Соберите макет, как показано на рисунке, но не подключайте кабель USB-TTL конвертера к компьютеру, пока не установите перемычку на плате конвертера в положение 3,3В, и дважды перепроверьте правильность всех соединений. Использование 5В для питания ESP-01 может вывести модуль из строя, после чего тот не будет подлежать ремонту.

Схема подключения модуля ESP-01 к компьютеруМакет подключения модуля ESP-01 к компьютеру (вид сверху)Макет подключения модуля ESP-01 к компьютеру (вид спереди)Макет подключения модуля ESP-01 к компьютеру (вид сзади)

Для сборки макета вам может понадобиться дополнительная информация:

  • USB-TTL конвертер, показанный на фотографиях, использует UART микросхему FTDI232 и хорошо работает с операционными системами Windows, Mac и Linux. Он также предоставляет напряжение 3,3В для питания ESP-01. Убедитесь, что перемычка на печатной плате преобразователя установлена в положение 3,3В; что обеспечит как напряжение питания 3,3В, так и правильное напряжение на линии TxD. Использование более высокого напряжения может повредить ESP-01.
  • Независимо от того, какой USB-TTL конвертер вы решите использовать, он должен быть проверен перед использованием с ESP-01. Драйвера устройств на FTDI можно найти на сайте FTDI.
  • Величина тока, необходимого для ESP-01 во время работы Wi-Fi, варьируется от 250 мА до 750 мА. Ток, поставляемый USB-TTL преобразователем, должен быть достаточным для программирования ESP-01, но может оказаться недостаточным для длительного использования. Лучшим выбором является стабилизированный источник постоянного напряжения 3,3В, рассчитанный на ток 1 А и выше.
  • Выводы DTR и CTS USB-TTL конвертера остаются неподключенными.
  • Два коммутатора на схеме – это нормально разомкнутые однополюсные кнопки.
  • Одним из расхождений в доступных источниках информации об ESP-01 является то, должен ли CH_PD быть подключен к +3,3В напрямую или через подтягивающий резистор 10 кОм. Автор протестировал оба способа, и оба они работают. После того, как вы собрали и проверили схему, как показано здесь (с CH_PD, подключенным к +3,3В напрямую), попробуйте использовать подключение через резистор 10 кОм. Если схема работает с подтягивающим резистором 10 кОм, то оставьте его в схеме.

Как видите на приведенных выше фотографиях, использование свободных проводов от USB-TTL конвертера не оптимально. Лучшим вариантом является замена шести загнутых выводов разъема конвертера на шесть прямых выводов на нижней части печатной платы. Эта модификация позволит устанавливать преобразователь USB-TTL непосредственно в беспаечную макетную плату, что приведет к значительно более аккуратной и менее хрупкой сборке макета, как показано на фотографии ниже.

Альтернативная сборка макета подключения ESP-01 к компьютеру

Работа схемы

Схема устройства представлена на следующем рисунке.

Примечание: чтобы видеть ответы модуля ESP8266 на поступающие команды откройте монитор последовательного порта (Serial Monitor) в программной среде Arduino IDE.

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

1. Сначала нам необходимо произвести тест Wi-Fi модуля при помощи передачи ему AT команды, он должен ответить OK.

2. После этого мы должны выбрать необходимый режим работы с помощью команды AT+CWMODE=mode_id , мы будем использовать Mode id =3. Полный же список доступных режимов выглядит следующим образом:
1 = Station mode (client) (режим станции, клиента)
2 = AP mode (host) (режим базовой станции, хоста)
3 = AP + Station mode (Yes, ESP8266 has a dual mode!) (режим станции + хоста – модуль ESP8266 поддерживает этот двойной режим).

3. Затем мы должны отсоединить наш Wi-Fi модуль от прежней Wi-Fi сети с помощью команды AT+CWQAP поскольку модуль ESP8266 по умолчанию автоматически соединяется с предыдущей использованной сетью Wi-Fi.

4. После этого можно сбросить модуль командой AT+RST – это необязательный шаг.

5. После этого мы должны соединить модуль ESP8266 с Wi-Fi роутером с помощью команды:AT+CWJAP=”wifi_username”,”wifi_password”.

6. После этого мы должны получить IP адрес с помощью команды AT+CIFSR, которая вернет нам IP адрес.

7. После этого нам необходимо задействовать режим мультиплексирования с помощью команды AT+CIPMUX=1 (1 для соединения с мультиплексированием и 0 для одиночного соединения).

8. Теперь сконфигурируем ESP8266 как сервер с помощью команды AT+CIPSERVER=1,port_no (port может быть 80). Теперь наш Wi-Fi готов. В представленной команде ‘1’ используется для создания сервера и ‘0’ для удаления сервера.

9. Теперь с помощью соответствующих команд можно передавать данные на созданный локальный сервер:AT+CIPSEND =id, length of data
Id = ID no. of transmit connection (номер соединения)
Length = Max length of data is 2 kb (максимальная длина данный 2 Кбайта).

10. После передачи ID (номера, идентификатора) и Length (длины данных) на сервер мы можем передавать данные, к примеру: Serial.println(“circuitdigest@gmail.com”);

11. После передачи данных нам необходимо закрыть соединение с помощью команды:AT+CIPCLOSE=0
После этого данные будет переданы на локальный сервер.

12. Теперь вы можете набрать IP адрес в строке адреса вашего браузера и нажать Enter. После этого вы увидите переданные данные на веб-странице.

Все описанные шаги можно более наглядно посмотреть в видео в конце статьи.

WiFi library

The firmware for the WiFi shield has changed in Arduino IDE 1.0.5. You are recommended to install this update per these instructions

With the Arduino WiFi Shield, this library allows an Arduino board to connect to the internet. It can serve as either a server accepting incoming connections or a client making outgoing ones. The library supports WEP and WPA2 Personal encryption, but not WPA2 Enterprise. Also note, if the SSID is not broadcast, the shield cannot connect.

Arduino communicates with the WiFi shield using the SPI bus. This is on digital pins 11, 12, and 13 on the Uno and pins 50, 51, and 52 on the Mega. On both boards, pin 10 is used as SS. On the Mega, the hardware SS pin, 53, is not used but it must be kept as an output or the SPI interface won’t work. Digital pin 7 is used as a handshake pin between the Wifi shield and the Arduino, and should not be used.

The WiFi library is very similar to the Ethernet library, and many of the function calls are the same.

For additional information on the WiFi shield, see the Getting Started page and the WiFi shield hardware page.

To use this library

Examples

  • ConnectNoEncryption : Demonstrates how to connect to an open network
  • ConnectWithWEP : Demonstrates how to connect to a network that is encrypted with WEP
  • ConnectWithWPA : Demonstrates how to connect to a network that is encrypted with WPA2 Personal
  • ScanNetworks : Displays all WiFi networks in range
  • WiFiChatServer : Set up a simple chat server
  • WiFiWebClient : Connect to a remote webserver
  • WiFiWebClientRepeating : Make repeated HTTP calls to a webserver
  • WiFiWebServer : Serve a webpage from the WiFi shield
  • WiFiSendReceiveUDPString : Send and receive a UDP string
  • UdpNTPClient : Query a Network Time Protocol (NTP) server using UDP

Last revision 2019/12/24 by SM

WiFi class

The WiFi class initializes the ethernet library and network settings.

  • begin()
  • disconnect()
  • config()
  • setDNS()
  • SSID()
  • BSSID()
  • RSSI()
  • encryptionType()
  • scanNetworks()
  • status()
  • getSocket()
  • macAddress()

The IPAddress class provides information about the network configuration.

  • localIP()
  • subnetMask()
  • gatewayIP()

Server class

The Server class creates servers which can send data to and receive data from connected clients (programs running on other computers or devices).

  • Server
  • WiFiServer()
  • begin()
  • available()
  • write()
  • print()
  • println()

Client class

The client class creates clients that can connect to servers and send and receive data.

  • Client
  • WiFiClient()
  • connected()
  • connect()
  • write()
  • print()
  • println()
  • available()
  • read()
  • flush()
  • stop()

UDP class

The UDP class enables UDP message to be sent and received.

  • WiFiUDP
  • begin()
  • available()
  • beginPacket()
  • endPacket()
  • write()
  • parsePacket()
  • peek()
  • read()
  • flush()
  • stop()
  • remoteIP()
  • remotePort()

Входы и выходы ESP-01

Модуль ESP-01 содержит микроконтроллер ESP8266 и чип флэш-памяти. На нем также есть два светодиода: красный (указывает наличие питания) и синий (указывает на наличие потока данных и может также управляться программно пользователем). Wi-Fi антенна – это дорожка на печатной плате на верхней части модуля; она носит название MIFA-антенна (Meandered Inverted-F Antenna), и, на удивление, она эффективна и только слегка направлена.

Расположение выводов модуля ESP-01

В нижней части модуля находятся восемь контактов; на рисунке выше указан их функционал. Обычно на задней части модуля установлены два 4-пиновых разъема, которые припаяны сверху. Это делает входы/выходы доступными, но не очень подходящими для макетной платы, и требует перемычек между ESP-01 и макетной платой. Альтернативный способ размещения разъемов показан ниже.

Размещение разъемов модуля ESP-01

Разъем на передней части печатной платы использует стандартные прямоугольные выводы без каких-либо изменений. Разъем на задней части использует удлиненные выводы, которые были согнуты под прямым углом, чтобы выдержать корректное расстояние между рядами разъемов. Этот способ позволяет вставлять ESP-01 в беспаечную макетную плату в вертикальном положении над центральным зазором платы и делает все восемь контактов независимыми.

Шаг 6. Загрузите скетч в Arduino.

Скетч загружается в Arduino обычным способом. Однако из за того что модуль ESP8266 подключен к контактам 0 и 1, программирование становится невозможным. Компилятор будет показывать ошибку.

Перед программированием отсоедините провода идущие к ESP8266 от контактов 0 и 1. Произведите программирование. Затем верните контакты на место. Нажмите кнопку сброса Arduino.

Примечание: Первый признак того, что программирование прошло успешно, это мерцание синего светодиода на модуле ESP8266 в течении полсекунды сразу после сброса. Мерцание синего светодиода означает обмен данными между Arduino и ESP8266. В эти полсекунды Arduino производит настройку ESP8266 для работы в качестве точки доступа.

Step 1: INSTALLING DRIVERS & Softwares

By default drivers for CP210X , which is a USB to UART converter mounted on the board is automatically installed when you plugin the board, if it doesn’t,

File downloaded from this zip file will have, drivers for both 32-bit and 64-bit OS, you will find two «.exe» files in this folder, Install-1) CP210xVCPInstaller_x64 — If you have 64-Bit OS2) CP210xVCPInstaller_x86 — If you have 32-Bit OS

Once the drivers are properly installed the caution symbol will disappear, and you will be able to see your board at COM port greater than 2,If it is still on COM port less than or equal to 2, then try changing the USB port you are plugging the board into.

Uploading the Code

I recommend using the ESPlorer program created by 4refr0nt to create and save LUA files into your ESP8266. Follow these instructions to download and install ESPlorer:

  1. Click here to download ESPlorer
  2. Unzip that folder
  3. Go to the dist folder (here’s the path: ESPlorer-master\ESPlorer\dist)
  4. Run ESPlorer.jar. It’s a JAVA program, so you need JAVA installed on your computer.
  5. Open the ESPlorer

You should see a window similar to the preceding Figure, follow these instructions to upload a LUA file:

  1. Connect your FTDI programmer to your computer
  2. Select your FTDI programmer port
  3. Press Open/Close
  4. Select NodeMCU+MicroPtyhon tab
  5. Create a new file called init.lua
  6. Press Save to ESP

Everything that you need to worry about or change is highlighted in red box.

Taking it Further

Now that you know how the code works, you can modify the code to add more outputs, or modify your web page. To modify your web page you may need to know some HTML and CSS.

Instead of controlling two LEDs, you can control a relay to control practically any electronics appliances.

To build a web server to display sensor readings, you can read the following tutorials:

  • ESP8266 DHT Temperature and Humidity Web Server (Arduino IDE)
  • ESP8266 DS18B20 Temperature Web Server (Arduino IDE)

Alternatively, if you want to program your ESP8266 using MicroPython, you can read this tutorial: ESP32/ESP8266 MicroPython Web Server – Control Outputs

If you like ESP8266 make sure you take a look at our course about Home Automation with the ESP8266.

Оцените статью:
Оставить комментарий