STM32 для новачків: обираємо плати, середовища та перші кроки

Привіт, мене звати Євгеній. Спочатку трохи про себе. Закінчив НАУ в Києві за спеціальністю інженер-електрик авіаційних систем. Після 10 років роботи з Джавою і клауд-технологіями вирішив знову взятись за старе — за електроніку. Почав вивчати мікроконтролери й згадувати схемотехніку з університетського курсу. В цій статті хочу поділитися власним унікальним шляхом знайомства з мікроконтролерами STM32 компанії STMicroelectronics. Багато в чому це буде саме власний досвід, осмислений і узагальнений.

Свій шлях я починав з Ардуїно (Arduino). Тому матеріал розрахований саме на тих, хто вже так само знайомий з Ардуїно і шукає дорожню карту (роадмапу) як перейти на STM32. Якщо ще не знайомі з Ардуїно, то рекомендую все-таки почати саме з неї. Вам може бути цього достатньо, а ще це може стати чудовим хобі на все життя. Інших, хто вирішив заглянути за горизонт або професійно розвиватися у сфері Embedded — ласкаво прошу!

Плата розробки для STM32

Пропоную почати з опису, що таке STM32. Це сімейство мікроконтролерів (далі МК) компанії STMicroelectronics, побудованих на архітектурі ARM-сімейства мікропроцесорів Cortex-M. Це актуальна та ефективна архітектура від компанії ARM, призначена для побудови пристроїв з невеликим електроспоживаням і високою продуктивністю. Тепер, після офіційної частини, розглянемо, як нам почати працювати з цими МК. Як не дивно, знадобиться девборда (плата розробника) побудована навколо STM32. Тут все доволі просто і важко буде помилитися при виборі своєї першої девборди. Кожен, навіть найдешевший МК, має в собі стандартний набір периферії, яку ви й будете вивчати, якщо вирішили почати цей шлях: GPIO, UART, I2C, SPI, ADC, Таймери, DMA, Watchdog. Більш просунуті МК мають додатковий набір периферії (DAC, CAN, USB, Ethernet тощо), але стандартний набір є у всіх і для початку цього більш ніж достатньо. Девбордів існує велика кількість, але є дві офіційні лінійки від самої STMicroelectronics: Nucleo та Discovery.

Переваги Nucleo-плат:

  • вбудований програматор і дебагер прямо на платі;
  • якість виконання системи живлення;
  • сумісність виведених на плату GPIO-пінів з Ардуїно шілдами.

Discovery-плати мають ті самі переваги, що і Nucleo окрім сумісності з Ардуїно. Також часто мають специфічну периферію на платі, як-от:

  • TFT/LCD-дисплей;
  • гіроскоп чи будь-які інші датчики;
  • сенсорну кнопку;
  • Ethernet;
  • тощо.

Ціна цих плат розробки зазвичай стартує від 800 грн. Різниця у вартості між ними часто зумовлена тим, що Discovery-борда має якусь специфічну периферію, як-от дисплей чи якийсь сенсор. Discovery є сенс обирати під конкретний проєкт. Коли ви точно знаєте, що у вашому продукті буде використовуватись дисплей чи, наприклад, датчик температури, і для зручності розробки ви хочете, щоб це уже було на девборді. Ви точно не помилитесь, якщо в ролі своєї першої девборди оберете будь-яку доступну Nucleo без жодної додаткової зовнішньої периферії. Оскільки та стандартна периферія, описана на початку цього параграфу, знаходиться вже всередині самого МК і нікуди від вас не дінеться. А будь-який сумісний дисплей чи датчик температури ви завжди зможете докупити пізніше і під’єднати.

Хоч Nucleo і дуже рекомендована для легкого і безболісного старту, але варто розповісти й про варіанти з АліEкспресу. Це більш доступні, але і більш «суворі» варіанти (найвідоміша BlackPill — F401 або F411). Суворі, тому що вимагають трохи більше навичок в плані підключення плати й завантаження прошивки. Такі плати мають значно менші габарити й не несуть на борту програматора/дебагера ST-Link. Прошивка часто відбувається через зовнішній програматор, який треба докупити. В дорожчих варіантах вона можлива і через DFU (USB), хоча зовнішній програматор буде краще. Також подібні плати мають простішу систему живлення з меншою кількістю захисних механізмів.

Зате вони дуже добре підійдуть для різних домашніх проєктів завдяки ціні та габаритам. Коли ви станете трохи більш досвідченими, описані вище недоліки перестануть бути перешкодою. Адже на кожен домашній пет-проєкт ви точно не будете купувати дорожчі й габаритніші Nucleo/Discovery, які важко помістити в невеликий пластиковий корпус. Вартість таких плат варіюється від 60 до 200 грн залежно від МК, який використовується і магазину. Рекомендую магазин-виробник WeAct Studio з АліEкспрес. Купував у них кілька різних девбордів, ST-Link програматор, логічний аналізатор, претензій не маю.

Середовище розробки

Середовище розробки — це основне місце роботи, де Ви будете створювати програми для STM32 МК. Їх існує багато різних: STM32CubeIDE (офіційна від ST Microelectronics), Microsoft VS Code, Keil uVision (офіційна від самої ARM), IAR і навіть Arduino IDE. Якщо ми тут вже зібрались професійно працювати з STM32, то Arduino нам, звичайно, не підходить. Але насправді досить часто для перевірки концепту Arduino не така вже і погана. Майте лише на увазі, що гарантовано в Arduino буде працювати Arduino API, але добра половина прикладів з Ардуїно-бібліотек просто так не заведеться. Або не заведеться взагалі. Оскільки вони часто заточені під AVR (класичні Arduino) і ESP32, хоч і написані на Arduino API. Але поблимати світлодіодом точно зможете, і навіть більше.

