Обновить
128K+

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

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

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

Как я заставил ESP8266 рисовать 3 D, стрелять и летать: полный технический разбор кода

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

Привет, Хабр!

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

Код написан на C++ в Arduino IDE, весь проект живет в одном файле. У нас три игры

(но в исходнике их уже пять), которые переключаются конечным автоматом через gameState.

Блок 1: Raycast — 3D на коленке

Сердце движка — DDA-алгоритм (Digital Differential Analyzer). Мы не рендерим 3D-полигоны, мы пускаем 320 лучей из точки игрока и смотрим, где они пересекают сетку 32x32.

Читать далее

Новости

Изучаем многозадачность FreeRTOS на примере создания логгера для STM32

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

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

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

Если у вас не отладочная плата Nucleo или Discovery, необходимо обзавестись UART-USB адаптером или программатором, который содержит в себе USB-UART адаптер. Оригинальные адаптеры содержат в себе этот интерфейс, но из китайских клонов можно использовать или Weact ST-Link или J-Link.

Читать далее

Куда движется российская EDA: итоги «Микроэлектроники 2026» в Сириусе от команды, которая сама пишет верификатор

Время на прочтение4 мин
Охват и читатели4.1K

Привет, Хабр!

Мы маленькая команда, которая делает Vulkan EDA: коммерческий инструмент физической верификации микросхем (DRC, LVS, PEX, antenna, STA) плюс наработки по RTL и синтезу. Да, мы в курсе, что существует Calibre. Да, мы в курсе, что три компании контролируют 90% мирового рынка EDA. Мы всё равно делаем, и вот почему у нас это получается, расскажем ниже.

В конце сентября мы съездили в Сочи на «Микроэлектронику 2026», главный отраслевой форум страны, и привезли не только значки с логотипами, но и картину рынка, которой хотим поделиться. Спойлер: отечественная EDA перестала быть анекдотом и превратилась в стройку. А ещё там очень вкусно кормили, но это уже не для Хабра.

Читать далее

Свой CAM для фрезеровки плат: Windows 7, станок без API и карта высот самой фрезой

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

Когда односторонняя плата нужна сегодня, а не через две недели заводского цикла, и под рукой есть фрезерный станок, её можно изготовить за один вечер. Я отладил старый станок так, чтобы он делал платы с дорожками шириной 0,2 мм, зазорами 0,2 мм и отверстиями. Сразу обозначу ограничения: метод рассчитан на один слой меди, не поддерживает переходные отверстия.

Читать далее

Шифровать нельзя доверять: как защитить биометрию вен ладони на пути от сенсора до сервера СКУД

Время на прочтение37 мин
Охват и читатели9.5K

Мы не будем рассматривать, как строится вектор вен ладони и как работают алгоритмы компьютерного зрения. Не будет ни слова про длины волн ИК излучения, ни про обработку liveness. Статья про информационную безопасность. Мы возьмем упрощённую, но актуальную модель угроз для биометрических систем контроля и управления доступом (СКУД) и спроектируем сквозную защиту данных на пути от оптического сенсора до сервера. Решение должно выстоять даже в том случае, если сам терминал окажется в руках зловреда. Сразу рассмотрим худшие случаи: нарушитель с физическим доступом к считывателю и инсайдер, который сидит прямо в корпоративной сети потребителя или на предприятии-изготовителе.

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

Отдельно разберём заблуждение «повесим TLS и всё безопасно».

Читать далее

Text‑to‑image на ESP32: диффузионный трансформер в микроконтроллере

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

Stable Diffusion хочет видеокарту с 4–8 ГБ памяти. Flux хочет 12 ГБ, а лучше 24. А у меня на столе лежит ESP32-S3 — микроконтроллер, отладочная плата с которым стоит несколько сотен рублей, у которого 512 КБ оперативной памяти, два ядра по 240 МГц и ни одного тензорного ядра.

Вопрос был простой: можно ли заставить эту штуку рисовать картинки по тексту? Не «отправить промпт в облако и показать ответ», а честно прогнать диффузию на самом чипе.

Спойлер: можно. Пишешь «улыбающаяся девушка со светлыми волосами», и через 5,4 секунды ESP32 выдаёт лицо 64×64. Внутри латентная диффузия с трансформером (DiT), int8-квантование, ассемблер под векторные инструкции S3 и некоторое количество грязных трюков. В общем — всё, как вы любите.

Читать далее

Заводим C++ корутины на микроконтроллере

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

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

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

