Как стать автором
Обновить
210.01

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

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

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

Игры на промышленных девайсах? Легко! Портируем эмуляторы и Wolfenstein 3D на ТСД за 500 рублей на практике

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

Дисклеймер: употребляемые слова ‭вроде «портируем‭», ‭«хакаем‭» и ‭«реверсим‭» совсем не значат, что статья предназначена исключительно для гиков! Я стараюсь писать так, чтобы было понятно и интересно абсолютно всем!

Наверняка многие мои читатели так или иначе слышали новости о том, что известные игры были портированы на самые разные платформы. В какой-то момент к такой же идее пришёл и я, однако мне хотелось портировать игры и эмуляторы на довольно диковинные промышленные девайсы, которые работают на платформе Windows CE. Как я портировал Wolfenstein и эмулятор NES на бравого, но списанного в утиль трудягу склада и зачем? Читайте в сегодняшней подробнейшей статье!

Читать далее

Импортозамещение работает: две российские FPGA платы, полностью импортозамещающие 35 американских и китайских плат

Время на прочтение4 мин
Количество просмотров21K

Вчера известный разработчик FPGA дизайнов и печатных плат Николай Ковач, основатель marsohod.org из Таганрога, добавил поддержку платы Марсоход3GW2 в репозиторий примеров для Школы Синтеза Цифровых Схем, в которую сейчас идет регистрация. Плата покрывает нужды Школы для упражнений с цифровой логикой, синтезом простого микропроцессорного ядра, распознавания и генерации звука и красивой графикой на HDMI дисплее с 24-битным цветом.

Почему это важно и как это связано с Мишустиным, США, Китаем и другими глобальными обстоятельствами? Да от решения микроархитектурных задачек на таких платах непостредственно зависит уровень проектировщиков российcких чипов через несколько лет:

Читать далее

Разработка больших цифровых часов на светодиодной ленте

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

Когда-то давно в детстве, когда я ещё только начинал заниматься электроникой, у меня была мечта изготовить огромные часы на семисегментных индикаторах. Для их изготовления я рассматривал люминесцентные лампы дневного света. По прошествии многих лет в обиход вошли светодиодные ленты. Именно они и послужили стимулом воплотить свою старую задумку в реальность. Имея возможность и опыт программирования микроконтроллеров, я решил, конечно же, самостоятельно изготовить электронную плату для часов со своими функциональными возможностями. В данной статье я не буду подробно описывать принципиальную схему и прошивку МК. Напишу лишь краткий обзор и историю разработки своей конструкции.

Читать далее

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

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров11K
Приветствую всех!
Мне уже не раз доводилось показывать самых странных представителей домофонных ключей, однако этот экземпляр постоянно от меня ускользал. Для кого-то его существование вообще будет открытием: в самом деле, неужели кто-то вообще мог придумать настолько примитивный в плане защиты девайс? Но вот сейчас мне удалось наконец раздобыть экземпляр на опыты, так что самое время разбираться.



Итак, в сегодняшней статье поговорим о том, как работали домофоны «Цифрал» с резистивным ключом. Узнаем, какие вообще девайсы с ними совместимы и как оно устроено, попутно посмотрим на несколько неожиданных решений по части схемотехники таких домофонов. Традиционно будет много интересного.
Читать дальше →

Как я Капсулу Нео от VK исследовал

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

Всем привет!

Исправления давно в проде, а конфа OFFZONE 2024, на которой я выступил с этим докладом, закончилась — пришло время и на Хабре рассказать об исследовании умного девайса от VK под названием «Капсула Нео» (далее — «Капсула»).

О том, что мне удалось найти и с чем пришлось столкнуться за время проекта, читайте под катом.

Исследование шаг за шагом

Разгадываем тайну цифрового скоростемера от ушедшего в историю метропоезда

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров6K
Приветствую всех!
Давным-давно, больше года назад, я рассказывал о подключении блока индикации скорости от метровагона «Яуза». Но тогда, несмотря на то, что я почти полностью разобрал протокол, у меня возникли проблемы: при попытке обновить показания табло гасло. И что-то совершенно не давало мне покоя, отчего я решил, что девайс надо заставить работать во что бы то ни стало.



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

Мурмулятор — ультрабюджетный микрокомпьютер

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

