Обновить
256K+

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

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

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

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

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

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

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

Читать далее

Новости

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

Читать далее

STM32 + GCC + CMake + Win10

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читать далее

Структуры данных на практике. Глава 10: B-деревья и деревья, эффективно использующие кэш

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

Загадка базы данных

Вся наша база данных находилась в памяти, однако операции поиска по ней занимали 12 тысяч тактов. При миллионе показаний датчика IoT-устройства с 64 КБ кэша реализация красно-чёрного дерева оказалась слишком медленной для запросов в реальном времени.

«Давайте попробуем B-дерево», — предложил я.

«Разве они нужны не только для баз данных на дисках? — спросил лид, — У нас всё находится в памяти. Чем нам будет полезно B-дерево?»

Вопрос был вполне разумным. B-деревья были придуманы для доступа к диску; каждый узел в них — это блок диска. Однако паттерны промахов кэша выглядели подозрительно похожими на паттерны дискового ввода-вывода — всего в 100 раз, а не в 100000 раз быстрее.

В итоге мы реализовали B-дерево. Результаты удивили всех...

Читать далее

Отладка программ уровнями логирования (или медицинская карта вашей программы)

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

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

Чтобы с этим бороться придумали уровни логирования Log Levels.

Суть в том, чтобы из shell консоли в run time можно было включать или отключить логи для конкретных программных компонентов. Отдельными командами вы можете увеличивать или уменьшать многословность логирования.

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

Читать далее

Реверс-инжиниринг ebedded-системы без дизассемблера: патчинг статических данных на примере 9S12HY64

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

Практический кейс реверс-инжиниринга приборной панели на базе микроконтроллера 9S12HY64 (Freescale). Вместо дизассемблирования мы использовали сниффинг шины I²C, сбор референсных команд, поиск сигнатур в прошивке и точечный патчинг статических данных.

Читать далее

CLI через CAN по ISO-TP (или утилита CANshell)

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

В этом тексте я написал как реализовать CLI на CAN шине.

В разработке электроники часто делают электронные плату без UART, но с CAN .

Как же отлаживать софт и железо в таких случаях?

Читать далее
1
23 ...