И тут я понял - чего бы не попробовать сделать своё расширение для clang с корутинами, которые гарантированно не используют аллокации и поверх этого реализовать небольшую операционную систему на корутинах для микроконтроллера.

Читать далее

MicroBuild: DOOM‑Style движок на AVR

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

Что, если я скажу, что на 8-битном микроконтроллере AVR можно запустить честный секторный 3D‑движок? Не рейкастер, не вращающийся куб, а настоящий Build Engine в духе Duke Nukem 3D — с порталами, секторами и перепадами высот?

Все знают, что Джон Кармак в 1993 году сделал DOOM. Гораздо меньше людей знают, что Кен Сильверман тогда же пытался разобраться в BSP‑деревьях Кармака, не понял их — и изобрёл свой движок. На нём потом взлетел Duke Nukem 3D. Я пошёл по его стопам — только вместо ПК — AVR, без FPU, без DMA и с крошечным стеком

В статье — как я боролся за каждый такт: Fixed‑Point арифметика, бинарное измерение углов, таблицы синусов, замена рекурсии на очередь задач. И почему 12 FPS на AVR — это повод для гордости.

Читать далее

От школьной тепловой трубки до промышленного рекуператора 25 лет спустя

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

 

Эта повесть — об одном из моих проектов. Чтоб его докрутить, пришлось закопаться в теплотехнику, микроконтроллеры и еще освоить несколько специальностей. Вспомнить школу (тепловая труба из медной трубы, пары монет, клапана от зажигалки + пропан). Отчасти через много лет это и вылилось в проект, где эти детские опыты стали основой технического решения.

Речь пойдет о разработке промышленного рекуператора/теплообменника на тепловых трубках (далее ТТ). Идеи, промежуточные остановки и повороты, кастомные ЧПУ станки, стенд для продувки из бочки, плазма и конечные цифры. Без экономики/бизнеса, чисто инженерия. Выкладываю все наработки. Может кому что пригодится.

Все делал «в одну каску», знания/опыт применил/получил я:).

Читать далее

Java Card: создаем Supplementary Security Domain

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

В предыдущей статье мы воспользовались встроенными в смарт‑карту механизмами безопасной персонализации апплета, тем самым нивелировали две проблемы:
1. городить свой ЗОС;
2. самоотверженно отлаживать его.
Но это решение создает еще большую угрозу, так как ключи ISD дают полную власть над картой и если они попадут к человеку с горячим сердцем, холодной головой и грязными мыслишками, то наш офис — его офис.
Но долой панику, у нас очередная гениальная идея: создаем Supplementary Security Domain!

Читать далее

Распознавание речи на микроконтроллере: от фонем к словам

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

В прошлый раз STM32N6 собирал слова из фонем по заданной таблице. Теперь микроконтроллер превращает свободную английскую речь в текст - без интернета и сервера, при потреблении около 0,2 Вт во время вычислений. Показываю, как это работает на реальной плате, где модель ошибается и что удалось улучшить. Исходники, модель и готовая прошивка выложены на github

Читать далее

Как устроен игровой OLED-монитор и как с ним можно играть

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

Знаете ли вы, сколько RAM в вашем мониторе? А сколько процессорных ядер? Сколько разных прошивок установлено внутри вашего монитора?

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

Читать далее

Живая вода для ESP32: рукописный шрифт и морфинг

Время на прочтение36 мин
Охват и читатели14K

Часы на ESP32 с экраном 320x240. Время, температура и название города написаны рукописным шрифтом на кривых Безье: цифры времени перетекают одна в другую, температура и город пишутся штрих за штрихом. Значок погоды собран из точек и плавно перетекает из одного в другой.

Мотивация

Часы показывают время, и воспринимается оно мгновенно: взглянул и знаешь. Оформление делает его заметнее, анимация — живее. Обязательна ли она? Нет. Это штрих, как в искусстве: без него всё работает, с ним на вещь приятно смотреть. Статья о том, как такой штрих сделать на микроконтроллере.

Читать далее

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

Микросервисы (async single-threaded) в эмбеддед и рефакторинг «кошмара на С++» с помощью ИИ

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

Я всегда знал, что разработка для встраиваемых систем (embedded) является не тривиальным делом, но даже не представлял, насколько С++ код в реальных enterprise-проектах может быть... скажем так, перегруженным. Тем интереснее попытаться исправить хотя бы кусочек такого кода, тем более что сегодня у нас есть прилежный цифровой помощник.

