Начало работы с esp8266 nodemcu v3 lua с wifi

Troubleshooting

If you try to upload a new sketch to your ESP8266 and you get this error message “esptool.FatalError: Failed to connect to ESP8266: Timed out waiting for packet header“. It means that your ESP8266 is not in flashing/uploading mode.

Having the right board name and COM port selected, follow these steps:

  • Hold-down the “BOOT/FLASH” button in your ESP8266 development board
  • Press the “Upload” button in the Arduino IDE to upload your sketch:
  • When you see the  “Connecting….” message in your Arduino IDE, release the finger from the “BOOT/FLASH” button
  • After that, you should see the “Done uploading” message

Your ESP8266 should have the new sketch running. Press the “ENABLE/RESET” button to restart the ESP8266 and run the new uploaded sketch.

Оптимальное подключение 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 (повышенная стабильность)

Sending a message

boolean send(char channel, char * message) sends a message — alias for send(char channel, char * message, true)

  • channel Set to SERVER if you want to send to server. If we are the server, the value can be between ‘1’-‘3’
  • message a character array, max 25 characters long.
  • return true if the message was sent
  • Example:

boolean send(char channel, char * message, boolean sendNow) sends or queues a message for later sending

  • channel Set to SERVER if you want to send to server. If we are the server, the value can be between ‘1’-‘3’
  • message a character array, max 25 characters long.
  • sendNow if false, the message is appended to a buffer, if true the message is sent right away
  • return true if the message was sent
  • Example:

endSendWithNewline(bool endSendWithNewline) by default all messages are sent with newline and carrage return (println), you can disable this

  • endSendWithNewline sent messages with print instead of println
  • Example:

Install ESP8266 Add-on in Arduino IDE

To install the ESP8266 board in your Arduino IDE, follow these next instructions:

  1. In your Arduino IDE, go to File> Preferences

  2. Enter http://arduino.esp8266.com/stable/package_esp8266com_index.json into the “Additional Boards Manager URLs” field as shown in the figure below. Then, click the “OK” button:

    Note: if you already have the ESP32 boards URL, you can separate the URLs with a comma as follows:

  3. Open the Boards Manager. Go to Tools > Board > Boards Manager…

  4. Search for ESP8266 and press install button for the “ESP8266 by ESP8266 Community“:

  5. That’s it. It should be installed after a few seconds.

Библиотека Servo

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

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

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

  • arduinoWebSockets — WebSocket сервер и клиент для esp8266 (RFC6455)
  • aREST REST API handler библиотека, позволяет управлять GPIO через http запросы вида http://192.168.1.101/digital/6/1
  • Blynk — легкий в освоении IoT фреймворк (страница на Kickstarter). Статья на нашем сайте об этой библиотеке и мобильном приложении ESP8266 – Управляем со смартфона через Blynk
  • RTC — библиотека for Ds1307 & Ds3231 для esp8266
  • Souliss, Smart Home — фреймворк для Умного Дома, построенный на Arduino, Android и OpenHAB

How to use

  1. Connect your ESP8266 to a USB power source (you can power it with your phone using an OTG cable)

  2. Scan for Wi-Fi networks on your device and connect to (no password by default).

  3. Once connected, open up your browser and go to

  4. Click on ACCEPT to accept the Terms & Conditions

  5. Specify a SSID and password for Wi-PWN to use and click on CONTINUE

  6. Reconnect to the new network using the SSID & Password you specified in the previous step.

  7. Go back to your browser and the page should reload (open again if the page doesn’t reload)

  8. Click on the Scan button to scan for Wi-Fi networksNote: You may have to reconnect to the Wi-Fi network.

  9. Select the WiFi network(s) you want to perform the attack on. Once finished, click on the Attack button

  10. Select the attack you wish to perform

