Обновить
128K+

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

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

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

Эмулятор CD-ROM из Raspberry Pi Pico W, использующий образы из сети

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

В одной из своих статей я уже рассказывал, как из Raspberry Pi Pico сделать USB CD-ROM. Так как размер флеш-памяти Pico ограничен, поместить что-то серьёзное в образ, который будет находиться во флеш-памяти невозможно. Можно попробовать разместить образ на флеш-карте и использовать модуль для неё, но я нашёл более интересное с точки зрения используемых технологий решение. Эмулировать образ, который находится в интернете. Образа многих дистрибутивов Linux доступны для загрузки с сайта.

Читать далее

Новости

MIK32 Амур + PlatformIO: пошаговый гайд по настройке среды разработки на Windows

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

MIK32 Амур (К1948ВК018) — первый российский 32-битный микроконтроллер на ядре RISC-V от АО «Микрон». Для работы с ним разработчики предлагают связку VS Code + PlatformIO. Казалось бы, всё просто — но на практике сталкиваешься с множеством неочевидных шагов, которые нигде не собраны в одном месте. В этой статье я пошагово покажу, как развернуть полноценную среду разработки для MIK32 Амур на Windows.

Читать далее

К1921ВГ015 в Pandora EV UCCS: RISC‑V в контроллере зарядных станций постоянного тока

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

Копилка практических кейсов применения RISC-V в серийных изделиях российских производителей электроники пополнилась еще одним примером. Калужская компания Pandora EV, известная с 2004 года как разработчик высокотехнологичной автомобильной электроники вывела в свет универсальный контроллер зарядных станций постоянного тока Pandora EV UCCS, в котором применен российский микроконтроллер К1921ВГ015 производства АО "НИИЭТ" (входит в ГК "Элемент").

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

В этом кейсе архитектура RISC-V интересна, в первую очередь, как основа российского микроконтроллера, который дошел до промышленного устройства для зарядной инфраструктуры. И в этом материале мы разберем, какую роль выполняет Pandora EV UCCS и что дает применение К1921ВГ015 в контроллере ЗСПТ. 

Подробности - под катом! =)

Читать далее

Как я собрал инфопанель на ESP32, поручив написание кода нейросетям

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

В 2026 году ИИ-помощников для написания кода пруд пруди. Разные модели по-разному подходят к решению задач: тот же ИИ, способный за пару минут состряпать безупречный сайт, может намертво зависнуть на сложных кодинг-проектах. Но для небольших любительских схем на микроконтроллерах такие модели подходят идеально – тут они могут показать себя во всей красе.

Поэтому автор обзора, Ядулла Абиди, устроил очную ставку Claude Code, Codex и Antigravity в реальном хардверном проекте. Задача – собрать простенькую информационную панель на базе ESP32 с OLED-дисплеем и датчиком температуры, которая умеет выполнять несколько параллельных задач. И хотя все три ассистента способны выдать рабочий прототип, выбирать помощника не глядя точно не стоит.

Читать далее

Диктофон на микроконтроллере (WM8731 + I2S + STM32 + SDIO + FAT16)

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

В этом тексте я покажу, как на основе микроконтроллера, аудиокодека и SD карты запрограммировать самый настоящий диктофон.

Перечислены особенности разработки звукозаписывающей аппаратуры и типичные трудности разработки диктофонов.

Читать далее

Modbus-датчик от подключения до Grafana без написания кода — только конфиги

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

Типичная история при работе с промышленными датчиками выглядит примерно так. Есть RS485- датчик, нашли документацию с картой регистров. Написали Python-скрипт, который раз в 10 секунд опрашивает Modbus, парсит регистры и пишет строчку в CSV. Через неделю скрипт падает — оказывается, что порт занят другим процессом, или systemd не поднял его после перезагрузки, или датчик не ответил три раза подряд и скрипт завис в ожидании. Чиним, причесываем, добавляем watchdog. Потом понимаем, что CSV — плохая идея и надо куда-то писать данные нормально. Этот путь знаком многим в промышленной инженерии, но есть и другой. 

Читать далее

