Початок кар’єри в Embedded-розробці. Які інструменти варто освоїти для роботи з мікроконтролерами

Привіт! Мене звати Максим, я працюю в GlobalLogic на посаді Associated C++ Developer. До компанії потрапив, як і більшість студентів, через РОС-проєкт. Маю вже рік комерційного досвіду, спеціалізуюся на C++, Embedded і розробці ПЗ під мікроконтролери.

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

Почнемо з бази: різниця між CPU і MCU

В Embedded-розробці часто доводиться працювати з мікроконтролерами (MCU), які мають свою власну архітектуру, що відрізняється від звичайних процесорів (CPU).

В чому взагалі різниця між CPU і MCU? CPU — це Central Processor Unit. Процесори в загальновідомих персональних комп’ютерах, які ми використовуємо повсякденно. Також існують мікроконтролери, які зазвичай зустрічаються в менших девайсах. Їх, як правило, називають constraint-девайси — тобто ті, що мають обмежені можливості.

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

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

До того, як я потрапив в Embedded-розробку, закінчив декілька базових курсів з IoT на Coursera та брав участь в Embedded-хакатоні. Хоча певне уявлення про напрям я вже мав, безпосередньо навичок було обмаль для роботи на реальному проєкті.

Щоб початківцю стати на шлях вивчення Embedded, варто добре розбиратися в ООП, процесі компіляції, знати мови програмування C/C++, і, що не менш важливо, мати бажання досліджувати та працювати в цьому напрямі.

Для базового розуміння добре підійдуть різні Arduino Kit, а також мікроконтролери від Espressif, наприклад, ESP32. Зокрема, потрібно добре володіти такими інструментами для розробки:

  • CMake.
  • GNU Make.
  • GNU Compiler Collection (gcc, g++).

Серед базових — саме CMake. Можливо, хтось вже стикався і знає про Gnu Compiler Collection (gcc), g++ інструменти, які використовуються в процесі компіляції під якусь цільову платформу. Але в основному такі компілятори призначені для операційних систем загального призначення на кшталт Linux.

Для компіляції коду в firmware, яка буде запущена на мікроконтролері, використовуються більш вузькоспрямовані компілятори типу ARM. А також інструменти як-то Gnu Make для управління процесом компіляції. До прикладу: якщо цільова платформа, яка повинна запускати написаний код, має мікроконтролер з ARM-архітектурою, то доцільно використовувати відповідний компілятор по типу arm-none-eabi.

Також, залежно від платформи, може змінюватись кількість інтерфейсів для взаємодії та безпосередньо «розпіновка» (pinout). Зробити процес компіляції більш універсальним можна з використанням директив (макросів), щоб включати в firmware тільки ті компоненти та ту частину коду, які підходять нашій цільовій платформі. Цей процес називається умовною компіляцією.

У Makefile зазвичай вказуються необхідні параметри, такі як змінні середовища або параметри при його запуску, щоб зробити процес компіляції більш гнучким. Це дозволяє макросам в коді вирішувати, чи включати певні частини коду, залежно від інформації в Makefile. Втім варто памʼятати: згідно з кращими практиками, не слід зловживати використанням макросів, пишучи код на C++. Це може призвести до непередбачуваної поведінки й надалі ускладнити процес дебагу безпосередньо коду. В такому випадку краще ініціалізувати значення «на стеці», використовуючи для цього окремий namespace.

Одне з практичних рішень в Embedded-розробці — це використання ESP-IDF фреймворку. Він полегшує розробку ПЗ під сімейство мікроконтролерів компанії ESP.

Окреслити основні переваги використання саме ESP-IDF фреймворку можна так:

  • Легкість використання — він бере на себе складний процес компіляції й створення build pipeline.
  • User friendly документація.
  • Багато офіційних прикладів коду — це ціла Вікіпедія. Можна зайти на сайт офіційної документації та знайти там приклади коду й документації по різних частинах. Саме тому для бізнесу це доволі валідна штука.
  • Інтеграція з іншими системами, підтримка багатьох протоколів;
  • Низька цінабезпосередньо мікроконтролерів ESP.

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

