Обновить
209.71

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

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

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

Работа с RISC-V контроллерами на примере CH32V303. Часть 9. Многозадачность

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

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

Читать далее

Программист embedded лезет в FPGA (часть 3, чего не может ардуинка)

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

Вначале мы поморгали диодом, затем посчитали семисегментником. Если с нуля, то уж лучше пройти эти этапы. Теперь приступим к задачке, которую с большой натяжкой можно применить где-нибудь на проде. С очень большой.

На плате, которую я использую для примера (QMTECH Cyclone 10 Starter Kit), есть разъём HDMI, что недвусмысленно намекает нам, что к нему можно подключить дисплей соответствующим кабелем. На самом деле, разъём – это не обязательно. А вот наличие на чипе выходов, которые можно сконфигурировать как lvds, очень сильно приветствуется. Возможно, получится и без этого (просто 2 выхода, формируемые из одного инверсией), но я не пробовал, потому промолчу.

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

Мы будем работать на более низком уровне. Делать на коленке прозрачные электроды, и наклеивать поляризационные плёнки, конечно, не надо. Будем формировать видео-сигнал.

Если вы думаете, что в 2025-м году ЭЛТ мониторы и телевизоры остались в далёком прошлом, то у меня для вас есть новость: Формат сигналов внутри проводов всё ещё напоминает сигнал, который идёт на одну из сеток большой вакуумной лампы, которой, по сути и является кинескоп.

Читать далее

LuckFox pico — одноплатник в форм факторе Arduino

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

В данной статье я хочу рассказать об одной интересной плате LackFox pico. Она представляет собой нечто среднее между микроконтроллером и полноценным компьютером. На плате установлен полноценный ARM-процессор от Rockchip, и на ней запускается полноценный Linux. При этом по габаритам и цене данная плата сопоставима с микроконтроллерами. Её цена начинается от 600р за младшую версию.

Читать далее

Как я сделал робота — что хотел и что получилось. Часть 1

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

Привет! На связи Михаил Дроздов, младший разработчик в Selectel. Все началось с простого вопроса о том, как устроен мир микроконтроллеров. Возникло желание не просто прочитать теорию об Arduino или подключить пару датчиков к плате. Хотелось понять саму суть — архитектуру, принципы работы и реальные возможности подобных систем.

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

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

Можно ли представить лучшую возможность поработать с различными типами датчиков и исполнительных механизмов? Также впереди ждали интересные задачи…

Читать далее

Тайна самой дешевой консоли с Ozon

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

Наверняка многие читатели слышали о самой дешевой консоли на маркетплейсах — «Sup». На первый взгляд, это устройство — чудо чудное: цветной дисплей приличного разрешения, целых 500 игр в комплекте, аккумулятор и даже дополнительный геймпад, и всё это за какие-то 400 рублей в розницу.

Обычный человек просто подумает мол «очередной масс-маркет по типу Тетриса» и пройдет мимо. Однако моя гиковская душа очень хотела узнать, в чём же заключается тайна самой дешевой консоли на Озоне и я решил заглянуть «под капот»… Поверьте, внутри гораздо интереснее, чем кажется на первый взгляд!

Читать далее

Минимальный каркас самописного Bootloader'a на STM32F103C8T6. Пошаговый пример

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

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

Загрузчики до этого не писал, статьи на хабре не нашел, а хотелось. Вернее нашел, но только вводный ликбез, без практики)

Поэтому было решено разбить задачу на мелкие и начать с минимального примера. Подопытным будет BluePill на stm32f103c8t6.

В соответствии с декомпозицией задачи, у меня получилось так:

Читать далее

DIY: свой бесплатный чат-бот в Telegram

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

В этой статье я покажу, как буквально за 15 минут создать собственного Telegram чат-бота на базе ИИ и начать использовать его абсолютно бесплатно.

Читать далее

DIY Open Source принтер. Часть 2. Логика управления печатающей головой HP123

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

Привет, Хабровчане!

Это продолжение моего дневника разработки DIY струйного принтера. Предыдущие части:

DIY Open Source принтер. Часть 0
DIY Open Source принтер. Часть 1. Покоряем USB Printer Class и имитируем печать текста

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

Основным источником информации для меня выступают:

статья на Hackaday и проект PrintSpider_Arduino от нашего товарища по Хабру @lichnost
— cтатья Magic Printer Cartridge Paintbrush и проект printercart_simple от Spritetm

Речь пойдёт только об отработке логики! Подключение железа пока невозможно — затронем в следующий раз — я работаю в этом направлении.

Читать далее

Декодирование IR сигнала с TV (или исследование пультовых лучей)

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

В этом тексте я написал про то как подключить к микроконтроллеру инфракрасный приёмник.

Как просто и легко распознавать сигнал с TV пульта.

Читать далее

Игра «Морской бой» через UDP на двух Raspberry Pi PICO-W

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

Мы создали игру «Морской бой» (Battleship) на двух игроков в реальном времени при помощи микроконтроллеров Raspberry Pi Pico W, обменивающихся данными через UDP. К каждому устройству подключён VGA-дисплей 320×240, джойстик для размещения кораблей и ударов, а также тактильные кнопки для взаимодействия с игрой. Для проекта разработан собственный протокол ходов на основе конечных автоматов и интегрирована звуковая обратная связь на основе как DMA, так и прерываний.

