Обновить
286.29

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

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

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

Электроналиватор: делаем автомат для коктейлей с помощью Raspberry Pi, нейросети и фанеры

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

Привет, Хабр! Меня зовут Владислав Волох, я руковожу группой разработки сервиса DataSphere в Yandex Cloud — и я люблю учить нейросети тому, что делать вручную не хочется. Эта любовь к инженерным решениям и ML пригодилась в быту: так появился мой пет‑проект автомата для приготовления простых коктейлей со встроенной базой рецептов, который уже полюбился многим коллегам. 

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

Читать далее

Новости

Имитатор аккумуляторной батареи

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

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

Читать далее

Макрос-клавиатура которую я делал 5 лет

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

Меня зовут Нияз. Я ретушёр, дизайнер и иногда программист, а с недавних лет — ещё и отец двух мальчиков 🤘

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

Сегодня хочу показать результат этого пути — наше текущее творение.

Встречайте: макрос-клавиатура 23procg тип1

Читать далее

Освоение китайского ПЛК FX3U-14mr

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

Приобрел я китайский ПЛК типа Mitsubishi FX3U-14mr. Цена хорошая. Функционал интересный, не без недостатков, но достоинств больше: в основе микроконтроллер STM32F103VCT6.

Читать далее

Имитация, симуляция или эмуляция

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

Выскажу свое мнение относительно использования этих слов в контексте программного обеспечения как развлекательной так и образовательной направленности в т.ч. с использованием систем формирования виртуальной реальности (VR).

Читать далее

Конфигуратор микроконтроллеров STM8S103/105

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

Разработана программа с целью обучения и быстрого создания программ для управления робототехническими комплексами или электропреобразовательными установками. Программа представляет собой приложение для персонального компьютера (ПК) с операционной системой (ОС) Windows 10 и выше, разрядностью 64-бит, (версия 32-бит проверялась на Windows 7), позволяющее визуально создавать конфигурацию периферийных устройств микроконтроллеров (МК) STM8S103/STM8S105, что позволяет ускорить процесс создания “прошивки” для МК и (или) уменьшить количество ошибок при разработке. Программа по созданной визуально конфигурации, путем выбора из заданных альтернатив, ввода числовых значений и контроля правильности ввода (предупреждает об ошибках), формирует файлы проекта для программирования МК на языках C (с библиотекой SPL или программирование на уровне регистров) и Assembler (язык выбирается в настройках программы). Позволяет сохранить созданную конфигурацию в файл для использования в дальнейшем. Имеется необходимая справочная информация по МК, SPL, C упрощающая создание кода. Созданные файлы проекта можно перед отправкой в IDE редактировать в сразу этой программе.

Скачать программу Конфигуратор микроконтроллеров STM8S103/105.

Читать далее

Конструктор для параноика: история «сборки» TOTP-гаджета

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

Всем привет.

Уже теперь в прошлом году в комментариях к очередной статье про безопасность аккаунтов и TOTP здесь, на Хабре, я спрашивал – а почему не очень распространены «hardware TOTP».

С одной стороны, оно и понятно – зачем нужно какое-то еще одно отдельное устройство, если его вполне заменит любой смартфон, который и так всегда при себе. И этот подход, безусловно, имеет приоритетное право на жизнь. Но, с другой стороны, в той самой статье, с которой все и началось, как раз и обсуждался среди прочего «режим паранойи», когда пользователь не доверяет ни одному подходящему в данном случае устройству и хотел бы иметь свое устройство, которое будет показывать те самые TOTP коды, но работать будет автономно и не будет зависеть от конкретного приложения и конкретной ОС смартфона (которые, теоретически, могут сливать данные куда-либо). Резюмируя – нужна некая «коробочка с экранчиком», которая умеет рассчитывать TOTP и отображать его.

Читать далее

Какой Может быть UART-CLI в Микроконтроллере (или Курс Молодого Бойца)

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

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

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

Читать далее

Структуры данных на практике. Глава 1: Разрыв в производительности

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

Часть I: Основы

«В теории теория и практика одинаковы. На практике это не так». — авторство приписывается разными специалистам по computer science

Загадка

Два часа утра. Я смотрю на совершенно нелогичные данные профилирования.

В процессе работы над загрузчиком для SoC RISC-V у нас возникла проблема с производительностью. Загрузчик должен был искать конфигурации устройств в таблице: примерно пятьсот элементов, каждый с 32-битным ID устройства и указателем на данные конфигурации. Всё просто.

Мой коллега реализовал эту систему с помощью хэш-таблицы. «Поиск за O(1), — сказал он уверенно, — лучше уже некуда».

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

Я попробовал использовать очевидную оптимизацию: заменить хэш-таблицу двоичным поиском по отсортированному массиву. Двоичный поиск занимает O(log n), что теоретически хуже, чем O(1). Так написано в учебниках. Мой преподаватель алгоритмов был бы разочарован.

Но в результате загрузчик оказался на 40% быстрее.

Как O(log n) смогло победить O(1)? Что происходит?

Читать далее

Каскадный Таймер на STM32 (или Таймер с Прицепом)

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

Как вы знаете в STM32 много 16 битных таймеров. При этом их разрядности порой не достаточно для получения тайм штампов.

Проблема в том, что в STM32 таймеры обладают очень низкой разрядностью. Большинство таймеров 16 битные. Есть только два 32 битных таймера и они обычно чем-то заняты.

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

В случае 16 битного таймера такой таймер будет переполняться каждые 65 ms. Это плохо.

Попробуем разобраться, что делать в этой ситуации.

Читать далее

Процессор, которого не существует. Читаем и пишем ПЗУ

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

Автомобильные блоки управления полны компонентов, промаркированных нестандартно. Например, встречались микросхемы, на которых выбито "Toyota", хотя ежу понятно, что Toyota никаких процессоров не производит. Но в мире электроники при больших партиях производители чипов имеют возможность выбить на чипе ваш логотип, или маркировку, и разработчики ЭБУ этим активно пользуются, хотя цели их не совсем ясны.

Но нестандартная маркировка - это еще цветочки! Существует огромный пласт кастомных компонентов, выполненных "под заказ" для конкретного производителя ЭБУ. Такие проприетарные компоненты зачастую не только не имеют открытой документации, но и отсутствуют в линейке производителя.

Не так давно мы разбирались с процессором TMS470R1A256, очень популярный в блоках SRS 2007-2010 г.в.. На нём выбивают маркировки: TMS470R1VF3482 или TMS470AVF3482, однако достаточно подключиться к этому процессору посредством отладчика чтобы понять, что это процессор TMS470R1A256. Дело в том, что согласно datasheet на эти процессоры, в каждом процессоре есть device identification code register, прочитав который, вы сможете узнать part number данного процессора, который уже можно отыскать в datasheet.
Например, для TMS470R1A256: `The assigned device-specific part number for the A256 device is 0001010` что при переводе в hex = 0x0A. Много разработчиков написало программы для чтения данных процессоров, но почему-то блоки с процессорами, записанными этими программами, не выходили на связь. Пришлось разбираться с этим вопросом самостоятельно, результатом чего стала версия программы JLinkZReader, в которой проблема чтения и записи данных CPU была решена.

Читать далее

Пошаговая GDB отладка прошивки STM32 из консоли cmd

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

Порой бывает так, что вы скачиваете open-source репозиторий, а там нет файлов .project и .сproject для eclipse или файлы .project и .сproject есть, но они по каким-то причинам повреждены и IDE их не может открыть.

Тем не менее прошивка собирается командой make all. Ты ее прошиваешь и LED не мигает. Очевидно, что прошивка зависла. Где-то свалилась в HardFault_Handler.

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

Читать далее

Двухканальная паяльная станция на базе STM32

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

Привет, Хабр. С праздниками всех читателей! Меня зовут Павел, и одним из моих хобби является создание различных устройств на базе микроконтроллеров. Это моя первая статья здесь, и я буду рад конструктивной критике со стороны завсегдатаев Хабра.