Процес компіляції у розробці

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

Ось з чого він складається:

  1. На першому етапі компіляції залучається препроцесор, який замінює директиви та константи реальними значеннями в коді. Всі ці значення будуть розміщені в такому сегменті пам’яті мікроконтролера, як bss storage, який зберігає в собі всі константні та неініціалізовані значення.
  2. На другому етапі код компілюється в object-файли з розширенням .o . Такі файли буквально містять в собі двійкові значення.
  3. На третьому етапі починає дію лінкувальник, ціль якого — об’єднати всі object-файли в один.
  4. І як завершальний етап всього процесу виконується робота локатора, який розміщує firmware на цільовій платформі.

Слід зазначити, що написаний нами код зберігається в енергонезалежній пам’яті, в code memory сегменті. А інформація про запуск нашого коду (application) — в сегментах енергозалежної пам’яті stack та heap.

Тут важливо розуміти організацію памʼяті, а саме розрізняти volatile та non-volatile storage. Перший тип пам’яті використовується для зберігання інформації, яка з кожним перезапуском буде стиратися. Іншими словами — енергозалежна пам’ять. Другий тип — енергонезалежний, і використовується він для зберігання критичної інформації, що не може бути втрачена. Прикладом енергозалежної пам’яті є RAM, а енергонезалежної — EEPROM, Flash та NVS.

Розуміння всіх цих процесів допоможе в створенні гнучкого build pipeline, який можна адаптувати під будь-які потреби.

Перші кроки в Embedded: кейс з практики

Раніше GlobalLogic розробили POC-проєкт, який мав на меті менеджмент енергії, що споживається на різних підприємствах та у багатоквартирних будинках. До прикладу: у нас є домашні пристрої, які споживають електроенергію. Щоб не виходити за певні ліміти, потрібно надавати пріоритети кожному з них. І кожен девайс — це певна плата, яка підключається до Raspberry Pi 3 сервера і взаємодіє з ним. А сервер вже розподіляв, чи надавати доступ до електромережі такому пристрою, чи ні.

Цей проєкт продовжував розвиватись. Одним з перших завдань моєї команди (і перших моїх завдань у напрямі Embedded загалом) стала імплементація рішення для його інтеграції з іншою платформою. Клієнти, які підключаються до сервера, були реалізовані на базі мікроконтролера Raspberry Pi Zero, а нам слід було зробити міграцію на Raspberry Pi Pico.

У чому полягав челендж? Існує інструмент Avahi, який є імплементацією zero-conf мережі та робить комунікацію між девайсами більш доступною, даючи змогу взаємодіяти девайсам за допомогою hostname.

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

Проблемою нашої адаптації під іншу платформу стало те, що Avahi Service, який працював з попередньою Raspberry Pi Zero платформою, не був сумісний з Raspberry Pi Pico.

Як ми вийшли з цієї ситуації? Змінили підхід взаємодії між клієнтами та сервером в мережі. Відтепер сервер мав статичну IP-адресу, що давало гарантію підключення до нього і незмінність його IP-адреси. На основі цього ми адаптували POC-проєкт під Raspberry Pi Pico мікроконтролери.

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

Висновки

Отже, розробка під мікроконтролери відрізняється від звичної розробки ПЗ тим, що має певні особливості своєї платформи. А також безпосередньо розробка залежить від багатьох факторів, як-то розмір пам’яті та тип мікроконтролера. Окреме місце займає процес компіляції, оскільки його розуміння є необхідним для розробки універсальних програм, які використовуватимуть всі спроможності цільової платформи та будуть гнучкими у використанні.

Початківцям порадив би вкластися фінансово у свої Embedded-знання і купити Arduino kit або ж ESP32 мікроконтролер. Це не стало б дорогою покупкою, проте дало б досвід роботи з мікроконтролерами та розуміння їх взаємодії.

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

👍ПодобаєтьсяСподобалось12
До обраногоВ обраному7
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

Для простих задач є 74 серія аналог К155. Навіщо МК. Також є PLM на олд. А так плис. А то дивишся іноді коли люди пхають 32 stm щоб керувати двома реле щи щось подібне. Спочатку розберіться в схемотехніці. Тут 90 відсотків не знає що таке розвʼязка виходів та дільник напруги.

Яку практичну задачу в 2025 році вирішить саме сімейство 74, навіть не 4000 чи 74HC?

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

Зібрати дані з датчиків наприклад. А якщо датчиків 20 і є зворотні звʼязки? У вас буде два, три мікроконтролери. Я не стверджую що мікроконтролер не потрібний але з ним ще багато обвʼязки потрібно. І знання електроніки тут обовʼязкові.

Які саме дані можна зібрати TTL-логікою?
Саме низькорівневе, з чим може зіткнутися ардуїнщик, це з ланцюжком зсувних регістрів на 74HC595, але це освоюється за вечір-два.

Ещё лет 20 назад читал обоснованное мнение о том, что ATTiny15 + push button дешевле и надежее, чем кнопки с фиксацией. А десять строчек кода на партии в 10К не стоят ничего.
И это тоже эмбеддед, причем классический.

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

Дуже гарне пояснення чим концептуально відрізняються Raspberry Pi, ESP8266 і Arduino.

Приємно почитати статтю вихованої, молодої людини (навіть якшо де й присутні огріхи) та не дуже приємно читати коментарі на кшталт:

> «еб@нута »
> «Що ж, успіхів вам в Embedded без знання »
> «Не нужен вам »
> та ін.

Бажаю вам наснаги та карьерного розвитку, також бажаю мати на своєму шляху колег інженерів (з великої літери) з якими будуть нехай і довготривалі але конструктивні та змістовні діалоги,

З повагою,

Йому глобаллоджик за це щось заплатив, думаю йому пофіг.

Не нужен вам ни С++ на ООП для Embedded.

Аякса еще не было когда у меня первые платы сгорали)

невдалий вкид на вентилятор, не взлетить

Ну вы же ответили)

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

В ембеддед розробці коректність роботи коду не завжди залежить від роботи програміста, іноді причини можуть бути неочевидні.

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

Колеги, спостерігаючи це, іронічно питають: — Ну що, працює?

Розробник, не втрачаючи спокою, відповідає: — Працювало, поки дим не вийшов. А тепер треба «перепрошити» дим назад!

Так і живуть embedded розробники: якщо з плати пішов дим, значить, це був її «душевний прошивальник»

знати мови програмування C/C++

(Stroustrup speaking):

Even I can’t answer every question about C++ without reference to supporting material (e.g. my own books, online documentation, or the standard). I’m sure that if I tried to keep all of that information in my head, I’d become a worse programmer. What I do have is a far less detailed — arguably higher level — model of C++ in my head.

на любій мові можна писати як на Паскалі

Ну, є ще ебанута MISRA і послідовники, які перетворюють любий, самий найкращий С код, в повне лайно. Паскаль рядом з цим не валявся.

в Паскаля є паскаль-строки, а в С нуль-символ кінця, невдобно але опасно

Коли йдеться про знання такої великої і складної мови програмування як С++, то було б дуже гарно, з погляду власного професійного досвіду, перелічити складові необхідного мінімуму знань з С++, які потрібні для початку роботи у певному домені.

Принцип Парето: для виконання 80% проектів достатньо 20% того, що є в С++

Початківцям порадив би вкластися фінансово у свої Embedded-знання і купити Arduino kit або ж ESP32 мікроконтролер. Це не стало б дорогою покупкою, проте дало б досвід роботи з мікроконтролерами та розуміння їх взаємодії.

Беріть одразу stm32, бо зараз це база. Берем програматор, bluepill девборду і все, або фірмову там нуклео якусь, де програматор розпаяний. Тим паче ми зараз живемо в кіберпанку, де stm32 коштує дешевше престарілого 8 бітного AVR контроллера.

беріть stm32 щоб вашому психологу було на що жити)))

взагалі рекомендую починати з ESP32
він дуже дешевий і потужний. І при цьому простий и дозволить познайомитись з МК так як вам довподоби (бачив навіть JS-інтерпритатори під компіляцию на ESP32)

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