Читать далее

Техническое руководство по реализации цифро-аналогового двухрежимного модуля рации DMR818S для системной интеграции

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

DMR818S — это высокоинтегрированный радиочастотный приемопередающий модуль, в который встроены микроконтроллер (MCU), основной чип цифровой рации и радиочастотный усилитель мощности (PA). Он поддерживает как цифровой режим связи DMR, так и традиционный аналоговый. Серия в основном состоит из двух основных моделей: стандартной версии DMR818S (номинальная мощность 2 Вт) и версии высокой мощности DMR818S-5W (номинальная мощность 5 Вт). Обе модели совместимы по распиновке и физическим размерам корпуса. Эта особенность позволяет поддерживать варианты продуктов с разным уровнем мощности за счет унифицированной конструкции печатной платы, что упрощает разработку и управление производством аппаратных платформ.

Читать далее

Про асинхронное программирование микроконтроллеров и программирование аппаратных функций периферии процессора

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

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

Читать далее

Анализ модуля RF125 (125 кГц): дальность >5 м и мкА потребление

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

Серия RF125 представляет собой систему беспроводной связи, работающую в низкочастотном (НЧ) диапазоне 125 кГц. Ее основной функцией является обеспечение дальнего «пробуждения по воздуху» (Over-the-Air Wake-up) и двунаправленной передачи данных. Система состоит из передающего модуля (RF125-TX/TX2) и приемного модуля (RF125-RX/RA), специально разработанных для приложений, где приемное устройство должно находиться в режиме ожидания в течение длительных периодов времени при сверхнизком энергопотреблении и может быть активировано при получении определенного беспроводного сигнала.

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

Читать далее

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

DIY Open Source принтер. Часть 1. Покоряем USB Printer Class и имитируем печать текста

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

Привет, Хабровчане!

Это продолжение моего дневника разработки DIY струйного принтера предыдущая часть:

DIY Open Source принтер. Часть 0

В прошлый раз одной из поднятых проблем стал интерфейс между ПК и устройством. В данной статье я постараюсь решить вопрос подключения STM32 по USB и убедить Windows и Linux что это принтер.

Содержание


§1. Кратко о USB
§2. Поиск реализаций USB Printer Class для STM32
§3. Реализация USB Printer Class для STM32
§4. Тест на Windows
§5. Тест на Linux
§6. Как добавить поддержку печати изображений?

Читать далее

ARM Cortex-M: пуск Memory Рrotection Unit (MPU)

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

В ARM Cortex-M (Arm v7-M) процессорах есть очень полезный блочок. Называется MPU (Memory Рrotection Unit). Попробуем разобраться что это такое и зачем нужно. .

Читать далее

Утилита CANcat (или CAN-Мессенджер)

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

Недавно я купил себе CAN-трансивер USB2CANFD_V1 и с удивлением обнаружил насколько же простой и лаконичный протокол заложили разработчики в прошивку STM32G0B1CBT6. Это протокол SLCAN. По сути serial CLI. И это оказалось очень кстати, ведь в программировании микроконтроллеров порой приходится работать с UDS протоколом. Как известно, UDS протокол работает поверх сетевого протокола ISO-TP. В этом тексте я написал под SLCAN простую отладочную утилиту для отладки процесса передачи данных по протоколу ISO-TP (ISO 15765-2).

Читать далее

MKA — DIY-куб на ESP32-C3: одна кнопка, OLED-дисплей, динозаврик и немного глюков

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

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

Итак, начнем....

Почему вообще делать самодельный кубик, который ещё и глючит, но при этом умеет запускать игры вроде пресловутого «динозаврика» из Chrome? Вопрос резонный. Но, как говорится, «почему бы и нет?». Представляю проект MKA – небольшой куб с OLED-экраном, одной сенсорной кнопкой, пищалкой и кастомной прошивкой. Он получился чем-то средним между тамагочи, ретро-миниконсолью и электронным pet rock (если помните такую шутку). В этой статье – немного дневника разработки и технических деталей о том, как и зачем я его собрал.

Читать далее

Как с помощью нехитрых приспособлений превратить буханку в автомотрису

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

В 1980х в США активно развивалось увлечение садовыми железными дорогами. Поезда работали на электричестве вместо пара, были доступны аккумуляторы, появилась компактная электроника, чтобы можно было «прикрутить» радиоуправление. И многие любители делали не только модели настоящего подвижного состава, но и ставили на рельсы игрушки марки Stomper.

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

Читать далее

Практическая реализация энкодера с использованием датчика HOA0902 и STM32

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

Привет, Хабр!

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

В данной статье будут рассмотрены:

— Принципы работы HOA092-11;
— Схема электрическая принципиальная энкодера;
— Программная реализация (расчет пройденного пути, скорости и направления движения, а также вывод информации на дисплей);
— Тестирование системы, будет рассмотрено (пройденный путь, скорость, направление движения).

Читать далее

Портирование драйвера VL53L1X на CH32V003

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

Опыт портирования драйвера VL53L1X с STM32 на CH32V003. Рассказываю, как адаптировать низкоуровневые функции I2C, настроить системный таймер для таймаутов и HAL_Delay, а также организовать пример работы через UART. Статья будет полезна тем, кто хочет использовать готовые драйверы STM32 на простых микроконтроллерах

Читать далее

Вклад авторов