Wifi iot esp8266 забыл пароль
Функции библиотеки 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
Подключение 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 – подключение и обновление прошивки
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 можно в специальном разделе на нашем форуме.
Добрый вечер!!
Как в 8266 определить параметры wi-fi - ssid, password используя Arduino IDE это понятно.
А возможно ли эти параметры (ssid, password) изменить уже в готовом девайсе через web интерфейс?
Т.е. если устройство необходимо подключить к другой точке доступа wi-fi как это сделать?
Спасибо!!
Добрый вечер!!
Как в 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. Если Вы не в состоянии или не имеете желания помочь или проконсультировать, то посылать почитать кое что, кое где - это бессмысленно, типа иди "погугли", зачем?
. P.S. Если Вы не в состоянии или не имеете желания помочь или проконсультировать, то посылать почитать кое что, кое где - это бессмысленно, типа иди "погугли", зачем?
Как вам нужно помочь, написать вам программу или научить как это сделать? Просто, изменив параметры подключения из браузера вы рискуете потерять устройство, в случае ошибки.
Nefreemen Учасник З Киев Зареєстрований: 2015-12-19 Повідомлень: 716fotolexa, это должно Вам подойти:
Спасибо!! Дома сейчас модуля чистого нету, завтра попробую на работе - отпишусь.
Сейчас работаю над сохранением и изменением сетевого адреса (DHCP, STATIC)
Если будет интересно пишите поделюсь.
Проверил, спасибо - всё ОК! Сейчас пока занят рутинными делами, но дальнейшее развитие этой темы очень, очень интересно:)
клёвый проект на есп32 с кодом с возможностью менять любые настройки на лету
Nefreemen Учасник З Киев Зареєстрований: 2015-12-19 Повідомлень: 716В этом руководстве мы создадим на базе ESP8266 веб-сервер, защищенный паролем. Доступ к нему можно будет получить с любого устройства, имеющего браузер. Это значит, что вы сможете управлять GPIO-контактами ESP8266 с ноутбука, смартфона, планшета и т.д.
Наш веб-сервер будет управлять двумя светодиодами. Но это лишь демонстрационный проект, и потом эти светодиоды можно будет заменить на устройство PowerSwitch Tail (это модуль управления питанием) или реле, и с их помощью управлять каким угодно электронным устройством.
Необходимое оборудование
- Плата ESP8266 - 1шт.; - 2шт.; 470 Ом- 2 шт. - 1шт.;
- Провода перемычки.
Как работает код
В самом начале скетча мы подключаем библиотеку «ESP8266WiFi», а в следующих двух строчках задаем SSID и пароль для своей WiFi-сети, чтобы ESP8266 мог к ней подключиться.
Далее создаем объект веб-сервера и задаем ему порт «8888»:
Создаем переменную «header» для хранения заголовка ответа на запрос, переменные «gpio5_state» и «gpio4_state» для хранения текущего состояния этих GPIO-контактов, а также переменные «gpio5_pin» и «gpio4_pin» для хранения номеров контактов GPIO4 и GPIO5.
Далее создаем блок setup(), код в котором будет запущен только раз – при запуске ESP8266.
Запускаем последовательную коммуникацию на скорости 115200 бод (для отладки). Переключаем оба GPIO-контакта в режим вывода данных (OUTPUT) и задаем им значение «LOW».
В следующем фрагменте кода запускаем подключение к WiFi-сети, ждем успешного подключения и печатаем в мониторе порта IDE Arduino IP-адрес ESP8266.
Блок loop() отвечает за то, что будет происходить, когда новый клиент установит соединение с веб-сервером. То есть код в loop() будет постоянно прослушивать новых клиентов. Соответственно, если к веб-серверу подключится новый клиент, он начнет подключаться к нему.
Теперь давайте добавим в веб-сервер механизм аутентификации, чтобы сделать его более безопасным. После этого любому, кто попытается получить доступ к веб-серверу, придется ввести имя пользователя и пароль.
По умолчанию именем пользователя будет «user», а паролем – «pass». Чуть ниже я расскажу о том, как их поменять. Если пользователь введет правильные имя пользователя и пароль, то получит доступ к веб-странице для управления GPIO-контактами ESP8266.
В следующем фрагменте кода проверяется, на какую кнопку веб-страницы нажал пользователь. По сути, в нем проверяется, какой вы хотите открыть URL.
Более подробно о Bootstrap можно почитать по этой ссылке.
На веб-странице будет 4 кнопки для включения/выключения (переключения между состояниями «HIGH» и «LOW») двух светодиодов, подключенных к контактам GPIO5 и GPIO4.
Кнопки – это HTML-теги <a href=””></a> с CSS-классом, который придает им вид кнопки. Когда вы нажимаете на кнопку, вам открывается другая страница с URL, соответствующим этой кнопке. Именно так ESP8266 и узнает, что ей нужно сделать (т.е. включить или выключить светодиод, и какой именно).
Строчки кода в конце скетча очищают переменную «header», завершают цикл loop() и завершают подключение.
Как задать собственные имя пользователя и пароль
В скетче, который мы разобрали выше, именем пользователя является «user», а паролем – «pass». Уверен, вы захотите задать вместо них собственные имя пользователя и пароль. Пройдите по этой ссылке. В первом поле впишите следующее:
Примечание: Обратите внимание, что между именем пользователя и паролем нужно вписать «:».
В моем случае это «user:pass».
Затем нажмите на зеленую кнопку «Encode» – это сгенерирует строку в формате Base64. В моем случае это «dXNlcjpwYXNz».
Скопируйте ее и вставьте в это место скетча:
Совет: Эта 80-ая строчка скетча, и в ней также присутствует оператор if().
Загружаем код
Подключите ESP8266 к ПК и откройте IDE Arduino. Кликните по «Инструменты» > «Плата» (Tools > Board) и выберите подключенную плату.
Выберите COM-порт, к которому подключена ваша плата.
Проверив все настройки, нажмите на кнопку «Загрузка» (Upload):
Копируем IP-адрес ESP8266
Загрузив веб-серверный скетч на ESP8266, кликните в IDE Arduino на «Инструменты» > «Монитор порта» (Tools > Serial Monitor). Монитор порта – это окно, где ESP8266, загрузившись, напечатает свой IP-адрес.
Мой IP-адрес – это «192.168.1.22» (см. на скриншоте ниже). Ваш IP-адрес, скорее всего, будет другим. Сохраните его, т.к. позднее вы с его помощью перейдете на страницу веб-сервера.
Важно: Выставьте скорость монитора порта на 115200 бод, иначе вы просто ничего не увидите.
Проблема – В мониторе порта не печатается IP-адрес
Если у вас возникла такая проблема, можно попробовать сделать следующее:
- Оставьте монитор порта открытым; (или FTDI-программатор) должен оставаться подключенным к ПК;
- Перезапустите ESP-12E, нажав на встроенную в него кнопку.
Спустя секунду ESP8266 должна напечатать в мониторе порта свой IP-адрес.
Устанавливаем программу для сканирования IP-адресов
Если IP-адрес в мониторе порта по-прежнему не появляется, то вам нужно будет установить на свой ПК программу для сканирования IP-адресов. Она будет искать все девайсы в вашей сети.
- Загрузите ее (это бесплатно). Можете выбрать между Advanced IP Scanner (Windows) и Angry IP Scanner (MAC OS X, Windows или Linux);
- Установите программу (в это время ESP8266 должен быть включен, и на нем должен работать скетч, написанный нами выше);
- Откройте программу для сканирования IP-адресов и нажмите на кнопку «Сканировать» (Scan);
Дайте процессу завершиться (это должно занять несколько минут).
Заходим на веб-сервер
Перед заходом на веб-сервер нужно сделать следующее:
После этого в браузере должно выскочить окно с запросом ввести имя пользователя и пароль:
- Введите имя пользователя и пароль
- Залогиньтесь
В результате в браузере должна загрузиться примерно такая страница:
Примечание: Чтобы получить доступ к веб-серверу, устройство с браузером должно быть подключено к тому же роутеру, что и ESP8266.
Схема
Загрузив код на ESP8266, подключите компоненты друг к другу, как показано на схеме ниже (для подключения светодиодов можно воспользоваться резисторами номиналом между 270 Ом и 470 Ом).
А теперь поговорим о прошивке микропроцессора ESP8266 для получения всех вкусностей.
Это не страшно и не сложно )))
Огромное достоинство этой прошивки - не надо уметь программировать, то есть абсолютно. Собираем из кубиков нужные задачи и все готово. А как это работает уже и не важно )))
Таже отмечу замечательную возможность перепрограммирования системы "по воздуху", то бишь через WiFi/ Первый раз прошиваем по проводу, а потом все легко и просто летает само.
Как писал рядом прошиваемся либо через конвертер usb либо напрямую подключаем плату кабелем.
Для начала скачаем программу прошивальщик.
Их много есть, но как по мне - так это nodemcu-flasher
Скачиваете нужную вам версию (Win32 или Win64) и устанавливаете на компьютер.
Вот как это выглядит. Тут даже чайнику становиться понятно, что и как. Ставим галочки около тех функций которые нам нужны на модуле и создаем прошивку, которую можно сохранить , изменить и скачать. Около каждого элемента есть подсказка, желательно, ооочень желательно, их читать, чтобы потом "не было мучительно больно за бесславно прожитые часы" в поисках ошибок и непоняток.
Теперь я остановлюсь на сложных моментах :
Главное - не пожалейте 100 рублей и купите прошивку официально, упростите себе жизнь на порядок. Даже если вас устраивают все бесплатные опции, через неделю захочется что то добавить и будут танцы с бубнами .
1. Профилей прошивок можно создать много и каждому присвоить собственное имя. Следует понимать, что одну прошивку можно привязать к любому числу модулей ESP8266. но каждому конкретному модулю соответствует только одна конкретная прошивка. Если изменить прошивку в конструкторе и не обновить ее в модуле, то в дальнейшем это будут разные вещи. В самом модуле всегда можно посмотреть имя и номер загруженной прошивки (ip_adr/debug - > OTA Profile name: Бутерброд).
2. Не надо выбирать самое свежее SDK (Software Development Kit или набор программ разработчика самого модуля ESP8266), пользуйтесь рекомендованным. Оно проверенное и надежное, другое можно использовать когда точно знаешь чего хочешь.
3. Ни в коем случае не стремитесь включить все функции - не пройдет. Проблема не в прошивке, а в модуле. У него просто не хватит памяти на всё. На модуле надо прошивать ТОЛЬКО то что будет использоваться.
4. Читайте WiKi ! Там практически все описано и показано, метод научного втыка тут врядли сработает.
5. При первоначальной сборке прошивки прошивайте опцию OTA , чтобы следующее обновление было возможно без использования проводов и подключения программатора.
6. Внимание! При обновлении по воздуху методом ОТА закачивается последняя скомпилированнная в вашем конструкторе прошивка, она может быть и от другого модуля, будьте внимательны. При обновлении по воздуху методом Auto ОТА закачивается обновленная прошивка для данного конкретного модуля.
Вот теперь настало время прочитать основную инструкцию и прошить свой модуль.
"Ё мое, что же я наделал . "
Да вот, как то так, приблизительно.
Про основные настройки в самом модуле можно посмотреть тут.
Практически все данные которые есть в модуле можно передавать в свою базу данных организованную на сервере на Raspberry Pi или другом аналогичном компьютере и смотреть все это в виде красивых картинок.
Подробнее о настройке Raspberry смотрите в тут и тут.
В настройки ESP необходимо добавить опцию TCP/UDP Клиент
Читайте также: