Обновить
256K+

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

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

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

Самодельный «ретрокомпьютер» из трёх Arduino

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

Некоторые компьютеры предназначены для того, чтобы двигать прогресс вперёд. Я собрал Daisy, чтобы двинуть его в прошлое!

Это самодельный персональный компьютер, изготовленный из трёх плат Arduino, резисторов и большой любви. Он не пытается быть мощным. Он старается быть интересным: портативным, ограниченным в возможностях и милым. За таким компьютером можно провести ночь, рисуя простые картинки, сочиняя музыку или создавая маленькую игру. Такие машины когда-то были в изобилии, но теперь их практически нет: Timex Sinclair 1000, Commodore PET, TRS-80 MC-10.

Но Pinecone Daisy — это ещё и нечто иное: артефакт из альтернативной истории. У него есть название, производитель, номер модели и печатное справочное руководство по программированию на BASIC. Моё руководство стилизовано под книги Abacus Software для Amiga; источником вдохновения для него стала реклама DASH-80 в журнале, а напечатано оно было якобы существующей компанией Pinecone Computer. Всё это не совсем реально, но реально достаточно. Машина работает. Руководство точно её документирует. Медведь (капибара из начала статьи) присутствовала почти при всём процессе сборки, как помогающий в отладке «резиновый утёнок».

Название собрано из двух частей: вымышленной компьютерной компании из фильма 1985 года «Электрические грёзы» и клички моей собаки Дейзи. Модель называется DAISY-1.

Творческий, авантюрный дух домашних компьютеров 1970-х и 80-х был неотделим от ограничений. 40 столбцов, пара цветов (если повезёт), несколько звуковых каналов и BASIC. Это были не изъяны, которые нужно преодолевать, а сама среда.

Читать далее

Новости

Распределённый ПЛК без шкафов автоматики

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

Insol-1000 в сборе: центральный модуль с OLED и с модулями расширения на DIN-рейке.

Статья посвящена практическому построению распределённой системы автоматизации на основе открытого стандарта IEC 61499 и экосистемы 4diac (Eclipse Foundation).

Читать далее

Самодельный elgato-like макропад. Часть 2, софтовая

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

Так как в первой статье я сосредоточился на схемотехнике, в этой хотелось бы пройтись по разработке ПО и прошивки.

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

ESP32-S3 имеет два USB выхода - обычный через микросхему CH340, которая конвертирует USB в UART, и второй USB OTG, который подключен к чипу напрямую. То есть чип может управлять тем, какое "устройство" он предоставит хостовой ОС! Более того, он может предоставлять несколько устройств одновременно. Это было как раз то, что надо: одним устройством будет USB HID клавиатура для "сырого" ввода в консоль, например, а вторым - USB RAW устройство, которое будет слушать софт бекенда - запускать приложения по ярлыкам, регулировать громкость, отправлять в устройство настройки. И всё это минуя тормознутый UART. Сказка. Но, как оказалось, для взрослых.

Казалось бы, полный интернет примеров того, как это настраивать. Даже в самом фреймворке esp-idf есть пример композитного устройства, значит, информация уж точно легкодоступная, бери да пользуйся. Я попросил ИИ добавить это в прошивку и... Оно не смогло. То есть вообще. Два дня и токенов примерно на 30 баксов - и я взял дело в свои руки, потому что ИИ выдумывал всё более и более изобретательные причины того, почему прошивка не компилируется, но вот выдумать компилирующуся прошивку не мог никак.

Читать далее

Программирование блока питания АКИП-1160/6 (или Drive-by-Wire)

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

Часто бывает такая ситуация, что вы разрабатываете прошивку для электронной платы у которой есть ADC порты.

Рано или поздно Вам придется как-то убедиться, что ADC в самом деле измеряют то напряжение, что приложено со стороны улицы.

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

Читать далее

Разработка эмулятора NES на отечественном микроконтроллере К1921ВГ1Т

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