Справится ли искусственный интеллект с рефакторингом кода, от которого у обычного разработчика дёргается глаз? И в чём нейросети пока ещё безоговорочно уступают человеку? Заглядывайте под кат, там много боли, костылей, D-Bus и немного С++ и однопоточной асинхронности (async single-threaded).

Читать далее

SecurePair — безопасное сопряжение плат ESP32

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

Статья посвящена криптографически защищённому сопряжению и взаимодействию двух плат ESP32 через обычный светодиод по протоколу LX.25 или через ESP-NOW и LoRa.

Согласование ключей происходит с использованием протокола Диффи-Хеллмана на эллиптических кривых (X25519), а сообщения шифруются с помощью алгоритма AES-256-GCM. Библиотека SecurePair поддерживает любые средства передачи. Она работает через ESP-NOW, LoRa и любой другой канал связи, способный пересылать пакеты. А с помощью PacketLED можно реализовать обмен сообщениями даже через обычные светодиоды.

Читать далее

Реализация интерфейса HDA Link на RP2040

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

В статье описано, как реализовать многоканальный звук на RP2040 с использованием HD аудиокодека ALC889. Будет краткий разбор интерфейса HDA link и ссылки на пару рабочих демо-проектов с описанием их работы.

Читать далее

Испытание абстракций: как чужая процессорная система RISC-V переехала на десятки отладочных плат

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

10 октября стартует новый сезон Школы синтеза цифровых схем. Её проведение рассредоточено по множеству независимых кластеров, в каждом из которых есть свой преподаватель, свои отладочные платы и САПР, и необходимо обеспечить выполнение всех примеров школы на этом зоопарке различных устройств таким образом, чтобы преподавателю не нужно было думать о проблеме вроде: “Этот код точно собирался у меня в BRAM, почему здесь он синтезируется в миллион регистров, сжирающих все ресурсы платы”.

Чтобы избежать подобных проблем был создан репозиторий basics-graphics-music (BGM), добавляющий примерам несколько слоёв абстракции, которые позволяют избежать подобных проблем.

Упор этого года будет сделан на архитектуру RISC-V. Для этого в репозиторий был добавлен пример многопоточной программы, а также несколько RISC-V ядер, включая ядро НИУ МИЭТ, проектируемое на курсе “Архитектуры процессорных систем”. Это стало отдельным испытанием существующих абстракций на прочность: данное ядро проектировалось независимо от репозитория BGM и его абстракций, поэтому его интеграция стала интересным опытом. Подробнее об этом под катом.

Читать далее

STM32: Работа с SD-картами через SDIO

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

Когда устройству нужна относительно большая энергонезависимая память с возможностью быстрой замены, SD или microSD-карта — один из самых удобных и доступных вариантов.

Компактность, простое подключение, поддержка микроконтроллерами и низкая цена при большом объёме делают SD-карту стандартом для логирования, хранения конфигураций и обновления прошивок.

Многие считают работу с SD-картой чем-то сложным и низкоуровневым. На практике, если использовать SDIO + FatFS, бо́льшая часть сложности уже спрятана библиотеками и аппаратными модулями микроконтроллера.

В этой статье я покажу, как добавить поддержку SD-карт в проекты на STM32: что лежит в основе, и как она настраивается.

Читать далее

Разработка виртуальной RTOS для ПЛК на микроконтроллере

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

Хотя я считаю свой проект серьезным - не являюсь узким специалистом по разработке ОС. Проект пока любительский, и могу позволить себе некоторую свободу по разработке. Тут ставил для себя такие задачи:

Читать далее

В Китай за embedded-мечтой: программируем микроконтроллеры в SHENZHEN I/O

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

Доброе утро, Шэньчжэнь. На улице 19 градусов, плохое качество воздуха, высокая активность дронов, льет дождь и светит солнце. Все это я узнал от умной наружной камеры; мне же светят лишь холодные офисные лампы. Я мог бы торговать электроникой на рынке Хуачанбей неподалеку. Но у меня есть инженерное образование, мой воротничок белоснежен, и с сегодняшнего дня я работаю в Longteng Electronics.

Так начинается SHENZHEN I/O — головоломка, где нужно заниматься аппаратной разработкой и программированием микроконтроллеров. Выполнять разные ТЗ с помощью имеющихся компонентов и стремиться к экономии по всем возможным направлениям. У реального меня, автора этой статьи, инженерного образования нет. Я лишь окончил базовый онлайн-курс схемотехники и написал об этом три статьи. Поможет ли это здесь? Не уверен. Доедаю воображаемый баоцзы и открываю почту сотрудника.

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