Network (Core, Library/ESP8266WiFi)

  • lwip2: no more git sub-sub-module deps, faster checksum, backlog limitation and other fixes ()
  • Fix/enable UDP packet reassembly (, )
  • SNTP: backport espressif sntp api for lwip2 ()
  • TCP: fixes backlog limit handling, and allows ephemeral TCP connections ()
  • lwip2 update: stop dhcp when interface goes down ()
  • Fix UDP send to IPv6 link local addresses ()
  • Fix TCP send to IPv6 link local addresses ()
  • Updating _port to really used port and made _port accessible ()
  • Make DNS resolution order selectable during runtime or compile time ()
  • WiFi: ARP gratuitous API for wifi station mode (, )
  • fix null pointer call from WiFiClient::localIP() to IPAddress ()

Core

  • Const-correctness for MD5Builder ()
  • detect division by zero in map() to prevent exceptions ()
  • digitalWrite and digitalRead cancel analogWrite enabled on a pin ()
  • Fix incorrect usage of memset() in PWM code which leads to incomplete initialization of struct
  • Fix libb64 decoder ()
  • Force core_version to be added to compiled binary
  • Prevent divide by zero error causing tone() to crash ()
  • progmem: replace C version of pgm_read_{word,byte} with assembly
  • SPIFFS: fix unaligned read in HAL ()
  • Add Arduino File standard seek call
  • Add support to Print::printf for printing from flash ()
  • Allow global object instances be switched off with defines ()
  • Base64: add option to disable any newlines in output ()
  • Enable floating point formatting in sprintf/sscanf ()
  • Updated String library to use C++11 iterators. ()
  • Use libc from newlib ()
  • move libstdc++ to flash ()
  • Link ESP-NOW library

Структура проекта

Файл Назначение
WaterpoolManager.ino Объявление основных переменных и констант. Инициализация. Главный цикл.
HeaterMainLogic.ino Основная логика управления реле котла (по температурам) и вспомогательными реле.
Sensors.ino Считывание данных сенсоров
Settings.ino Настройки устройства, сохранение их в флеш-памяти контроллера
LCD.ino Вывод информации на LCD
ClockTimer.ino Считывание показаний часов RTC, или симуляция часов
Relays.ino Управление включением/выключением реле
ButtonLogic.ino Логика реакции на состояния аппаратных кнопок
ReadButtonStates.ino Считывание состояний аппаратных кнопок
EEPROM_Logging.ino Логгирование данных датчиков в EEPROM
WebServer.ino Встроенный веб-сервер для управления устройством и отображением состояний
WebPages В этой папке хранятся страницы веб-сервера
index.h Основная страница отображения состояния устройства. Идет считывание текущего состояния с помощью вызова ajax. Refresh каждые 5 секунд.
loggraph.h Выводит лог данных датчиков и состояний реле в виде графика. Используется библиотека jqPlot – все построение происходит на стороне клиента. Запрос к контроллеру идет лишь на бинарный файл – копии данных из EEPROM.
logtable.h тоже, но в виде таблицы
settings.h Управление настройками устройства: установка пределов по температурам, потоку воды, периодичности логгирования данных
time.h Установка текущего времени
Библиотеки
EepromLogger.cpp Библиотека записи логов во флеш
EepromLogger.h
crc8.cpp Подсчет 8-битного CRC для библиотеки
crc8.h
TimeSpan.cpp Структура для управления отрезками времени
TimeSpan.h

Шаг 7. Подключитесь с мобильного приложения.

Установите мобильное приложение на ваш смартфон/планшет.

Примечание: В приложении для iOS перед подключением необходимо вручную подключить смартфон к точке доступа, используя системные настройки операционной системы. Приложение для Android умеет самостоятельно переключить систему на точку доступа устройства и вернуть предыдущую точку доступа после отключения.

В приложении нажмите кнопку нового подключения «+» в верхней панели. В открывшемся окне выберите подключение «WiFi точка доступа».

В приложении для iOS предварительно зайдите в системные настройки и подключитесь к точке доступа «RemoteXY» с паролем «12345678». Подключенная точка доступа должна отображаться в открывшемся окне. Нажмите кнопку «Connect».

В приложении для Android включите WiFi и нажмите кнопку обновления списка доступных точек доступа. Выберите точку доступа RemoteXY. В открывшемся окне введите пароль точки доступа «12345678», нажмите кнопку «Подключиться».

Other Libraries

  • ESP8266mDNS: support for compressed DNS messages (, , )
  • ESP8266mDNS: return from addServiceTxt ()
  • ESP8266mDNS: clear previous result when is called (, )
  • SPISlave: add method ()
  • ESP8266WebServer: fix WebServerSecure streamFile() ()
  • SPI: -ify input buffers ()
  • SPI: Support Arduino API’s , optimized ()
  • I2C: improve bus recovery procedure ()
  • I2C: add support for 50kHz clock ()
  • I2C: clock frequency set by now survives re-initialization ()
  • Add ESP_EEPROM to list of ESP libraries ()
  • SoftwareSerial: update to version to 3.4.1 ()
  • ESP8266HTTPUpdate: make timeout configurable ()
  • ESP8266HTTPUpdateServer: allow to update credentials after setup is performed ()
  • ESP8266SSDP: add method ()
  • ESP8266WiFiMesh: new version ()

Требования к питанию

Поскольку диапазон рабочего напряжения ESP8266 составляет от 3 В до 3,6 В, данная плата для поддержания постоянного напряжения на уровне 3,3 В поставляется с LDO стабилизатором напряжения. Он может надежно обеспечивать ток до 600 мА, чего должно быть более чем достаточно, поскольку ESP8266 во время радиочастотных передач потребляет до 80 мА. Выход стабилизатора также выводится на выводы на сторонах платы и обозначен как 3V3. Эти выводы можно использовать для подачи питания на внешние компоненты.

Требования к питанию

  • Рабочее напряжение: от 2,5 до 3,6 В
  • Встроенный стабилизатор: 3,3 В, 600 мА
  • Рабочий ток: 80 мА
  • Потребление в спящем режиме: 20 мкА

Рисунок 2 – Элементы питания ESP8266 NodeMCU

Питание к ESP8266 NodeMCU подается через встроенный USB-разъем MicroB. В качестве альтернативы, если у вас есть стабилизированный источник напряжения 5 В, можно использовать вывод VIN для непосредственного питания ESP8266 и его периферии.

Предупреждение

ESP8266 требует 3,3 В для питания и логические уровни 3,3 В для связи. Контакты GPIO не допускают напряжение 5 В! Если вы хотите соединить плату со схемами 5 В (или выше), то необходимо реализовать согласование логических уровней.

Подключение ESP8266 к Интернету

В настоящее время модуль ESP8266 доступен только через локальную сеть Wi-Fi. Чтобы управлять устройствами из Интернета, вам необходимо выполнить переадресацию портов на маршрутизаторе.

Для этого найдите IP-адрес вашей системы либо с помощью команды «ifconfig» в вашем терминале, либо перейдите на страницу whatsmyip.org. Скопируйте свой IP-адрес. Теперь откройте настройку маршрутизатора и перейдите в настройки «Переадресация». Введите данные для «Сервисного порта» и «IP-адреса». Сервисный порт — это номер порта из вашего кода Arduino (служебный порт: 80):

WiFiServer server(80);//Service Port

IP-адрес тот, который вы указали ранее. Оставьте остальные настройки по умолчанию. Теперь перейдите в свой браузер и введите адрес: xxx.xxx.xx.xx: 80. Должна открыться страница для управления светодиодом.

Web интерфейс

Есть и другой путь — можно сделать Web интерфейс и управлять светодиодом еще и через браузер.

Тот же скрипт + Web интерфейс:

Небольшое пояснение как работает web-сервер вообще, и наш скрипт в частности. Стандартный порт для web-сервера — 80. Т.е. когда Вы в браузере набираете http://192.168.4.1/, то браузер подключается к серверу (192.168.4.1) на порт 80 и отправляет запрос. Запрос выглядит примерно так:

GET / HTTP / 1.1
Host: 192.168.4.1
User-Agent: Mozilla / 5.0 (Windows NT 5.1; rv: 2.0.1) Gecko / 20100101 Firefox
Accept: text / html, application / xhtml + xml, application / xml; q = 0.9, * / *; q = 0.8
Accept-Language: ru-RU, ru; q = 0.8, en-US; q = 0.5, en; q = 0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1

