Пишу отчасти для себя, и для ссылок из других текстов, что бы собрать все основные нюансы прошивки ESP32 и ESP8266 в одном месте.
В качестве основного источника буду использовать прошивку WiFi-IoT.
Думаю данный текст будет полезен новичкам, так как документация на сайте WiFi-IoT написана очень кратко и очень сухо, хотя и содержит всю необходимую информацию.
Далее буду описывать более современный МК -- ESP32, так как именно он наиболее актуален сейчас.
Постепенно текст буду дополнять, хотя формат этой платформы для этого не совсем подходит.
Программа для прошивки
Для загрузки файла прошивки потребуется специальная программа, которую выпускает производитель микроконтроллеров: flash-download-tools. Выпускается для всех основных платформ, написана на python. Работает стабильно и достаточно удобна.
При запуске открывается окошко с выбором контроллеров для прошивки (подверсии ПО). Выбираем в данном случае ESP32.
При постоянной прошивке микроконтроллеров, программа запоминает последние указанные файлы прошивки. Так как в первых версиях SDK прошивка могла создаваться несколькими файлами, которые записывались по разным адресам (да собственно и сейчас так можно сделать), то программа просит указывать в специальном формате, по какому адресу какой файл прошивки записывать.
Сейчас проще всего записывать весь файл целиком начиная с 0 ячейки памяти, которой соответствует адрес 0x0000. У меня специально сохранено несколько часто используемых версий прошивки, между которыми я переключаясь, выставляя нужную галочку.
Первым в списке добавлен так называемый "Blank", который является файлом нужного размера, полностью заполненным нулями. Он необходим в случае необходимости полностью очистить память ESP32. Его размер выбирается рамным размеру установленной памяти ESP32 (1 Мб или 4 Мб, как правило).
Аппаратная часть
Для подключения ESP32 к компьютеру необходимо установить (или проверить наличие) драйверов установленного на плате USB-UART конвертора, как правило это CH340G, CP2102 или CH9102.
После подключения платы к USB-порту компьютера, нужно убедиться в успешном подключении конвертора, для этого можно зайти в диспетчер устройств и там в списке устройств "Порты (COM и LPT)" найти новый адрес порта устройства (COM1, COM2 и тд.) Именно этот адрес и нужно выбрать далее в программе для прошивки.
Для прошивки и последующей настройки ESP32 необходимо будет замыкать определенный пины. Для этого можно использовать провод, перемычку или пинцет. Как кому будет удобнее.
Пошаговая работа с ESP32 для прошивки:
1. Выбираем файл прошивки, указываем правильный адрес в программе, выбираем из списка необходимый COM-порт.
2. Нажимаем кнопку Start.
3. Переводим ESP32 в режим загрузки. Для этого на ESP32 надо замкнуть пин GPIO 0 на землю. На всех основных платах разработки (DEV-Board) он так и подписан. На некоторых платах есть специальная кнопка Boot, которую можно зажать.
2. При замкнутом на землю выходе GPIO 0 необходимо перезапустить контроллер кнопкой Reset (или замыканием соответствующего пина). Это необходимо сделать в момент, когда в консоли flash-download-tools бежит строчка как на картинке:
3. После успешного подключения и начала загрузки в окне начнёт заполняться строка прогресса (в самом низу). И в консоли появится запись о начале прошивки.
4. Когда вся строка прогресса заполнится, значит вся прошивка была загружена в память ESP32.
5. Перезагружаем плату кнопкой Reset или включением/отключением питания.
6. Переводим плату в режим настройки: SafeMode, в котором получим доступ к веб-интерфейсу и настроим режим подключения и работы с Wi-Fi. Для этого в зависимости от настроек прошивки WiFi-IoT необходимо замкнуть, либо выходы rx1 и tx1 (по умолчанию), либо (как мне больше нравится) GPIO15 на GND (надо настроить в конфигурации - опция SafeGpio) и перезапустить плату.
7. Открываем на смартфоне настройки Wi-Fi, поиск сетей. Подключаемся к открытой сети WiFi-IoT, дожидаемся пока смартфон ней гарантированно подключится (современные смартфоны очень не любят такие сети, без доступа к сети интернет).
8. В удобном браузере -- Google Chrome, Safari и т.д. открываем страничку по адресу 192.168.4.1, если не открывается, то проверяем подключение к нужному Wi-Fi или протокол подключения, должен быть HTTP.
9. На основной вкладке находится раздел Config, который содержит ссылки на основные опции конфигурации и настройки. Вкладка Main отвечает за базовую настройку сетевых функций, таких как Wi-Fi, Дата и время, Имя устройства в сети. Для настройки подключения к Wi-Fi переходим на вкладку Main.
10. В разделе WiFi options ставил точки, как на картинки выше, и указываем свои данные для подключения к Wi-Fi. До после нажатия кнопочки Set ждём до обновления параметров и если в полях IP и GW появились значения отличные от 0.0.0.0 -- то контроллер успешно подключился к сети Wi-Fi.
Если эти данные не обновились, то значит возникли проблемы с подключением к Wi-Fi, например, указаны неверные значения имени Wi-Fi или ошибка в пароле.
11. После успешного подключения контроллера в свою сеть Wi-Fi, необходимо отключить перемычку с rx и tx (или между SafeGpio и GND) и контроллер необходимо перезапустить. Теперь контроллер будет доступен в локальной сети по адресу, который во вкладке Main в поле IP.
Для более стабильной работы, не рекомендую на самом контроллере включать режим статического IP. Всё достаточно просто, если Вы в первый раз слышите, что такое статический IP адрес, то Вам он не нужен.☺️
Основные возможности прошивки
Во вкладке Hardware можно включить или выключить работу с датчиками, добавленными в прошивку на стадии конфигурации:
Полученные данные с датчиков можно просматривать не только в веб-интерфейсе, но и передавать в различные сервисы и с помощью различных протоколов. Например, TCP/IP, UDP/IP, MQTT, HTTP и др. Доступны такие сервисы как narodmon.ru, thingspeak.com, wunderground.com, telegram и другие.
Поддерживается и прием команд для управления сервоприводами, GPIO, светодиодным лентами и другими опциями прошивки.
Платы для использования прошивки
Прошивка без изменений может быть использована на различных платах ESP32 и других контроллеров (подробности можно прочитать в документации на сайте).
На картинке подписал основные особенности плат.
Зачем я это всё написал?
Дальше я планирую опубликовать ряд инструкция по быстрой сборке недорогих устройств на базе данной прошивки, так как она работает хорошо, стабильно и имеет значительное количество функций.
Но для непосвящённого пользователя вызывает значительные трудности именно первоначальная настройка контроллера и я буду делать ссылку на этот текст.