Доброго времени суток моим читателям!
Статья создавалась для тех кто слышал, планирует потрогать или даже уже купил данный замечательный продукт компании espressif. Статья применима для самых популярных моделей ESP32,ESP8266 и ESP-01(частично).
В данной статье мы не будем размусоливать технические характеристики каждой платы так как только esp32 есть 5 версий плюс по несколько версий в каждой линейке.
С полным списком устройств и их характеристик вы можете ознакомиться на офф сайте https://www.espressif.com/ в разделе Hardware.
Для начала я рекомендую купить готовую отладочную плату, например esp32 wroom dev kit(ESP32-WROOM-32E-N16), так как на ней уже есть вся необходимая обвязка(стабилизатор питания, ttl usb мост и т.д), памяти хватит для экспериментов а "железа" этого камня нам за глаза хватит что бы поиграться с основными модулями. SD card, WIFI,BT,BLE,UART, SPI, SDIO, I2C, LED PWM, IR, pulse counter, GPIO,touch sensor, ADC, DAC, TWAI® и это в базовой версии платы... ммм вкуснота.
Напомню, вся логика как и основное питание устройства это 3,3v, то есть половина готовых модулей например,tremo или arduino без согласования логических уровней НЕЛЬЗЯ.
Вы заказали и наконец то получили долгожданную плату в руки, с чего начать , на чем писать и где писать об этом и пойдет речь в данной статье.
В современном мире есть много "фишек" для упрощения работы с микроконтроллерами, не обязательно лопатить 300 страниц datasheet а и работать с регистрами контроллера напрямую. Для написания прошивки можно использовать как родимый:C так и интерпретаторы: C/С++(Arduino style),C#(nanoFramework),microBasic,microPython,Lua.. и даже JavaScript(espruino) в случае esp можно так же использовать AT команды для управления МК.
Так как статья о ESP рассмотрим что же можно использовать для управления ей:
В данной статье рассмотрим только "популярные" решения с хорошей поддержкой community. Все плюсы и минусы лично моё субъективное мнение основанное на опыте использования.
В конце так же рассмотрим сторонний софт для удобства работы.
1.Платформа Arduino - её я поставил на первое место не потому что это лучшее решение , а потому что очень популярное, с низким порогом входа для новичков и быстрым стартом.
Лично я не фанат arduino, хотя и имею всю линейку их плат. Я начинал знакомиться с МК с AVR серии AT90, оттуда и осталась привычка/фобия каждую крупицу памяти экономить, а там памяти было всего 2 кб =) хоть в esp32 в базе 4мб, но загрузчик и внутренняя кухня arduino тоже не в воздухе располагается.
Так же, библиотеки в большинстве своем пишет community, по этому качество/размер кода тоже под вопросом. По этому я отнесу это к минусу НО это относиться ко всем решениям... почти ко всем.
Документация:
Плюсы: Огромное community, тонны готовых библиотек, скорость подключения, есть Web IDE
Минусы: Убогая IDE(блокнот),жор памяти, качество библиотек, скудная документация(именно для esp32)
2.Платформа Espruino - JavaScript является одним из самых популярных языков программирования на текущий момент. А что если я скажу что на нем можно писать прошивки под esp практически не вникая в железо.
require('module');
var varible;
Работать с прерываниями/cобытиями в стиле wifi.on('connected',(connection)=>{});
Ну не круто ли?
На мой взгляд затея интересная, начать писать сможет даже начинающий frontend разработчик, библиотек тоже много, документация отличная, выделены и описаны разделы под ESP32,8266 и описаны особенности работы с ними.
Процедура прошивки загрузчика здесь немного сложнее.
Идем на офф сайт https://www.espruino.com/Download
Да да =) можно делать кастомные "разделы" в памяти. Зачем? Самое популярное использование их для OTA update,Например в одном разделе лежит рабочая прошивка, во второй качается обновление с облака. Если что то пойдет не так и новая прошивка будет не рабочая, камень сам переключится на старый раздел. Но это уже совсем другая история =)
Вернемся к нашим ... прошивкам.
Всё скачали теперь есть 2 варианта для загрузки прошивки в плату:
1. esptool.py из офф пакета ESP-IDF
Данный метод мне не особо нравиться так как надо докачивать python настраивать, настраивать локальные переменные, тыкать руками в консоль))
Но если вы не ищите легких путей, то в файле readme всё описано. Нужно заменить только номер COM порта.
2. Flash dowlnolad tool так же от официалов espressif
Качаем:https://www.espressif.com/en/support/download/other-tools
Вуаля, наш графический прошивальщик.
Далее ВНИМАТЕЛЬНО,ВНИМАТЕЛЬНО
Помните те 3 файла "потрохов" которые мы скачали с сайта espruino?
Добавляем их в Flash tool и ВНИМАНИЕ прописываем адреса в памяти для их начала. Так же указываем COM порт к которому подключена плата.
Всё проверяем, для начала неплохо бы нажать кнопку "ERASE", кто его знает что там сейчас в памяти.
Дожидаемся надписи FINISH и жмем START, дожидаемся окончания загрузки прошивки и всё готово!!!
Для написания когда есть ide
Есть плагин для Chrome и нативное приложение (кроссплатформа). Оно на NV.JS =) Работает как в онлайн так и офлайн режиме, все модули автоматически обновляются.
Официальные модули:
Документация как я и говорил довольно хорошая
Ну вот и всё, можно ваять свои умные устройства.
Личный совет: обрабатывайте ошибки где только возможно, в случае unhandled ошибки бывало что камень не хотел принимать новую прошивку, приходилось повторять процедуру с Flash tool. Либо тестируйте код только в RAM, потом только загружайте во flash.
Почитайте про функцию save(); wifi.save(); Спасет много нервов)
Подведем итог:
Плюсы: Большое community, официальные модули, простота написания кода, хорошая документация.
Минусы: Новые версии интерпретатора частенько содержат ошибки, IDE всё же не IDE(notepad+), жор памяти.
На этом думаю часть статьи, в следующей статье рассмотрим microPython,nanoFramework и родную ESP IDF
Так же обсудим удобный софт для разработки.
Подписывайтесь на мой ТГ канал:
Всем успехов.