Далі йде STM32CubeIDE, яка скоріше всього і буде вашим вибором на початку. Це офіційне середовище розробки від STMicroelectronics, яке дозволить відносно швидко запустити той самий «блінк» (поблимати світлодіодом), засноване на Eclipse. Можна графічним способом ініціалізувати GPIO-піни, периферії, задати бажану частоту самого МК і частоти окремої групи периферій. І все це — в кілька кліків мишкою. Під капотом IDE напише «нудний» код з ініціалізації цього всього, а вам залишиться лише написати безпосередньо потрібний шматок і лише у спеціально відведеному під це місці. Тобто виходять досить контрольовані умови розробки. Щоб важко було помилитися і зробити щось не те, від чого ваш МК навіть не запуститься, а ви не зрозумієте чому нічого не працює.

Інший варіант — це Microsoft Visual Studio Code (VS Code). З усіх перелічених раніше IDE ця не створювалась спеціально для програмування мікроконтролерів (компенсується PlatformIO-плагіном від українських розробників), але, як на мене, є найзручнішою, найшвидшою і сучасною. І якщо ви вже використовуєте її для інших мов програмування, а скоріше за все так і є, то перейти на неї вам буде нескладно. Окрім тієї частини роботи, де STM32CubeIDE згенерував би замість вас важливу і нетривіальну частину коду.

Отже, вибір середовища розробки на початку нашого шляху падає на STM32CubeIDE. Коли станете більш обізнані в тому, як ініціалізується сам МК і його периферії, як користуватися периферіями, і зрозумієте принцип роботи з HAL, то перейдете в VS Code якщо у вас так само як і в автора статті вроджена алергія на Eclipse-подібні IDE. А далі на більш реальних проєктах будете використовувати CMake, власноруч встановлювати компілятор, лінкер, дебагер (toolchain), а також керувати залежностями/бібліотеками в будь-якій зручній для вас IDE. Але це все вже потім.

Ось приклад, як виглядають налаштування PlatformIO та блінк-програма на STM32G030 з дефолтною частотою ядра та ініціалізацією GPIO:

Висновки

Якщо підсумувати, то для старту буде потрібен один з таких сетапів:

Рекомендований сетапАльтернативний сетап
для більш досвідчених
Бюджетний сетап
для більш досвідчених
Бордабудь-яка STM32 Nucleo-64 (800 грн)BlackPill F401/F411 (200 грн) *STM32G030F6P6 (100 грн) *
IDESTM32CubeIDEVS Code + PlatformIOVS Code + PlatformIO
Додатковонічого не потрібноРекомендується:
програматор ST-Link (200 грн)
Обов’язково:
програматор ST-Link (200 грн)

*в альтернативному і бюджетному сетапах потрібно буде запаяти гребінки пінів власноруч.

Тобто для старту в STM32 рекомендується плата розробки Nucleo-64. Не обов’язково якоїсь потужної серії, як-от G4 чи H5. Згодиться і G0, F3. Також потрібна безкоштовна STM32CubeIDE (потребує реєстрації) як середовище розробки.

В майбутніх публікаціях напишемо простий «блінк» на трьох різних IDE та порівняємо їх.

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

👍ПодобаєтьсяСподобалось22
До обраногоВ обраному13
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

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

Также, неплохо было бы отметить, что для программирования стм32 далеко не всегда нужен программатор, можно использовать предварительно прошитый на заводе загрузчик. Он поддерживает прошивку по различным интерфейсам, в том числе и по usb (не на всех микроконтроллерах. См. документацию, appnote)

Для отладки можно использовать printf в определенном формате и парить его скриптом на питоне или чем-либо ещё, а также все это автоматизироввть. Я разрабатывал несколько систем автоматического тестирования/прошивки устройств, которые работают на этом принципе.

Также, рекомендую посмотреть в сторону segger ozon(www.segger.com/...​ls/ozone-j-link-debugger) и т.д. бесплатно и очень много позволяет сделать удобно и вместе. Вплоть до профилирования кода. Работает даже с китайскими клонами их j-link

Дякую за статтю!
Мав хобі досвід з Arduino та ESP, дізнався багато нового.

Можете порадити ідеї проектів для розвитку в embedded?
Можливо маєте власний план та могли б ним поділитись?

Що прийде в голову одній людині не обов’язково захопить іншу. Навіть не знаю. Я б радив щось типу маленьких RnDішок:
solderkid-blog.netlify.app/stm32/tm1650
solderkid-blog.netlify.app/stm32/tim_ic

Ну або якщо дійсно якийсь проєкт, то можете спробувати зробити свою борду. Це насправді не так важко: solderkid.netlify.app

Цікавезно, дякую!

Колись грався ардуіно, але не вистачало її можливостей (типу wifi), тому швидко втратив інтерес. Давно хотів познайомитись з чимось типу stm або esp, та кожного разу зупиняє мова С. Чи можна писати на чомусь хоч трохи більше user-friendly? Типу джави, golang, ітд. Гуглити пробував — якісь тестові проекти-обгортки звісно що знаходив, але цікавить саме реальне застосування, чи має це сенс, чи це тупикова гілка

Чи можна писати на чомусь хоч трохи більше user-friendly?

Можна, але щось більш user-friendly погано працює, коли стейт програми модифікується позапрограмними сутностями (зміна вмісту регістрів залізом, виклики інтераптів,...), і вони ще і дуже різноманітні. Потенційних способів використання заліза значно більше, ніж реальної можливості сконфігурувати все без конфліктів, тому зробити API під все наперед неможливо.
Приблизно як у світі бекенду швидко перестає вистачати простого блокуючого читання/запису, і починає хотітися всілякого мультиплексування з асинхронщиною.

Лише C. Але можу порекомендувати лише спробувати кращу IDE ніж Ардуїно — з кращою навігацією, підказками. VS Code наприклад. Може проблема була саме в цьому. Тому що як IDE Arduino жахлива

Лише C.

Не позорьтесь. Погуглите хотя бы сперва.

Я би рекомендував C. Зрозуміло що можна писати на чому завгодно, якщо знайдеться відповідний інтерпретатор.

Так може підскажите альтернативи, а не просто носом тикнете? 🥲 У нас же тут не руснявий форум, щоб на усі запитання відповідати «ти далба*об, іді пагуглі»

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