Для нас представляет интерес первая строка запроса: «GET / HTTP/1.1». В ней указан URL. Если в браузере набрать http://192.168.4.1/on , тогда в первой строке запроса будет «GET /on HTTP/1.1». А если в браузере набрать http://192.168.4.1/off тогда будет «GET /off HTTP/1.1». Именно эту строку и анализирует скрипт и в зависимости от полученного URL включает или отключает светодиод.
Далее скрипт отправляет html страничку. Но после отправки нужно разорвать подключение. Поскольку отправка занимает некоторое время, а ждать окончания отправки технически глупо, на событие «sent» (отправлено) подключим функцию со строкой sck:close(). Это делается в строке: sck:on(«sent», function(sck) sck:close() end). После чего выполняется отправка html страницы sck:send(response). Скрипт продолжает работу. Когда ответ будет полностью отправлен, сработает sck:close().

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

Установка библиотеки

Мы уже писали о том, как подключаются библиотеки в Arduino IDE. Алгоритм установки ЕСП8266 такой:

  1. Подключаем usb-ttl к USB.
  2. Подключаем esp8266 к usb-ttl обычным способом. Если отсутствует подключение DTR и RTS, необходимо подсоединить GPIO0 к земле. Затем передернуть питание модуля.
  3. Запускаем бесплатную среду разработки – Arduino IDE.
  4. В появившемся меню кликаем на «Инструменты», далее «Плата», после – «Generic ESP8266 board». Последнее будет находиться на конечной строчке.
  5. В том же меню «Инструменты» кликаем на номер порта, к которому присоединен Юсб-ТТЛ.
  6. Здесь же указываем нужную частоту и вместимость флеш-памяти используемого модуля.
  7. Кликаем «Файл», потом «Образцы» – ESP8266WiFi — WiFiWebServer.
  8. В программном коде прописываем ССИД и пароль от Вай-фай точки.
  9. Нажимаем на кнопку компиляции.
  10. Дожидаемся окончания прошивки.
  11. Возвращаемся в «Инструменты», переходим на «Монитор последовательного порта».
  12. Устанавливаем скорость – 115200.
  13. Наблюдаем за реакцией в терминальном окне.
  14. Если подключение прошло удачно, в терминале появятся 2 строки «WiFi connected» и «Server started».
  15. В конце будет указан IP адрес подключенного модуля ЕСП8266. К примеру,168.1.247.
  16. Откроем новую вкладку любого браузера и напишем – «http://192.168.1.247/gpio/1».
  17. Следует понаблюдать за действиями последовательного порта – если подключенная светодиодная лента загорится, значит, все работает.

Wishlist

  • remove dependency on EEPROM library
  • move HTML Strings to PROGMEM
  • cleanup and streamline code (although this is ongoing)
  • if timeout is set, extend it when a page is fetched in AP mode
  • add ability to configure more parameters than ssid/password
  • maybe allow setting ip of ESP after reboot
  • add to Arduino Library Manager
  • add to PlatformIO
  • add multiple sets of network credentials
  • allow users to customize CSS
  • rewrite documentation for simplicity, based on scenarios/goals

Development

  • ESP32 support
  • rely on the SDK’s built in auto connect more than forcing a connect
  • add non blocking mode
  • easy customization of strings
  • hostname support
  • fix various bugs and workarounds for esp SDK issues
  • additional info page items
  • last status display / faiilure reason
  • customizeable menu
  • seperate custom params page
  • ondemand webportal
  • complete refactor of code to segment functions
  • wiif scan icons or percentage display
  • invert class for dark mode
  • more template tokens
  • progmem for all strings
  • new callbacks
  • new callouts / filters
  • shared web server instance
  • latest esp idf/sdk support
  • wm is now non persistent, will not erase or change stored esp config on esp8266
  • tons of debugging output / levels
  • disable captiveportal
  • preload wiifscans, faster page loads
  • softap stability fixes when sta is not connected

Постановка задачи

Я живу в частном доме под Минском, и собственный бассейн, пусть и простейший каркасный, является неотъемлемой частью того набора «бенефитов», который получают многие, живущие в загородном доме. В нашем нестабильном климате оказалось, что в бассейне купаться некомфортно, если он стоит на открытом воздухе: вода выхолаживается ночью, а ветренная погода днем не делает купание комфортным. В прошлом году я своими руками построил геодезический купол фуллера над бассейном, поставил горочку и повесил тарзанку – дети довольны.

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

