Esp8266 сохранение настроек wifi

Обновлено: 05.07.2024

Добрый вечер!!
Как в 8266 определить параметры wi-fi - ssid, password используя Arduino IDE это понятно.
А возможно ли эти параметры (ssid, password) изменить уже в готовом девайсе через web интерфейс?
Т.е. если устройство необходимо подключить к другой точке доступа wi-fi как это сделать?
Спасибо!!

Вячеслав Азаров Учасник Зареєстрований: 2017-05-25 Повідомлень: 1,732

Добрый вечер!!
Как в 8266 определить параметры wi-fi - ssid, password используя Arduino IDE это понятно.
А возможно ли эти параметры (ssid, password) изменить уже в готовом девайсе через web интерфейс?
Т.е. если устройство необходимо подключить к другой точке доступа wi-fi как это сделать?
Спасибо!!

Конечно, но это-же нужно программировать. Переподключите к WI-Fi сети ваш модуль с другими значениями и все. А как вы их хотите вводить вам виднее. Непонятно какой у вас модуль и как используется через AT команды или со встроенным приложением.

Модуль - ESP-12F, скетч для примера типа Blynk.

Вячеслав Азаров Учасник Зареєстрований: 2017-05-25 Повідомлень: 1,732

Модуль - ESP-12F, скетч для примера типа Blynk.

И чем вы собрались мигать у ESP-12F, и где там SSID?

Вячеслав Азаров Учасник Зареєстрований: 2017-05-25 Повідомлень: 1,732

Я им не заниаюсь, немогу подсказать, нужно разбираться. У них свои библиотеки для ESP8266.

я же говорю - не важно, Blynk это пример, пусть будет такой скетч, где изначально ssid = "SPOT", password = "12345678":

Вячеслав Азаров Учасник Зареєстрований: 2017-05-25 Повідомлень: 1,732

// реинициализация с новыми значениями

Извините - не понял, можно полный пример самого простого скетча, где меняется через браузер ssid/passw, и желательно сохраняется, что бы после перезапуска не делать эти операции по новой

Вячеслав Азаров Учасник Зареєстрований: 2017-05-25 Повідомлень: 1,732

Извините - не понял, можно полный пример самого простого скетча, где меняется через браузер ssid/passw, и желательно сохраняется, что бы после перезапуска не делать эти операции по новой

Вячеслав Азаров Учасник Зареєстрований: 2017-05-25 Повідомлень: 1,732

Называйте автоматическое переключение базовых узлов или точек доступа как хотите. На форуме могут подсказать, посоветовать, и т.п. Но писать вам менеджер соединений здесь никто не будет. И еще, вы просто не знаете как здесь могут послать.

Вячеслав Азаров Учасник Зареєстрований: 2017-05-25 Повідомлень: 1,732

Называйте автоматическое переключение базовых узлов или точек доступа как хотите. На форуме могут подсказать, посоветовать, и т.п. Но писать вам менеджер соединений здесь никто не будет. И еще, вы просто не знаете как здесь могут послать.

Что такое стандарты 802.11 r/v/k я знаю и у самого есть сеть построенная c использованием Mikrotik CAPSMAN, но причём тут роуминг к сути вопроса - не понятно.
P.S. Если Вы не в состоянии или не имеете желания помочь или проконсультировать, то посылать почитать кое что, кое где - это бессмысленно, типа иди "погугли", зачем?

Вячеслав Азаров Учасник Зареєстрований: 2017-05-25 Повідомлень: 1,732

. P.S. Если Вы не в состоянии или не имеете желания помочь или проконсультировать, то посылать почитать кое что, кое где - это бессмысленно, типа иди "погугли", зачем?

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

Nefreemen Учасник З Киев Зареєстрований: 2015-12-19 Повідомлень: 716

fotolexa, это должно Вам подойти:

Спасибо!! Дома сейчас модуля чистого нету, завтра попробую на работе - отпишусь.

Сейчас работаю над сохранением и изменением сетевого адреса (DHCP, STATIC)
Если будет интересно пишите поделюсь.

