LINUX.ORG.RU

Как писать программы для esp32?

 ,


3

5

Как-то так сложилось, что в руки попала esp-wroom-32 и попросили для неё написать программы.

Есть небольшой опыт программирования на ассемблере для avr: работа с прерываниями по таймеру и взаимодействие по UART. Для этого достаточно:

  • текстового редактора
  • avr-gcc
  • avrdude
  • make (опционально)

Для stm32 на LOR’е опубликован шикарнейший цикл статей. Спасибо, @vbr! На практике, признаюсь, пока не пробовал.

А как быть с esp32? В официальной инструкции рекомендуется использовать ESP-IDF (integrated development framework, если правильно помню). Я попробовал загрузить базовые примеры («Привет, Мир!» и помигать диодиком) и пришёл в ужас от того, как эта Python поделка секунд >10 это дело загружает.

Также попробовал это дело через Arduino IDE, только базовые примеры сам уже написал. Гораздо быстрее всё грузится, но всё равно – такое себе.

Какой необходимый минимум программ, чтобы работать с esp32?

Ответ на: комментарий от pihter

Это смотря какие заголовки. С одним PHY у тебя были бы только ethernet фреймы и пришлось бы все делать руками, начиная с ARP. A W5100 и подобные микросхемы все это делают за тебя.

anonymous
()

Если нет завязки на есп, а хочется просто «поковырять» какой-нибудь МК, проще купить доску с STM32, в котором будет ядро ARM M4 или около того, без MMU, и к ней скачать книгу, как её программировать в stm32CubeIDE. И будет счастье. А потом, если хочется ручного пердолинга в консольке, можно уйти в консольку. Но зачем же сразу туда нырять? Вечно Линуксоиды ищут пути посложнее.

seiken ★★★★★
()

не помню где, но в python загрузчике можно поменять базовую задержку, работал с этой платкой несколько лет назад, всё отлично было. если вам важна скорость работы софта и в целом оптимизация, то лучше не использовать Arduino IDE. мои наработки

MulaFarh
()
Ответ на: комментарий от pihter

Есть версия платы с модулем и есть - без

Попробовал продавить вариант с малинкой. Проблема, что нужна не плата, а именно модуль с wifi и ble, чтобы потом поверхностным монтажом поместить на плату.

Jullyfish
() автор топика
Ответ на: комментарий от Jullyfish

Да, но в модули (RP2350, RP2040) не входит wifi и ble.

https://www.raspberrypi.com/documentation/microcontrollers/pico-series.html

Raspberry Pi Pico 2 W

RP2350 microcontroller chip designed by Raspberry Pi in the United Kingdom

Raspberry Pi Pico 2 W adds on-board single-band 2.4GHz wireless interfaces (802.11n) using the Infineon CYW43439 to the Pico 2 hardware. The on-board 2.4GHz wireless interface has the following features:

    Wireless (802.11n), single-band (2.4 GHz)

    WPA3

    Soft access point supporting up to four clients

    Bluetooth 5.2

        Support for Bluetooth LE Central and Peripheral roles

        Support for Bluetooth Classic
Raspberry Pi Pico W and Pico WH

RP2040 microcontroller chip designed by Raspberry Pi in the United Kingdom



Raspberry Pi Pico W adds on-board single-band 2.4GHz wireless interfaces (802.11n) using the Infineon CYW43439 while retaining the Pico form factor. The on-board 2.4GHz wireless interface has the following features:

    Wireless (802.11n), single-band (2.4 GHz)

    WPA3

    Soft access point supporting up to four clients

    Bluetooth 5.2

        Support for Bluetooth LE Central and Peripheral roles

        Support for Bluetooth Classic
V1KT0P ★★
()
Ответ на: комментарий от pihter

По большому счёту, один чип.

Модуль там как Pi Pico — флеш, клок, немного обвязки. На новых камнях ещё и флеш встроенный.