На лето «отопительный» контур котла с помощью вентилей переключается на подогрев
бассейна. Подогрев воды бассейна осуществляется с помощью титанового теплообменника, по первичному контуру которого проходит теплоноситель (горячая вода без примесей) из отопительного контура, а по вторичному – вода из бассейна, нагнетаемая насосом рециркуляции системы фильтрации. Поскольку бассейн я использую с хлоратором (много интересного по теме расписано на ForumHouse), в воде содержится немного соли и теплообменник нужен титановый. Нельзя просто так взять и пустить воду напрямую через котел – иначе все трубы разъест солью.

Проходя через теплообменник, теплоноситель, нагретый котлом, с температурой около 70-90 °C отдает тепло воде из бассейна, нагревая ее на пару градусов. Сам теплоноситель при этом остывает на пару десятков градусов, и возвращается в котел с тем, чтобы быть снова
подогретым. Соотношение остывания воды от котла с нагревом воды бассейна зависит от многих факторов: мощности теплообменника и скорости циркуляции воды в первичном и вторичных контурах.

Трубы, подведенные от бассейна к теплообменнику – обычные полиэтиленовые, те, которые
в настоящее время применяются для подвода холодной воды в частные дома. Дешевизна, способность выдержать приличное давление, отсутствие коррозии – вот основные достоинства таких труб. Для всех без исключения полиэтиленовых труб рабочая температура ограничена 40 градусами по шкале Цельсия. В принципе, для бассейна этого более чем достаточно.

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

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

Использование esp8266 для связи Ардуино по WiFi

Перед подключением к Ардуино важно помнить, что у ESP8266 напряжение питания не может быть выше 3,6, в то время как на пате Ардуино напряжение равно 5 В. Соединять 2 микроконтроллера нужно с помощью резистивных делителей

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

3,3 В с Ардуино – на Vcc&CH_PD на модуле ESP8266, Земля с Ардуино – к земле с ESP8266, 0 – TX, 1 – RX.

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

Работа с библиотекой Wi-Fi для ESP8266 схожа с библиотекой для обыкновенного шилда. Имеется несколько особенностей:

  • mode(m) – для выбора одного из трех режимов: клиент, точка доступа или оба режима единовременно.
  • softAP(ssid) – нужен для создания открытой точки доступа.
  • softAP(ssid, password) – создает точку доступа с паролем, который должен состоять не менее чем из 8 знаков.
  • WiFi.macAddress(mac) и WiFi.softAPmacAddress(mac)– определяет МАС адрес.
  • WiFi.localIP() и WiFi.softAPIP() – определение IP адреса.
  • printDiag(Serial); – позволят узнать данные о диагностике.
  • WiFiUDP – поддержка передачи и приема multicast пакета в режиме клиента.

Работа выполняется по следующему алгоритму:

  • Подключение USB-TTL к USB и к ESP.
  • Запуск Arduino >NodeMCU на базе esp8266

NodeMCU – это платформа, основанная на базе модуля esp8266. Используется для управления схемой на расстоянии при помощи интернета через Wi-Fi. Плата малогабаритная, компактная, стоит дешево, на лицевой стороне имеется разъем для USB. Рядом кнопки для отладки и перезагрузки микроконтроллера. Также установлен чип ESP8266. Напряжение питания – от 5 до 12 В, желательно подавать более 10 В.

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

  • D1 и D2 – для интерфейса I2C/ TWI;
  • D5-D8- для интерфейса SPI;
  • D9, D10 – для UART;
  • D1-D10 – могут работать как ШИМ.

Платформа имеет современное API для аппаратного ввода и вывода. Это позволяет сократить количество действий во время работы с оборудованием и при его настройке. С помощью прошивки NodeMCU можно задействовать весь рабочий потенциал для быстрой разработки устройства.