Проверил, спасибо - всё ОК! Сейчас пока занят рутинными делами, но дальнейшее развитие этой темы очень, очень интересно:)

клёвый проект на есп32 с кодом с возможностью менять любые настройки на лету

Nefreemen Учасник З Киев Зареєстрований: 2015-12-19 Повідомлень: 716

Вкладка debug содержит разную полезную информацию, в том числе и реальный размер чипа флеш памяти в строке Flash real size, а так же размер памяти, установленный в прошивающей программе Flash set size, который важен для правильной поддержки OTA.

-Вариант с поддержкой OTA с объемом памяти чипа 1мбайт и выше. Необходимо обязательно выбирать в прошивающей программе размер памяти 1мбайт !! Модули с размером flash памяти 512кб не поддерживаются режимом OTA !!

-Вариант без поддержки OTA.Если размер получаемого файла(одним файлом) более 496кб, то требуется поддержка flash памяти не менее 1 мегабайта !! По сравнению с режимом OTA в этом варианте количество включенных опций можно включить значительно меньше.

Возможность дальнейшего обновления прошивки по OTA доступна только у кого есть активированные ключи !

Если у вас имеются проблемы со стартом прошивки, то обязательно смотрим ниже абзац про решение проблем с прошивкой !

Сборка прошивки в конструкторе

Конструктор позволяет собрать прошивку под свои требования, включив в прошивку только те функции и датчики, которые нужны.

Не имеет смысла включать все опции в прошивке - в этом случае прошивка может не собраться так как не влезет в модуль. Лучше прошивку пересобрать снова, если вы хотите испытать другие опции.

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

При первоначальной сборке прошивки рекомендуется воспользоваться опцией OTA , чтобы следующее обновление было возможно через интернет без использования подключения программатора. С опцией OTA количество опций можно включить больше, но требуется чтобы память на модуле была не меньше 1 мегабайта !!

Кроме OTA так же рекомендуется включать опции NVS настройки 2 и Экспорт/Импорт настроек. NVS настройки 2 решает проблему со смещением(повреждением) настроек при изменении списка или настроек опций при обновлении прошивки.

При сборке прошивки можно выбирать разный SDK. Рекомендуемая версия SDK 1.3.0. В новых версиях замечена проблема с режимом точки доступа (Safe Mode)(. ) , но нет проблем с надежностью связи с роутером. SDK - это набор библиотек и функций от производителя чипа для работы устройства.

После нажатия кнопки "скомпилировать" через некоторое время конструктор прошивки выдаст ссылки для скачивания:

В режиме без OTA можно прошить файлы прошивки одним файлом - тогда все настройки модуля, если они были сбросятся. Если вы обновляете прошивку и не хотите чтобы настройки удалились, то необходимо обновлять прошивку двумя файлами по адресам, которые указаны в имени файла.

В режиме OTA достаточно залить прошивку одним файлом. Но 0x81000.bin может потребоваться, если вы хотите обновить прошивку по кабелю после использования OTA, когда загружен файл user2.bin(отображается в debug) - в этом случае обновление прошивки одним файлом не обновит активную прошивку.

Подключение модуля для прошивки

Для прошивки ESP8266 необходим USB-UART переходник или Arduino. ESP8266 необходимо обеспечить напряжение питания 3.3в и током 200..300мА. Питание 3.3в от ARDUINO или от USB-UART подключать не рекомендуется - модуль может работать не стабильно из-за нехватки тока. Рекомендуется использовать стабилизатор вида 1117.

Подключение ESP8266 к USB-UART: Необходимо подключить общие выводы GND(минус). RX у USB-UART на TX ESP, TX у USB-UART на RX ESP. Подключаем так же источник питания 3.3в.

Подключение ESP8266 к Arduino: Необходимо подключить общие выводы GND(минус).RX у Arduino на RX ESP, TX у Arduino на TX ESP. Подключаем так же источник питания 3.3в. RESET у Arduina необходимо подключить к GND.