Читать далее

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

Макропад своими руками: первый прототип

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

Продолжаю рассказывать, как я создавал макрос-клавиатуру с нуля. В этой части: почему Loupedeck и 3Dconnexion не подошли, как Speed Editor стал моим идеалом, и что из этого вышло. Спойлер: Arduino превращается в тыкву😅

Читать далее

Световой будильник

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

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

На протяжении нескольких лет, я сделал несколько версий светового будильника. Были разные корпуса, кнопки/энкодер, RTC, ATmega328P, ШИМ и/или с RGB светодиодами, галогенной лампой, без рассеивателя и они мне не понравились. Хотелось утром просыпаться без пульсаций света, как при восходе солнца.

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

После многих переделок часы синхронизируются с сервером времени, а будильник с восходом солнца редко когда меняется и настраивается со смартфона в локальной сети Wi-Fi на собственном сайте будильника. Остался только простой способ выключить будильник. Теперь это датчик жестов. Его не касается статическое электричество. Хотя и это не обязательно, т.к. будильник сам выключится через 7 минут. Это время для того чтобы дойти и включить свет в комнате или выйти из комнаты.

Код я разрабатывал множество раз, под разные способы управления светом и контроллеры. Выкладываю последнюю версию для ESP32-C6. Она самая успешная получилась.

Читать далее

Будильник для зимы: как я подружил лампу Ильича, ZigBee и LLM

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

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

Причём бесит не сам факт пробуждения (я всё-таки взрослый человек и понимаю, что проекты сами себя не напишут), а то, как именно это происходит. Резко. Грубо. Без предупреждения.

TLDR: Собрал мощный потолочный светобудильник на ZigBee-диммере + лампы накаливания. Настроил через Tasmota с помощью LLM за один день вместо недели.

Подключить светобудильник к умному дому

«Горячие колеса» с BLE

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

Здравствуй, Хабр! В этой статье я хочу поделиться своим опытом модификации популярной машинки в масштабе 1/64. Цель модификации — сделать машинку радиоуправляемой. В качестве пульта управления будет использоваться android телефон. В статье рассмотрим три основных этапа: разработка встраиваемого программного обеспечения для управления приводом поворота колес и ходового мотора, проектирование шасси и приложение для телефона.

Читать далее

Новый инерциальный MEMS-датчик LSM6DSV320X от ST c искусственным интеллектом для распознавания активности и ударов

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

Инерциальные модули (IMU, Inertial Measurement Unit) выполненные в виде MEMS-датчиков давно используются в смартфонах, игровых контроллерах, носимых устройствах, и т.д. В такой модуль входит акселерометр и гироскоп, вся обработка выполняется на основном процессоре смартфона или микроконтроллера. Для обработки поступающих данных от инерциального модуля, процессор должен быть постоянно в состояние активности. Например, для носимой электроники данный фактор не позволит отправить основной процессор в спящий режим. Вторая проблема заключается в большом лаге между наступлением события и реакции. Например, если необходимо обрабатывать события удара, пока ОС обработает поступающие данные и сделает вывод об ударе, времени на реакцию будет немного. Для решения указанных задач, и не только, компания STMicroelectronics разработала модуль LSM6DSV320X с искусственным интеллектом где вся обработка данных выполняется в самом модуле.

Читать далее

Новогодняя игрушка

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

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

Читать далее

Особенности работы с микроконтроллерами TMS320С28xx

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

Микроконтроллеры серии TMS320C28xx (C2000) от Texas Instruments появились достаточно давно, однако до сих пор остаются актуальными в ряде задач.

Эти микроконтроллеры отличаются надёжностью, обладают значительным объёмом оперативной памяти, поддерживают операции с числами с плавающей точкой (float/double) на аппаратном уровне, а также оснащены одними из лучших в своём классе модулями ШИМ (PWM) и АЦП (ADC). При этом их стоимость остаётся весьма демократичной.

В этой статье я расскажу об особенностях работы с данными микроконтроллерами.

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

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