Ну, в stm32 є HAL тому можна почати і без регістрів, + є автогенерація бойлерплейту для вибраного МК/борди.

Так, в stm32 е кубик та HAL.
А також в’етнамскі флешбеки піся опанування всього цього.

Порадити stm32 початківцю це гарний спосіб відбити будь яке бажання влазити в embedded)

та ладно, stm32f103 як два пальці обіс..., якщо треба замість FT232 клона що внєзапно перестав робити після оновлення дров зробити COM port

без hal та кубіка, так
купа статей в інтернеті зараз, все просто, навіть під Ардуіно заводиться

Якщо робити все «серйозно», то вже на кубі попливеш. Потрібно дуже багато чого знати, щоб «почати» з STM32
І я мовчу про HAL і його приколи (особливо якщо потрібно ліби шити)

Якщо робити все «серйозно», то вже на кубі попливеш. Потрібно дуже багато чого знати, щоб «почати» з STM32

Так и есть. Я взял про запас несколько нуклео дешево, но там все не так и просто.

И почти у каждого автора книги для новичков по STM32 своя связка плата + иде. (

Нет, чтобы взять стандартную нуклео f103 или f446. Некоторые авторы книг еще и берут какую-то далекую от нуклео или пиллов китайскую плату.

На ютьюб канале СТ вообще уроки часто на базе плат серии дискавери.

Понятно, что по даташитам можно искать по аналогии нужные регистры в другом чипе, шины и прочее. Но все же сложновато.

Но все же сложновато.

а як саме це вигладає? тобто як саме це виглядає де «сложновато»?

Понятно, что по даташитам можно искать по аналогии нужные регистры в другом чипе, шины и прочее. Но все же сложновато.

Ну,

для новичков

мне кажется лучше начать с HAL а дальше уже вникать в детали + можно глянуть в хал функцию какие она юзает регистры.

мне кажется лучше начать с HAL а дальше уже вникать в детали

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

Я недавно наткнулся на книгу Warren Gay «Beginning STM32». Так там автор предлагает все делать в консольном редакторе линукс. Даже ставить WSL на винду и из-под нее работать в текстовом редакторе в терминале с платами ст. :D

Вроде, Noviello C. Mastering STM32 выглядит интересной для начала. Но там нет реальных проектов как в книгах по ардуино

Так там автор предлагает все делать в консольном редакторе линукс.

Я бы сразу скипал ибо «больной ублюдок»)
Инитить проект там где все вся периферия, тактование и т.д. тоже в текстовом редакторе?)
Имхо, для новичка Cube ide достаточно, потом можно и в VS Code перейти по желанию.

Но там нет реальных проектов как в книгах по ардуино

Ну, stm не так популярны как ардуины для новичков, по этому литературы не много.
Плюс от семейства к семейству там разница может быть ощутимая. Особенно обидно когда годные статьи а код написан на регистрах, а у тебя другой мк и оно полностью бесполезно. Я когда dc-dc делал — по крупицам собирал инфу: отдельно статья по high res pwm, отдельно по тому как по i2c дисплейчик прикрутить, отдельно по adc. Короче порог входа точно выше:)
Еще посоветовал бы глянуть опенсорсные проекты, типо marlin, betaflight и т.д. Чисто посмотреть как там пишут код.

Инитить проект там где все вся периферия, тактование и т.д. тоже в текстовом редакторе?)

Да. У него там все в редакторе. No IDE подход, которым он гордиться в книге. Типа нет привязки к софту и бибилотекам. )

Спасибо.

Я бы хотел как хобби для поделок получить СТМ32. Как замену оверпрайснутой ардуины с более продвинутой периферией и классной отладкой, когда можно смотреть на каждом шаге кода значения в регистрах. Надеюсь, что СТ разовьют и такое направление стм32. Видео на канале СТ часто слишком оторванные и по железу. Не всем нужны платы дискавери.

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

Вместо дискавери советую смотреть на nucleo, там вся периферия свободна и по факту все есть для хорошего старта. Отдельный чип для дебага и прошивки(не нужен программатор), пару кнопок, пару светодиодов и куча свободных входов-выходов. То есть как с ардуиной, купил плату, купил usb кабель и можешь уже мигать светодиодами:) Да и в cubeide нормально дебажится и можно смотреть регистры и т.д.

