Обновить
128K+

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

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

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

Скоростная разработка электроники 2

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

На этот раз делаем сенсор присутствия для опасных промышленных зон. В нагрузку берёмся за реализацию требований функциональной безопасности PL и SIL. Кто сказал, что AI не может делать функционально безопасные устройства? Сейчас проверим.

Читать далее

Научил кнопочный телефон 1980-х годов разговаривать с Claude

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

На старый немецкий кнопочный телефон FeTAp я установил аудиоплату на ESP32 и связал ее со своим ассистентом на Raspberry Pi. Теперь достаточно снять трубку, как на другом конце отвечает ИИ, с которым можно разговаривать почти как по обычному телефону.

Читать далее

От сборки до проверки на плате: набор открытых инструментов для разработки под STM32

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

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

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

Хочу показать, как эти проекты связаны и где могут пригодиться.

Читать далее

Метеостанция, которая измеряет радиацию: счётчик Гейгера, ESP32 и LoRa

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

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

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

Читать далее

Составное устройство USB на AT32. Часть 1: Подготовка

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

История эта началась два года назад, когда подписчики моего канала начали регулярно и настойчиво интересоваться, когда же в «Селените появится режим автономной обработки сигналов». Базовый блок трансивера получился достаточно компактным, 100х62х23 без выступающих частей, и желание пользователей «отвязать» его от компьютера, где как раз и производилась обработка сигнала, было вполне резонным.

Читать далее

Hello World для STM32

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

Когда пишут программу HelloWorld на C, обычно выводят текст “Hello, World!”. Но когда программа пишется для микроконтроллера, часто ограничиваются миганием светодиода, особенно для микроконтроллеров семейства STM32.

В статье я разберу, как можно вывести “Hello World” в программе для микроконтроллеров этого семейства.

Читать далее

Rust для микроконтроллеров: что он даёт по сравнению с С

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

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

Разберём это на DMA, владении периферией, состояниях GPIO, прерываниях и unsafe — без попытки доказать, что Rust должен заменить Си.

Читать далее

Основы Universal Measurement and Calibration Protocol (XCP)

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

XCP (Universal Measurement and Calibration Protocol) — это бинарный автомобильный интерфейсно-независимый протокол прикладного уровня модели OSI-7. Используется при разработке и отладке ECU. Появился в далёком 2003 году как потомок ранее существующего протокола CCP.

Читать далее

Мобильник почти из ничего: Как ИИ помог собрать телефон из деталей с маркетплейсов

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

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

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

Замечу, что я использовал только бесплатные DeepSeek, Gemini и ChatGPT в бесплатном ограниченном режиме. Какой-то особой системы когда кому и какие задавать вопросы не было. Обычно переключался между ними, когда кто-то начинал тупить.

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

Радиомодуль проще купить готовый. Я выбрал такой:

Читать далее

Перистальтический насос‑дозатор на 3D‑принтере для лабораторной установки водоподготовки

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

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

Для такого исследования нужен точный перистальтический насос‑дозатор на маленький расход. Реагенты должны поступать в воду непрерывно, с заданной дозой в мг/л, от 1 до 13 мл/мин. Реагентов два — коагулянт и флокулянт, значит, нужно два канала.

Подходящий готовый насос я не нашёл и спроектировал свой. Рассказываю, как он устроен, где я ошибся и как он работает на установке.

Читать далее

Как я запустил Bad Apple с частотой 20 fps на E‑Ink дисплее за $71

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

Мне удалось запустить полноценное чёрно-белое видео на стоковой плате ESP32-S3 с экраном на электронных чернилах: никакой ПЛИС и никакого ПК — панель управляется напрямую по параллельной шине. В статье я подробно расскажу, как работает этот драйвер. Если коротко, то в нём используется векторный блок, принимающий по 64 пикселя за раз; управляющие сигналы (waveforms), которые хранятся в регистрах, а не в таблицах, и дельта-движок, который обрабатывает только изменения. При этом точность всей системы контролировалась с помощью планшетного сканера.

Читать далее

Почему завод превращает электронику в тыкву. Как защитить промышленные контроллеры от электромагнитных бурь

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

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

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

Читать далее

SoftSerial: Программный UART на STM32

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

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

Порой возникает ситуация, что тебе дают электронную плату, а там на отладочный разъём не выведен никакой аппаратный UART. При этом предстоит сложнейшая отладка прошивки и надо помощь shell терминала, которую банально некуда вывести.

В этом случае одним из решений может быть пуск программного UART.

Вот об этом и текст.

Читать далее

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

Взлом режима Secure Debug на RP2350 с помощью лазера и фотонной эмиссии

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