https://0x0.st/8ofl.JPG (via http://electronupdate.blogspot.com/2018/08/espressif-esp32-teardown.html)

У WEMOS есть линейка -mini плат, без экрана. Там нагляднее.

https://www.wemos.cc/en/latest/d1/d1_mini.html

https://www.wemos.cc/en/latest/d1/d1_mini_lite.html

https://www.wemos.cc/en/latest/s2/s2_mini.html

https://www.wemos.cc/en/latest/s3/s3_mini.html

anonymous
()
Ответ на: комментарий от anonymous

По большому счёту, один чип.

Модуль там как Pi Pico — флеш, клок, немного обвязки. На новых камнях ещё и флеш встроенный.

Так по большому счету или один чип с минимальной обвязкой на плате?

На всех твоих картинках платку вижу я

pihter ★★★★★
()
Ответ на: комментарий от pihter

Занудствовать–то зачем?

Имелось в виду то, что имелось: это интегрированное решение. Не требующее PWM на кучу напряжений, внешнего трансивера или усилителя. RF–часть внутри корпуса. Обвязка тривиальна и может быть реализована в рамках своего собственного устройства, равно как и печатная антенна. Сами ESP32 точно так же продаются в лентах, как и RP2040.

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

anonymous
()
Ответ на: комментарий от Jullyfish

Вот и вот. На второй, как я понимаю, это просто антенна так выглядит.

По виду сразу усомнился а не обычная ли это плата с крышкой. Первое попавшееся видео с разборокой этого «чипа» показал что да под крышкой несколько чипов с обвязкой: https://www.youtube.com/watch?v=ZQXpfKDbXKs

То-же самое можно и с любыми другими чипами сделать.

V1KT0P ★★
()
Ответ на: комментарий от V1KT0P

То-же самое можно и с любыми другими чипами сделать.

Можно. Но придётся это делать самому.

Если чип рассматривать как микроконтроллер, то esp32 не является чипом, т.к. там больше одной интегральной схемы.

С точки зрения поверхностного монтажа (мой случай) это отдельный чип-компонент для монтажа на плату.

Jullyfish
() автор топика
Ответ на: комментарий от Jullyfish

С точки зрения поверхностного монтажа (мой случай) это отдельный чип-компонент для монтажа на плату.

Тут видимо с точки зрения стоимости ESP32 выигрывает. Есть конечно похожие продукты вроде даже с лучшими характеристиками. Бегло нагуглил чип CYW55513 где Cortex M33, BT 5.4, WiFi 6 2.4/5/6GHz. Но дороже, менее известно по крайне мере в среде DIY. А значит нужно больше тратить времени, тогда как подавляющему количеству людей возможностей ESP32 достаточно.

V1KT0P ★★
()
Ответ на: комментарий от anonymous

Занудствовать–то зачем?

Так вы мне говорить что есп, в отличии от пики – чип, а не плата. И, в подтверждение своих слов, показываете фотки на которых видно что есп – тоже плата. Я растерян )

Имелось в виду то, что имелось: это интегрированное решение.

Я, без сарказма, не вижу разницы!

https://www.raspberrypi.com/documentation/microcontrollers/images/pico-1s.png?hash=37f90d0137e81859630d4f0943b6f3d5

вот, те, которые с вайфаем, чем отличаются от есп? Какие внешние напряжения и трансиверы ей нужны? Только питание ( уверен ЕСП-шке тоже нужно питание ), остальное все у нее тоже на борту.

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

Так а я ж с этим и не спорю, просто это мало подходит в качестве аргумента против пики: там ровно то же самое.

pihter ★★★★★
()
Ответ на: комментарий от Jullyfish

то esp32 не является чипом, т.к. там больше одной интегральной схемы

Ну.

С точки зрения поверхностного монтажа (мой случай) это отдельный чип-компонент для монтажа на плату.

Платка пики задизайнена так, чтоб ее можно было припаять как smd компонент точно так же как и есп. В чем разница-то?