Спасибо. Я как раз запасся нуклео разных поколений. Там периферия свободна и можно пробовать (при наличии схем и примеров) дособирать до дискавери и китайских плат. Хотя заказал уже и пару «таблеток», потому что в книгах часто они.

Самое смешная ситуация была с нуклео-144 на чипе 746. Взял ее на олх у джависта за деньги с продажи китайской ардуино мега.

Как сказал джавист, он хотел для интереса попробовать С и низкоуровневое программирование. В общем оно быстро придавило его — он распродавал все дешево. :)

Пока что стм32 все же пылятся. Если надо что-то собрать на уровне «домохозяйки», то берут есп8266 / 32, ардуино и готовые библиотеки. Интересно еще попробовать micropython и что-то с планированием типа freertos.

У стм32, наверное, не так просто все с библиотеками сообщества. На всякий случай брал нуклео, которые поддерживаются stm32duino

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

Якщо вам це потрібно — ви явно робите шось не те.

в навчальних цілях, ну напр., як С розвертається в ASM

С розвертається в ASM

Блін, аж просльозився, чесно. Не усе так погано на ДОУ як я собі уявляв )) З цього треба починати вопще в принципі незалежно від усього.
Але в данному конкретному випадку це не дуже допоможе, бо дуже залежне від конкретного вендора. Це коли був тільки 8080 і PDP11 усе було просто. Для навчальних цілей достатьно якоїсь Ардуіно Міні + VisualMicro + Visual Studio, там безкоштовної ліцензії вистачить для погратися і більше ніколи туди не лазити, аж поки реально не знадобиться.

Якщо вам це потрібно — ви явно робите шось не те.

До ассемблера, конечно, опускаться не планирую, но интересно было бы посмотреть, как там внутри бегают регистры.

Вообще, недавно узнал, что в Arduino IDE 2.х уже завезли дебагинг даже для нуклео СТМ32 через SWD. Хотя там больше для отслеживания переменных. В регистрах МК в Ардуино не показало значения переменных.

достатьно якоїсь Ардуіно Міні

Даже китайская адекватная мини стоит как намного более интересный СТМ32 СТМ32 от weact www.aliexpress.com/...​tem/1005006051651136.html

Arduino IDE

це суто для домогосподарок. Ще на пітоні, не до ночі будь упомянутий, давайте писати (рукалице). Ну ладно ще хоча б там якась Atmel Studio, що, по суті, той самий Visual Studio, і тримати ще одного монстра на одному компі просто немає сенсу, Visual Micro аддон до студії дає навіть більше.

Даже китайская адекватная мини стоит как намного более интересный СТМ32 СТМ32

Це просто приклад arduino.ua/...​ino-pro-mini-328-3-3v8mgc це вже в Україні розтаможена і не треба оплачувати пересилку і чекати місяць.

Якщо формошльоп як я зміг розібратися з усілякими adc, pwm та скліпати логіку dc-dc + прикрутити oled дисплейчик то і інші зможуть;) А далі там світ rtos, усіляких драйверів tcp/ip стеку і т.д. там вже мабуть ті нюанси налаштувань периферії не сильно то й вирішують:)
STM32 вибирав тому що поверхнево оцінив ринок і побачив їх що в дронах що в 3д принтерах що в іншій електроніці.
Але з ESP32 не грався тому не можу порівнювати, можливо там і справді легший старт+вони також доволі популярні. Єдине що — я б скіпнув ардуіно якщо є якийсь технічний бекграунд, бо це тупо витрачання часу.

Якщо після STM32 до психолога то ліпше в іншу професію йти. Нема там нічого складного. Радити Arduino для старту в розробці??? Це платформа для початківців.

Ну люди різні і з STM32 дійсно багато часу треба вбити щоб розібратись) в мене пішов місяць після ардуінки а ESP32 на ESP-IDF має хоч і більший тулчейн але загалом для старту суперова штука бо є все як в STM32 і плюсом HAL зрозуміліший і простіший хоч і не такий варіативний