Вместо навыка написания «руснявый» можете освоить навык понимания написанной на странице информации.

Ні на чому. Є ще одна особливість STM у порівнянні з ардуіною — все треба чи писати самому чи дописувати. На ардуіні майже все можна поставити як бібліотеку та просто використовувати. На STM можна знайти у гіті купу прикладів, котрі не робочі, не компілюються в тебе чи написані для іншого STM. А код з одного STM на інший навіть з HAL не у 2 кліка переноситься. Та й ST не особливо дбає за підтримку — купа апнотів не оновлюються та в принципі не компілюються навіть якщо десь знайти соурси. Код езернета котрий генерує куб в принципі написаний не правильно. На STM легко можна поморгати світлодіодом, все що більше то вже треба прикладати зусілль.

В руках майстра і лопата електрогітара.

На джаві ембедед тож розвинутий, але я б не сказав что писати на джаві встройку більш дружелюбно ніж на С. Взагалі робота з залізом вона не дружелюбна, а коли згадуєш, що за це ще й платять менше ніж за веб, хоча знати треба більше, то взагалі стає сумно. Просто чим дешевше мікроконтроллер, тим складніше під нього щось писати, на чомусь крім С і ассемблерів, бо дешевий контроллер це класно для виробництва, але пердолитись з ним доведеться тобі. Дорогі контроллери, там хоч на джаваскріпті програмуй, але вони дорогі.

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

Ну от я веб-розробник, і embedded хочу чисто як хоббі покрутити. Тому і запитав про С, бо не знаю його, і вчити не дуже хочу)

Можна взяти распберрі, і з GPIO/UART/SPI/I2C працювати скриптами на баші чи пітоні. Кров з очей у тру ембеддерів буде литися як у бекендерів, які б побачили генерацію сторінки шляхом накидання хтмл-тегів на тому ж баші, але працюватиме.

і з GPIO/UART/SPI/I2C працювати скриптами на баші чи пітоні

З цим можна працювати і на ESP12 за 1$ через JS/lua/MicroPython

що за це ще й платять менше ніж за веб, хоча знати треба більше, то взагалі стає сумно

Веб розробники зараз без роботи сидять, а в ембедед майже нічого не змінилось ) Тож в середньому то на то й виходить.

1$ це дорогий чи ще ні? а за $2 вже лакшері?

Ну у того ж STM є мікроконтроллери і по 20 баксів, і по 50, девборди з якими по 400 баксів коштують. І це тільки мікроконтроллери, у них ще й мікропроцесори є. І це просто голий камінь, без плати, без нічого.

Raspberry rp2040 можна програмувати з micro python

Чи можна писати на чомусь хоч трохи більше user-friendly?

Так священний JS же на espruino. Під нього там можна знайти/написати і кастомні модулі на С для чогось вузького та специфічного. Ідеальна штука, коли треба швидко наляпати щось доволі складне, але толерантне до затримок та продуктивності порівняно з С.
Ну ще там на nodemcu є Lua з коробки, і гидкий мікро пітон можна накатати...

Даже на STM32 можно писать на микропитоне: micropython.org/stm32

Официальные платы под него на STM32: store.micropython.org

Автор статьи в комментариях вызывает фейспалм. Даже я не связанный со схемотехникой знаю про это.

Лише C.

dou.ua/...​283/?from=fortech#2929670

Еще для разных мк есть варианты Javascript, Lua, Rust.

але не вистачало її можливостей (типу wifi)

Тогда вам стоит посмотреть в сторону esp32-c3, esp32-c6 и т д + arduino ide.

та кожного разу зупиняє мова С

В контексті STM32 вона легше ніж JS, там буквально один вечір почитати.
Це ж не плюси.
Ну і об’єм «читанини» по якомусь HRTIM або ADC в декілька разів більший.

що не так з С/С++ ? Простіше вже вивчити, розібратись і все, ніж шукати якісь обхідні шляхи на мовах під які мало написано. Якби ви писали на пайтоні і казали що С якийсь не такий тоді так. А так ви ніби програмуєте на сі подібній мові. Покращити код чат-жпт допоможе.
Я для прикладу звичайни с# девелопер і зрозуміти/вивчити с/с++ простіше було ніж ригачко-синтаксис пайтона. Схожість з с# велика, дещо мені в с/с++ подобається навіть бульше ніж в шарпі

Що мається на увазі під Ардуіно? Яких можливостей не вистачало типу wifi. ESP32/8266? Чи це було десь за часів проблеми годинника 2К?

о да, STM дуже «гарний» вибір для тих хто хоче перейти з ардуіно.
10 із 10 просто.
якщо це дитина чи початківець то відбиватся бажання колупатися з embedded намертво

е можливість працювати з stm із під Arduino IDE але не зі всіми чіпами і з особливостями.
А якщо вже брати «чистий» stm то всі ці HAL, кубіки і тд (і мова) то це як з триколісного велосипеда пересісти на реактивний літак, в усіх сенсах.

якщо ви знаєте якийсь хороший проміжний етап між Arduino і STM32, поділіться будь ласка

Мені на думку спадає лише програмування 8ми біток: Піків і тих самих AVR без допомоги Arduino

вже писали
гарний наступний єтап це ESP зі своїм ESP-IDF
особливо в рамках переходу від «відладки у консоль» до дебагерів

ESP не має енегроефективних SoC опцій, їх МК максимально прожорливі і з sleep/standby режимами катастрофа, годяться хіба що для живлення від мережі чи великих батарей, і то виключно в випадку, коли потрібен повноцінний TCP/IP стек і передача реально великого обєму даних. А якийсь дрібний ІоТ девайс, що десь приліплений далеко від розетки і працює на одній AAA батарейці, чи від сонця + суперконденсатор, з якого час від часу треба зібрати пару байт даних, не зробиш. А з STM32 +LoRa/BLE/NRF — зробиш.

