Обновить
256K+

Программирование микроконтроллеров *

Учимся программировать микроконтроллеры

277,36
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Управление фазой аппаратного PWM сигнала на STM32 (или таймер на ошейнике)

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели9.3K

На микроконтроллерах STM32 можно генерировать аппаратные PWM сигналы. Это всегда применяют для регулирования яркости свечения, управления температурой нагревателей, управления крутящим моментом на электрических моторах.

При этом на STM32 обычно очень легко регулировать частоту, заполнение и инвертировать фазу меняя полярность.

Однако как непрерывно регулировать фазу PWM?

В этом тексте я написал четыре способа управлять фазой PWM сигнала.

Читать далее

Превращаем старую клавиатуру от ноутбука в полноценную USB-клавиатуру на RP2040 без QMK

Уровень сложностиСредний
Время на прочтение16 мин
Охват и читатели18K

По созданию клавиатур на Хабре написано много статей, но, как правило, они подразумевают кастомизацию прошивки QMK или использование уже готовой.

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

Для обучения и понимания работы клавиатуры, периферийных устройств и протоколов взаимодействия лучше изобрести свой велосипед. Так я и поступил.

Читать далее

Интеграция CAN bus в STM32 Motor Control проект

Уровень сложностиСредний
Время на прочтение35 мин
Охват и читатели11K

Философия Do It Yourself или DIY звучит как "Развития навыков и уверенности в себе, получение удовольствия от процесса созидания." В современных реалиях на столе изобретателя сходятся автоматизированные системы управления, недорогие микроконтроллеры и облачные AI-сервисы. Энтузиасты строят умные устройства, домашние SCADA-приложения и даже цифровые двойники, интегрируя машинное обучение для анализа данных в реальном времени.
В этом проекте постараемся реализовать управление маломощным электроприводом по CAN-шине. А в следующем проекте добавим коммуникацию с другим PLC-устройством, интегрируем систему с IoT. А затем посмотрим можно ли переложить задачу анализа работы системы на AI-агента не прилагая значительных усилий.
Содержимое статьи излагается следующим образом. Вначале краткое описание CAN-шины и методов проектирования для пользовательских проектов. Затем модификация проекта управления приводом PMSM комплекта разработки STM32-IHM03 и тестирование полученного результата.

Читать далее

Жизнь без CubeMX: Первая прошивка для STM32, имея под рукой только блокнот

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели13K

Если вы не понимаете, как ваша программа попадает из FLASH в RAM, значит, вы не контролируете свой микроконтроллер. Здесь не будет кнопок «Generate Code». Только чистый Си, суровая разметка памяти и запуск STM32 с полного нуля. Хардкор, как он есть.

Читать далее

Смогут ли микроконтроллеры с NPU заменить облако для распознавания речи?

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели17K

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

Я проверил, можно ли закрыть этот разрыв на микроконтроллере STM32N6 со встроенным NPU: распознавать произвольную речь локально, в реальном времени и с потреблением около 0.2 Вт.

Читать далее

Самый маленький загрузчик (MBR 324 байта)

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели14K

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

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

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

Читать далее

Обзор учебно-тренировочной платы JZ-F407VET6 (или электронная парта)

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели13K

В этой заметке я произвел обзор учебно-треннировочной электронной платы JZ-F407VET6.
Это простая и дешевая PCB часто выручает при прототипировании и отладке программных компонентов.

Читать далее

CoreBus — универсальный Modbus терминал

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели8.2K

CoreBus — кроссплатформенный терминал для работы с COM-портами и TCP-сокетами с поддержкой протоколов Modbus TCP / RTU / ASCII и много чего еще.

Приложение развивается уже довольно давно. Но была одна фича, которой не хватало, чтобы сделать CoreBus по-настоящему универсальным терминалом. Мне об этом писали еще с первых релизов. В личных сообщениях и в комментариях к статьям. Эта идея формулировалась по-разному, но суть была одна.

И поэтому хочу представить вам новый режим - "Modbus мониторинг"!

Читать далее

Я разучился получать удовольствие от программирования из-за LLM. Его вернул шкаф

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели36K

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

А потом мне привезли шкаф. И он неожиданно все расставил по местам.

Читать далее

MIPI RFFE на GPIO ARM контроллера. Эмуляция проприетарного интерфейса на GPIO ARM-микроконтроллера

Уровень сложностиПростой
Время на прочтение13 мин
Охват и читатели6.2K

Всем привет, это моя первая статья, в рамках которой захотелось поделиться необычным для меня опытом. Возможно, кто-то найдёт здесь для себя что-то полезное. По работе пришлось столкнуться с крайне необычной микросхемой для коммутации высокочастотных (RF) сигналов.  Одна проблема – проприетарный интерфейс управления MIPI RFFE. Появился вопрос “А как этим управлять, не имея специализированных средств?”. Ответ узнаем вместе.

Читать далее

Заставляем Flipper Zero и M5StickC Plus2 работать вместе

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели5.7K

У многих из нас есть слабость к маленьким многофункциональным гаджетам. К тем самым коробочкам с мигающими светодиодами, которые покупаются под лозунгом «ну это же мне очень надо!», а потом укоризненно смотрят на тебя с полки. У меня к этой категории относятся «тамагочи для хакеров» Flipper Zero и оранжевый свисток M5StickC Plus2.