для чого STM32? автомотів/індастріал/спейс кліматика, чи мало ногів на перехверії?

Все що перелічили + широчезний вибір кристалів в межах однієї екосистеми. Принаймні атмегу рве по всім параметрам, починаючи вартістю і закінчуючи тактовими частотами.

Ага-ага то все що можна відповісти коли аналізуєш співвідношення вартість/характеристики і не знаходиш жодного аргументу на користь AVR.

ESP-IDG дійсно цікава і популярна нині альтернатива. Особливо для IoT. Так згоден що на STM32 потрібно більше часу на вивчення. Та це краще ніж витрати час на Arduino який хоч і простіший але майже не затребуваний в комерційних проектах.

STM32 із езернетом та яким lwip, але поцо?

Як елегантно із світу Embedded викинуті потужні MPU і залишені тільки MCU :)

Що ж, успіхів вам в Embedded без знання MPU ;-)

та ладно, а що його знати, щоб писати на ньому CRUD на JS?

Ну він тут і про FPGA не згадує, про верілог також не згадує, про те що крім мікроконтроллерів в ембеді є 2 десятки програмованих мікросхем різного призначення, і кожна з них потребує вивчення тисяч сторінок всякої нецікавої літератури.

а ще ЦОС, SDR та роботу із раідо PHY, данунах коли можна круди клепати без знання MPU

не бери дурного до голови а тяжкого в руки і беде тобі щестє

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

може використовувати напр. Multiaddress як libp2p або IP6, не зрозуміло, чому IP адреса сервера змінюється, це що який хмарний сервіс нашару?

ArduinoMDNS, або для локалки свій протокол для діскавері поверх UDP

Для базового розуміння добре підійдуть різні Arduino Kit, а також мікроконтролери від Espressif, наприклад, ESP32. Зокрема, потрібно добре володіти такими інструментами для розробки:

CMake.
GNU Make.
GNU Compiler Collection (gcc, g++).

Arduino Ide, Arduino-cli, Platform io

В наших краях тупікова галузь і з.п. на рівня рядового інженера, для фанатів ходити на завод через прохідну

На галерах є трохи ембедеду. Там зп ± типові айтішні

Если глобал уберет свои 3 вакансии по ембеддед, то на этом с эмбеддед все в Украине закончиться

Ajax, Squad, Samsung, Nvidia, Autotalk — це тільки продуктовий ембедед. А ще ембедед набирають всі найбільші галери країни. Нормально тут із ембеддедом ;-)

нормально це в порівнянні із Молдовою чи Монголією?

там трохи не той ембедед, не теплий ламповий

А що таке теплий ламповий ембеддед? Платку ЛУТом зробити?

АІ з VR подружити джейсонами і іксемелами, це тру

Чому ви не використали mDNS/SSDP напряму? Там в простих випадках не дуже складний протокол, але це зручніше ніж фіксована адресса

Ви ж розробники, можна ж нагуглити протокол, або навіть реалізацію. Наскільки памʼятаю в гугл хромі mdns протокол займає десь 500-600 строк і залежіть тільки від сокета. Це ж краще ніж рішення з ранніх 2000х?

Embedded доволі широке поняття, це може буди і контролер, і якийсь модуль до ПК, а може буди і керування обладнанням під високою напругою. Тобто теж є своя специфіка. Наприклад керування двигуном, PWM, крокові двигуни, сервоприводи та ін. Питання не в тому, що в тебе замала потужність контролера, а в загалі розуміння умов праці всього того що ти під’єднав хоч до ПК, хоч до Arduino. Є процеси які повинні виконуватись в окремому потоку, або потрібне переривання чи інший івент. Розуміти що буде якийсь датчик або обладнання, а бібліотеки на нього нема. Або вона є і не працює, чи в загалі потрібно написати іншою мовою керування. Методи керування, зв’язку, I2C, I2S, SPI, UART та інш. Як перевірити все, знайти помилки фізичного підключення. Вже не кажу за перешкоди зв’язку, де переклавши дрота на сантиметр в сторону може стабільно класти зв’язок, або взагалі контролер.
Тому спочатку потрібно вирішити, що саме ви хочете програмувати, купувати необхідне обладнання та вчитись.