Привет, Хабр! Сегодня мы поговорим о реализации базовой версии эмулятора консоли NES на отечественном микроконтроллере К1921ВГ1Т и даже поиграем на нём в игры.

Съесть гриб и вырасти

Как получить субсидию 300 миллионов от Минпромторга?

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

Разбираю субсидию 300 миллионов на внедрение российских ПО и ПАК. Если вы промышленник, читайте внимательно: возможно, это ваш шанс. Или нет.

Читать дальше

Как ИИ портит резюме студентам

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

Сейчас студенты поголовно пишут резюме с помощью ИИ, и ИИ поголовно делает им интересное западло: оно вставляет им среди рабочих навыков SVA, то есть SystemVerilog Assertions (ниже я расскажу что это). При виде SVA в резюме я тут же прошу кандидата написать некий простейший SVA на три строчки, и начинается извивание ужа на сковородке:

Читать далее

Самодельный elgato-like макропад. Часть 1, железная

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

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

Я пользуюсь MAD CATZ S.T.R.I.K.E. 7, которая всем чудо как хороша, кроме того, что вышла больше 10 лет назад, её производитель обанкротился в 2014 и её софт на Win 11 уже надо ставить с бубном. Все мы смертны, клавиатуры - тем более, так что я стал задумываться над заменой. Но проблема в том, что я привык к россыпи макроклавиш, которые позволяют одним нажатием, не задействуя мозг, переключать ветки гита, исправлять криво введённые команды или вбивать пароли в окошки по 15 раз за день (о боги хаоса, как я "люблю" параноиков-безопасников). А современные клавы имеют в лучшем случае 4-5 макроклавиш (что вдвое меньше, чем нужно), а некоторые ещё и стоят как приватный остров. И тут в унынии я наткнулся на это...

Читать далее

VSCode как IDE для embedded разработки

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

В данной статье рассматривается процесс настройки vscode для разработки встроенного ПО на базе ядер cortex-M и процессе превращения редактора в полноценную IDE. При этом большинство представленных расширений являются универсальными и применимы в широком спектре задач программирования.

В отличии от проприетарных решений, таких как Keil, подход использования редактора vscode + компилятор gcc позволяет гибко настроить каждый пункт от начала разработки до релиза продукта. За время своей работы мною было опробованы разные решения: от классического keil до связки sublime и CodeSourcery. В последние годы я перешел на vscode + msys2: практически все ПО Open Source, не требует лицензий, не ограничено 32 Кб кода и может работать без сети интернет.

Читать далее

Проектируем с нуля калькулятор на FPGA. Части 4 и 5: Фреймворк и оборудование

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

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

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

В этой части я расскажу об окружениях и их взаимосвязи.

Главный принцип этого фреймворка заключается в том, что единственный набор файлов исходников на Verilog можно без изменений использовать в различных средах сборки:

ModelSim для потактово точной симуляции HDL с волновым выводом

Verilator для быстрой симуляции на C++, с тестовой обвязкой (calctest) и другими инструментами

Десктопное приложение на Qt для интерактивной работы с интегрированным отладчиком на уровне исходников

Qt WebAssembly для запуска калькулятора в браузере с попиксельной точностью

Quartus для синтеза и записи на физическую плату FPGA

Каждое из окружений позволило выявлять свой класс багов. ModelSim отлавливает проблемы таймингов на уровне сигналов. Verilator обладает достаточной скоростью для проверки тысяч тестовых векторов. Симулятор на Qt позволяет удобно пользоваться интерактивной отладкой. WebAssembly доказывает работоспособность кода в совершенно иной среде исполнения, в которой видением приложения можно поделиться со всем миром. Целевая платформа FPGA, реальная плата — это то, что можно потрогать, окончательная реализация идеи.

Читать далее

Проектируем с нуля калькулятор на FPGA. Часть 3: Практические численные методы

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

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