Как я познакомился с Мурмулятором? Я искал какой-то недорогой одноплатный компьютер для запуска эмуляторов ретро-компов.Чем меня не устраивало использование эмуляторов на "настоящем" компьютере? Ничем. Просто хотелось отдельное устройство. Я рассматривал вариант покупки старого ноута специально под эту задачу, потом смотрел на Raspberry Pi 400, Orange Pi и на прочие одноплатники. В процессе поисков я наткнулся на видео самостоятельной сборки оригинального одноплатника с бюджетом в $5. Понятно, что впоследствии я в эту сумму и близко не вложился, но данное изделие меня всё-таки зацепило. Вот так у меня и появился первый ZX Murmulator.

Читать далее

Скибиди-бипер — асинхронная полифоническая однобитная музыка на ESP32 без ЦАП

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

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

Однако же за это время PIS-OS прирос кучей всего, навроде поддержки ещё одного типа экранов, системы меню, а также и функцией будильника — посему понадобились и более мелодичные рингтоны, чем просто пиликание одним тоном.

В процессе выяснилось, что пьезоэлемент был припаян к той ноге МК, на которой ЦАП отсутствует. Впрочем, если бы я хотел будильник, который звучит как mp3 — просто пользовался бы мобильником, так что самое время вспоминать наследие демосцены и делать самый настоящий однобитный драйвер звука!

Пошумим же!

Как подключить мультиметр к компьютеру

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

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

В бюджетных мультиметрах ZT102 и ZT301, которые построены на чипе DTM0660, можно реализовать подключение к компьютеру, но для этого придётся редактировать EEPROM и вносить изменения на печатную плату. Это несложно и Kerry Wong описывал как это сделать на примере мультиметра ennoLogic eM860T.

В тоже время у моего настольного мультиметра Agilent U3402A на задней панели уже есть порт RS232, но на нём указано "используется только для калибровки". Аналогичное предупреждение есть и в инструкции пользователя на русском и английских языках.

Читать далее

Делаем из обычного пожарного дымового извещателя Рубеж ИП 212-50М2 умный датчик дыма Zigbee

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

Подвернулись мне тут абсолютно случайно несколько штук таких извещателей. Открываем паспорт, читаем - ИЗВЕЩАТЕЛЬ ПОЖАРНЫЙ ДЫМОВОЙ ОПТИКО-ЭЛЕКТРОННЫЙ АВТОНОМНЫЙ ИП 212-50М2. Производством занимается Группа Компаний «Рубеж» ООО «КБ Пожарной Автоматики».

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

Итак, принято решение, самостоятельно доработать этот извещатель - сделать его умным, чтобы можно было его интегрировать в систему Умного Дома. Протокол выбираем Zigbee.

Читать далее

Подборка игр с низкоуровневым программированием

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

TL;DR

Игры от Zachtronics:

TIS-100, EXAPUNKS, SHENZHEN I/O

Про создание процессора от логических элементов и до написания кода на ассемблере: браузерная бесплатная nandgame.com, более продвинутая Turing complete.

Если Вам нравится какая-то игра из перечисленных - наверно, и остальные тоже подойдут. В каждую из них я наиграл по 30+ часов, получил кучу удовольствия и научился чему-то новому.

Подробности

Крупица истины в безумном заявлении «в России нет и не может быть чипов» и что из нее следует

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

Тут был диспут пару дней назад на фейсбуке с социологом Алексеем Рощиным, в котором он сделал совершенно безумное заявление "в России нет и не может быть чипов, а если что-то и есть, то оно на два поколения устарело". Понятно, что в России чипы есть, например микроконтроллер MIK32 АМУР, выпущенный в Зеленограде на основе процессорного ядра от питерской компании Syntacore. Причем если сравнивать Амур его с STM32 U0 2024 года (низкопотребляющий микроконтроллер от мирового лидера на 90 нм, 56 MHz), то нельзя сказать что российское "на два поколения устарело". У микроконтроллеров крутость не в нанометрах (чип на 3 нм все равно не выдержит рядом с горячим автомобильным двигателем), а в системных и микроархитектурных решениях (трюки для экономии динамического энергопотребления, эффективный DMA, даже AI расширения в стиле ARM Ethos-U55).

