Arduino IDE: комфортная миграция с AVR на ESP32
- Войдите на сайт для отправки комментариев
Вс, 21/07/2019 - 17:02
если честно, то на AVR было тесновато всегда: 8-мь бит, скромная частота камня, объём флеша и оперативки были как бы достаточны, но не очень...
поэтому, да - переезжаю на ESP32 вместе со всем своим скромным барахлом кода.
возможно, когда-то на форуме образуется отдельный раздел по ESP32, а пока буду здесь писать заметки о граблях, неявных но важных местах, задавать вопросы, давать ответы.
официальный сайт производителя https://www.espressif.com/en/products/hardware/esp32/overview
github https://github.com/espressif
мегасборник ссылок на ресурсы о ESP32 http://esp32.net/
инсталляция.
https://github.com/espressif/arduino-esp32/blob/master/docs/arduino-ide/boards_manager.md - установит программную поддержку зоопарка плат с ESP32.
https://github.com/me-no-dev/arduino-esp32fs-plugin - ручками установить плагин поддержки SPIFFS файловой системы.
здесь можно посмотреть пример реализации работы с SPIFFS - считывает бинарник биоса из файла в массив, сохраняет массив в бинарник, грузит бейсиковые проги из текстового файла в эмулируемый недокомп https://github.com/Klapautsiy/6502_EhBASIC_ESP32_Arduino
настройки Arduino IDE.
конфигурация ESP32 без радио-интерфейсов.
Железка.
все грабли ниже применимы к такой плате.
Esp32s NodeMCU board
и, такому адаптору на CP2102
Клапауций 003, я откуда помню (откуда именно - уже забыл), что по ней нет как такового даташита и вообще официальной документации. Это правда?
Клапауций 003, я откуда помню (откуда именно - уже забыл), что по ней нет как такового даташита и вообще официальной документации. Это правда?
а, что есть? - тоже, не помню.
это не? https://www.espressif.com/en/support/download/documents
это не?
Спасибо!
Понятно, почему я помню, что нету. У самых полезных документов совсем свежие копирайты.
Ворота, так это #7 то, что нужно или не совсем то?
*хотя, и меня гложут смутные сомнения, что китайцы украли у кого-то то, что должно было появиться на рынке намного позже, не по такой смешной цене и не всё в одном.
кратко, что из себя представляет аппаратно.
микросборка с процессором, микросхемой флеша, интегрированной антенной, опционально запаяна на плату с обвесом стабилизатора напряжения 3.3V и парой светодиодов.
фото с демонтированным экраном
*хотя, и меня гложут смутные сомнения, что китайцы украли у кого-то то, что должно было появиться на рынке намного позже, не по такой смешной цене и не всё в одном.
загрузчик.
представляет из себя комлекс, обеспечивающий не только прошивку, но и программную поддержку железа на низком уровне при работе в обычном режиме - прошивается производителем.
*на форумах народ иногда спорит - что там аппаратное, а что программное.
фьюзы.
так понял, что отсутсвуют или доступны исключительно производителю.
пин Reset(EN).
управляет контроллером питания - выключает питание контроллера.
фактичекски ресетит, но нет - выключает.
маленькие грабли №0
плата #4 не прошивается без удержания кнопки BOOT - вроде как должно прошиваться без неё, но тогда не понятно, зачем она(кнопка) нужна.
некритично.
pinout.
подробности по ссылкам выше, но что бы не наступить на неявное и не посчитать это граблями, то нужно знать, что:
- пины GPIO34-39 работают исключительно в режиме input mode и к ним неприменимы функции pullup и pulldown, т.е. если очень нужна подтяжка этих пинов, то только внешним резистором.
- пины GPIO6-11 зарезервированы для обслуживания флеш-микросхемы сборки, не смотря на то, что разведены на плату, использовать их не получится.
- пины GPIO1, 3 - это UART0, подключенный к CP2102, т.е. если программно используется UART0, то ничего сюда подключать не стоит или совсем не стоит. нужно пробовать.
- пин GPIO15 по умолчанию сконфигурирован как input mode pullup, замыкание его на землю отключает загрузочные сообщения в UART0.
так же радует такое:
как этот болезный собрался выяснять по схеме модуля, как будут себя вести неактивированные программно, но активные при загрузке/включении пины UART0 - дьяволу в его голове известно.
останутся они активными или нет, как на это среагирует CP2102 - переходят ли его пины в состояние Z.
Ворота, так это #7 то, что нужно или не совсем то?
Да, спасибо. Там есть именно даташиты. А то я где-то читал, что мол "даже объём памяти известен лишь приблизительно" :)
А то я где-то читал, что мол "даже объём памяти известен лишь приблизительно" :)
таки, не зря писали - только последний год доки начали публиковать.
полезный хак.
если на плате Esp32s NodeMCU заменить LDO AMS1117 на AP7361C-33ER, то батарейное питание платы будет проще реализовать.
полная версия здесь https://blog.voneicken.com/2018/lp-wifi-esp32-boards/
лампочка о_О
https://www.espressif.com/en/news/Energy_Efficient_Lighting_Solution_with_ESP_Mesh
Оч любопытно - что за проекты ваяет сумрачный украинский гений в которых мощи авр-ок не хватает? Тоже хочу что-нибудь слепить, но не знаю что(
всё тоже самое, но быстрей, с радио-фейсами и файловой системой на борту.
https://www.google.com/search?q=esp32
как пример - класс титановый велосипед для тактовой кнопки.
таки, да - сотня кнопок на той же атмега328 отъедает практически всю оперативку и сей факт рвёт на клочки эмбеддера и ещё одного.
попытки объяснить, что это всё может прекрасно жить на отдельном контроллере клавиатуры, вызывают вопли: а, как же отсальная программа?!
ну, аппаратно как-то так https://m5stack.com/collections/m5-unit/products/cardkb-mini-keyboard
Как жеж его торкнуло! Аж на другой контролер убежал. На что токо люди не пойдут лиш бы головой не думать! :)
Как жеж его торкнуло! Аж на другой контролер убежал. На что токо люди не пойдут лиш бы головой не думать! :)
эмбедера выпилили из темы - желаешь за ним следом последовать, думатель головой?
Ребята ни кто не сталкивался с проблемой адресных светодиодов WS8212 и ESP32.
Все работает пока не использую Wi-Fi. Только включаю wi-fi. Светодиоды начинают мерцать.
В чем дела?
С ЕСП32 не работал, могу только предположить.
Адрессные светодиоды очень нагружают процессор и чувствительны к точным длинам импульсов управления. Если во время работы с диодами запущен Вай-Фай - процессор не будет успевать отрабатывать импульсы на диоды и они будут мерцать.
Если бы про ESP8266 такое писалос, то я бы согласился с b707 , но у ESP32 вроде как 2 ядра обещано. Одно для Wi-Fi, а другое для пользовательского кода. И такого быть не должно. Может питание от Wi-Fi проседает? Как светодиоды мерцают? Только яркость проседает или сбивается отображение?
ESP32 BLE Keyboard https://github.com/T-vK/ESP32-BLE-Keyboard
думал, что придётся повозиться, что бы взлетело, но "нет" - с полпинка.
Давно присматриваюсь к есп32, но пока активно работаю с 8266.
Ограничивает начало экспериментов отсутствие (имхо) ряда библиотек. в частности интересуют:
I2c для дисплея и матричной клавы, i2c для чипов реального времени, i2c для памяти eeprom и fram, wire и ds18b20, webserver и webclient, ntp.
По крайней мере не нашел, в тч и описания, что есть что то работающее.
может быть использующие поделятся ссылками на проверенную коллекцию библиотек для ESP32?
ds18b20, webserver и webclient, ntp. Точно все работает, остальное я думаю вы плохо искали примеры.
...и матричной клавы.
таки, да - библиотеки матричной клавы в ESP32 очень не хватает.
кушать не могу - хочу матричную клаву подключить к ESP.
О_о
а, тут #21 о чём я писал?
о матричной клаве на ESP32? - враги лгут! это не матричная клава и не ESP, а m5stack
Конечно же о матричной клавиатуре на 328 камне пишите Вы, только я ведь спрашивал о матричной клаве через i2c, извините не конкретизировал, через расширитель PCF8574.
однако клава на 328 тоже не может не вызвать интереса, по какому интерфейсу она опрашивается, используются ли прерывания?
по какому интерфейсу она опрашивается, используются ли прерывания?
фиг его знает, по какому интерфейсу и нафига human interface device прерывания?
пока рою блютузную клаву, страждующие библиотек на ESP32 могут позалипать тут https://m5stack.com/
заказал джойстики, хочу прикрутить к World War Heroes Arduino через ESP32, ну никак не привыкну к сенсорному управлению.
забыл. вдогонку к пердыдущему посту:
плата настроена так:
Arduino IDE 1.8.8
ядро ESP32 в менеджере плат 1.0.4
телепон с залипаниями(привет 4PDA): Samsung Galaxy M20, Android 9.
люблю такое в технической документации:
The design of a touch sensor system requires the pursuit of craftsmanship.
Конструкция сенсорной системы требует стремления к мастерству.
https://github.com/espressif/esp-iot-solution/blob/master/documents/touch_pad_solution/touch_sensor_design_en.md
так понимаю, что цветную часть картинко рисовал инженер, а потом пришёл на всю голову заземлённый гуманитарий и пририсовал палец - очевидно же, что все люди ходят по земле, а земля - это что? правильно: земля у гуманитариев - это GND у инженеров.
поэтому, да - перед использованием тач-кнопки, всем купить полтора метра медной шины и вбить в сырую землю рядом с собой урановый лом. шину прикрутить к лому - иначе, тач-кнопка не будет работать.
https://github.com/espressif/esp-iot-solution/blob/master/documents/touch_pad_solution/touch_sensor_design_en.md
походу, это какой-то вирусняк сенсорной кнопки с заземлённым пальцем.
кто-то старался рекомендации по разводке плат писал, что бы работало, но в пень это всё, если достаточно один конец провода на корпус, а второй - в зубах зажать... и юзай тач.
думал, это у меня глюки:
Примечание. На момент написания данного руководства в IDE Arduino возникла проблема с назначением сенсорных контактов. GPIO 33 заменяется на GPIO 32 в назначении. Это означает, что если вы хотите обратиться к GPIO 32, вы должны использовать T8 в коде. Если вы хотите обратиться к GPIO33, вы должны использовать T9.
https://randomnerdtutorials.com/esp32-touch-pins-arduino-ide/
продолжение проекта #35
изначально казалось, что и программно, и аппаратно устройство находится в стадии финала в виде - настольная мультимедийная мини-клава с питанием от стационарного блока питания: сколько то там кнопок и валяющимся рядом, например, смартфоном, которым можно управлять удобно тыкая пальцами в кнопки, лежащие на столе, вместо - активировать экран смартфона, разблокировать(если нужно), попасть в нужное место меню экрана...
получилось в стиле "конторский служащий за рабочим столом слушает вражескую музыку на Ёптафоне".
пока не захотелось лечь на диванчик и там продолжить разлагаться под мощным потоком империалистической пропаганды насилия и русофобии.
поэтому - "да": дублируем аппаратные кнопки, валяющимся без дела IR-пультом.
код:
!аппаратные заметки:
- приёмник типа TSOP 1736 для стабильной работы рекомендуется питать 5.0V через резистор 100 Om, фильтровать по питанию керамикой и танталлом.
- пульт типа RC-6 c двойными, чередующимися кодами кнопок. актуальные коды кнопок можно увидеть в мониторе сериала, прошив скетч выше и, затем забив подсмотренные коды в текст кода.
Note: ADC2 pins cannot be used when Wi-Fi is used. So, if you’re using Wi-Fi and you’re having trouble getting the value from an ADC2 GPIO, you may consider using an ADC1 GPIO instead, that should solve your problem.
я запретил.
Не знаю, запретили уже Клопоуция или нет, но у меня вопрос имеется общественно-полезный: как заставить BLE HID device спариваться с андроидом?
Если без секьюрности, то коннект есть, все ОК. Но хотелось бы чтоб враг не подслушивал.
К сожалению с блюпюпом знаком на уровне потребителя. Из под линупса тыркал BLE сенсоры, про GATT знаю, но дальше - абсолютная пустота. По Гуглу полазил, но так и не понял - есть ли в BLE секьюрность, как таковая или все подряд к нему коннектится и читать характеристики могут.
В есп вы можете сами определять отдавать ли этому клиенту характеристики или нет, разрешить ему подключиться или нет. Поскольку одновременно вещать и прятаться от всех невозможно, то если вы объявляете о себе, то что то могут читать все.
Я как раз в этих ESP_IO_CAP_OUT / ESP_IO_CAP_IO ... / ESP_LE_AUTH_BOND / ESP_LE_AUTH_REQ_SC_MITM_BOND ... и запутался - как вместо простого беспарольного bonding-а устроить процедуру pairing-а, управляемого по кнопке с устройства BLE-сервера.
Но, вроде, разобрался и зафиксил всё с помощью BLESecurityCallbacks. Не знаю, правда, насколько это правильно.
Все что работает - правильно. Но нужно отметить, библиотеки для ардуино писал писал программер для больших компутеров и мне показалось, что у него есть некоторые провалы в понимании блютус... Впрочем как и у меня.
Удивительная штука - этот мир БТ.
Столкнулся я с явлением, хоть и не совсем относящимся к ESP32, но проявившимся при попытке сопряжения ее с относительно немолодым устройством.
Продолжая подпиливать Accessibility device, решил его испытать не только на достаточно свежем Android 10, но и уже слегка пожухшем. Вспомнил, что на имеющейся у меня TV-приставке Tronsmart Vega S96 (перешитая в Ugoos AM3) под управлением Android 7.0 тоже есть БТ. По спецификации - v4.0. Первое испытание показало, что приставка ESP32 видит в списке устройств, но без имени. Только MAC-адрес показывает. И не сопрягается. Вроде дёргается, но эффекта никакого. Даже в консоли ESP ничего не появляется на Verbose mode. Сначала я подумал, что БТ-чип в боксе BLE не поддерживает или Android слишком старый. Решил для себя, что дело странное, но селяви...
Позднее, читая всякое по БТ, я все больше недоумевал - BLE уже с v4.0 анонсирован, да и ESP-шку же видит приставка... Что-то тут не то. Решил ещё немного поэкспериментировать и понёс макетку к настоящему Ugoos AM3... и пришёл в ещё большее недоумение - фирменный Ugoos ESP32 видит и pairing/bonding проходит вполне успешно. Конечно же в голову пришла стандартная формулировка "китайцы бракованных чипов насовали в Tronsmart". Но, однако, 4PDA уверяет, что Tronsmart Vega S96 является клоном Ugoos AM3 на 100%. Но ведут-то они себя по-разному...
Продолжая обдумывать эту загадку, я нашёл отличия в конфигурациях приставок - Tronsmart подключен по Ethernet, а Ugoos - по WiFi. Решив привести конфигурации в эквивалентное состояние, я подключился на Tronsmart к WiFi и... ESP32 спарилась с приставкой. И даже увидела имя ESP-шки. Отключил в шторке нотификаций WiFi - ESP перестало коннектится и сопрягаться. Включил WiFi - всё нормализовалось. Почему - загадка. Что там WiFi активирует для работы БТ - непонятно. Антенну подключает что ли...
Так что, хозяйке на заметку - если ESP32 не коннектится по BLE к девайсу, включите ему WiFi.
Они же (ESP32) честно пишут, что у них радиомодуль един, как для голубого зуба, так и для вафли.
Это я знаю. Но проблема была на стороне ТВ-приставки. ESP работала в режиме BLE only.