На модуле ESP8266 вывод CH_EN необходимо подключить к +3.3в для того, чтобы включить чип.

GPIO 0 на время программирования, перед включением питания необходимо подключить к GND(земля). После успешной прошивки GPIO 0 нужно отключить от GND. Если на модуле выведен GPIO 15, то его необходимо подключить на GND через резистор 10кОм на постоянной основе !!

Если у вас модуль esp8266 имеет уже на борту USB-UART (например Wemos, NodeMCU) , то указанные выше действия проводить не требуется.

Прошивка модуля

Для начала необходимо установить драйвера для вашего USB-UART переходника или Arduinы.

Прошивка через Nodemcu Flasher: Устанавливаем на вкладке Advanced Параметр Flash size в соответствии выбранным размером flash памяти (в байтах). Режим работы flash ставим QIO (при использовании GPIO 9/10 - DIO). Остальные параметры не трогаем. Указываем на вкладке Config путь на файл прошивки с адресом 0x0000. На вкладке Operation выбираем COM порт и жмем кнопку FLASH.

Прошивка через Flash download tool: Действия аналогичны.

Для модулей ESP8285 и модулях с памятью PN25F08B требуется установка режима памяти DOUT !!

Прошивка через esptool. Пример команды esptool.py --port /dev/ttyUSB0 write_flash -fs 8m 0x00000 esp8266.bin . где -fs 8m размер flash памяти модуля в мегабитах !

Скорость COM порта рекомендуется ставить не выше 115200.

Перед первой прошивкой рекомендуется залить в модуль blank по адресу 0x0000 , особенно, если в модуле до этого использовалась какая либо другая прошивка.

Прошивка файла ESP INIT DATA

Рекомендуется прошить в модуль файл esp_init_data_default.bin с калибровками по умолчанию, эти настройки влияют на работу wifi и adc. В большинстве случаев модули работают корректно без этого файла. Последние SDK могут вообще не запускаться без данного файла.

Адрес прошивки файла зависит от установленного размера flash памяти:

0x7c000 для 512 kB.

0xfc000 для 1 MB.

0x3fc000 для 4 MB.

0xffc000 для 16 MB.

Запуск модуля

При первом включении модуль включается в режим safe mode автоматически так как не содержит имени точки доступа. В режиме safe mode в эфире появится точка с именем WiFi-IoT, к которой можно подключится используя смартфон или ноутбук.

В режим safe mode еще можно попасть, замкнув между собой RX и TX и перезапустив модуль или нажать 3 раза подрят (с интервалом нажатия около секунды) кнопку RESET на ESP8266.

Далее возможны два варианта подключения к модулю:

Далее настраиваем подключение на свой роутер на вкладке main веб интерфейса. Необходимо вбить в поля WiFi options данные своей точки доступа. Для подключения к роутеру выбираем режим "Station mode". После нажатия кнопки set ниже появится IP адрес, на который можно заходить внутри своей беспроводной сети.

Далее обновляем страницу и видим внизу IP адрес, на который уже можно будет заходить внутри Вашей локальной сети.

Тут же вы можете установить свой логин и пароль на странички настроек веб интерфейса. Длинна логина и пароля не более 8 символов. Пароль затребуется на все вкладки настроек. А при установленной опции "Full Security" и на все GET запросы управления. В режиме safe mode пароль не запрашивается !

На данной вкладке можно задать имя модулю, которое будет отображаться на главной и в системе flymon, а так же в топике на MQTT сервере.

Указанные выше действия выполнять не требуется, если прошивка была собрана с опцией Настройки по умолчанию , где были заранее прописаны параметры роутера и IP адрес. После успешной прошивки и перезагрузки сразу можно заходить на указанный IP адрес модуля внутри своей wi-fi сети.

Решение проблем с прошивкой

Иногда, после сторонних прошивок или мусора модуль может не запустится и необходимо выполнить дополнительные действия. Необходимо затереть flash память пустым бланком по адресу 0x00000. Далее уже прошиваем саму прошивку снова.