Когда я начинал этот проект в 2021 году, мне нужен был код на C++, который бы реализовывал алгоритмы на основе примитивов BCD и проверял результаты. Этот код превратился в подпроект Methods. Он заработал, но в нём возникли небольшие баги с шириной мантиссы, из-за которых тестовые результаты оказались ненадёжными в пределах одного-двух последних разрядов. Вместо того, чтобы патчить его, я в 2025 году переписал всё с нуля в рамках подпроекта Proto: более чистой архитектуры, правильного эталона и генератора тестовых векторов оборудования, относительно которого можно валидировать микрокод FPGA.

Читать далее

Разработка аппаратной платформы для соревнований по Embedded программированию

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

Предыстория

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

Несколько лет назад я участвовал в соревнованиях по электронике и очень вдохновился интересным подходом и вовлеченностью разработчиков заданий. Прошло время, стал ездить на соревнования в качестве эксперта и в какой-то момент решил разработать устройство для одного из этапов соревнований – «программирование».

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

«Long story short…»

Часы из вольтметра. Версия 2026

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

Нашли в сети статью одного автора о том, как он усовершенствовал свою версию часов из вольтметра — перевели её для вас.

В далёком 2019 году я собрал свои первые простые часы с вольтметром.

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

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

Читать далее

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

Адаптивный СВЧ‑сенсор на базе 8-битного МК

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

В области встроенных систем и СВЧ‑электроники применение «тяжёлых» нейросетевых решений (включая TinyML) часто ограничено вычислительными ресурсами и энергопотреблением.

В статье рассматривается альтернативный подход: частотная дискриминация с помощью двух амплитудных детекторов с разной нелинейностью отклика. Разница их выходных напряжений формирует уникальный «отпечаток» частоты. Для классификации используется однослойный перцептрон, реализованный на 8-битном микроконтроллере К1946ВМ014 (аналог ATmega8535) с целочисленной арифметикой.

Представлены схема устройства, алгоритм обучения и экспериментальные результаты распознавания частотных диапазонов. Код (95 строк) и основные технические решения.

Читать далее

Проектируем с нуля калькулятор на FPGA, части 1 и 2

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

Идея этого проекта пришла ко мне в феврале 2021 года, когда в Остине (штат Техас) произошёл сбой энергосистемы. К сожалению, нам надолго запомнилось то, как правительство справлялось с ситуацией. Когда единственным источником тепла и света остался только газовый камин, а единственным окном в мир — слабое телефонное Интернет-соединение, у меня было много времени поразмыслить о том, что бы новое и интересное мне хотелось разработать. Я взял калькулятор HP-41CV и начал нажимать на кнопки. Как обычно, ощущения от этого были самыми приятными. И мне захотелось самому создать нечто подобное!

В начальной школе мне представилась возможность поиграть с HP-41CV. Я наблюдал, как калькулятор загружает программу с магнитной ленты и запускает её. Жужжание считывателя карт и тонкая магнитная лента, втягиваемая в устройство с одной стороны и выходящая с другой, внезапно изменяли поведение калькулятора, что произвело на меня очень сильное впечатление. Я и не подозревал, что оно повлияет на всю мою жизнь. Спустя несколько лет у меня появился Sinclair ZX81, потом ZX Spectrum, на котором я при помощи дизассемблера HiSoft Devpac MONS взламывал разные игры. Эти два устройства (калькулятор HP и микрокомпьютеры Sinclair) подтолкнули меня к разработке, программному обеспечению и исследованию внутренностей разных машин. Во многом я стал разработчиком именно благодаря этому.

Когда-то я изучал сам чип Z80, воссоздав его в виде A-Z80 и написав визуальный инструмент Z80 Explorer, отображающий его список связей. В каком-то смысле это ощущалось как закрытие темы одержимости Sinclair. Проект калькулятора ощущался как закрытие темы HP. Это не клон, не эмуляция, а реализация с нуля на основе тех же принципов. Мне хотелось изнутри разобраться в том, почему эти машины работали именно так.

Как работает научный калькулятор? Не в общих чертах, а в подробностях. Как он хранит числа? Какой алгоритм вычисляет sin(x)? Как функционирует его очень простой CPU?