LumaBloom — DIY‑цветок, который автоматически регулирует яркость мониторов

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

Идея этого проекта появилась после обсуждения с коллегой устройств, которые могли бы автоматически регулировать яркость мониторов по окружающему свету. Картина была довольно унылая: встроенные решения обычно встречаются в дорогих моделях мониторов, отдельных внешних устройств на рынке почти нет, а то, что есть, либо стоит слишком дорого, либо недоступно, либо просто выглядит не очень.

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

Читать далее

USB-ключ для ввода TOTP-кодов и сохранённого пароля

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

Мне всегда было лень доставать телефон ради TOTP-кода, а вручную вводить длинные сложные пароли — удовольствие тоже сомнительное. С паролями эту проблему часто решают плохо: делают пароль попроще и покороче, чтобы его было удобно набирать. Но с TOTP так не получится — код живёт отдельно, его всё равно нужно открыть, посмотреть и перепечатать.

Поэтому я решил сделать маленький «вписыватель паролей»: USB-устройство, которое притворяется клавиатурой и само вводит TOTP-код или сохранённый пароль.

Читать далее

Как я перестал бояться ESP-Claw и полюбил его

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

Как я встретил ESP-Claw? Очень просто: не на Хабре, не в Google, а в одном дружном чатике, куда ссылку запостил коллега по несчастью. Не могу сказать, что именно меня зацепило, но я решил - почему бы и нет. Если в двух словах, то оно того стоило: попутно я освоил подключение к LLM по API-ключу, разобрался с OpenRouter, позаботился об экзотической лягушке, убедил ИИ написать Arduino-скетч для управления Tuya-совместимыми выключателями и розетками и заодно взгромоздил на десктоп Open WebUI - чтобы у меня был собственный ИИ-чатбот, с блекджеком и без облака. Это - описание опыта, а не выверенное до последней запятой руководство.

Читать далее

Хроники занятий микросхемами с русскими школьниками не в замке во Франции, а в хакерском клубе в Калифорнии

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

Продолжаем хроники занятий со школьниками на Verilog Meetup в Hacker Dojo. Цель занятий - собрать за месяц несколько демонстраций и показать их на городском мероприятии Technology Showcase в Mountain View. Для тех кто не в курсе, Маунтин-Вью - это такой город, в котором я однажды увидел на улице Сергея Брина, выходящего из-за угла с озабоченным лицом.

Как я уже писал, на первое занятие, на которое я ожидал придет человека три - пришло двадцать, и их не было никакой возможности обслужить. На второе занятие пришло десять: трое русских мальчиков с предыдущего занятия, трое новых русских мальчиков и девочка, китайский мальчик и их родители. Также зашел соратник Виктор и один товарищ на пять минут посмотреть. Под конец зашел американец, который советуется со мной по поводу FPGA. Он раньше работал в NASA JPL в Пасадене и похвастался мне что снимки его трансляций с Марса до сих лежат на сайте Института космических исследований Российской академии наук.

В процессе дискуссии возникли три возможных проекта:

Читать далее

Программный ремонт RAM DDR 4\5

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

Третьего, как говорится, дня случилось страшное. Любимый комп в процессе работы начал жутко тормозить, а после перезагрузки отказался включаться. Довольно быстро выяснилось, что приказала долго жить одна из парного набора 16Gb DDR5 планка памяти. Учитывая текущие цены на ОЗУ это было больно. Утерев слёзы ушанкой и взяв себя в руки решил что рано констатировать смерть и надо попробовать память реанимировать хотя бы на очевидном и самом простом для реализации уровне: проверить содержимое SPD чипа, и в случае подозрений на проблемы записать эталонную, считанную с рабочей.

Для этих целей группой инициативных ремонтников был разработан и собран вот такой девайс, который позволяет читать и писать микрокод в SPD простым перетаскиванием файла в "проводнике Windows".

Читать далее

Проигрыватель WAV файлов на STM32

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

В этом тексте я показал как можно разработать прототип музыкального проигрывателя на основе микроконтроллера STM32F407VG и аудио кодека WM8731. Показал как спроектировать прошивку проигрывателя wav файлов на основе I2C, I2S, DMA, SDIO и FatFs.