У некоторых пользователей даже после зачистки бланком модуль не стартует или стартует только при установленном режиме 512 кб или 4мб, возможно это связано с низким качеством flash памяти или частичной её несовместимостью с чипом ESP8266. По некоторым сведениям от пользователей помогает замена чипа памяти.

ВАЖНО !! Если модуль не может получить IP адрес. Висит постоянно статус connect , то рекомендуется вписать IP адрес вручную ниже. Для этого необходимо выбрать режим Static IP и вписать IP модуля и IP шлюза(IP роутера). После этого можно заходить на модуль уже внутри сети по IP адресу, который указали в настройках..

Иногда статус connect может висеть, если тип шифрования на роутере включен, который не поддерживается чипом ESP8266.

Решение проблем с компиляцией.

Ошибка компиляции возможна из-за:

1. Превышен размер IRAM области памяти, прошивка не умещается. Требуется уменьшить количество опции или выбрать другой SDK. Чем новее SDK , тем меньше влазит опций. Проблема нехватки памяти не так заметна при использовании RTOS прошивки.

2. Ошибка в коде - маловероятная причина, но возможна после обновления кода или конфликта опций ранее не замеченный. Сообщить об ошибке можно через обратную связь на сайте или в чате Телеграм, указав код ошибки.

Сохранение настроек в файл

Этот метод является устаревшим, рекомендуется воспользоваться опцией Экспорт/Импорт настроек.

Мной была заказана самая простая плата с 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)

После обновления до версии 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
Пример:

Настройка режима 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.

Программирование по порядку.
В этом скетче, записываем и считываем данные настройки модуля в файл.

Ручками и рисовали.

Как сделать свой фиксированный IP при связи с роутером? Чтобы самому его задавать?

Тысячу раз подумайте прежде чем делать фиксированный IP. Если он вам действительно нужен и без него никуда. Заставьте роутер выдавать плате постоянный IP. Если это не решит проблемы, только тогда добавляйте это в код и на веб страницу.

Тоже интересно, в чем проблема может быть кроме конфликта ip адресов?

Здравствуйте .
В 7 уроке в web интерфейсе пароль wifi не могу назначить более 15 :символов.
В чем может быть подвох .

ребята возникла проблема при записи в файловою систему(пример из сайта), пробовал на разных версиях arduino ide(1.6.6 и 1.6.8) и на двух пк(на одном чистая система виндовс 7) все время одна и та жэ ошибка
Вот что видает IDE:

Установите старую библиотеку ESP8266FS-0.1.3zip
С более поздней ESP8266FS-0.3.0zip выдает такие же
ошибки . Также лучше установить Arduino IDE 1.6.5-r5 .
У меня прошивается все скорости до 921600 .
И не парьте себе мозг.
В более поздних IDE нужно будет соблюдать синтаксис C++.

Все и так работает с более поздними версиями. Только одно требование. Не иметь в путях кириллицу.

Напишите условия когда происходит сбой. Какие должны быть параметры в полях чтоб увидеть эту ошибку.

Первое что бы я сделал это не смешивал основные настройки модуля и данные которые вы хотите сохранять. Все это нужно делать в разных файлах. Процедура сохранения данных должна быть другой. И это зависит от конкретной задачи.

Думаю для радиолюбительства не принципиально, где хранить настройки и нужные переменные.
Вопрос только работает ли функция или нет.
Сейчас идут 4-е сутки онлайн, проблем не выявлено.

Здравствуйте, возникла вот такая проблема. При открытии редактора, страница открывается, но на ней ничего нет, кроме верхней заливки и вертикальной полосы, отделяющей файлы от кода. В чём может быть проблема( делал всё, как сказано)?

Скорее всего это связано с тем, что у вас нет интернет соединения. Редактор использует внешние файлы.

Признаться, при нескольких попытках еще раз повторить подобный эффект, положительного результата достигнуто не было.

Возможно. Нужно в прямую задать режим работы ESP в вашем скеетче. Скорее всего Вы явно не указываете режим. И ESP берет свои последнии настройки из flash.