Other Libraries

  • ESP8266mDNS: support for compressed DNS messages (, , )
  • ESP8266mDNS: return from addServiceTxt ()
  • ESP8266mDNS: clear previous result when is called (, )
  • SPISlave: add method ()
  • ESP8266WebServer: fix WebServerSecure streamFile() ()
  • SPI: -ify input buffers ()
  • SPI: Support Arduino API’s , optimized ()
  • I2C: improve bus recovery procedure ()
  • I2C: add support for 50kHz clock ()
  • I2C: clock frequency set by now survives re-initialization ()
  • Add ESP_EEPROM to list of ESP libraries ()
  • SoftwareSerial: update to version to 3.4.1 ()
  • ESP8266HTTPUpdate: make timeout configurable ()
  • ESP8266HTTPUpdateServer: allow to update credentials after setup is performed ()
  • ESP8266SSDP: add method ()
  • ESP8266WiFiMesh: new version ()

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

16. Открываете любой браузер, в строке адреса вбиваете «http://192.168.1.248/gpio/1»

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

18. Profit!

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

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

Class Description¶

The ESP8266WiFi library is broken up into several classes. In most of cases, when writing the code, the user is not concerned with this classification. We are using it to break up description of this library into more manageable pieces.

Chapters below describe all function calls (methods and properties in C++ terms) listed in particular classes of ESP8266WiFi. The description is illustrated with application examples and code snippets to show how to use functions in practice. This information is broken up into the following documents.

Station

Station (STA) mode is used to get the ESP module connected to a Wi-Fi network established by an access point.

Station class has several features to facilitate the management of a Wi-Fi connection. In case the connection is lost, the ESP8266 will automatically reconnect to the last used access point, once it is available again. The same happens on module reboot. This is possible since ESP saves the credentials to the last used access point in flash (non-volatile) memory. Using the saved data ESP will also reconnect if sketch has been changed but code does not alter the Wi-Fi mode or credentials.

Check out separate section with examples.

Soft Access Point

An access point (AP) is a device that provides access to a Wi-Fi network to other devices (stations) and connects them to a wired network. The ESP8266 can provide similar functionality, except it does not have interface to a wired network. Such mode of operation is called soft access point (soft-AP). The maximum number of stations that can simultaneously be connected to the soft-AP can be set , but defaults to 4.

The soft-AP mode is often used and an intermediate step before connecting ESP to a Wi-Fi in a station mode. This is when SSID and password to such network is not known upfront. ESP first boots in soft-AP mode, so we can connect to it using a laptop or a mobile phone. Then we are able to provide credentials to the target network. Then, the ESP is switched to the station mode and can connect to the target Wi-Fi.

Another handy application of soft-AP mode is to set up mesh networks. The ESP can operate in both soft-AP and Station mode so it can act as a node of a mesh network.

Check out the separate section with examples.

Scan

To connect a mobile phone to a hot spot, you typically open Wi-Fi settings app, list available networks and pick the hot spot you need. Then enter a password (or not) and you are in. You can do the same with the ESP. Functionality of scanning for, and listing of available networks in range is implemented by the Scan Class.

Check out the separate section with examples.

Client

The Client class creates clients that can access services provided by servers in order to send, receive and process data.

Check out the separate section with list of functions

WiFi Multi

ESP8266WiFiMulti.h can be used to connect to a WiFi network with strongest WiFi signal (RSSI). This requires registering one or more access points with SSID and password. It automatically switches to another WiFi network when the WiFi connection is lost.

Example:

BearSSL Client Secure and Server Secure

BearSSL::WiFiClientSecure and BearSSL::WiFiServerSecure are extensions of the standard and classes where connection and data exchange with servers and clients using secure protocol. It supports using a wide variety of modern ciphers, hashes, and key types.

Secure clients and servers require significant amounts of additional memory and processing to enable their cryptographic algorithms. In general, only a single secure client or server connection at a time can be processed given the little RAM present on the ESP8266, but there are methods of reducing this RAM requirement detailed in the relevant sections.

BearSSL::WiFiClientSecure contains more information on using and configuring TLS connections.

BearSSL::WiFiServerSecure discusses the TLS server mode available. Please read and understand the BearSSL::WiFiClientSecure first as the server uses most of the same concepts.

Check out the separate section with examples .

Server

The Server Class creates servers that provide functionality to other programs or devices, called clients.