А нужна ли энергоэффективность тем, кто начинает? Если хочется энергоэффективности и iot h можно посмотреть на nrf51/nrf52. Они умеют в Bluetooth low energy, взаимодействие с телефоном. Есть для ленивых arduino, также platform io

Ну якщо не таке мудрьоне, як stm32 можна піти в стан TI, але там нема таких цін як у стм, бо Texas Instruments це база баз, всеотець, а значить коштує дорого, натомість стм будучи не дуже зручним і логічним, являється блін дуже дешевим, а значить користувачів цього кривого гівна тупо більше, ніж у дорожчих аналогів.

Жаль ТИ перестали семплы в Украину доставлять...

о да, STM дуже «гарний» вибір для тих хто хоче перейти з ардуіно.
10 із 10 просто.
якщо це дитина чи початківець то відбиватся бажання колупатися з embedded намертво

Я навпаки стартував з STM32, ардуіна з її «api для дебіла» ніколи не цікавила.
HAL і Cube це взагалі шара яка дико спрощує життя, ось як люди раніше ручками всі регістри сетапили для ініціалізації — ото хардкор.
І так, поблимати світлодіодом, обробити натискання кнопки або згенерувати ШІМ що на ардуіні що на stm32 з халом це декілька рядків що навіть відкривати даташит не треба.

як на мене куб для початківців це величезне зло разом з HAL
початківець просто попливе в 100500 параметрів та згенерованих файлів
коли руками прописуєш навпаки сам задаєш «темп» і початківцям не потрібні всі параметри, ім вистачить засетапити 2-3

в свій час мені було простіше працювати напряму з AVR, компілятор на який ще й некоректно працював на лінуксі, чим весь цей піздос з STM з програматорами на програматори
навіть зараз, коли вже е platformio і купа простих скріптів, я стараюсь не юзати stm якщо е така можливість, просто із-за флешбеків. якщо просто розробити плату то ок, но якщо ще мені її і програмувати то точно не STM

як на мене куб для початківців це величезне зло разом з HAL

Воно вирішує(або має вирішувати) одну банальну проблему — міграція з одного мк на інший. Наприклад з F4 на G4 або F7.

коли руками прописуєш навпаки сам задаєш «темп» і початківцям не потрібні всі параметри, ім вистачить засетапити 2-3

Да там Clock засетапити тільки декілька десятків строчок)
Та й взагалі хал в «продакшені» юзають тільки так:
github.com/...​tform/STM32/bus_i2c_hal.c
github.com/...​.1.x/Marlin/src/HAL/STM32

Ловите наркомана 😀! В Marlin c++ и LL, а не HAL

А на счёт «десятков строк» — добро пожаловать в эмбеддед. Здесь нет «дяди», который все под капотом вызовет. Будь добр сам сделать инициализацию и если она травмирует разработчика своей громоздкостью — спрячь ее в функцию или конструктор класса, того же уарт, спи, например

res.cloudinary.com/...​/cfz1mpbiles65sx44lim.png

Ловите наркомана 😀!

Знову в Польші смогом надихався?;D

Похоже что да. Каюсь, был невнимателен

Звучит как проблема кожаной прокладки между стулом и монитором и нежелание читать документацию.

Всегда можно почитать документацию и не использовать HAL монструозный, а начать использовать LL. Ну или свою библиотеку написать, делов то там. Спеку открыл и погнал

Тема чому саме STM32 не розкрита. Щоб погратись треба просто взяти блюпил (stm32-base.org/...​s/STM32F051C8T6-Blue-Pill) Для новачка краще взяти в нас локально, наприклад в rcs-components незважаючи на те що в нас доставка коштує більше ніж з алі плата разом з доставкою. Це треба робити щоб потім не сидіти та не гадати чому CAN не працює. А не працює він бо на алі за долар продають перемарковані клони в котрих CANа немає. А якщо зайде то можна взяти щось нормальне
накшталт vi.aliexpress.com/item/1284385358.html.
Переваги STM32 для мене — купа IO та легкий дебаг. У ESP32 незважаючи на кількість виходів їх повноцінно використовувати не виходе — деякі тільки на вхід (чи вихід, не пам’ятаю), купа впливає на те завантажиться воно чи ні, а якщо підключити езернет то там пайже нічого не залишається.

@Eugene Kot, не зрозумів до кінця, ви перейшли з джава розробки в клауді в розробку для мікроконтроллерів? Чи все це з STM32 залишилось хоббі і ніяких професійних планів нема? Цікавить сторона — switch в девелопмент для мікроконтроллерів.

Щодо холівару stm32 vs. esp32 vs. Raspberry — стратегічний плюс стм32 — це асортимент чіпів, які максимально сумісні між собою по HAL і по пінах. Якщо є ймовірність, що хобі виллється в щось більше за прототипування на девбордах, варто звернути увагу на цей момент.

Пару копійок з мого досвіду в сфері CAN шин з інтеграцією в машини: починав з ардуіно + MCP2515, швидко вперся в обмеження по фічах і продуктивності. З STM32 — миле діло, хочеш подешевше — F103 для мін. продуктивності з інтегрованим CAN контролером, хочеш з 2 контролерами — F105, більше обчислень — F4xx, важливе живлення — L серія... і так під будь-який каприз.

зараз від китаців е дуже дешеві чипи під що захочеш і під який хочеш логічний рівень і швидкість.
Це в рази краще чим все зав’язувати на МК так яак масштабуються и переноситься без сильних проблем

Клонів стм32 (CS32, GD32,...) китайці теж клепають достатньо, і вони навіть на 90% працюють сумісно з оригіналом.
«Ардуїно» з аліекспресу, до речі, теж не на оригінальних Amtel/Microchip зібрані.

я кажу з точки зору запуску та підтримки реального продукту, а не хоббі-проектів
особливо це актуально коли продукт на ринку 4+ років без змін, але хочуть його «розширити»

По моему мнению статья не очень. Много воды без конкретики. Я вообще не схемотехник и особо не самоделкин

Тут все доволі просто і важко буде помилитися при виборі своєї першої девборди.

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