в реалиях дня сегодняшнего чистых CPU уже практически не осталось, все MCU или SoC

Щось стаття про все і ні про що. Це в GL заставляють щось написати перед промоушеном?:)

Наразі ми активно шукаємо embedded-авторів та самі пропонуємо їм створювати відповідні матеріали. Чекатимемо і вашу статтю на тему навчання, розвитку або конкретних технологій у Embedded :)) надсилати можна на пошту [email protected]

Цікаво, але дещо замалий об’єм для нашого формату. Бачу, це перша частина — як буде друга, надішліть, будь ласка, все разом нам на пошту (вказала її вище). Розглянемо детальніше

на тему навчання, розвитку або конкретних технологій у Embedded :))

а чим навчання у ембеді відрізняється від навчання взагалі?

Файно, що DOU цікавиться нашою галуззю. Сподіваюсь, одного дня ми тут отримаємо окремий піддомен, як це сталося з gamedev. Бажаю успіху в пошуку авторів

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

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

Не розумію тільки для чого молодій людині іти в дідівську професію.

Субʼєктивно — це цікавіше ніж клепати круди в вебі. Але з точки зору «зусилля/$» це звичайно звучить як жарт:) Дока по одному stm32 g4 по обʼєму більше ніж по умовному Angular+TS, при цьому зверху це повинно бути приправлено C, базовими протоколами, базовими знаннями електроніки. Тож з практичної точки зору простіше за 2 години зробити таски по фронту і гратися з пет проектами скільки захочеш:)

до того ж ангулярщику на порядок легше працювати віддалено

з часів ковіду працюю віддалено, ніяких проблем, пошта і лаба девайсів із віддаленим доступом — рішає :)

не у всіх так, точніше у всіх не так

точно не у всіх — не так. знаю декількох, у кого — так же :)

Embedded розробка це не про інструменти, а про спосіб використання (коли щось вбудовано). Можна взяти звичайний десктоп, поставити туди вінду, написати софт на С# і підключити це до комбайну в чистому полі, щоб він автоматично працював. Якщо це разова активність, то з економічної точки зору, це оптимальний варіант. Але коли починається серія, то може виявитись що брати десктоп за 1к доларів це не дуже ок, а треба вкластись в 100 доларів, тоді починаються обмеження, типу вінду нізя, C# - нізя, ось вам голе залізо, розважайтесь. Але ми все ще залишаємось в домені embedded розробки. Власне це я до того, що інструменти для embedded і для desktop можут сильно пересікатись.

Embedded розробка це не про інструменти, а про

Даташити на 1000 сторінок :D

реально чуваки слава даташитам у ембеді! особливо і здебільшого і можливо навіть «майже виключно» саме «залізним»

Клієнти, які підключаються до сервера, були реалізовані на базі мікроконтролера Raspberry Pi Zero, а нам слід було зробити міграцію на Raspberry Pi Pico.

Отут було боляче.

Pico чи Zero, Java чи JavaScript, яка різниця...

Було на

Raspberry Pi Zero

, перенесли на

Raspberry Pi Pico

. Чи я питання не зрозумів?

Клієнти, які підключаються до сервера, були реалізовані на базі мікроконтролера Raspberry Pi Zero, а нам слід було зробити міграцію на Raspberry Pi Pico.

не підкажете як підключались до сервера на Рісо (на якій нема безпровідного зв"язку) ?

У РісоW є wifi, ще є усілякі адаптери на Ethernet.

Ну на девборді є, але то просто есп 8266. Але нащо брати дві сумнівні мікрухи, коли є одна есп, яка заміняю цю пару, невідомо. Але дебільні замовлення в електроніці не рідкість. Як і використання в 21 столітті дорогущих 8 бітних AVR, коли стм32 дешевше. Але діди пердуни не вміють працювати з чим, того беріть авр, скажіть дякую, що не мк51

діди-пердуни використовують те що затверджено в номенклатурі,
а модне і неперепровірене це шлях молодих (давайте перепишем все з нуля)

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