Clients connect to sever to send and receive data and access provided functionality.

Check out separate section with examples / list of functions.

UDP

The UDP Class enables the User Datagram Protocol (UDP) messages to be sent and received. The UDP uses a simple “fire and forget” transmission model with no guarantee of delivery, ordering, or duplicate protection. UDP provides checksums for data integrity, and port numbers for addressing different functions at the source and destination of the datagram.

Check out separate section with examples / list of functions.

Кнопки и светодиодный индикатор на плате

На плате ESP8266 NodeMCU находятся две кнопки. Одна из них, помеченная как RST, расположенная в верхнем левом углу, представляет собой кнопку сброса, которая, конечно же, используется для сброса микросхемы ESP8266. Другая кнопка, FLASH, в левом нижнем углу – это кнопка загрузки, используемая при обновлении прошивки.

Кнопки и индикаторы

  • RST – сброс чипа ESP8266
  • FLASH – загрузка новой программы
  • Синий светодиод — программируется пользователем

Рисунок 4 – Кнопки и светодиоды на плате ESP8266 NodeMCU

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

Installation

Requirements:

  • ESP8266 module (any board)
  • Micro-USB cable
  • Computer

I would recommend getting a USB breakout/developer board, mainly due to the 4Mb of flash and simplicity.

In order to upload the Wi-PWN firmware, you can use one of two methods. The first method is easier overall but using Arduino is better for debugging.
YOU ONLY NEED TO DO ONE OF THE INSTALLATION METHODS!

There are two variants of UART converters that ESP8266 boards use:

CP210x CH34x
Drivers Drivers

Method 1: Flashing with NodeMCU-Flasher

  1. Download the current release of Wi-PWN

  2. Upload the file using the nodemcu-flasher. Alternatively you can use the official esptool from espressif.

  3. Connect your ESP8266 (making sure the drivers are installed) and open up the NodeMCU Flasher

  4. Go to the tab and select the correct values for your board.

  5. Navigate to the tab and click the gear icon for the first entry.

  6. Browse for the file you just downloaded and click open.

  7. Switch back to the tab and click Flash(F).

Method 2: Compiling with Arduino

  1. Download the source code of this project.

  2. Go to >

  3. Add to the Additional Boards Manager URLs. (refer to https://github.com/esp8266/Arduino)

  4. Go to > >

  5. Type in

  6. Select version and click on (must be version 2.0.0!)

  7. Go to >

  8. Open the folder path under

  9. Go to > > > > > > >

  10. Open with a text editor

  11. Just before the last line , add the following:

  1. Go to the arduino/SDK_fix folder of this project

  2. Copy and to

  3. Open in Arduino

  4. Select your ESP8266 board at > and the right port at >
    If no port shows up you need to reinstall the drivers, search online for chip part number + ‘driver Windows’

  5. Depending on your board you may have to adjust the > > and the > > . I used the Flash Frequency, and the Flash Size

  6. Upload! CTRL-U

Note: If you use a 512kb version of the ESP8266, you need to comment out a part of the mac vendor list in

Шаг 3. Загрузите новый скетч «по воздуху»

А теперь давайте загрузим новый скетч по воздуху, т.е. через Wi-Fi.

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

В качестве примера мы включим простой скетч Blink в код BasicOTA. Не забудьте изменить переменные SSID и пароля на учетные данные вашей сети.

Изменения в программе BasicOTA выделены номерами строк.

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

Как только вы скопируете приведенный выше скетч в Arduino IDE, выберите Инструменты → Порт, и вы должны увидеть что-то вроде этого: esp8266-xxxxxx at ip_адрес_вашего_esp. Если подобного не будет, возможно, вам придется перезапустить IDE.

Рисунок 6 – Выберите порт OTA в Arduino IDE

Выберите порт и нажмите кнопку «Загрузить». Через несколько секунд новый скетч будет загружен. И вы должны увидеть на плате мигающий светодиод.

Рисунок 7 – Рабта тестового скетча Blink на ESP8266 NodeMCU

Оцените статью
Рейтинг автора
5
Материал подготовил
Андрей Измаилов
Наш эксперт
Написано статей
116
Добавить комментарий