Посмотрел Ваше видео, попробовал, все работает, спасибо за труд, только вот где продолжение? И если не тяжело, пожалуйста укажите в каком порядке смотреть по мере поступления информации, а то я уже запутался.

Интересно посмотреть про время и прошивку по воздуху

Давненько не было видео. Мужики, поддержим автора финансами. Я 100 рублей кинул.

Прошло две недели. Серега, кинь еще 100 рублей. 😉

Все скетчи проверены для версий ядра 2.3.0. Arduino IDE 1.6.13

Всего лишь откатить версию либы ArduinoJson до 5.13.1 и все собирается.

И на ArduinoJson 5.13.3 тоже работает

У вас остались старые версии скетча? попробуйте загрузить ту, которая до изменений. Если она пойдет без ошибок, значит проблема в скетче. Возможно вы вставили код криво и где-вышла лишняя фигурная скобка (функция осталась не закрытой или наоборот закрылась раньше времени), у меня такое бывало.

Уважаемый админ! Спасибо за примеры кода, я оказалось весьма просто и понятно.

Добрый день. Я столкнулся с проблемой записи данных в config.json. После первой попытки записи файл пропадает. После перезагрузке ESP файл перезаписывается но не чего не считывается. При попытки зайти на него через браузер там крякозябры. Пробывал на голом скетче записать и считать в Serial хоть что нибуть, тоже крякозябры или квадратики. Может проблема в кодировке. Что делать, подскажите пожалуйста.

Неплохо было бы внедрить параметр WiFi.persistent(false) для увеличения срока жизни памяти flash esp.

Добавить комментарий Отменить ответ

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Функции библиотеки WiFi ESP8266 очень схожи с функциями библиотеки для обычного WiFi шилда.

  • WiFi . mode ( m ) : выбрать режим WIFI_AP (точка доступа), WIFI_STA (клиент), или WIFI_AP_STA (оба режима одновременно).
  • WiFi . softAP ( ssid ) создает открытую точку доступа
  • WiFi . softAP ( ssid , password ) создает точку доступа с WPA2-PSK шифрованием, пароль должен быть не менее 8 символов
  • WiFi . macAddress ( mac ) позволяет получить MAC адрес в режиме клиента
  • WiFi . softAPmacAddress ( mac ) позволяет получить MAC адрес в режиме точки доступа
  • WiFi . localIP ( ) позволяет получить IP адрес в режиме клиента
  • WiFi . softAPIP ( ) позволяет получить IP адрес в режиме точки доступа
  • WiFi . RSSI ( ) пока не реализована
  • WiFi . printDiag ( Serial ) ; выводит диагностическую информацию

Класс WiFiUDP поддерживает прием и передачу multicast пакетов в режиме клиента. Для передачи multicast пакета используйте вместо udp . beginPacket ( addr , port ) функцию udp . beginPacketMulticast ( addr , port , WiFi . localIP ( ) ) . Когда вы ожидаете multicast пакеты, используйте вместо udp . begin ( port ) функцию udp . beginMulticast ( WiFi . localIP ( ) , multicast_ip_addr , port ) . Вы можете использовать udp . destinationIP ( ) для определения того, был ли пакет отправлен на multicast адрес или предназначался именно вам. Multicast функции не поддерживаются в режиме точки доступа.

WiFiServer , WiFiClient , и WiFiUDP работаю точно так же, как и с библиотекой обычного WiFi шилда. Четыре примера идет в комплекте с этой библиотекой.

Тикер

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

В настоящее время не рекомендуется блокировать операции ввода-вывода (сеть, последовательный порт, файловые операции) в callback функциях тикера. Вместо блокирования устанавливайте флаг в callback функциях и проверяйте этот флаг в основном цикле.

EEPROM

Эта библиотека немного отличается от стандартной Arduino EEPROM. Необходимо вызвать функцию EEPROM . begin ( size ) каждый раз перед началом чтения или записи, размер (указывается в байтах) соответствует размеру данных, которые вы намереваетесь использовать в EEPROM. Размер данных должен быть в диапазоне от 4 до 4096 байт.

