Найти в Дзене
INOVATEK.IO

ESP32 для новичков. Часть 1.

Доброго времени суток моим читателям! Статья создавалась для тех кто слышал, планирует потрогать или даже уже купил данный замечательный продукт компании 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® и это в базовой версии платы... ммм вкуснот

Доброго времени суток моим читателям!

Статья создавалась для тех кто слышал, планирует потрогать или даже уже купил данный замечательный продукт компании 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, по этому качество/размер кода тоже под вопросом. По этому я отнесу это к минусу НО это относиться ко всем решениям... почти ко всем.

Документация:

Arduino Reference - Arduino Reference

Плюсы: Огромное 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 порт к которому подключена плата.

-5

Всё проверяем, для начала неплохо бы нажать кнопку "ERASE", кто его знает что там сейчас в памяти.

Дожидаемся надписи FINISH и жмем START, дожидаемся окончания загрузки прошивки и всё готово!!!

Для написания когда есть ide

-6

Espruino Web IDE

Есть плагин для Chrome и нативное приложение (кроссплатформа). Оно на NV.JS =) Работает как в онлайн так и офлайн режиме, все модули автоматически обновляются.

Официальные модули:

Index of /modules

Документация как я и говорил довольно хорошая

Espruino Hardware Reference

Ну вот и всё, можно ваять свои умные устройства.

Личный совет: обрабатывайте ошибки где только возможно, в случае unhandled ошибки бывало что камень не хотел принимать новую прошивку, приходилось повторять процедуру с Flash tool. Либо тестируйте код только в RAM, потом только загружайте во flash.

Почитайте про функцию save(); wifi.save(); Спасет много нервов)

Подведем итог:

Плюсы: Большое community, официальные модули, простота написания кода, хорошая документация.

Минусы: Новые версии интерпретатора частенько содержат ошибки, IDE всё же не IDE(notepad+), жор памяти.

На этом думаю часть статьи, в следующей статье рассмотрим microPython,nanoFramework и родную ESP IDF

Так же обсудим удобный софт для разработки.

Подписывайтесь на мой ТГ канал:

https://t.me/icecoder

Всем успехов.