Когда-то просматривал книги и курсы на ресурсах. Больше всего учебных статей и прочего, вроде, по:
— BluePill F103 (лучше брать weact);
— BlackPill F411 (лучше брать weact);
— Nucleo F446RE
— Discovery F407

И лучше, наверное, брать платы нуклео и дискавери из списка поддержки также Arduino (stm32duino). Если стм32 окажется слишком сложным. Можно еще посмотреть и список с поддержкой micropython.

Згодиться і G0, F3.

По таким, вроде, мало материалов.

Discovery-плати мають ті самі переваги, що і Nucleo окрім сумісності з Ардуїно.

github.com/...​-ov-file#discovery-boards

И
www.st.com/...​ols/32f746gdiscovery.html

«The ARDUINO connectivity support provides unlimited expansion capabilities with a large choice of specialized add-on boards»

Це лише перша стаття з циклу. Якщо хочеться більше вже зараз, то будь-ласка — solderkid.netlify.app

Мне статья как-то не очень (замечания выше), поэтому воздержусь.

класно, жаль що мін замовлення замовлення 5 штук, якщо купити для домашнього використання для сина то виходить що пачку замовляти?

Неправильне посилання. Ось правильне посилення на мій блог: solderkid-blog.netlify.app

А щодо ардуїнки на стм32, напишіть мені в телеграм за тими контактами. Можу вислати і одну

Як раз почав більше працювати саме з STM32, Ваша стаття це якийсь знак напевне.

В часи коли ESP12 коштує 1$, ESP32-2,5$, а Pi Pico 1,8$ STM32 для DIY не дуже вже і цікавий. Зараз аж очі розбігаються... Везе зумерам 😁

Тоді чому 99.99% всіх дронів на фронті на STM32? Так само як інші роботизовані системи. Тому я і написав на початку статті саме про профіесійний розвиток.

Тоді чому 99.99% всіх дронів на фронті на STM32?

бо то не DIY, а масовий професійний продукт, та і всякі ардупілоти заточені під них. А якщо якась людина мацала тільки ардуїно, просто хоче щось жирніше щоб накидати копіпасти і не збирається виходити за межі хобі, то стм борди тепер не дуже цікаві. Та і тепер вже і С не дуже треба...

чому пів світу використовує cobol? коли здохне php? коли здохне java? а по суті питання будуть?

потрібно багато пінів для перефірії та уартів. але elrs у цих дронах на базі esp32+sx127x

Бо так випадково вийшло, що перший політний контролер був розроблений на стм, а китайці просто його копіюють. Ну і 5 років назад стм свої контролери безкоштовно засилали кому завгодно, а зараз вони коштують грошей.

Тоді чому 99.99% всіх дронів на фронті на STM32?

Уявімо, що на фронті у певного підрозділу є (умовно) такі квадрокоптери: тища однакових FPV «каміків», двадцять Мавіків і десять різних (у тому числі експериментальних самопальних) дронів від різних волонтерів-авіамоделістів.

Якщо рахувати по загальній кількості апаратів, то абсолютно однакових контролерів FPV дійсно 99.99% чи щось типу того. Але якщо порахувати по типу конструкцій, то нестандартних аматорських дронів набагато більше. Я б не взявся стверджувати, що всі вони на STM32.

Додайте ще дрони літакового типу, додайте наземні дрони. Навряд чи хтось знає загальну статистику по цьому зоопарку. Там точно бувають і RP2040, і якісь ESPшки, і чорт у ступі.

А многие умные розетки, реле и т д не на STM32, а esp )

ви явно не в темі
більша частина (не з китаю, а те що розроблено) це ESP або Rasbery Pi (як мікроконтролер, на нього заливать прошивку а не працюють через лінукс)
на другому місці AVR тому що або це від почадку було на колінці на Ардуіно або просто виросло з ардуіно (самі по собі чіпи AVR гарні)
і на останньму місці всякі STM і то зачасту в восьмібітні в джойниках, детонаторах і тд

політники що «збирають» на stm зачасту просто клони відомих політників і на них заливають «рідний» ардупілот чи подібне

Щойно загуглив Плата ініціації і одразу перші 2 пропозиції (Firestarter v2 та Icarus) чомусь на STM32. Видно мені не повезло або я не тим інтернетом користуюсь.

Хоча здавалося б — скільки тій ініціації потрібно?! І 8ми бітка справиться. Так же?

ну я кажу те що реально бачу, а не «гугл»
з нашої сторони продуктів дуже багато, прям великі партіі вже не так сильно

я ініціатори і на чистих транзисторах бачив і з таймером на 555 та аналоговим лічілником
так же я бачив ініціатори на ардуіно. буквально плата ардуіно леонардо і до неї об’язка
хто с чим може, з тим и працюе

що до ініціаторів — вони або дуже тупі і восмибітка юзаеться щоб було якнаймога меньше компонентів, або з гироскопом-магнетрометром-мікрохвильвим і там AVR/STM
якщо ж ініціатор розумний (по часам, lora або інше) то засчасту юзають esp

я ініціатори і на чистих транзисторах бачив і з таймером на 555 та аналоговим лічілником
хто с чим може, з тим и працюе

Це взагалі дивний двіж якийсь- 3 роки всі кому не лінь ляпають той таймер, здавалося б за перші місяці можна було організовано зробити і забути, так ні. Уявляю який там капець, коли через аматорську подєлку комусь відриває кінцівки чи ще гірше.

можна було організовано зробити і забути

Одна з головних причин, китайці не дуже підряджаються робити серію продукту явно воєнного призначення, це не якась зарядка до телефону RZTK, а власного виробництва в Україні практично немає.

явно воєнного призначення

Їм то звідки знати? То ж примітивна 8 бітна іграшка, а не щось що кидається в око. Китайці і стілець продадуть, на якому вони сидять, та зроблять інший, поки партія не заборонила.
В Україні наче достатньо підприємств, які можуть ліпити такий примітив, правда ціна завжди кусалася. Десь там і планшети чи електронні книги виробляли, а тут груба примітивна 2-х стороння плата.
Можна і голі плати було замовляти, а в Україні ліпити смд на малому автоматі. Такий вже і на столі вміщується. Хоча з огляду що там 5 лярдів на завод чіпів хочуть викинути, то дістати десяток нормальних юзаних ліній для плат це зовсім копійки.