Функция EEPROM . write не производит запись данных во флеш память немедленно, вы должны использовать функцию EEPROM . commit ( ) каждый раз, когда вы хотите сохранить данные в память. Функция EEPROM . end ( ) тоже производит запись данных, а также освобождает оперативную память от данных, запись которых произведена. Библиотека EEPROM использует один сектор во флеш памяти, начиная с адреса 0x7b000 для хранения данных. В поставку включено три примера работы с EEPROM.

I2C (Библиотека Wire)

Реализован только режим ведущего, частота ориентировочно до 450 кГц. Перед использованием шины I2C, нужно выбрать пины SDA и SCL путем вызова функции Wire . pins ( int sda , int scl ) , например Wire . pins ( 0 , 2 ) для модуля ESP-01. Для других модулей пины по умолчанию 4(SDA) и 5(SCL).

Библиотека SPI поддерживает весь Arduino SPI API, включая транзакции, в том числе фазу синхронизации (CPHA). Clock polarity (CPOL) пока не поддерживается (SPI_MODE2 и SPI_MODE3 не работают).

ESP8266 API

Поддержка функций, специфичных для ESP8266 (режим глубокого сна и сторожевой таймер), реализована в объекте ESP . Функция ESP . deepSleep ( microseconds , mode ) переводит модуль в режим глубокого сна. Параметр mode может принимать значения: WAKE_DEFAULT , WAKE_RFCAL , WAKE_NO_RFCAL , WAKE_RF_DISABLED . GPIO16 должен быть соединен с RESET для выхода из режима глубокого сна.

Функции ESP . wdtEnable ( ) , ESP . wdtDisable ( ) , и ESP . wdtFeed ( ) управляют сторожевым таймером.

ESP . reset ( ) перезагружает модуль

ESP . getFreeHeap ( ) возвращает размер свободной памяти

ESP . getFreeHeap ( ) возвращает размер свободной памяти

ESP . getChipId ( ) возвращает ESP8266 chip IDE, int 32bit

ESP . getFlashChipId ( ) возвращает flash chip ID, int 32bit

ESP . getFlashChipSize ( ) возвращает размер флеш памяти в байтах, так, как его определяет SDK (может быть меньше реального размера).

ESP . getFlashChipSpeed ( void ) возвращает частоту флеш памяти, в Гц.

ESP . getCycleCount ( ) возвращает количество циклов CPU с момента старта, unsigned 32-bit. Может быть полезна для точного тайминга очень коротких операций

Библиотека OneWire

Библиотека OneWire была адаптирована для ESP8266 (внесены изменения в OneWire.h) Если у вас установлена библиотека OneWire в папку Arduino/libraries, то будет использоваться именно она, а не из комплекта поставки.

mDNS библиотека ESP8266mDNS

Библиотека позволяет реализовать в вашей программе ответ на мультикастовые DNS запросы для локальной зоны, например “esp8266.local”. В настоящее время поддерживается только одна зона. Позволяет обращаться к WEB серверу ESP8266 по имени, а не только по IP адресу. Дополнительную информацию вы можете найти в прилагаемом примере и в файле readme данной библиотеки.

Библиотека Servo

Библиотека позволяет управлять сервомоторами. Поддерживает до 24 сервоприводов на любых доступных GPIO. По умолчанию первые 12 сервоприводов будут использовать Timer0 и будут независимы от любых других процессов. Следующие 12 сервоприводов будут использовать Timer1 и будут разделять ресурсы с другими функциями, использующими Timer1. Большинство сервоприводов будут работать с управляющим сигналом ESP8266 3,3в, но не смогут работать на напряжении 3,3в и потребуют отдельный источник питания. Не забудьте соединить общий провод GND этого источника с GND ESP8266

Другие библиотеки, не включенные в поставку Arduino IDE

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

Установка Arduino IDE через Boards Manager

Схема подключения ESP8266

Оптимальное подключение ESP8266 для Arduino IDE

Оптимальное подключение ESP8266 для Arduino IDE

Оптимальное подключение ESP8266

Подключение ESP8266 Примечание USB-TTL
VCC ESP8266 подключайте к внешнему источнику питания >300мА, 3,3V
GND все контакты GND должны быть соединены вместе: ESP8266, USB-TTL и источника питания GND
TX (UTXD) RX
RX (URXD) TX
GPIO0 подтягивающий к питанию резистор 10k DTR (если на вашем USB-TTL не разведен пин DTR, то вам придется вручную переключать GPIO0 на землю для перевода ESP8266 в режим прошивки)
RESET (RSBT, REST) подтягивающий к питанию резистор 10k, также можете добавить кнопку, соединяющую RESET и GND для ручного сброса модуля RTS (если на вашем USB-TTL не разведен пин RTS, то вам придется вручную перезагружать модуль )
CH_PD (CH_EN) подтягивающий к питанию резистор 10k
GPIO15 (MTDO) подтягивающий к земле резистор 10k
(для тех модулей, где выведен пин GPIO15)
GPIO2 подтягивающий к питанию резистор 10k
(на схеме не показан, но рекомендуется для увеличения стабильности)
GPIO16 для успешного выхода из режима Deep Sleep необходимо соединить пины ESP8266 GPIO16 и RESET через резистор 470 Ом (на схеме не показан)

Примечания.

1. Не на всех модулях выведены все пины. Перед приобретением модуля ознакомьтесь с видами модулей и их распиновкой.

2. Если на вашем USB-TTL конвертере выведены пины CTS и DSR – для автозагрузки прошивки они вам не помогут, т.к. работают только на вход.

3. Для стабильной работы ESP8266 требуется источник стабилизированного питания 3,3 вольт, ток более 250 миллиампер. Использование питания от USB-TTL конвертера может привести к нестабильности в работе.

Минимальное подключение ESP8266

Минимальное подключение ESP8266

Минимальное подключение ESP8266 (повышенная стабильность)

Минимальное подключение ESP8266 (повышенная стабильность)

Более подробно, со всеми деталями, о подключении ESP8266 вы можете прочитать в нашей статье ESP8266 – подключение и обновление прошивки

Arduino IDE для ESP8266: быстрый старт

1. Подключить USB-TTL к USB

2. Подключить ESP8266 к USB-TTL как обычно. Если вы подключили ESP8266 по схеме без поддержки автозагрузки прошивки (не подключены DTR и RTS), то вручную соедините GPIO0 с землей, передерните питание модуля – все готово для прошивки

3. Запускаем Arduino IDE

4. В меню ИнструментыПлатаGeneric ESP8266 board (в самом низу)

5. В меню Инструменты выбираем порт, к которому подключен наш USB-TTL

6. В меню Инструменты – выбираете частоту, размер флеш памяти вашего модуля

7. В меню Файл – Примеры (Образцы) – ESP8266WiFi – WiFiWebServer

8. В скетче заполняете SSID и пароль вашей WiFi сети

9. Жмем кнопку компиляции и загрузки скетча

10. Ждем окончании процесса прошивки. После прошивки, если модуль подключен по схеме без поддержки автопрошивки, отсоедините GPIO0 от земли и передерните питание модуля без отключения USB-TTL от питания

11. В меню Инструменты – Монитор последовательного порта

12. Выбираем скорость 115200

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

14. Когда модуль подключится к сети, то появятся надписи в мониторе “WiFi connected” и “Server started”

15. Ниже будет IP адрес вашего модуля ESP8266, например 192.168.1.248

17. Смотрите монитор последовательно порта и если к ESP8266 к GPIO2 у вас подключен светодиод (через резистор, разумеется), то он включится.

Автором этого проекта адаптации Arduino IDE для ESP8266 является наш соотечественник из Санкт-Петербурга Иван Грохотков.

Задать вопросы автору проекта Ивану Грохоткову aka igrr или сообщить об ошибке в Arduino IDE для ESP8266 можно в специальном разделе на нашем форуме.

Читайте также: