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

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

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

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

E-paper Arduino термометр на ESP-IDF

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

Наверное каждый любитель электроники имеет в запасе модули приобретенные на всякий случай. Так несколько лет назад я не смог пройти мимо 1.5 дюймового E-Ink дисплея, лежащего на витрине радиомагазина. Через некоторое время нашлось для него применение. В статье ESP32 E-Paper Thermometer описывается, как отображать окружающую температуру, измеренную с помощью датчика DS18B20. Проект выполнен в Arduino IDE. Но я решил пройти "Путь самурая" и портировать код на ESP-IDF. Пришлось немного повозится с библиотеками для работы с дисплеем. На этом мой путь не окончился, как говорят: "У самурая нет цели, есть только путь". И я решил, что было бы неплохо добавить еще несколько сенсоров, измеряющих влажность, давление, CO2, а потом отправлять эти данные по MQTT. В том же радиомагазине был приобретен фанерный домик-конструктор со светодиодным ночником. А в другом магазине - модуль с датчиками. Таким образом родилась идея сконструировать Micro-smart-home. На передней части домика расположен дисплей на пластиковых стойках. А с другой стороны расположен модуль с сенсорами.

Читать далее

Новости

PI BOARD: автоматизированный шахматный робот

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

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

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

Читать далее

Proxy MCAL для Микроконтроллера

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

При продолжительной разработке на одном семействе микроконтроллеров получается так, что приложение намертво привязано к конкретному семейству микроконтроллеров и его SDK, так как напрямую использует HAL от вендора.

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

Получается, что приходится заново писать всю прошивку, всё приложение, драйвера всех ASIC-ов. Драйвер светодиодов, драйвер кнопок, драйвер ASICов c I2C SPI управлением. В общем всё переписывать. Поменяли MCU и пришлось переписать все файлы в репозитории. Нормально так да?

В этом тексте я написал, как можно обойти эту проблему.

Читать далее

Интеграционное тестирование в Spring Boot: SourceCraft + Amplicode + Docker Compose Starter в деле

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

Когда одних юнит-тестов уже недостаточно, на сцену выходят интеграционные. В этой статье от команды Amplicode мы покажем, как протестировать REST API в Spring Boot с использованием современного стека: генерация тестов через Amplicode, автоматический запуск окружения с помощью Docker Compose Starter и поддержки со стороны LLM-инструментов от Яндекса.

Читать далее

Датчик качества воздуха EFEKTA Smart Air Quality Box

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров4.3K
Приветствую всех читателей Habr, сегодня хочу рассказать вам о моем новом интересном проекте для умного дома — многофункциональном датчике качества воздуха EFEKTA Smart Air Quality Box, работающем на протоколе Zigbee 3.0. Современные технологии умного дома активно развиваются, и одним из ключевых аспектов комфортной жизни становится контроль микроклимата. Качество воздуха в помещении напрямую влияет на здоровье, работоспособность и общее самочувствие. Если вам интересна тема контроля качества воздуха и вы хотите узнать чем закончилась эта разработка — добро пожаловать под кат.


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

Попытка настроить macOS для использования китайского программатора ST-LINK V2 и Blue Pill

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

В основном я работал на оригинальной отладочной плате Nucleo (stm32f411ret6) и прекрасно себя чувствал на macOs.
Не так давно я решил попробовать прошить blue pill через китайский st-link и получил море ошибок в CubeIDE с которыми решил разобраться раз и навсегда. На самом деле все оказалось не так сложно, как я думал по началу. Через костыли, но она работает!
Данная статья является дубликатом моего репозитория https://github.com/nikitatm333/ST-LINK_V2_for_macOS, я давно хотел написать свою первую статью на хабре и решил начать с дубликатов своих "шпаргалок".
Не будем затягивать, начнем!

Читать далее

Основы по GNU Make

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

GNU Make - это консольная утилита, которая запускает другие консольные утилиты в желаемой последовательности согласно скрипту. Только и всего.

В этом тексте я показал, как можно организовать самостоятельно написанные make скрипты для микроконтроллерных проектов.

Читать далее

Забавы в ближнем инфракрасном. Часть 2. Сенсор + Arduino + Скетч = Счётчик пробегающих

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

В предыдущей статье (Часть 1) я описал "секреты" изготовления любительской сенсорной системы (типа "инфракрасный барьер") из трёх резисторов, двух диодов и одного транзистора. Пришла пора построить на её основе какую-нибудь практически полезную вещь. Ну, хоть для забавы. (Профессионалы дальше читать не должны.) Пусть это будет счётчик чего-нибудь. Студентов, выходящих из учебного корпуса, или железнодорожных вагонов, скатывающихся с сортировочной горки.