Їм то звідки знати?

Якщо фізособа замовляє десяток штук собі поштою, ніяк. Якщо мільйон, юрособа, з усіма KYC, AML, забороненими свіфтами назовні і іншими регуляціями, то дізнаються автоматично.
Тим більше, якщо замовляється відразу з монтажем, то здогадатися про призначення стає нескладно навіть просто з вигляду плати.

В Україні наче достатньо підприємств, які можуть ліпити такий примітив,

Ну як сказати... За китайську ціну буде 0.25/0.25, маска яка лущиться як ніби з сухого фоторезисту зроблена, пайка на пасту в пічці з такою якістю просто неможлива. Кратно дорожче буде 0.15/0.15, теж недостатньо, наприклад, для тих же акселерометрів, їх просто не роблять не в LGA/BGA 2×2мм. Якісно — там вже ціна на порядок піднімається, і скоріше за все це насправді перекупи.

Дізнаються що комерційна партія? Там таких тонна клієнтів у них, не весь же бізнес тримається на фізиках з їх 10 плат за 5 баксів. Там же не буде якесь міністерство оборони в документах, просто якісь ФОП «роги і копита».

Тим більше, якщо замовляється відразу з монтажем, то здогадатися про призначення стає нескладно навіть просто з вигляду плати.

Що ж там такого з вигляду, що вирізняє ї серед інших 100500 примітивних подєлок? Наявність мк з мінімальною обв’язкою, індуктивності, діода, кондера, транзистора і якогось смугового фільтра на ОП якщо це там п’єзо? Це може бути що завгодно, навіть як вліпити туди IC акселя і якийсь приймач. Без збірки взагалі нічого не ясно що воно, як затерти в проекті назви чіпів, ніхто його все рівно там не буде вивчати і проводити детективні роботи та додумувати.

Щоб сплатити свіфтом треба дозвіл нбу на який треба лист від мо, тобто має бути контора з секреткою, у реєстрі критичних днів. Це відразу поповнить бази kyc і вам відмовлять. Або треба працювати через проксі 95-го кварталу яке вам нададуть любʼязно, але це коштує десь 25 відсотків

Яхты, проститутки и школы в Лондоне для детей сами, тех кого нужно, сами себя не оплатят.

Линии не нужны никому, с них гешефт предельно малый. А на заводе можно пилить годами 😀

Що волонтери чи бусифіковані знали до війни, на тому і роблять, очевидно ж.
Для тих же ініціаторів, при серйозній розробці, можна було б підібрати щось типу продукції PADAUK за 5-7 центів за корпус sot23-6, але воно маловідоме поза Китаєм і потребує часу на освоєння.

уж що що, а китайські МК це лотерея.
Як в параметрах, так і в довгострокової доступності
і зачасту по таким чипам нема нічого окрім короткого даташилду на китайскій

PADAUK

Щоб зменшити ціну в закупці на 0,1%? :) Там роблять приблизно на stm8s003f3p6, хай і продовжують- 20 центів, чи 5 яка різниця... та і що там з 6ю ногами робити? Дуже обмежене рішення, яке при бажанні додати функціонал обломиться, ні тобі радіо, ні гіроскопа, ні ІЧ для пульта, але 10-15 центів зекономили так... Тут треба була б уніфікація, а не потуги вжатись в якийсь камінь для гіків.

чому тоді ардупілот а не стмпілот?

Тоді чому 99.99% всіх дронів на фронті на STM32?

А їх вистачає обробляти і передавати відео у реальному часі?

Ні, для цього є окремий відеотрансмітер. І навіть щоб накладати дані на відео є окрема мікросхема. Стмка цим не займається

FPV прості і мають окремо канал керування, окремо передають аналоговий відеосигнал.

Певен, хтось десь розробляє автономні та напів-автономні дрони з OpenCV, які дійсно обробляють відео і щось з ним роблять. Але у відкритих джерелах технічних деталей про такі розробки дуже мало.

А нащо його обробляти на дроні, якщо все що тобі з нього треба це відеосигнал, а обробку робиш уже на прийомі, і коли втрачаєш дрон, то найдорожча його частина, а саме сєтка яка займається обробкою, залишається на землі, а сам дрон тупа жилізяка з радіо на борту.

А нащо його обробляти на дроні

Щоб дрон був автономний. Бачить ворожу техніку, розпізнає і атакує, при цьому не маючи зв’язку з оператором.

Держава не може забезпечити армію тупими фпвшками, чи зможе вона забезпечити армію дронами в які засунули мізки і вони можуть самі літати? Я думаю питання риторичне.

Читав десь у новинах що армія вже застосовувала дрони які можуть нести 250-кілограмові бомби на 2000 кілометрів. Хоча, можливо, я поганенько розбираюся і такий дрон все одно значно дешевший за дрон який зможе розпізнавати ворожу техніку.

напевно що цей дрон всі 2000 км не керується з пульта як фпв, напевно кривизна земної кулі не дозволить, в радіо сигналах не шарю.
Якось НПЗ в рашці ж горять.

З пульта — ні, з супутника — можливо)

Читав десь у новинах що армія вже застосовувала дрони які можуть нести 250-кілограмові бомби на 2000 кілометрів.

Це повинен бути дрон розміром з легкомоторний літак аля Cessna 172.

І скільки він під РЕБом пролетить?

Яким чином автономний дрон вирішить цю проблему, якщо при зникненні сигналу керування дрон або падає десь в полі, або ще гірше летить в точку взльоту. Окей можна зробити так, щоб після зникнення сигналу дрон сам атакував першу попавшу ціль, хто буде гарантувати, що ціль яку вразить дрон буде не дружньою? Наша і ворожа радянська військова техніка для машини виглядає однаково, вона не зможе визначити ворожий це т-72 чи наш навідміну від живої людини. Хто з розробників візьме на себе відповідальність коли система машинного зору обере за ціль дружній об’єкт? Окей можна на всю нашу техніку і людей навішати маяків які для наших дронів будуть слугувати союзною міткою, але буквально через декілька тижнів ворожі дрони будуть використовувати цю саму мітку для ураження цілей. Я хочу бачити рішення проблеми, як тупорилий штучний інтелект буде дізнаватись де наше совкове відро, а де не наше, і хто заплатить за це свято, бо без бюджета і вливань зі сторони держави нічого не буде, якщо і розроблять таких ботів їх продадуть без докорів сумління американцям, китайцям, іранцям, в ізраіль, куди завгодно, але воно не залишиться в Україні, бо держава жме бабки на оборонку.

Так не потрібно повністю автономний дрон, який буде обирати ціль. Достатньо захват цілі оператором + автономний політ після захвату цілі.
Бо є 2 проблеми:
1. Кривизна Землі і відповідно при підльоті втрачається сигнал (може бачили на відео, коли прям перед ударом в цільб майже нічого не видно) і важко вучити в потрібне місце
2. Портативні РЕБ, які ставлять на все, що рухається. Щось типу такого bezpeka.club/...​4-400-mgts-5-8-ggts-200vt Але у них радіус дії 500-700 метрів.

І тут якраз автономність важлива, бо інакше дрон просто не може підлетіти.

це не так працює, заходим на висоті де реб діє слабо, беремо ціль на захват і передаємо керування опенсв яка далі сама залітає у зону ребу і намагається наздогнати ціль яку їй показали. швидкості великі, тому ціль не встигає, якщо це буханка наприклад

Все ще цікавий, якщо є плани зібраний на девборді з в’язанкою шилдів виріб в перспективі зібрати на компактній власній платі, і дуже цікавий, якщо в планах ще і щоб працювало автономно місяцями-роками від батареї.
Також цікавий, якщо замість кубів з ардуїною освоювати більш підкапотне програмування, розбиратися як працює тулчейн чи наприклад пробувати писати під мікроконтролер на Rust чи ще якійсь нетиповій мові.

Так, але лов повер консамшн розробка це вже професійна. Крім того Ардуїнка це авр, а стм просто набагато жирніша і трохи дешевша альтернатива. Виходить що на умовній діаграмі Ейлера задачі DIY перекриваються або AVR (на яку після ардуїни мабуть злізти простіше), або вже тоді чимось набагато жирніше і високорівневим якщо націлились на IOT і тому подібне. Звісно там залишається проміжок задач для ARM, але для DIY він достатньо невеликий. Для профі звичайно це куди краще авр, але для аматора не дуже, бо завтра він захоче вайфай, езернет чи камеру приліпити, і це вже буде точно не для аматорів в контексті жирних стм

Ардуїнка це авр

Не тільки, з Arduino IDE можна писати під Blue Pill, і за вийнятком потреби в USB-UART для першої прошивки і деяких вузькоспецифічних задач, все, що показано під Arduino, можна робити на стм32 з більшою продуктивністю. Сенсу освоювати AVR (як і будь-які 8-бітні контролери) в сучасному світі навіть для професійного застосування зараз не лишилось.

Все ж таки канонічний ардуїно це 8 бітні авр, які є DIP корпусах, та SMD придатних для пайки і ЛУТа на колінці, за що і були 20 років в фаворитах DIY. По суті це була їх чи не найголовніша перевага.

з більшою продуктивністю

Продуктивністю обчислень? Чи розробки? Бо який смисл якщо в DIY 95% часу ЦП в циклі nop робимо.
Звісно за шарами абстракції можна робити і на стм, тільки питання нащо? Бо історично більшість матеріалів серед хоббістів під нього, а якщо вистачає авр то смисл? Бо умовних таймерів більше? авр8 і стм8 займають майже одну нішу. Якщо не вистачає того заліза, то задачі там вже професійні. Таких серед хобістів обмаль, а проектів ще менше. А як хочеться високорівневого -тяп-ляп і комунікації, то ринок пропонує безліч платформ, яких 10 років тому не було. Хоча для профі без сумніву стм топові залізяки, і той авр не здався.

Сенсу освоювати AVR (як і будь-які 8-бітні контролери) в сучасному світі навіть для професійного застосування зараз не лишилось.

Всім RTOS і лінукс? :) Так можна сказати і про стм32 в цілому — нащо якщо є дружелюбні одноплатники за 2$, які навіть з юзб хостом :)? Але як раз весь аліекспрес в 8 бітних мк, не всюди ж ліпити арм. В умовному китайському модульному термостаті чи іригаторі як раз знайдете 8бітку, скоріше за все stm8s003. І ніша ця нікуди не щезне, бо як не крути з прогресом, та все тому ж іригатору не потрібен 2 ядерний кортекс, щоб реалізувати індикацію BMS та PWM по кнопці. От у мене ящик тих різних stm8/stm32 і бордів від простих, до тих що з сенсорним дисплеєм, ну погрався, але по суті для хобі за всі роки достатньо було tiny13, atmega8, atmega32, esp12 і клон малинки.

Ну, колись канонічним було збирати детекторний приймач, але часи змінюються, ЛУТ і виводні корпуси з можливістю замовити плату разом з монтажем у китайців стають скоріше шкідливими навиками.

Основна перевага стм32, це дешевизна і відкритість, коли можна як робити ардуїнні поробки, так і працювати з ртосами і освоювати нутрощі тулчейнів, що знадобиться якщо цим почати заробляти, все ще лишаючись на доступному навіть на студентську стипендію залізі.

І ніша ця нікуди не щезне

Ніша саме STM8/PIC16/AVR зникає. З одного боку, більш швидкий 32хбітний контролер в роботі споживає більше, але і відпрацює подію швидше, і буде далі спати, тому середнє споживання можна тримати таким же, чи навіть нижчим ніж було б на AVR.

