Pull to refresh
32K+
215

Embedded SW/Firmware Engineer

64,3
Rating
553
Subscribers
Send message

Решение задачи про козу, капусту и волка через конечный автомат

Level of difficultyEasy
Reading time6 min
Reach and readers12K

Есть река и надо перевести на другой берег козу, капусту и волка. В лодку помещается только крестьянин и что-то одно из груза: капуста, волк или коза. Если на одном берегу без присмотра крестьянина оставить козу и капусту, то коза съест капусту. Если оставить волка и козу, то волк съест козу. Как перевести груз без потерь?

Я представил формальное решение на основе конечного автомата.

Читать далее

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

Level of difficultyEasy
Reading time10 min
Reach and readers15K

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

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

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

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

Читать далее

SoftSerial: Двоичный ЦАП на STM32 (или формирователь цифрового паттерна)

Level of difficultyEasy
Reading time17 min
Reach and readers8.9K

В этом тексте я показал как сделать универсальный полностью конфигурируемый однобитный ЦАП на основе микроконтроллера STM32F407ZG.

Суть проста.
В программе есть RAM массив двоичных семплов длинны N, которые надо отправить "на улицу" со строго выдержанным микросекундным периодом.

Есть частота дискретизации, задаваемая частотой переполнения аппаратного таймера.

Надо выдать на GPIO пин этот поезд из нулей и единиц. Причем сделать это так, чтобы в ARM процессоре было не более 2х прерываний: половина перемещения и окончание перемещения.

В тексте представлена пошаговая методичка того как это сделать.

Читать далее

SoftSerial: Двоичный АЦП на STM32 (или самодельный логический анализатор)

Level of difficultyEasy
Reading time13 min
Reach and readers11K

Можно ли на STM32 реализовать однобитный ADC?
Причем без использования аппаратного ADC.

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

При этом во время чтения N однобитных семплов должно произойти не более 2х аппаратных прерываний.

Да, можно.

Читать далее

Автоматическое Управление Мультиметром XDM1241 (или drive‑by‑wire)

Level of difficultyEasy
Reading time6 min
Reach and readers9.4K

В данном тексте я выполнил обзор одного широко известного и очень распространенного мультиметра модели XDM1241.

При тестировании электронных плат часто надо делать множество однообразных измерений напряжений. Например для проверки линейности ADC пинов на автомобильных ECU. Чтобы исключить человеческий фактор надо автоматизировать данную задачу.

В этом тексте я показал как опрашивать мультиметр по последовательному порту без использования лицевого HMI.

Читать далее

Load‑detect в hi‑side ключах

Level of difficultyEasy
Reading time3 min
Reach and readers8.7K

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

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

Читать далее

Обзор протокола J1939 (или нервная система грузовиков)

Level of difficultyEasy
Reading time10 min
Reach and readers10K

J1939 это высокоуровневый проприетарный протокол используемый поверх CAN. Появился в середине 198х годов. Этот протокол работает в груpовых автомобилях: автобусы, грузовики, самосвалы, фуры, БелАЗы и прочее. Протокол J1939 принципиально не применяется в легковых автомобилях.

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

По J1939 происходит управление трансмиссией, генератором, двигатели, форсунками, тормозами и прочим.

Читать далее

Генератор M-последовательностей

Level of difficultyEasy
Reading time6 min
Reach and readers12K

В радиолокации и цифровой связи есть острая потребность кодировать зондирующие импульсы уникальным цифровым кодом с хорошей автокорреляционной функцией.
Для преодоления помех надо закачивать в импульс существенно большую энергию. Энергию можно закачивать в двух направлениях: либо в амплитуду передаваемого сигнала, либо в длительность излучения. Амплитуду невозможно увеличивать до бесконечности. Остается увеличивать длительность зондирующего импульса. Однако длинные монотонные импульсы портят разрешение по дальности. Чтобы не проиграть в разрешении по дальности длинные сигналы надо как-то модулировать. Вот тут-то и выходят на сцену М-последовательности.

Читать далее

Сонар из Музыкальной Колонки

Level of difficultyEasy
Reading time19 min
Reach and readers18K

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