Вот, например: https://inputlabs.io/static/manual/solder_pico_done.jpg

pihter ★★★★★
()
Ответ на: комментарий от pihter

А у RP2040, сюрприз, нету RF тракта — у Pico W беспровод сбоку на синюю изоленту примотан, там два самостоятельных элемента. И можно RP2040 сдуть, а кипарисину вполне себе использовать по отдельности, как аналог ESP32. Только, она ещё более закрытая и проприетарная. С наилучшими пожеланиями, ваш К.О.

Что-то уже флуд ради флуда пошёл. Если серьёзно, раз уж нужны и синезуб и WiFi — ESP32 вне конкуренции, хотя бы по категории цена–качество документации. Поэтому, придётся ТС осваивать конфигурирование ESP-IDF. =)

anonymous
()
Ответ на: комментарий от Morin

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

Зачем хамить-то? Я не утверждаю что пика лучше

твой пирожок уровня контролешек начала нулевых

Ну покажи мне такой из начала нулевых или признай что ерунду сморозил тогда

pihter ★★★★★
()
Ответ на: комментарий от Morin

Не соглашусь категорически. RP2040 отличный камень, в том числе и ценником.

RP2350 уже вышел сырым, да и понесло их куда–то не туда. Старшие малинки ­— да, и впрямь оверпрайснутая проприетарь, спихиваемая гигантскими партиями под видом «обучающего чего–то там» и игрушек для гиков.

anonymous
()
Ответ на: комментарий от pihter

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

Morin ★★★★★
()
Ответ на: комментарий от anonymous

А у RP2040, сюрприз, нету RF тракта — у Pico W беспровод сбоку на синюю изоленту примотан, там два самостоятельных элемента

А я и не утверждал обратного - ты споришь с вображаемой копией меня: я всего лишь удивился аргументу что, дескать, малина - плата, в отличии от есп.

pihter ★★★★★
()
Ответ на: комментарий от anonymous

С наилучшими пожеланиями, ваш К.О

Сам придумал - сам опроверг

Что-то уже флуд ради флуда пошёл.

Будто тебя кто-то неволит

Если серьёзно, раз уж нужны и синезуб и WiFi — ESP32 вне конкуренции, хотя бы по категории цена–качество документации.

Да ради бога, только нас про другое спрашивали. Я вот самолепные пельмени люблю: они - вне конкуренции.

Поэтому, придётся ТС осваивать конфигурирование ESP-IDF. =)

Ну отлично помогли, че.

pihter ★★★★★
()
Ответ на: комментарий от Morin

«пирожки оверпрайснутое говно»

Плат за доллар на рп2040 - вагон. Куда дешевле? Денди на нем работает и hdmi.

Я согласен с тем что по соотношению цена-моща, есп круче, повторюсь, открытый бы тулчейн - цены бы не было

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

Ты сам-то пробовал или не читая осуждаешь?

pihter ★★★★★
()
Ответ на: комментарий от Morin

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

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

pihter ★★★★★
()
Ответ на: комментарий от pihter

и как это у меня погромисты эту вундервафлю в виме варят, никак гении.

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

Morin ★★★★★
()
Ответ на: комментарий от anonymous

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

накинул бы еще парочку, конторок но сходу не вспомню, отбросили их или из-за скудной доки или из-за недопиленности камней

Morin ★★★★★
()
Ответ на: комментарий от Morin

и как это у меня погромисты эту вундервафлю в виме варят, никак гении.

Ну вот и поделился бы, автор, кажется совета на эту тему и спрашивал, разве мы тут не за этим?

зайди на гитхаб эспрессиф, почитай вики эспрессиф

Мне не нужно, а вот ТСу может пригодиться

ты и автор просто ленив

Я с еспхами никогда не работал (ну почти) я ленив, потому что не знаю какие там есть приемчики вокруг штуки, с которой я никогда не пересекался?

уже не один плагина выходил черти к чему. уже жевано пережевано все,

Ну я тред читал и чёт не увидел чтоб это было предложено. Может и так: я не в курсе, а вы не присоветовали до сих пор

pihter ★★★★★
()
Ответ на: комментарий от pihter

Автор означил дополнительные условия: ему нужен синезуб и беспровод. А это значит нужен стек протоколов и шедулер, без вариантов. И, сюрприз-сюрприз, либо это самому костылять, либо оно уже есть, готовое, в виде ESP-IDF. С которым да, таки придётся разбираться.

У CYW43439, если что, такая же бодяга внутри крутится, с тем же шедулером из freertos, только в дополнение ко всему ещё и совсем проприетарная.

anonymous
()
Ответ на: комментарий от anonymous

Автор означил дополнительные условия: ему нужен синезуб и беспровод. А это значит нужен стек протоколов и шедулер, без вариантов. И, сюрприз-сюрприз, либо это самому костылять, либо оно уже есть, готовое, в виде ESP-IDF. С которым да, таки придётся разбираться.

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

Вот, первое что нагуглилось, какой-то веб сервер по вайфаю с температурой, никаких шедулеров писать не надо:

https://projects.raspberrypi.org/en/projects/get-started-pico-w/2

Я ваще не пойму о чем спор: пика - эта та же есп, тока подороже, но зато пооткрытее попонятнее.

Хошь бери эту, хочешь - это, смотря что тебе больше нравится. Я ни разу есп не осуждаю, я просто предложил автору малинку потому что мне показалось что это то, что он хочет

pihter ★★★★★
()
Ответ на: комментарий от Morin

пирожок уровня контролешек начала нулевых

Вот с этим хотелось бы поспорить.

Уже не раз натыкался на людей, особенно на англоязычных ресурсах, которые утыкаются в куцый список периферии RP2040, затем в ядро M0 и на этом фоне начинают воображать себе, что это такой чахлый аналог 32F103. И пафосно начинают рассуждать, мол, «да эта ваша Pi Pico такого не потянет».

«Контролешки начала нулевых» — это в массе своей дохлое восьмибитное ядро, порой даже не укладывающее одну инструкцию в такт. И вся работа выполняется хардварной периферией, перечисление которой и определяет практическую применимость камня.

RPxxx — это зверюги несколько иной концепции. И «из начала нулевых» с ними может тягаться разве что Parallax Propeller, да и то, именно что концептуально. Основная фишка RP2xxx — это независимые программируемые GPIO-стейтмашины, работающие на частоте основных ядер. Которые, в свою очередь, свободно гонятся до 240+ MHz. Что позволяет невзначай наногодрыгать протокол HDMI, например. И ещё ухитряться делать что–то полезное на втором ядре в это же время.

«В начале нулевых» такое делалось дополнительной вязанкой DSP вокруг процессора. Или всякими BlackFin’aми, либо плисиной, что уже из совершенно другой (на пару порядков) ценовой категории, равно как и прочие проприетарные ARM/MIPS/ARC камни, заточенные под задачу.

anonymous
()
Ответ на: комментарий от anonymous

Основная фишка RP2xxx — это независимые программируемые GPIO-стейтмашины, работающие на частоте основных ядер.

Насколько я понял, PIO вообще раньше не было, уж в мк за доллар почти наверняка. Авторам пики за это надо микроконтроллерную нобелевку давать)

pihter ★★★★★
()
Ответ на: комментарий от ivanich10

нафига оно нужно?

Мне то-же стало интересно, я глянул там на ассемблере можно небольшие програмки писать которые работают независимо от CPU. Например можно читать данные и класть в память не трогая процессор а по достижения определенного количества записанных данных или по стоп символу выставить прерывание процессору чтоб он это обработал. Также этот ассемблер позволяет выставлять нужную задержку в тактах или выполнять цикл без задержки на jmp в начало цикла. Даже интересно что оно еще умеет, надо документацию почитать.

V1KT0P ★★
()