Когда сенсорная система готова, интерес смещается к проблеме обработки поступающей от неё информации. Электронщик, отдохни, сходи попить кофе. Айтишник, просыпайся: твой выход.

Читать далее

Как найти и потерять бэкдор в ESP32

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

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

А потом... все как-то поутихло. Что же на самом деле нашли испанские исследователи в популярном микроконтроллере? Почему новость о «бэкдоре» разлетелась со скоростью лесного пожара? И главное — насколько реальна была угроза?

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

Читать далее

Проект «Мультиключ». Эмулятор ключей от домофона на ESP8266

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

Никак не доходили руки до написания этой статьи, точнее я её планировал написать после полноценного перевода устройства на esp32 c3, который никак не состоится.

Вкратце напомню о чем этот проект, и чем он закончился в прошлой статье. Мы разрабатываем компактное устройство для чтения, хранения, записи и эмуляции электронных ключей (которые чаще всего встречаются у нас в подъездах и на проходных). Изначально это был проект одного из моих учеников. Но в этом году, для участия во ВСОШ по робототехнике ему пришлось поменять тему работы, которая тоже довольно интересная, как-нибудь по неё тоже напишу). А я по наличию времени и энтузиазма продолжил добивать программную часть.

В прошлой статье мы перевели устройство на esp8266, что сделало его более производительным и решило проблему с памятью. У нас получилось прочитать и эмулировать контактные ключи dallas и русские Сyfral и Metacom. После этого мы решили перейти к бесконтактным ключам стандарта EmMarine.

Бесонтактные ключи уже так просто, при помощи одного резистора, не прочитаешь, нужен детектор-генератор на 125 кГц. На этом этапе опять очень помог проект от Alex Malov EasyKeyDublicator. У него я взял схему детектора без изменений. И первые тесты производил на Arduino Nano.

Читать далее

Атрибуты Хорошего Loader-a

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

В программировании микроконтроллеров периодически приходится писать клиентские PC программы для загрузки *.hex файлов в микроконтроллер через загрузчик.

Обычно в названии этих утилит присутствует слово loader.

В этом тексте я попробовал порассуждать на тему того, каким же атрибутами должна обладать эта самая утилита FW_Loader.

Читать далее

О переходе на QingKeV4. Тесты CoreMark в разных областях флэша для СH32V2/V3 и что же такое non-zero wait

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

Про внешний SPI флэш внутри чипов WCH уже везде написали, ситуацию с реальным объемом я описывал. Но какая там скорость и как она влияет на производительность системы? WCH на эту тему неоднократно высказывался, правда по китайский и в ответах саппорта на wch.cn:) Общий смысл того, что мне поведал Google переводчик: для кода используйте кэшируемый флэш zero‑wait, все остальное это для пользовательских данных, но если вы уж прям не влезаете в zero-wiat, то можно и в non zero-wait залезть. Крайне содержательно. Чтобы окончательно раскрыть тему, я вооружился тестами производительности CoreMark и в целом получил ответы на 2 своих главных вопроса: какая частота доступа к физическому SPI флэшу и как стратегия его применения в реальных проектах. Сейчас расскажу.

Далее

Собираем демо чемодан из подручных остатков к выставке WBCE2025

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

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

Читать далее

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

Статический Анализ С-кода

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

Существуют бесплатные статические анализаторы для Си кода. Среди них splint и cppcheck.

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

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

Суть этой короткой заметки в том, чтобы показать, как просто и лаконично происходит подключение разнообразных статических анализаторов к проекту, который собран скриптами сборки GNU Make.

Читать далее

Дискретные тригонометрические функции, машинный эпсилон и автоматическое дифференцирование

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

Попалась мне недавно статья Синус, косинус, квадратный корень FixedPoint. Автор размышляет как можно не затратно рассчитывать координаты и углы в микроконтроллере. Попробовал я подсказать автору пару аппроксимаций, но он оказался разговорчив только на тему "упадка автоматизации в РФ", а по делу как то не сложился диалог. Посмотрел, такие статьи не редкость. Например, очень хорошая статья Как посчитать синус быстрее всех на Xабре. В общем разгрузил себе голову на майских праздниках от главного хобби - геометрической алгебры.

В процессе изучения всего этого, возник у меня вопрос - а зачем вообще нужно аппроксимировать sin,cos, arctan и еще и в привязке к числу в двоичной системе, если есть декартовы координаты?

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

Автоматическим дифференцированием можно назвать любую конечную разность, например dy=(y(x+ε)-y(x-ε))/(2*ε). Разность взята центральная, так как она дает меньшую погрешность.

 ε это машинный ноль. За счет округления до младшего бита его главное свойство: ε^2=0.

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