Учитывая, что Рощин - человек не безумный, я попытался понять, что он имеет в виду, и кажется понял.

Читать далее

Карманный осциллограф на микроконтроллере STC 8051

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


Привет, Хабр! Габариты этой самоделки в модном корпусе из оргстекла на латунных стойках составляют всего 57x40x26 мм, и то, если учитывать выступающую ручку управления, рычажок микротумблера и разъём питания Micro USB.

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

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

Щупаем первый 8-битный процессор от Intel — 8008

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

После того как я собрал систему на самом первом процессоре от Intel (4004), логичным, в каком-то смысле, шагом было перейти к Intel 8008. Концепция проекта та же - компилируем ассемблерный код на обычном ПК, отправляем скомпилированный бинарник на системную плату через USB, а современный микроконтроллер (stm32) эмулирует ПЗУ и ОЗУ для реального 50-летнего процессора, вставленного в DIP-сокет.

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

Так же как и в случае с 4004, моя плата эмулирует максимально возможный объем памяти, который нативно адресуется процессором. В данном случае, это 16Кб с некоторыми нюансами (об этом отдельно расскажу ниже).

И, конечно же, было занятно сравнить 4004 и 8008 в небольшой нишевой задачке. Да, сравнение весьма условное и какие-либо выводы по нему сделать сложно, но всё равно результаты вышли интересными.

Читать далее

Фокусы с опторазвязкой

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

Нюансы оптронной развязки, борьба с её недостатками и интересный на мой взгляд костыль: как разогнать скорость копеечной опторазвязки и наполучать других бонусов. Я не силён в рекламе, поэтому на месте КДПВ будет сразу тема статьи.

Читать далее

Вторичная жизнь вторичных часов. На Arduino

Уровень сложностиПростой
Время на прочтение20 мин
Количество просмотров18K

Сегодня разберём решение небольшой практической задачи: запустим советские вторичные электромеханические часы максимально простым способом. Попутно узнаем несколько простых и не очень вещей из области электроники и программирования микроконтроллеров.

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

Аппаратный DIY аудиомикшер

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

Меня это задолбало - управлять громкостью, если источников звука больше одного, особенно больно, когда это надо сделать быстро, за пару секунд. Если играете в динамичные игры с дискордом, да ещё и музыку фоном включаете, думаю вы прекрасно знаете эти неудобства. И вот, в один прекрасный день я наткнулся на deej...

Читать далее

Нужно больше ламповых табло!!! Запускаем дисплей от пейджера NJE-105

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

Пару месяцев назад я в очередной раз прогуливался по комиссионкам, и моё внимание привлёк стоящий на полке агрегат, чем-то похожий на музыкальный центр Bose.

Однако, взяв его с полки, я обнаружил, что это табло-бегущая строка!

Поначалу я подумал, что оно светодиодное, а зачем оно такое мне? Тем более, что у меня уже есть шикарные плазменные часы дома. Ну и поставил было его на полку обратно. Раздавшийся в этот момент звон дал понять — внутри есть струны, а значит, это самый что ни на есть настоящий ВЛИ!

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

Читать далее

Как обновить ноутбук при помощи 3-d принтера

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

Здравствуйте меня зовут Дмитрий. Как известно модернизировать можно только десктопы. Ноутбуки-же в случае устаревания просто выбрасываются на помойку. Но сегодня я расскажу вам про свой опыт модернизации ноутбука. И мне для этого понадобился всего лишь 3-d принтер.

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

Так вот ситуация с ноутбуками ещё более ужасна. Если у вас устарел ноутбук, то нельзя поменять процессор с материнской платой, надо выкинуть старый ноутбук и купить новый. И это ужас, ведь например у меня остался старый ноутбук в котором работает матрица и клавиатура и SSD, и все это я получается должен выкинуть на свалку. Но благодаря тому что у нас есть 3-d принтер мы можем разорвать этот ужасный порочный круг. Итак давайте приступим.

Читать далее

C++20 в bare-metal программировании, работа с регистрами микроконтроллеров Cortex-M

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

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

Статья предполагает, что читатель имеет базовые знания программирования bare-metal систем и языка С++, в том числе и современных стандартов. Это означает, что совсем базовые пояснения выходят за рамки этой статьи.

Читать далее