З іншого боку, там, де треба задешево помигати світлодіодами, є свої гравці з на порядок-два меншими цінами за штуку ніж у олдскульних восьмибіток, наприклад: www.lcsc.com/...​-PMS150C-U06_C168658.html

З третього боку, ціна програміста на разову поробку буде дорогою, тому сенсу брати дрібний контролер, замість відразу stm32 або esp зараз мало. Просто не для всіх задач esp підходить по економічності.

замовити плату разом з монтажем у китайців стають скоріше шкідливими навиками.

Чекати 3 неділі, бо колись з’явилось пару вечорів на хоббі... Це якщо допустити що з першого разу все правильно спроектував і нічого не наплутав при оформлені замовлення, бо потім ще 5 разів замовляти. Це годиться для фінальної збірки, коли треба декілька штук. А так ЛУТом за годину простіше. Нажаль в нашому кіберпанку нема послуг щоб поруч з ксероксом плату роздрукувати 😁
СТМу треба було років 15 назад, випустити декілька каменів в більш дружелюбних корпусах, щоб витіснити авр з народного вибору.

працювати з ртосами і освоювати нутрощі тулчейнів, що знадобиться якщо цим почати заробляти

Це якщо для шляху професіонала. А якщо ні, то краще взяти те, чим списані всі забори за десятиліття. Ясне діло що коли ти професіонал і стм8/32 тобі все рівно треба знати, то немає смислу для хоббі брати щось примітивніше.

З іншого боку, там, де треба задешево помигати світлодіодами, є свої гравці з на порядок-два меншими цінами за штуку ніж у олдскульних восьмибіток

Такі вже числа важливі для масового продукту, для DIY на колінці нема різниці 5 центів контролер чи 20, головне доступність каменів, ПО та інструментів, мінімальний поріг входу, кількість статей для не профі, велична і відкритість ком’юніті та тому подібне.

З третього боку, ціна програміста на разову поробку буде дорогою, тому сенсу брати дрібний контролер, замість відразу stm32 або esp зараз мало.

Я ж і кажу що для DIY у нас задачі або примітивні, з якими справляється авр, який історично став каноном DIY, або вже наворочені з комунікаціями для яких ESP чи одноплатники вже куди цікавіші, чим «дрібний» стм32. Ну не буде хтось коли йому wifi знадобився доліплювати мережевий контролер до стм32, чи цю ж таки ESP в якості мосту, якщо можна відразу взяти за туж ціну цю ESP. Та і ми ж про DIY- тут нема ціни програміста, тут є час та потрібна компетенція під задачу рівня хоббі.

так ЛУТом за годину простіше.

Ну все ж не годину, травити і сверлити отвори явно довше буде. З іншого боку, на макетних платах виводне розпаяти можна і так, задіюючи готові платки. Чим та же блю пілл не DIP-40?
З іншого боку, арми в діпах були, наприклад, os.mbed.com/platforms/LPC1114FN28
Народ не зацінив, так що мабуть справа не в корпусах.

Ясне діло що коли ти професіонал і стм8/32 тобі все рівно треба знати

Як це не дивно, вони рідко застосовуються в проектах, представлених в Україні. Але освоївшись з одними армами, перейти на NXP чи ще когось іншого буде нескладно.
Але саме як навчальна платформа, це найкраще наближення до продуктового низькорівневого ембеддеду.

Esp* та Pi Pico так жруть струм, що за ними ще цілий Екофлоу потрібно носити. Якщо у вас на проекті не потрібен бт/вайфай, то ці мк — це оверкіл. Хоча я розкрутив не мало смартламп, смартвимикачів, смартрозеток і тд, то там скрізь були esp, але вони і працювали від мережі. А от stm та сестринські spc/sr — це стандарт індустрії, який має всі можливі сертифікації, та дууууже активно використовується в, наприклад, автоіндустрії (на сучасних тачках різні штуки типу системи подачі палива чи заслонки впускного колектора контролюються цими чіпами).

який бт-віфі в Рі піко?
дайош стм з бт-фіві та споживанням мікроампіри від 1 ААА

Напевно мався наувазі Pi Pico W

так це ж два різні контроллера, Pico W це оціночна плата, на якій є RP2040 в якому ніякого вайфая нема, і ще один ESP8266 який і сам працювати може. Це просто два контроллера на одній платі. Це два контроллера, незалежних.

Як уже написали нижче, піко в. Мені дуже подобається піко, але цей мк чисто для прототипування, не більше. У рп2040 навіть нормального глибокого сну немає. Надіюсь, це поправили в новій версії.

з ESP не ESP32 единим
і навіть якщо 32 — якщо правильно працювати зі сном то одніеї банки вистачае на 20-40 годин спокійно при активному WiFi/BT

ESP дуже так собі для автономних IoT-девайсів. Так, там можна повністю вимкнути бт/вайфай, але в цьому мк немає нормального павер менеджмента для периферійних пристроїв. Я з товаришем займався проектуванням декількох девайсів для смарт сіті, прототипи ми робили саме на есп32 і це оверкіл, як по фічах, так і по споживанню батареї. Насправді, якщо девайс має енергоефективні датчики та не працює в рілтаймі, то з акумулятором на декілька тисяч mah така система може пропрацювати декілька років запросто. Але якщо просто потрібно по лоравану відправляти кожну годину значення сенсора, то стм значно ефективніше.

для лори е готові чіпи по типу esp

взагалі esp32 це не про енергоєфективність
із старого esp8266 ідеально для такого
із нового там е купа нових одноядерних економних від esp

Ну, от для лори ми використовуємо модеми від RAK. Вони ідуть поверх стм32, рп2040 та нрф*. Досить якісні модеми та працюють без танців з бубном, як більшість інших gsm/lora модемів.

Ну а Pi Pico від 1,45$ з доставкою з Аліка. Для жирного DIY все таки 2 ядра на 133мгц цікавіше.

Да. У меня даже такое было ru.wikipedia.org/...​адиоконструктор_МРК-2.jpg
Куда там щас , куча готовых плат под что хочешь с любой периферией

Підписатись на коментарі