Обновить
256K+

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

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

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

Тихий перфоратор для соседа: как спроектировать тактовый генератор с распределенным спектром

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

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

Есть более элегантное решение — тактовый генератор с распределенным спектром (ТГРС). Мощность генератора остается прежней, а вот шум удается заметно снизить. Меня зовут Павел Кириченко, я автор курса «Схемотехника для начинающих» и ведущий инженер по разработке SoC в YADRO. В статье разберемся, как спроектировать ТГРС для последовательного интерфейса и рассмотрим два подхода к его архитектуре: с переменным коэффициентом деления и c фазовым интерполятором.

Читать далее

Новости

Разработка RC-машинки с BLDC. Подход с нуля

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

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

Будет описан мой пройденный путь: от печати готового проекта до разработки и печати новой платформы; от разработки первой версии печатной платы для использования коллекторного DC мотора до реализации управления бесколлекторным BLDC мотором с датчиками холла; от локального управления до реализации полудуплексного обмена данными на расстояние в сотни метров с передачей телеметрии.

Вновь потратил на разработку пару лет, но никуда не спешил. Это лишь мое хобби.

«Long story short…»

О преподавательских работах в Азербайджане, с фотографиями

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

Получил письмо от декана азербайджанского университета ADA University в Баку с просьбой распостранить информацию, что они нанимают большое количество преподавателей. Декан кстати из России, уроженец Дагестана. В университете у них висят портреты как западных деятелей, так и российских - Чехова, Менделеева итд. Многие из преподавателей - азербайджанцы, которые ездили учиться в США и вернулись поднимать родину. Но есть и много иностранцев. Из студентов процентов 70% владеют русским, но 30% не владеют, плюс есть толика иностранных студентов, поэтому официальный язык всего английский. Но во время моего семинара два года назад мы переходили на русский по необходимости, как и разумеется студенты говорят на азербайджанском друг с другом и владеющим азербайджанским преподавателям.

Читать далее

Часы на ВЛИ ИВ-18

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

Почему выбрал VFD и конкретно ИВ-18? Во‑первых, с детства нравились ВЛИ, особенно на всяческих аудио‑/видеомагнитофонах («Маяк-232-стерео», «Электроника ВМ-12» и подобные). Во‑вторых, у меня как раз появилась пара таких «трубок» и, коль скоро с ними «вживую» дела иметь ещё не приходилось, то интересно было их «запустить». В‑третьих, к тому моменту была уже освоена «технология» работы с газоразрядными индикаторами (они же — nixie, ИН-12 и подобные) и выглядело для меня всё как «ну, не должно быть сильно сложнее».

Читать далее

Чип размером с приусадебный участок

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

Может начать рисовать комиксы против проповедников ИИ, которые говорят "не смотри в генерируемый код, просто проверяй его в тестовом стенде"? Ниже первый эксерсиз.

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

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

А ведь если поставить такой блок в реальное устройство, там накрутится за полчаса триллион транзакций (гигагерц - миллиард в секунду - умножить на 20 минут по 60 секунд = 1200 миллиардов).

Это что же - поставить в чип двести триллионов D-триггеров для flop-based FIFO которое оно сгенерило? А если рассматривать худший сценарий работы за сутки - ставить квадриллион D-триггеров? Это чип размером с приусадебный участок.

Сделал в LinkedIn пост на английском:

Читать далее

От PLC к своему HMI и AI-анализу

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

В первой статье и второй статье мы заставили крутиться PMSM-мотор под управлением комплекта P-NUCLEO-IHM03, внедрив в прошивку поддержку FDCAN. Чтобы превратить DIY-проект в нечто более серьезное, нам нужен верхний уровень: наглядный интерфейс, интеграция с индустриальными стандартами и, конечно, немного магии современных LLM для диагностики.

Сегодня мы построим распределенную систему управления, где OpenPLC берет на себя логику, Node-RED — визуализацию, а AI-агент — роль инженера-диагноста.

Читать далее

Расширяем проект на микроконтроллерах с OpenPLC

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

В предыдущей статье мы подключили CAN bus к STM32-IHM03, настроили базовую коммуникацию и запустили управление PMSM-двигателем. Теперь пришло время расширить проект — добавить в него периферийный микроконтроллер в качестве удалённого I/O-узла и организовать логику управления с помощью OpenPLC.

В этой статье мы рассмотрим, как подключить Raspberry Pi Pico W по Modbus RTU к одноплатному компьютеру Orange Pi, запрограммировать микроконтроллер в среде OpenPLC Editor на языке контактно-релейных схем (LD) и удаленно управлять реле по Modbus. Попутно разберёмся с настройкой шилда RS485 CAN HAT, адресацией пинов и регистров.

Читать далее

Структуры данных на практике. Глава 12: Кучи и очереди с приоритетом

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

«Плохие программисты беспокоятся о коде. Хорошие программисты беспокоятся о структурах данных и их взаимосвязях», — Линус Торвальдс

Споры о планировщике

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

Вставлять новые задачи с приоритетом (O(log n))

Запрашивать задачу с наибольшим приоритетом (O(1))

Удалять задачу с наибольшим приоритетом (O(log n))

Кто-то предложил: «Давайте используем отсортированный массив». Но вставка будет занимать O(n) — придётся сдвигать элементы.

Кто-то ещё сказал: «Возьмём связанный список». Однако поиск наибольшего выполняется за O(n) — необходимо сканировать весь список.

Третий вспомнил о двоичном дереве поиска. Но из Главы 9 мы уже знаем, что BST ужасно ведут себя с кэшем.

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

Читать далее

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

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

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

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

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

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

Читать далее

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

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

По созданию клавиатур на Хабре написано много статей, но, как правило, они подразумевают кастомизацию прошивки 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 мин
Охват и читатели16K

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

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

Читать далее

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

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

У многих из нас есть слабость к маленьким многофункциональным гаджетам. К тем самым коробочкам с мигающими светодиодами, которые покупаются под лозунгом «ну это же мне очень надо!», а потом укоризненно смотрят на тебя с полки. У меня к этой категории относятся «тамагочи для хакеров» 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.

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