Работа с ESP8266: Первоначальная настройка, обновление прошивки, связь по Wi-Fi, отправка-получение данных на ПК
Мной была заказана самая простая плата с ESP8266 — ESP-01, выглядит она так:
В старой ревизии платы на разьем были выведены только VCC, GND, URXD и UTXD.
В последней ревизии добавились RST, GPIO0, GPIO2 и CH_PD.
Всего есть 11 модификаций плат, различающихся количеством выводов и вариантом исполнения:
ESP-01: PCB antenna, after matching the distance to do about the open 400 meters, easy to use.
ESP-02: SMD package for submission limit, the antenna can be drawn with the IPX header casing.
ESP-03: SMD package, the built-in ceramic antenna technology, all available IO leads.
ESP-04: SMD package, customers can customize the antenna types, flexible design, all the IO leads.
ESP-05: SMD package, only leads to serial and RST pin, small external antenna.
ESP-06: bottom mount technology, leads all the IO ports, with metal shielding shell, can be had FCC CEcertification, recommended.
ESP-07: Semi-hole chip technology, all the IO leads, with metal shielding shell, can be had FCC CE certifiedIPX external antenna, can also be built-in ceramic antenna.
ESP-08: with the ESP-07, except that the antenna is in the form of customers can define their own.
ESP-09: Ultra-small size package, only 10 * 10 mm, four-layer board technology 1M bytes.
ESP-10: SMD interface, narrow-body design, 10 mm wide, suitable for light with controller.
ESP-11: SMD interface, ceramic antenna, small volume.
Распиновка разъёма ESP-01:
Назначение выводов платы ESP-01 такое:
VCC, GND — питание платы (+3.3В);
URXD,UTXD — выводы RS232 толерантны к 3.3В
RST — Аппаратный сброс (reset)
GPIO0, GPIO2 — выводы GPIO
CH_PD — Chip enable, для работы должен быть подключен к +3.3В.
Для переключения в режим обновления прошивки нужно подать низкий уровень на GPIO0 и высокий на CH_PD.
Для подключения платы ESP-01 к ПК я использовал USB-to-RS232 преобразователь на FT232R с выходами TTL 3.3В, можно использовать например такой.
Питание ESP-01 нужно строго 3.3В, поэтому пришлось воспользоваться DC-DC преобразователем, можно использовать такой.
С базовой прошивкой плата ESP-01 управляется AT командами, поэтому нам потребуется программа-терминал, я использовал CoolTerm.
Возможно 2 варианта использования модуля:
1. Использование платы ESP-01 совместно с доп.микроконтроллером, который будет управлять модулем по UART.
2. Написание собственной прошивки для чипа ESP8266 и его использование как самодостаточного устройства.
Естественно более выгодным является 2-й вариант, тем более потенциал чипа ESP8266 достаточно велик.
Для начала мы попробуем вариант №1, то есть управлять платой ESP-01 через RS232.
Схема подключения очень простая:
Вывод VCC — питание платы (+3.3В);
Вывод GND — общий;
Выводы URXD,UTXD — подключаем к конвертеру USB-to-RS232 (в режиме 3.3В)
Вывод CH_PD — подключаем к питанию платы (+3.3В);
В терминале (CoolTerm) устанавливаем скорость COM-порта 57600. Установить нужно именно такую скорость, т.к. если в чипе ESP8266 стоит старая прошивка (а скорее всего это так и есть), то он будет работать только с такой скоростью порта.
Жмем Connect, вводим команду AT, в ответ должно прийти OK. Если все так, то плата работает, можно двигаться дальше.
Процедура обновления прошивки
Вводим команду AT+GMR — проверка версии AT и SDK, в ответ выдает 0016000902, где 0016 — версия SDK, 0901 — версия AT
На текущий момент (06.11.2014) уже доступна прошивка 0018000902 (Версия SDK — 0018, в версия AT — 0902)
Теперь можно и нужно обновить прошивку:
1. Качаем утилиту XTCOM отсюда.
2. Качаем прошивку ESP_8266_v0.9.2.2 AT Firmware.bin отсюда
3. Отключаем питание платы, вывод GPIO0 соединяем с общим проводом, включаем питание.
4. Запускаем XTCOM_UTIL.exe, переходим в Tools -> Config Device, выбираем COM-порт к которому подключена плата, ставим скорость порта 57600, жмем Open, потом Connect, программа должна сказать «Connect with target OK!», закрываем окно настроек. Переходим в меню API TEST, выбираем (4) Flash Image Download, указываем путь к файлу «ESP_8266_v0.9.2.2 AT Firmware.bin», адрес оставляем 0x00000, жмем DownLoad. Должна начаться загрузка прошивки, по окончании будет выдано сообщение.
5. Отключаем питание платы, вывод GPIO0 отсоединяем от общего провода, включаем питание, запускаем терминал (ВНИМАНИЕ! Меняем скорость порта на 9600), проверяем готовность платы командой AT и версию прошивки командой AT+GMR.
После обновления до версии 0018000902 изменится дефолтная скорость COM-порта с 57600 на 9600, но эту скорость в новой прошивке теперь можно задать командой AT+CIOBAUD. Смотрим AT+CIOBAUD=? доступные скорости и ставим командой AT+CIOBAUD=115200 скорость 115200, в ответ должно выдать ОК. Даем команду на рестарт: AT+RST. Меняем скорость порта в программе-терминал на 115200.
Настройка подключения к Wi-Fi
Теперь попробуем подключить нашу плату ESP-01 к Wi-Fi точке доступа.
Выполняем следующие команды:
1. Устанавливаем режим работы Wi-Fi командой: Доступны следующие режимы: 1 — STA, 2 — AP, 3 — BOTH
Пример:
2. Смотрим список точек доступа командой: AT+CWLAP
Пример
В скобках указывается: SECURITY, SSID, RSSI, BSSID, CHANNEL
SECURITY может принимать значения:
0 — OPEN, 1 — WEP, 2 — WPA-PSK, 3 — WPA2-PSK, 4 — MIXED (WPA-WPA2-PSK)
3. Подключаемся в нашей AP командой: Пример:
Подключение длится 2-5 секунд, после чего в случае успешного выполнения появится OK.
3. Посмотрим какой IP адрес получила наша плата командой: AT+CIFSR
Отключение от точки доступа делается командой AT+CWQAP.
Адрес получен, можно двигаться дальше.
Плата ESP-01 может выступать в качестве Soft-AP, для включения этого режима выполняем следующие команды:
1. Отключаемся от точки доступа: AT+CWQAP.
2. Меняем режим работы Wi-Fi командой: AT+CWMODE=2
3. Создаем свою AP командой: Пример:
4. Пробуем подключиться в нашей AP с компьютера. Посмотрим результат:
Как видно на картинке скорость только 54Мбит/с и еще меня смущают адреса DNS серверов, думаю они явно китайские, поставить свои через AT-команды нельзя.
Адрес AP можно узнать командой: AT+CIFSR
Пример:
Список клиентов нашей AP можно посмотреть командой: AT+CWLIF
Пример:
Настройка режима TCP-сервер
На плате ESP-01 можно запустить TCP-сервер для приема-отправки данных или она может выступать TCP-клиентом для приема-отправки данных на сервер.
Для запуска TCP-сервера выполним следующие команды:
1. Устанавливаем режим передачи командой mode = 0 — not data mode (сервер может отправлять данные клиенту и может принимать данные от клиента)
mode = 1 — data mode (сервер не может отправлять данные клиенту, но может принимать данные от клиента)
Пример:
2. Устанавливаем возможность множественных соединений: mode 0 — single connection
mode 1 — multiple connection
Проверить режим соединений можно командой AT+CIPMUX?
Пример:
3. Запускаем сервер на порту 8888: mode 0 — to close server
mode 1 — to open server
Пример:
Теперь можно подключиться к ESP-01 и отправить-принять какие-нибудь данные. Для подключения будем использовать утилиту SocketTest
Запускаем java -jar SocketTest.jar, на вкладке Client вводим адрес и порт ESP-01, жмем Connect. Если подключение будет успешным, то в терминале появится сообщение Link и в SocketTest станет активной строка Message и кнопка Send.
Посмотреть список активных подключений к ESP-01 можно командой AT+CIPSTATUS
Пример:
Закрыть активное соединение можно командой или все соединения AT+CIPCLOSE без параметров.
Пример:
4. Отправляем данные с ESP-01 на ПК
Для режима Single connection (+CIPMUX=0) отправка идет так: Для режима Multiple connection (+CIPMUX=1) отправка идет так: После выполнения AT+CIPSEND нужно ввести текст, завершение ввода и отправка осуществляется по Enter.
Пример:
5. Отправляем тестовое сообщение с ПК:
В терминале появляется строка Сообщение принято.
Формат принятых данных такой:
Для режима Single Connection (CIPMUX=0): Для режима Multiple Connection (CIPMUX=1):
Настройка режима TCP-клиента
Теперь поменяем роли, ПК — сервер, ESP-01 — клиент, пробуем:
1. Рестартуем плату AT+RST
2. Устанавливаем режим передачи командой mode = 0 — not data mode (клиент может отправлять данные серверу и может принимать данные от сервера)
mode = 1 — data mode (клиент не может отправлять данные серверу, но может принимать данные от сервера)
Пример:
3. Режим соединений ставим Multiple connection: AT+CIPMUX=1
4. На ПК в SocketTest запускаем сервер на порту 8888
5. Запускаем клиента на ESP-01
Для режима Single connection (+CIPMUX=0) формат такой Для режима Multiple connection (+CIPMUX=1) формат такой Возможные значения параметров:
id = 0-4
type = TCP/UDP
addr = IP адрес
port= порт
Пример:
6. Отправляем данные с ESP-01 на ПК
Для режима Single connection (+CIPMUX=0) отправка идет так: Для режима Multiple connection (+CIPMUX=1) отправка идет так: После выполнения AT+CIPSEND нужно ввести текст, завершение ввода и отправка осуществляется по Enter.
Пример:
Пример отправки и получения данных:
Как мы видим, плата успешно справляется с поставленными задачами, а именно — подключение к Wi-Fi в качестве клиента, может выступать в роли Soft-AP, на плате можно поднять TCP-сервер для приема-отправки данных, а можно быть TCP-клиентом.
В данной статье мы рассмотрели работу с платой ESP-01 через RS232, в качестве управляющего контроллера выступал ПК, можно без проблем подключить плату Arduino или любой микроконтроллер с UART и выполнять отправку-прием данных через Wi-Fi сеть между контроллерами или ПК.
В следующей статье (как позволит карма) я попробую рассказать о принципах написания собственных прошивок для чипа ESP8266, тем самым плата ESP-01 будет полностью автономной, ей будет не нужен доп.контроллер для управления всеми параметрами. Мы попробуем подключить к плате различные периферийные устройства.
Буду рад ответить на вопросы, хотя до конца я еще не узучил плату ESP-01.
Introduction
Ever wanted to control another device from a distance? Ever fathomed making a joystick of your own? Or felt bored of using the keyboard for playing games? Here’s how ESP8266 and IoT shall come to your rescue and make your friends feel jealous of you.
Nothing but an acronym for Espressif, Inc. This firm is credited with the making of ESP8266, a low-cost Wi-Fi microchip, with a full TCP/IP stack and microcontroller capability. Hey, some big terms were stated there, which are related to the Internet! So let's clear our understanding of Internet, or rather the Internet of Things, and relate it to our ESP8266.
The Internet is the global system of interconnected computer networks that uses the Internet protocol suite (TCP/IP) to communicate between networks and devices. The Internet protocol suite is the conceptual model and set of communications protocols used in the Internet and similar computer networks. It is commonly known as TCP/IP because the foundational protocols in the suite are the Transmission Control Protocol (TCP) and the Internet Protocol (IP). In telecommunication, a communication protocol is a system of rules that allow two or more entities of a communications system to transmit information via any kind of variation of a physical quantity. Protocols may be implemented by hardware, software, or a combination of both.
Communication over the internet happens through ‘packets’ of data. The Internet Protocol (IP) has the task of delivering packets from the source host to the destination host solely based on the IP addresses in the packet headers. For this purpose, IP defines packet structures that encapsulate the data to be delivered. It also defines addressing methods that are used to label the datagram (the unit of transfer in this ‘packet’ system) with source and destination information. The Transmission Control Protocol (TCP) provides reliable, ordered, and error-checked delivery of a stream of octets (bytes) between applications running on hosts communicating via an IP network.
Wi-Fi is a family of wireless networking technologies, which are commonly used for local area networking of devices and Internet access. Access point (AP) is a networking hardware device that allows other Wi-Fi devices to connect to a wired network. An AP connects directly to a wired local area network and the AP then provides wireless connections using wireless LAN technology, typically Wi-Fi, for other devices to use that wired connection. It has a unique IP address that can be used/accessed by anyone on the network to communicate with someone else on that network.
Recall the way we defined ESP8266: a low-cost Wi-Fi microchip, with a full TCP/IP stack and microcontroller capability. So it is a device with embedded wireless networking technology on which the communication protocols (TCP/IP) are established and can be used to control other devices-an LED bulb for instance. Moreover, the ESP8266 module has three operational modes:
- Access Point (AP) — In AP, the Wi-Fi module acts as a Wi-Fi network, or access point (hence the name). It allows other devices to connect to it. And establishes two-way communication between the ESP8266 and the device that is connected to it via Wi-Fi.
- Station (STA) — In STA mode, the ESP-01 can connect to an AP (access point) such as the Wi-Fi network from your house. This allows any device connected to that network to communicate with the module.
- Both — In this mode ESP-01 acts as both an AP as well as in STA mode.
You can switch these modes using AT commands: instructions used to control a modem. A Modem is a hardware device that converts data into a format suitable for a transmission medium so that it can be transmitted from one computer to another. Here our modem is the ESP8266.
Project
I’ll guide you to the completion of two very interesting projects in which the ESP8266 works in the STA mode:
- Controlling an LED through the Internet. (Receiver: ESP8266)
- Receiving MPU6050 data over the Internet. (Transmitter: ESP8266)
Project One: Controlling an LED through the Internet
Hardware and Software required
- ESP8266–01 board
- Arduino UNO board
- Jumper wires
- LM1117
- LED bulb
- 3.3v power source
- Internet connection
- Arduino IDE
- ESP8266 Arduino IDE library (Guide to installation given later)
- Two 4 pin push buttons
Working
The ESP-01 module has GPIO pins which can be programmed to turn an LED ON/OFF through the internet. The module can be programmed using Arduino UNO through the serial pins (RX, TX). The general structure of the plan is: making the circuit connecting UNO-ESP8266-LED, then uploading the code onto it, establish the wireless connection between the circuit and the computer, disconnect the ESP8266 and connect it to a power source and then finally play with the LED. See the image for a flowchart representation of our project:
Installing the ESP8266 platform:
First, the Arduino environment has to be set up to make it compatible with the ESP-01 module. It is required to have Arduino version 1.6.4 or higher in order to install the ESP8266’s platform packages.
- Open the preferences window from the Arduino IDE. Go to File >Preferences
2. Enter http://arduino.esp8266.com/stable/package_esp8266com_index.json into the Additional Board Manager URLs field and click the “OK” button
3. Open boards manager. Go to: Tools > Board > Boards Manager…
4. Scroll down, select the ESP8266 board menu and install “esp8266 platform”.
5. Choose your ESP8266 board from Tools > Board > Generic ESP8266 Module
Connections and Uploading of the Code
You can now use the Arduino UNO to flash the code to ESP8266 ESP-01, but then we have to use manual flashing. For this, we use two pushbuttons. Refer to the following diagram:
While uploading the code, follow the procedure to keep the flash button pressed while you click once on reset and release the flash button.
Connections (ARDUINO — — — — — — — -> ESP8266) :
- GND — — — — — — — — — — →GND
- TX — — — — — — — — — — — →TX
- RX — — — — — — — — — — — →RX
- Reset Button — — — — — →RST
- Flash Button — — — — — →GPIO0
Select your ESP8266 board from Tools -> Board -> Generic ESP8266 Module. Now copy the code given here to the Arduino IDE. Press the upload button. Now change SSID into your Wi-Fi access point and the password to your Wi-Fi password and compile.
Connect GPIO 2 of the ESP8266 to the longer lead of the LED (+ve terminal). You can now control the LED remotely through the internet!
Running, Disconnection and powering:
Open the serial monitor and open the URL shown on your serial monitor through your web browser.
Click on the respective hyperlinks on your browser to toggle the LED ON and OFF.
Now remove all the wires that were required for uploading. Lm1117 is used to provide regulated 3.3V output. It will let you make the ESP8266 or ESP-01 module stand alone.
Note: Currently, the ESP8266 module can be accessed only through the local Wi-Fi network. To control your devices from the internet, you must perform port forwarding on your router. In order to do this, find the IP address of your system either by means of using the “ifconfig” command on your terminal, or going to whatsmyip.org. Then copy down your IP address. Open your router setting now and go to the “Forwarding” settings. Enter the details for the “Service Port” and “IP Address”. Here, the IP address is the one you noted down before and the service port is the port number from your Arduino code (Service port: 80). Leave the other settings as default. Go to your browser now and enter the address: xxx.xxx.xx.xx:80 and this would open up the page for controlling the LED.
Project Two: Receiving MPU6050 data over the Internet
Hardware and Software required
- ESP8266–01 board
- Arduino UNO board
- Jumper wires
- MPU6050 and its own software requirements (the I2C and MPU6050 libraries)
- Arduino IDE
Working
The MPU6050 is a sensor capable of telling the inertial measurements (YPR- Yaw, Pitch, Roll) of the object on which it is mounted. We’ll use Arduino IDE to program an MPU6050-ESP8266-UNO connection. The project shall follow the following course: uploading of bare minimum to ESP8266, then uploading the code for ESP8266 to read data from the serial pins (Tx and Rx) and sending it wirelessly to the computer, and then finally connecting MPU6050 to UNO. UDP (User Datagram Protocol) is a communication protocol like TCP. TCP is a connection-oriented protocol and UDP is a connection-less protocol. TCP establishes a connection between a sender and receiver before data can be sent. UDP does not establish a connection before sending data. Hence each element of data is administered individually while sending and not through pre-determined fixed data channels. We use UDP as it is easier to handle and faster. It is unreliable though due to errors which can be corrected through error rectifiers at the two ends. A port is a communication endpoint.
Uploading the Bare Minimum Code
The bare minimum is a code consisting of only two statements: void setup<> and void loop<>. The purpose is to reset the UNO board for uploading the esp.ino file to ESP8266–01 board through the UNO board. This is a necessary step before flashing and you can replace this step by using the procedure from the first project: using two pushbuttons.
Installation of ESP8266 platform on Arduino IDE has already been discussed in the first project.
Connections and Uploading of the Main Code
ESP — Arduino UNO
- Tx — Tx
- Rx — Rx
- VCC- 5V
- GND — 0V
- GPIO0 -0V
- CH_PD — 5V
- Arduino Reset- Arduino GND
Select board as Generic ESP8266. Now copy the code given below to the Arduino IDE and press the upload button. Change SSID into your Wi-Fi access point name, and change the password to your Wi-Fi password and compile.
Making of MPU6050-ESP8266-UNO joint connection
ESP8266 — UNO
- Tx — Rx
- Rx — Tx
- VCC- 5V
- GND — 0V
- GPIO0 -open
- CH_PD — 5V
- Remove Arduino Reset from Ground.
Execution
Download MPUrequirements.rar file. Start sending data to Serial Monitor of the Arduino using sensor.ino file. As we are using MPU6050, we need some extra libraries. Copy I2Cdev and MPU6050 to your libraries folder in Arduino. Make connections according to the above image. Open MPU6050_DMP6 example from MPU6050 Library. Make this file ready to output YPR data. Remove waiting conditions and extra strings. Typical Output Format >> pitch_tab_roll
Switch to internet and powering
After establishing wireless connection, switch to the hyperlink given on the serial monitor and disconnect the UNO. Now power the UNO through an external source. See the received data on the IP address. You can also customize the data as shown below, by editing MPU6050 code.
Some Important Observations
- Powering: ESP8266–01 is designed for an operational voltage of 3.3v. However, all TTL based serial communication happens at 5V on Arduino board. So you need to down-regulate the 5v voltage on UNO to 3.3v (using LM1117) on the wires starting from the Tx(for serial communication) and 5v(for power) pins of UNO.
- USB to TTL converter with DTR pin can be used as a replacement for Arduino IDE to upload the code on ESP8266 to allow smooth upload of code (without using flash and reset buttons or bare minimum)
4. USB TTL — — → ESP8266 ESP-01 (Connections)
- GND — — — — — →GND
- TX — — — — — — →RX
- RX — — — — — — →TX
- RTS — — — — — — ->RST
- DTR — — — — — — ->GPIO0
5. After obtaining the MPU readings, a Python code can run your favourite game and press the corresponding buttons according to the MPU readings.
ESP8266 – Шаг №1 * WI-FI подключение
Программирование по порядку.
В этом скетче модуль пытается подключится к точке доступа и при не удачной попытке сам становится точкой доступа.
21 мысль о “ESP8266 – Шаг №1 * WI-FI подключение”
Здравствуйте. Пример хороший, но работает не полностью. К точке доступа вифи подключается и отключается (т.к. срабатывает режим энергопотребления, т.к. нет данных для передачи) и в итоге свисток переходит в режим точки доступа
описался – режим энергосбережения
Вот этого не понял. Откуда вы взяли, что срабатывает режим энергосбережения? Что вы видите в терминале при загрузке?
Здравствуйте!
Сейчас в модуле уже другая прошивка, поэтому точно сказать не могу, но расскажу на чем основывается мой вывод: после прошивки устройство в зарегистрированных на роутере я не нашел, вифи работа сам в режиме точки доступа. Просмотрев лог файл роутера (у меня RB 2011) я увидел, что устройство подключилось и само разорвало соединение (у меня esp8266-01 с мегабайтной флеш). Почитав в интернете причины такого поведения я понял, что устройство в виду отсутствия данных на передачу для экономии электроэнергии рвет соединение (такое со многими телефонами и планшетами). Загрузив пример веб сервера устройство работает постоянно
Так и не подскажешь, что там у вас происходит. В терминале, что пишет при загрузке?
Выдает ошибку при компиляции:
WIFI:16: error: ‘StartAPMode’ was not declared in this scope
Используем библиотеку ESP8266WiFi версии 1.0 из папки: C:\Users\…\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\ESP8266WiFi
exit status 1
‘WIFIinit’ was not declared in this scope
Либо не правильно установлена arduino ide и поддержка платы. Либо Путь к файлу скетча содержит русские буквы.
На самом деле у меня та же ситуация.
Сделал прошивку, где использовал метод описный Вами. Тоесть есть веб страница, на которой мы задаем адрес и пароль от сети. Когда сохраняем – устройство перезагружается. При перезагрузке есть 7 попыток через секунду подключится к сети с указаными параметрами. Если не подключилось – тогда создает точу доступа с указаными именем и паролем. Все как бы норм работает. Но например когда я оставляю устройство включенным + комп, который подключен к этому же роутеру, потом иду на работу, то приходя с работы – замечаю очень интересную картину:
При подключении телефона к сети – он подключается не к роутеру, а к ЕСП, и получает маску сети (192,168,4,1). Я неделю потратил на то, чтобы понять почему у меня роутер так плохо работает и нет на нем интернета… Потом понял что просто ЕСП сам раздает вайфай с указаными параметрами (выходит что сеть роутера и сеть модуля имеют одинаковые логин/пароль) а телефон подключается к ЕСП (может сеть у него сильнне, так как лежит на столе). Что выдает в компорт не мониторил… Проблему решил простым удалением этого метода.
П.С. Интересно что при этом ЕСпшой можно было управлять из назначеного ей роутером ИП адреса (192,168,1,101 напимер) и ИП ее сети (192,168,4,1) на разных устройствах. Это было очень даже интересно…
Конечно нельзя делать сети с одинаковыми именами и тем более паролями.
Поставьте два роутера рядом и сделайте у них одинаковые настройки. Что случится?
В алгоритме сделано так, чтобы он создавал сеть только тогда, когда не подключается к вайфаю.
Так почему же он ее созадет?
Если алгоритм мой и не исправлен, то такого быть не может (если только не баг). Единственный случай если вы зададите имя AP такое же как вашего роутера и такой же пароль.
та же беда. как решили проблему?
добрый день
помогите пожалуйта
у меня при компеляции выскакивает такая ошибка
C:\Program Files (x86)\Arduino\libraries\ESP8266WiFi\src/ESP8266WiFiType.h:26:19: fatal error: queue.h: No such file or directory
Не понимаю один момент.
Не подключается к роутеру, делает попытки они заканчиваются включается AP при живом то роутере, перезагружаю ESP жду соединения- нет – перезагружаю. Где то на третий раз подключается нормально. В чем дело не пойму. Дописал даже счетчик что если включается AP чтоб делал рестарт и только на 6 раз включал и оставлял AP ППц не удобно. Менял задержки в цикле подключения аж до 2000мс. Бестолково все. Хэлп ми))
Добрый день!
Очень хорошие уроки огромное спасибо! У меня возникла проблема, я решил подключить ESP8266 модуль RTC с соответствующей библиотекой, вместо функций GetDate() и GetTime() модуля Time написал свои которые берут время и дату из модуля RTC . Всё вроде как хорошо, инициализация проходит успешно на мониторе СОМ порта видно нормальная дата и время, но, вот если из браузера дернуть команду http://192.168.1.55/Time то монитор отображает какую то ерунду типа “37:165:8
” и “85/165/200” да и время на страничке конфигурации идёт с 0:00:00. Что может быть? Если необходимо, могу прислать код.
А подскажите, в чём хитрость поднимать АР функцией типа bool, а не void?
Конечно можно и void иногда требуется поднять флаг и использовать его дальше в коде, но не в этом случае.
Вы везде пишете, что библиотеки “содержатся в пакете”. Где взять этот пакет?
Для платы вы загружаете ядро(пакет) это стандартный набор библиотек для этой платы. То есть вам не нужно искать и устанавливать эту библиотеку дополнительно.
У меня плата UNO R3 + WIFI. Это как UNO с подключённым модулем ES8266.
Подскажите пожалуйста. Почему модуль не меняет имя и пароль у меня, при использовании вашей проги. И каким способом выбирается ip адресс?
Добавить комментарий Отменить ответ
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
Как подключить Wi-Fi модуль ESP-01 к Ардуино
Wi-Fi модуль ESP-01 (ESP8266) Arduino позволяет подключить устройство к безпроводному Интернету или локальной сети. Рассмотрим подключение модуля ESP-01 (ESP8266) к плате Ардуино, программирование модуля с помощью AT команд и подключение Arduino к локальной Wi-Fi сети. Покажем, как можно легко настроить Wi-Fi модуль ESP-01 и проверить наличие связи между модулем и другим устройством.
Wi-Fi модуль ESP-01 распиновка, характеристики
Wi-Fi модуль ESP-01 распиновка, характеристики
Характеристики Wi-Fi модуля ESP 01
- Напряжение питание: 1,8 — 3,6 В
- Ток потребления: 220 мА
- Wi-Fi 802.11 b/g/n
- Режимы WiFi: клиент, точка доступа
- Портов GPIO: 4
- Тактовая частота процессора: 80 МГц
- Оперативная память: 96 КБ
- Размеры: 13 × 21 мм
ESP8266 ESP-01 обеспечивает доступ к сети Wi-Fi. Представляет собой автономный SOC (System On a Chip), которому не нужен микроконтроллер для управления входами и выходами, поскольку ESP-01 действует как маленький компьютер. В зависимости от версии ESP8266, возможно наличие до 9 портов GPIO что позволяет пользователю запрограммировать ESP8266 в качестве микроконтроллера с доступом к Wi-Fi.
Подключение к Ардуино Wi-Fi модуля ESP8266 ESP-01
Для этого занятия потребуется:
- Arduino Uno / Arduino Nano / Arduino Mega;
- Wi-Fi модуль ESP8266 ESP-01;
- макетная плата;
- провода «папа-мама».
Подключение к Ардуино Wi-Fi модуля ESP8266 ESP-01
Модули ESP8266 ESP-01 поставляется с предустановленной прошивкой AT. Можно запрограммировать чип с помощью другой прошивки, но стандартная прошивка AT ESP8266 ESP-01 совместима с Arduino IDE, поэтому мы будем использовать ее в этом обзоре. Для начала с помощью коннекторов подключите модуль Wi-Fi к Arduino, как показано на изображении. И откройте монитор последовательного порта в Arduino IDE.
Внимание! Модуль работает от 3.3 Вольт. Контакт RX подключается к пину 0, а контакт TX к 1 пину Ардуино. Скетч в микроконтроллер Ардуино загружать не нужно. А на мониторе последовательного интерфейса требуется переключиться на скорость 115200 и выбрать режим NL & CR (настройки показаны на картинке ниже). После этого можно отправить на модуль ESP-01 ESP8266 команды АТ для настройки.
Прошивка Wi-Fi модуля ESP-01 ESP8266 от Ардуино
Прошивка Wi-Fi модуля ESP-01 ESP8266 от Ардуино
Для проверки подключения модуля введите в командной строке AT и нажмите ввод, если ESP подключен правильно и соединение надежное, то чип вернет ответ OK
Переключить скорость на 9600 бод можно в любой момент следующей командой
Далее переключим режим работы модуля на клиент командой AT+CWMODE=1. Если требуется проверить, в каком режиме работает Wi-Fi модуль, вы можете ввести команду AT+CWMODE? Это приведет к отображению номера (1, 2 или 3) на мониторе порта, связанного с соответствующим режимом работы чипа ESP-01.
Узнаем какие беспроводные сети есть в зоне действия модуля. После отправки команды AT+CWLAP на мониторе последовательного порта Arduino IDE отобразятся все доступные WiFi сети (обведены оранжевым квадратом на картинке выше).
Подключение модуля ESP8266 ESP-01 к Wi-Fi сети
Подключение модуля ESP8266 ESP-01 к Wi-Fi сети
Теперь можно подключиться к WiFi сети введя в следующей команде имя и пароль доступа к сети (кавычки удалять не надо). Модуль вернет ответ WIFI CONNECTED.
Прежде чем, настроить модуль ESP8266 ESP-01 в качестве сервера, необходимо включить несколько подключений. Введите команду AT+CIPMUX=1, где число связано с типом соединения (0 — одиночное, 1 — множественное подключение).
Следующий этап — запуск локального сервера на порту 80. Первое число в команде AT+CIPSERVER=1,80 используется закрытия режима сервера (0) или открытия сервера (1). Второе число указывает порт, который клиент использует для подключения к нашему серверу (порт 80 используется по умолчанию для протокола HTTP).
Чтобы узнать IP адрес ESP8266 ESP-01 wifi модуля, введите команду
После этого открывайте веб-браузер на устройстве, подключенного к беспроводной сети, и вводите IP-адрес модуля ESP. В этот момент вы получите ответ на мониторе порта Aruino IDE, как показано на изображении выше. Это HTTP-запрос, который компьютер или телефон отправляет на наш сервер. Запрос содержит название и версию браузера, тип операционной системы и другую интересную информацию.
ESP8266 ESP-01 AT-команды: отправка и отображение данных
ESP8266 ESP-01 AT-команды: отправка и отображение данных
Чтобы отправить информацию на браузер клиента с чипа ESP необходимо первым делом сообщить по какому каналу (0) будут отправлены данные клиенту с сервера и какое количество символов будет в сообщении (5).
После ввода команды, в окне монитора порта Arduino IDE появится символ «>» — это означает, что можно вводить символы в командной строке (в нашем примере мы отправили сообщение HELLO). Через пару секунд мы получим ответ SEND OK, это говорит о том, что данные успешно переданы клиенту. Однако в веб-браузере ничего не появится, пока мы не закроем канал на сервере (0) следующей командой:
AT-команды для настройки ESP8266 ESP-01
Все настройки сохраняются в памяти чипа, сбросить настройки можно командой:
Перезагрузка модуля производится командой:
Узнать список активных подключений к модулю:
Заключение. Мы рассмотрели подключение вай фай модуля есп-01 к Arduino IDE, прошивку модуля ESP8266 ESP 01 с помощью AT-команд. С помощью этого устройства мы создали локальный web-сервер на Arduino с подключением к серверу клиента и отправили на web-браузер клиентского устройства сообщение. В следующих обзорах мы продолжим рассматривать модуль ESP-01 есп8266 в различных проектах