В этом эксперименте мы с помощью дифференциальной микроскопии фотонной эмиссии засекли, в какой момент на чипе RP2350 (ревизии A4) активируется регистр отладки, и точно определили, куда целиться лазером. Затем, поймав нужный момент через интерфейс SWD, мы с помощью лазерного импульса точечно переписали два бита, восстановив доступ к режиму Secure Debug.

Читать далее

FASt: как я написал приложение для создания ассет паков для Flipper Zero и чуть не сошёл с ума из‑за китайских флешек

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

Как моя жена стала моим первым заказчиком

Началось все с того, что моя любимая красавица жена сказала мне, что я провожу слишком много времени со своим девайсом Flipper Zero. Постоянно кручу его в руках, прошиваю, делаю всякие настройки и т.п. А на неё стал меньше смотреть.

И мне пришла мысль, а что, если поставить на экран флиппера её фотографию? Девайс всегда со мной и каждый раз как я буду им пользоваться то на главном экране я буду видеть фото своей любимки. И ей приятно, и я буквально смотрю на нее всякий удобный раз.

Читать далее

Монитор на e-ink для сервера за выходные

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

Если совсем коротко: плата Waveshare ESP32-S3-ePaper-1.54, один кабель USB и экран 200×200, который висит рядом с сервером и показывает загрузку процессора, температуру видеокарт, память, диск, аптайм, живой пинг и т.д по выбору админа.

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

Как собрать такой себе

Как украсть «невидимое»: извлекаем прошивку из Execution-Only Memory

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

Во время исследования контроллеров Realtek я столкнулся с таким любопытным способом защиты прошивки от реверс-инжиниринга, как XOM (eXecution Only Memory). Эта технология разработана ARM уже около 10 лет назад. Опираясь на свой опыт, назвать ее очень популярной не могу. Однако, в Realtek решили использовать XOM в ряде своих контроллеров, которые попали к нам на исследование.

Если коротко, XOM – это аппаратно-программная технология, формирующая execute-only область памяти. Суть XOM состоит в аппаратной фильтрации транзакций на шине AXI (AHB). Если транзакция в защищаемую область запрашивает исполнение инструкции - доступ разрешен, если чтение/запись данных – доступ запрещен. Таким образом, прочитать или перезаписать прошивку в XOM просто так не получится.

Данная статья описывает подход к восстановлению спрятанной в XOM прошивки, основанный на анализе изменений состояния памяти и регистров процессора, возникающих вследствие выполнения инструкций процессора.

Решить ребус...

Чип, спроектированный в Грузии. 4 часа лекций про ASIC, FPGA, TinyTapeout, с вопросами про тайминг и CDC

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

После поездки в Грузию (см. пост Хакерспейсы Батуми и Тбилиси + ASIC чип спроектированный в Грузии) мы доотладили проект Tbilisi CORDIC и засабмиттили его на сайте TinyTapeout для производства на фабрике IHP в Германии, Leibniz-Institut für innovative Mikroelektronik.

Затем мы устроили две ондайн-лекции на Zoom-е - одну на английском, другую на русском. С вопросами и ответами лекции растянулись на два часа каждая, и мы выложили их на YouTube, ВКонтакте и RuTube. Ниже выложенные видео и их содержание на русском и английском.

UPD: В России MPW-сервисами по производству малосерийных чипов для университетов занимается МИЭТ, см. статью про кооперацию МИЭТ и ТУСУР.

Читать далее

Я написал верификатор eBPF для микроконтроллера. А потом ядро Linux объяснило мне, где я неправ

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

Ученики подарили мне ESP32. В коробке было всё, что обычно: датчик температуры, реле, горсть светодиодов, круглый дисплей и провода, которых, как выяснится позже, всегда не хватает ровно на один.

Нормальный человек собирает из этого термостат за вечер. Я собрал термостат, посмотрел на него и подумал: а неприятно же будет каждый раз лезть с кабелем, если я захочу поменять порог с 22 на 23 градуса.

Дальше мысль поехала не туда, и в итоге на плате оказался интерпретатор eBPF со своим верификатором байткода. Логика управления теперь заливается по Wi-Fi обычной программой на C, скомпилированной clang -target bpf. А потом я взял десять маленьких программ и прогнал каждую через свой верификатор и через верификатор ядра Linux, чтобы посмотреть, кто из нас двоих что думает.

Сошлись шесть из десяти. Про оставшиеся четыре и написана статья — они оказались интереснее, чем сам проект.

Читать далее

О решении головоломки Jane Street по реверс‑инжинирингу

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

Или: почему я никогда не выбираю лёгких путей

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

Чтобы было понятнее, о чём именно пойдёт речь — вот публикация «Can you reverse engineer an ASIC?» в блоге Jane Street, с которой всё это и началось.

А если кому вдруг захочется почитать (ужасный) код, который я использовал в этом состязании, можете заглянуть в мой репозиторий на GitHub.

Читать далее