Читать далее

PID Toolkit — браузерный инструмент для настройки PID — регуляторов без установки

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

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

Некоторое время назад я публиковал ElectroKit - Браузерный расчётчик электрики, полностью работающий в одном HTML-файле. Благодаря вашим комментариям удалось исправить множество неточностей и значительно улучшить проект, но я всё ещё работаю над ним

Появилась идея сделать похожую вещь для PID-регуляторов. Опять же неудобно - онлайн калькуляторы,где-то посчитать коэффициенты, отдельно переходный процесс, искать очередную реализацию PID и захотелось чтобы всё это было в одном месте как в ElectroKit и так появился PID Toolkit. И как всегда, любимая мне идея - локально, без установки, регистрации, смс и подключения к Интернету.(хотя про интернет это уже не так важно).

Почему вообще появился этот проект

Всё, что удалось найти это PID-калькуляторы которые умеют лишь вычислять коэффициенты по одному выбранному методу и потом всё равно приходится

1 - сравнивать разные методы настройки

2 - моделировать переходный процесс

3 - оценивать устойчивость системы

4 - писать код PID-регулятора под свою платформу

5 - помнить про derivative kick, anti-windup и многое другое

Теперь к самому инструменту.

В основе лежит модель FOPDT (First Order Plus Dead Time). Пользователь задаёт три параметра объекта коэффициент усиления K,постоянную времени T,время запаздывания L.

После этого инструмент сразу рассчитывает настройки несколькими методами:

Ziegler–Nichols (Open Loop); Ziegler–Nichols (Closed Loop); CHR (0% Overshoot); CHR (20% Overshoot); ITAE Servo; ITAE Regulator; Lambda / IMC.

Все результаты отображаются в одной таблице, которую можно сортировать по Kp, Ki, Kd

Читать далее

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

Антенный ротатор на PTZ 3050DZ

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

Недавно попалось на глаза поворотное устройство для видеокамер PTZ 3050DZ, которое заинтересовало меня невысокой стоимостью и приличным заявленным весом поворачиваемой видеокамеры в 10 килограмм. Подумалось, что оно вполне может подойти для использования с небольшими спутниковыми антеннами. По ходу дела пришлось смастерить для него еще и дистанционное управление с применением модулей LoRa. Жмите кнопку ниже, чтоб узнать подробности.

Читать далее

Копируем ключ без ключа: умный дубликатор 1-Wire на ассемблере AVR с ручным вводом и контролем CRC

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

Здравствуйте, уважаемые хабровчане!

И снова новое устройство. И снова древний чип и ассемблер — на радость комментаторам. 😊

Сразу хочу расставить все точки над «i». Да, я знаю, что можно было взять чип поновее или вообще что-то типа Raspberry Pi, прикрутить к нему экран 640х480, подсоединить мышь, клавиатуру, модуль GSM для выхода в глобальную сеть и сохранения ключей на сервере. Да и код можно было написать не на ассемблере, а на Си, Python, Rust, «навайбкодить» или добавить искусственный интеллект. Всё это я прекрасно знаю, так что давайте не будем на это отвлекаться.

Данный проект — чистый DIY. Его цель — показать, что можно сделать на довольно старом (не буду говорить «устаревшем») контроллере. Относитесь к этой статье как к видео о выживании в лесу. Знаете, есть такие ролики, где блогер сознательно уходит в тайгу, имея при себе только топор, спички, соль и чистый энтузиазм. Он строит себе жилье, находит пропитание и отлично отдыхает. А ведь мог бы на вертолете долететь до турбазы, выйти из дверей прямо к телевизору, попивать пивко и закусывать шашлыком, глядя на красиво постриженные сосны за окном…

Читать далее

Структуры данных на практике. Глава 18: Очереди драйверов устройств

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

Наш сетевой драйвер терял пакеты. Не время от времени, а постоянно. На пропускной способности линии с 64-байтными пакетами мы теряли 31% всего трафика.

В качестве оборудования использовался Ethernet-контроллер на 1 Гбит/с на SoC RISC-V. В спецификациях говорилось, что он может справляться со скоростью проводного трафика. Движок DMA работал корректно. Обработчик прерываний срабатывал вовремя. Тем не менее, пакеты исчезали.

Я начал с очевидного подозреваемого: очереди получения. Реализация выглядела вполне логично — простой связанный список с указателями на голову и хвост. Под нагрузкой (64-байтные пакеты на пропускной способности линии) драйвер терял 31% пакетов! При профилировании обнаружилась причина проблемы: производительность убивали связанный список и спин-блокировки.

Я переписал драйвер, использовав кольцевой буфер без блокировок. Результаты: потеря 31% пакетов превратилась в 0,12% — улучшение в 258 раз!

В этой главе мы поговорим о структуре очередей для драйверов устройств.

Читать далее

Zynq 7000. Переносим I2C Master Controller. Работа над ошибками и утилиты userspace

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

В прошлой статье мы собрали готовый образ Linux и запустили I2C Master Controller который живет в ПЛИС и управляется драйвером предоставляющим в ОС доступ к нему как типовому I2C-контроллеру. В этой, заключительной части из общей серии статей, я хотел бы филигранно отшлифовать все мелкие недочеты и привести примеры утилит, которые могли бы отправлять нужные нам данные на I2C OLED-дисплей SSD1306, например температуру кристалла, время или что-нибудь еще. 

Всем кому интересна тема - го под кат! :)

Читать далее

Российский микроконтроллерный блок управления судовыми преобразователями частоты. Часть 3

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

Статья посвящена микроконтроллерным системам управления преобразователями частоты для электродвигателей переменного тока. Рассматриваются различные варианты структуры и конструкции систем управления преобразователями частоты. Приводится техническое описание российского микроконтроллерного блока управления БУПЧ, который входит в состав преобразователей частоты для судовых систем электродвижения концерна «Русэлпром»: его состав, устройство, технические характеристики, преимущества и недостатки по сравнению с западными аналогами. Рассматривается специальное сервисное программное обеспечение, которое существенно сокращает время тестирования и отладки основного программного обеспечения для БУПЧ, уменьшает вероятность ошибок в нем, способных привести к аварийным ситуациям, позволяет проверить правильность работы БУПЧ и преобразователя частоты, а при возникновении ошибок – быстро определить их причины. 

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

Третья часть статьи

Структуры данных на практике. Глава 17: Структуры данных загрузчиков

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

Наш загрузчик оказался слишком медленным. Требование было чётким: загружаться менее чем за 500 миллисекунд. Показатели оставались не менее чёткими: 720 миллисекунд. Мы отставали от нужного значения на 44%.

Это требование не было «мягким». Загрузчик должен был работать в промышленном контроллере, обязанном реагировать вскоре после включения питания. Каждая секунда времени загрузки — это потерянная продуктивность. В спецификации к изделию был указан максимум в 500 мс. Мы обязаны были их обеспечить.

Задача загрузчика была простой:

1. Инициализировать оборудование (UART, SPI, DDR-контроллер)

2. Загрузить ядро из флэш-памяти

3. Спарсить дерево устройств

4. Перейти ко точке входа ядра

Реализация казалась логичной: стандартные структуры данных из библиотеки C. Проблема выявилась при профилировании: 45% времени загрузки тратилось на malloc/free! В загрузчике всего с 64 КБ ОЗУ динамическое распределение роняло производительность.

Читать далее

Структуры данных на практике. Глава 16: Фильтры Блума и вероятностные структуры данных

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

Наш веб-краулер потреблял 128 МБ ОЗУ только на отслеживание посещённых URL. На встраиваемом устройстве с 256 МБ это была половина всей памяти.

Задача краулера была простой: отслеживать посещённые URL, чтобы не краулить одну и ту же страницу дважды. После обработки 1 миллиона URL (средняя длина 80 байт) хэш-таблица, в которой хранились эти URL, разрослась до 96 МБ плюс оверхед.

«Можем ли мы обменять точность на память? Нас вполне устроит несколько дублированных операций, если это позволит сэкономить большой объём памяти», — сказал мне мой менеджер во время ревью кода.

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

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