Читать далее

Обработка звука в реальном времени (или Full Duplex I2S на STM32)

Level of difficultyEasy
Reading time14 min
Reach and readers10K

В этом тексте я написал про то как настроить I2S трансивер работать в полнодуплексном режиме (Full Duplex). Показал как настроить на микроконтроллере STM32F407VG одновременное воспроизведение и запись встречного аудио потока по интерфейсу I2S.

Читать далее

Программирование плат Nucleo отладчиком J-Link

Level of difficultyEasy
Reading time3 min
Reach and readers11K

Как известно существуют учебно-тренировочные электронные платы серии Nucleo. Там всегда есть вмонтированный программатор ST-link. Эти платы дешевы и очень удобны для отладки большой прошивки по частям. Однако родной программатор ST-Link долго прогружается и пошаговая отладка часто срывается прямо из-под IDE. Потом нет способа перезагруpить прошивку из-под отладчика ST-link. В связи с этим возникла потребность отлаживать прошивки на плате другим программатором: отладчиком Segger J-link.

Читать далее

Диктофон на микроконтроллере (WM8731 + I2S + STM32 + SDIO + FAT16)

Level of difficultyEasy
Reading time19 min
Reach and readers14K

В этом тексте я покажу, как на основе микроконтроллера, аудиокодека и SD карты запрограммировать самый настоящий диктофон.

Перечислены особенности разработки звукозаписывающей аппаратуры и типичные трудности разработки диктофонов.

Читать далее

Проигрыватель WAV файлов на STM32

Level of difficultyEasy
Reading time15 min
Reach and readers14K

В этом тексте я показал как можно разработать прототип музыкального проигрывателя на основе микроконтроллера STM32F407VG и аудио кодека WM8731. Показал как спроектировать прошивку проигрывателя wav файлов на основе I2C, I2S, DMA, SDIO и FatFs.

Читать далее

Лампа плавного пуска

Level of difficultyEasy
Reading time7 min
Reach and readers16K

У меня было множество вело фар и всегда меня напрягало то, что фара включается практически мгновенно.

Глаза даже не успевают приспособиться и это доставляет существенный дискомфорт.

В связи с этим я принял решение разработать свою безопасную вело фару.

Читать далее

Конечный автомат инкрементного энкодера

Level of difficultyEasy
Reading time5 min
Reach and readers15K

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

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

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

Читать далее

Обзор SPI Flash памяти MX25L6433F

Level of difficultyEasy
Reading time10 min
Reach and readers15K

В этом тексте я произвел обзор микросхемы SPI-NOR FLASH памяти MX25L6433F.
Показан код, который позволит запустить на микросхеме файловую систему LittleFS.

Читать далее

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

Level of difficultyEasy
Reading time3 min
Reach and readers11K

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

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

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

Читать далее

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

Level of difficultyEasy
Reading time8 min
Reach and readers27K

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

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

Читать далее

Передача и прием данных по лазерному лучу (SDR декодирование BPSK в реальном времени)

Level of difficultyEasy
Reading time16 min
Reach and readers18K

В этом тексте я попробовал осуществить передачу данных по лазерному лучу буквально на основе подручных материалов.

В тексте представлены основные идеи и решения для передачи и приёма битового потока c помощью BPSK модуляции.

Читать далее

Потоковая запись ADC семплов на STM32

Level of difficultyEasy
Reading time9 min
Reach and readers15K

В этом тексте я показал как настроить потоковую запись ADC семплов на микроконтроллере STM32.

ADC модуль это основа любого электронного измерения. Основа любого DMM. Всё что за корпусом микроконтроллера - это аналоговый мир. ADC это портал который позволяет аналоговым сигналам просачиваться в мир цифры.

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

Information

Rating
100-th
Location
Москва, Москва и Московская обл., Россия
Registered
Activity

Specialization

Инженер встраиваемых систем, DevOps-инженер
Старший
Git
Bash
CI/CD
C
Встраиваемая система
Программирование микроконтроллеров
Разработка программного обеспечения
Алгоритмы и структуры данных
Системное программирование
Разработка драйверов