В серии моих статей мы получим ответы на эти вопросы: в конечном итоге мы получим полностью работающий научный калькулятор, спроектированный и изготовленный с нуля, на собственном CPU, созданном на FPGA, с написанным вручную микрокодом, эталонными реализациями на C++ и физическим «железом», которое лежит у меня на столе и может вычислять точные ответы. И всё это в опенсорсе: вы можете увидеть это и попробовать самостоятельно.

Насколько я понимаю, этот проект уникален: мне неизвестен ни один другой научный калькулятор (с тем же уровнем функциональности), реализованный на FPGA с собственным CPU и оригинальным рукописным ПО для его работы.

Читать далее

Вайб-монтаж печатных плат и такой же код

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

Yet another способ сверхбыстрого прототипирования из мелких модулей и печатных плат. Также, рассматривается вопрос вайбкодинга любых шрифтов на основе генерации из ttf для дисплея и вывода рисунка.

>>Читать>>

Итоги 3-го этапа RISC‑V DEVBOARDS: что показали проекты на базе Baikal‑U

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

3-й этап программы раннего доступа к архитектуре RISC‑V DEVBOARDS на базе отладочной платы Base (EVU‑BA-2.1) на основе микроконтроллера Baikal‑U (BE‑U1000) стал одним из самых насыщенных по составу и содержанию проектов. Более 100 заявок, 32 отобранные команды и широкий отраслевой охват показали устойчивый интерес к этой платформе со стороны разработчиков, университетских команд и инженерных коллективов, работающих в прикладных направлениях. В центре внимания оказались проекты, связанные с промышленной автоматизацией, системами ЧПУ, интерфейсными модулями, контроллерами производственных линий и модульными беспилотными платформами.

В статье разбираем, какие именно задачи участники решали на базе Baikal‑U, как использовали многоядерную архитектуру, периферию и доступный стек разработки, а также какие практические выводы можно сделать по итогам этапа. Отдельно рассматриваем несколько показательных кейсов, чтобы понять, в каких сценариях платформа уже показала себя как рабочий инструмент, а где разработчики столкнулись с задачами следующего уровня — тепловым режимом, питанием, компоновкой, развитием библиотек и переходом от макета к более зрелому устройству.

Читать далее

Детектор WiFi излучения (WiFi дозиметр)

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

Мне приходится периодически кататься на велике. В какой‑то момент я решил, что просто кататься — это слишком скучно. Захотелось не просто ездить, но и как‑то исследовать окружающий мир.

Я попробовал исследовать окрестности своего квартала на наличие источников WiFi излучения.

Читать далее

DIY-стенд для инспекции печатных плат (профиль, камера, шаговые двигатели и немного инженерного упрямства)

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

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

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

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

Если коротко, то я собрал из того, что было под рукой (местами буквально "на коленке"), и это неожиданно дало больше понимания, чем ещё одно обучение модели.

Читать далее

Структуры данных на практике. Глава 15: Графы и их обход с эффективным использованием кэша

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

«Задача абстракции — не быть расплывчатой, а создать новый семантический уровень, на котором можно достичь абсолютной точности», — Эдсгер Дейкстра

Взрывной рост количества промахов кэша

При определении топологии сети для обхода 500 коммутаторов нашей системе требовалось 37,5 миллисекунды. Вроде бы это не так медленно, если не учитывать количество промахов кэша: 8,5 миллиона. При 500 узлах это 17 тысяч промахов на узел.

Структура данных была фундаментально неподходящей для этой задачи.

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

Реализация была как по учебнику — список смежности со стандартным BFS. В случае сети из 500 коммутаторов (в среднем по 12 соединений у каждого) статистика была такой: 8,5 миллиона промахов кэша на 500 узлов. Это 17 тысяч промахов кэша на узел!

Я переписал этот код, реализовав графовое представление, учитывающее кэш. Результаты: код стал в 3,75 раз быстрее, а количество промахов кэша уменьшилось в 7 раз.

В этой главе мы поговорим об эффективном описании и обходе графов.

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