С «Флиппером» всё понятно: для классических хакерских шалостей (открывать шлагбаумы и пугать соседей) я его не использую, пару раз клонировал ключи от подъезда да дублировал пропуск на работе. Для меня это стильные настольные часы, токен для аутентификации и крошечная панель мониторинга (я переписал под себя приложение для мониторинга ПК, чтобы выводить на экран загрузку процессора, ОЗУ, видеокарты, состояние сети и прочие метрики).

С M5StickC Plus2 история похожая. Он был куплен по той же причине, по которой айтишники покупают седьмую механическую клавиатуру: потому что штука прикольная. Я покрутил разные прошивки, поигрался с Bruce — швейцарским ножом для устройств M5 — и даже попытался сделать из него такой же экранчик мониторинга, но в отличие от Флиппера, заряда которого хватает на пару дней приёма метрик с ПК через BLE, стик садится почти моментально, да и его экран ощутимо меньше. А потом он предсказуемо перешёл в режим ждуна: лёг на стол и стал ждать своего часа.

Читать далее

STM32 + GCC + CMake + Win10

Уровень сложностиПростой
Время на прочтение16 мин
Охват и читатели11K

Написать на Си проект прошивки для микроконтроллера STM32F407VE. В качестве кросс компилятора выбрать GCC. В качестве системы сборки использовать CMake. В качестве HAL использовать фирменный HAL от STM и CMSIS от ARM. Собирать в Windows 10.

В данном тексте я покажу как можно организовать CMake скрипты сборки, чтобы собрать прошивку для микроконтроллера STM32.

Читать далее

Ретро-часы на вакуумных люминесцентных индикаторах ИВ-11

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели17K

Тёплое зелёное свечение ИВ-11 и ИВ-6, современная электроника на STM32 и минималистичный корпус. Проект сочетает советскую эстетику 80-х с доступными современными компонентами.

Читать далее

Ближайшие события

Реверс-инжиниринг безымянного табло электронной очереди: когда 1 бит весит целый байт, а математику за тебя делает ИИ

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели9.2K

Я работаю в компании, которая разрабатывает и продаёт систему электронной очереди. Пришёл недавно, успел написать веб-клиент для их очереди — общение по SOAP, веб сайт, талоны с QR кодом, ничего особенного. Потом руководство поставило задачу: интегрировать физическое табло с вызовом клиентов через веб. Старое десктопное приложение как-то умеет зажигать на нём цифры — надо сделать то же самое, но из веба.

Окей, задача понятная. Первым делом пошёл к тем, кто делал это приложение.

Читать далее

Девять кнопок вместо сенсорного экрана. Как жестовый контроллер решает главную проблему умного дома

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели11K

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

Для лучшего восприятия ограничимся определением умного дома как комплексным управлением светом (основной свет, подсветка, шторы), управления климатом (обогреватели, кондиционеры, осушители, увлажнители) и безопасностью (замки, датчики присутствия). Поведение устройств может определяться как изолировано (включение/выключение света в гостиной), так и объединено в единые сценарии (ночной режим, основной режим, режим охраны).

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

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

Читать далее

Risc-V и запуск К1921ВГ015

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели5.9K

Получив макетные платы, стало необходимостью запустить демо проект. Для него потребуется также JTAG, компилятор и OpenOCD. Сам JTAG использовался DirtyJTAG. Ну а дальше разбираемся.

Читать далее

CLI через Segger J-Link RTT на ARM Cortex-M (или однопортовая лапароскопия)

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели9.1K

В этом тексте я написал про то как наладить интерфейс командной строки (CLI) по двухпроводному синхронному отладочному интерфейсу SWD.

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

Чтобы можно было работать примерно как с UART, только по SWD.

Это когда прошивка в коде асинхронно получает текстовую строку от PC и отправляет текст обратно в сторону PC.

Читать далее

Давайте уже измерим влажность почвы правильно

Уровень сложностиПростой
Время на прочтение13 мин
Охват и читатели6.4K

Если что-либо можно измерить числами, то это уже вселяет оптимизм. Значит мы имеем дело с более-менее понятным объектом или явлением, которое можно описать устоявшимися правилами. И, казалось бы, что тут такого, измерить влажность почвы? Вроде простоя и понятная задача, но в ней всё оказывается не так уж просто. Давайте разбираться!

Читать далее

Pwrblock — открытый источник питания для стенда тестирования. Первые образцы и тесты

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели11K

PwrBlock (Power Block) — открытый программируемый источник питания для тестовых стендов и автоматизации проверки электроники.

Его уже можно потрогать руками, а скоро — заказать себе такой или собрать самостоятельно: проект полностью open source. Рассказываю, из чего он сделан, что уже работает, что показал тест на максимальной мощности и какие выводы появились после первых измерений.

Установить клеммы!

Структуры данных на практике. Глава 11: Префиксные деревья и базисные деревья

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели6.8K

Кошмар с автозавершением

Наше префиксное дерево было в 8 раз медленнее хэш-таблицы. И оно потребляло 128 МБ памяти, в отличие от хэш-таблицы с 24 МБ.

Такого не должно было произойти. Префиксные деревья — стандартное решение для автозавершения: поиск за O(k), где k — длина строки вне зависимости от размера датасета. Идеально подходит для сопоставления префиксов. Обычно всегда используется для автозавершения, проверки правописания и таблиц IP-маршрутизации.

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

Поэтому мы реализовали префиксное дерево. Результаты бенчмарка оказались ужасными:

Префиксное дерево было в 8 раз медленнее простой хэш-таблицы. И оно использовало 128 МБ памяти, в то время как хэш-таблица — всего 24 МБ.

Где мы ошиблись?

Читать далее