Читать далее

Спидометр для электромопеда на микроконтроллере PIC16F628A

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


Привет, Хабр! Несколько лет назад у меня был самодельный 48-вольтовый электромопед на свинцово-кислотных аккумуляторах, переделанный из Риги-12.

Для него был разработан специальный спидометр, смонтированный вместо крышки бензобака, переделанного в отсек для электроники. Во время движения прибор показывал скорость, а на остановке — пройденный путь.

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

Код, который светится: архитектура минималистичных световых скетчей

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

Микроконтроллеры, светодиоды, и немного кода — вот и вся палитра для минималистичного цифрового искусства. В статье подробно рассказывается, как выстроить архитектуру крошечных, но выразительных световых анимаций с использованием C++, платформы STM32 и адресных светодиодов WS2812. Немного философии, немного инженерии — и свет оживает по команде вашего кода.

Можно потратить годы, чтобы написать красивый рендерер. А можно взять 8 строк кода, светодиодную ленту и микроконтроллер, чтобы ночью на стене заиграла световая поэма. Эта статья — про второй путь.

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

Читать далее

Измерение собственного напряжения питания микроконтроллера

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

Началось все с того, что при проектировании своего устройства на микроконтроллере ATtiny 85, которое должно было работать от встроенного li‑ion аккумулятора, я изначально не задавался целью измерения заряда АКБ, поскольку в этом не было необходимости. Однако, собрав все устройство на печатной плате, я подумал над тем, почему бы не добавить такую возможность.

Прочитав в Интернете, как это можно было реализовать, стало ясно, что сделать это вряд ли удастся, поскольку все порты PB[0:5] уже были заняты и, следовательно, не было возможности применения АЦП с аналогового пина (при чем порт PB0 я не мог настроить на вход опорного напряжения AREF - он должен был использоваться как управляющий выход).

Долгое изучение состояния регистров АЦП в datasheet на ATTiny 85 привело меня к следующей идее: в качестве опорного напряжения может быть выбрано само напряжение питания VCC (биты REFS [0:2] регистра ADMUX установлены в 0), а в качестве измеряемого ‑ напряжение VBG с внутреннего стабилизатора в 1.1В (биты MUX [3:0] регистра ADMUX установлены соответственно в 1100). То есть, для измерения напряжения питания не нужно ничего, кроме, собственно, самого питания VCC!

Читать далее

Зачем программисту дизассемблер в 2025: отладка на слепую под редкие MCU

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

Даже в 2025 году, когда вокруг нейросети, автогенерация кода и IDE с предиктивным интеллектом, работа с редкими микроконтроллерами всё ещё может обернуться настоящим хардкором. Особенно, если речь идёт о «слепой» отладке без отладчика, когда в арсенале только прошивка, HEX-файл и пара байтов на выводе. В этой статье — личный опыт, много хардкора, дизассемблирование вручную и поиск глюка в 2 КБ бинаря.

Когда говорят «отладка», в 2025 году чаще всего имеют в виду жмяк на F5 в Visual Studio Code или лог с CI/CD. Но в embedded-мире, особенно если ты копаешься в системах с 8-битным контроллером 2006 года выпуска, это слово может означать кое-что пострашнее. Например — «прошивка вылетает на 4-й секунде, данных в UART нет, отладочного интерфейса нет, документации почти нет, а заказчик просит сделать "как раньше работало"». И вот тут начинается старый добрый reverse engineering.

Читать далее

Простейший инфракрасный счётчик на Arduino. С мелкими гадостями

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

Здесь описывается очень простой (возможно, самый простой в мире) самодельный однолучевой горизонтальный инфракрасный счётчик (людей) на Arduino. Его сенсорная система содержит лишь  инфракрасный светодиод, фотодиод, биполярный транзистор и три резистора.  Руководствуясь описанием, счётчик сделать совсем легко.

Но будьте бдительны: в описание я заложил мелкие гадости. А куда и какие - не хочу заранее сообщать. Долой скуку! Да здравствуют приключения!

Как и в обычном квесте, реальной опасности здесь никакой нет. Даже если вы не заметите заложенные “мины”, и всё сделаете в точности так, как тут коварно предложено, струйка дыма из самоделки не пойдёт. Ни один её элемент вообще никак не пострадает. Обещаю. При любом раскладе в итоге удастся без потерь наставить это изделие на путь истинный. (На пути истинном оно прекрасно работает. Проверено.)

От всего этого вы получите большое удовольствие и нужные на практике навыки.

Итак, начинаем!

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