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

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

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

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

Cтандарт RISC-V RV32I и математика с плавающей точкой

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

Стандарт RISC-V RV32I не содержит команд умножения и деления, поэтому интересно, достаточно ли в софт-ядре реализовать стандарт RV32I, чтобы можно было вычислять что-то серьезное. На примере RISC-V процессора YRV, описанного в книге «Inside an Open-Source Processor, мы рассмотрим, как, используя компилятор GCC, рассчитать такие тригонометрические функции, как синус, косинус и тангенс и вывести на экран результат. Даже нарисуем олдскульную синусоиду в VGA-режиме.

Читать далее

Новости

Рудирон — разработка ПО на языке С++ и дополнительные программные инструментальные средства

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

Установка и использование программных средств для программирования и взаимодействия с контроллером «Рудирон».

Читать далее

Часы на базе микроконтроллера ch32v003 (часть 2)

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

Эта статья, продолжение статьи часть 1. Как правильно в ней заметил @mozg37 в комментариях, RC генератор не обеспечивает достаточной точности хода часов. Благо на aliexpress можно заказать готовую плату nanoCH32V003 с кварцем на борту. В итоге получилось немного модернизировать плату и собрать проект в корпусе, распечатав его.

Читать далее

Векторизация в RISC-V. Основы

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

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

В процессорах архитектуры x86 SIMD инструкции добавляются по принципу ad hoc. Из-за такого подхода, легаси и требований обратной совместимости в x86 накопилось много проблем.

Архитектура RISC-V относительно молодая, и при её разработке учтён прошлый опыт. В основе подхода к SIMD в RISC-V заложили идею чистого векторного процессора.

В этой статье рассмотрим основные принципы работы векторного процессора и базовые векторные операции с памятью и арифметикой.

Читать далее

Истории

Бюджетная зарядка-пауэрбанк своими руками

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

Чтобы показать, что это вообще возможно, пришлось взять в качестве отправной точки (универсальный) прикладной пример

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

Читать далее

Генерация случайных чисел

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

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

Рассмотрим наиболее известные применения случайных чисел и способы их получения как программным способом, так и комбинированным (программно-физическим).
Читать дальше →

Армения посреди Америки, Китая и России: отчет с EDA Connect 2025

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

Мысль, что Армения удобна тем, что соединяется и с Америкой, и с Китаем - высказал мне один из китайских участников конференции EDA Connect. А мысль, что Армения соединяется еще и с Россией - возникала естественно при просмотре докладов о логическом синтезаторе, статическом анализаторе и верификации с помощью UVM.

Помимо докладов, при конференции прошел хакатон по Verilog и FPGA, на который пришли студенты из Ереванского университета, русско-армянского университета, американо-армянского, французско-армянского, европейско-армянского, и других университетов. Занятно, что второй день хакатона проходил в комнате напротив зала, где большое начальство встречалось с Премьер-Министром Армении. Один из студентов хакатона перепутал дверь, и его перенаправила секьюрити.

Читать далее

STM32 Universal Boot Loader и стирание секторов памяти

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

Привет всем! Меня зовут Евгений и я работаю программистом микроконтроллеров в компании Бастион г. Ростов-на-Дону.

В своих проектах мы очень часто используем STM32F030 как сопроцессор отвечающий за реалтайм задачи (АЦП, обработка кнопок, управление дисплеем), а вот бизнесс логику выносим на контроллеры помощнее. В процесе работы естественно стал вопрос с выпуске обновлений для устройств и о том как обновлять ПО и нашем "сопроцессоре" (фига себе сопроцессор конечно, но вот такие термины). Так как с основным процессором мы связаны по UART, то сюда как нельзя лучше подошел UniversalBootLoader (UBL), который уже есть во всех процессорах STM.

Рассказ о том как прошивать сами контроллеры через UBL уже есть на сайтах многих эмбедеров (easyelectronics.ru и istarik.ru разжевывали эту тему не раз), но у меня появился отличный сайдквест.

Сейчас совсем немного контекста, для понимания с чем я столкнулся.

Для стирания памяти через UBL в STM32 есть алгоритм который представлен ниже

Читать далее

Простой измеритель ёмкости аккумуляторов своими руками

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

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

Изначально этот проект задумывался как улучшенная версия китайского модуля ZB2L3, но в по ходу дела оброс функциями вроде связи с компьютером и поддержкой тока до 20 А. В итоге я сейчас не уверен стоит ли его называть измерителем ёмкости, т.к. это только одна из его функций:

измерение ёмкости аккумуляторов

заряд и разряд аккумуляторов

измерение характеристик источников питания

Читать далее

Образовательный ROS2-робот: аппаратная архитектура и выбор компонентов

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

Наша цель — придумать ROS2-робота для старших классов школ и университетов. Чтобы он помогал изучать современные технологии при минимальной стоимости компонентов и простоте сборки. А также чтобы был потенциал модернизации для участия в соревнованиях. Расскажу вам о текущем состоянии этого проекта.

Собрать мобильного робота

Патчим OpenOCD для поддержки чипа NOR Flash

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

Disclaimer: "чукча не писатель, чукча читатель"

UseCase 0: надоело переподключать плату с RP2040 и захотелось загружать прошивку из IDE по кнопке "Run"
UseCase 1: хочется пошаговой отладки, а не принтами.

Установил на одну из плат DebugProbe и попробовал подключиться.

Оказалось не все так просто - OpenOCD плевался на неизвестное устройство:

окунуться

Индикатор искусственного горизонта на базе esp32

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

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

Читать далее

Machine learning на ESP32

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

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

В этом примере используются измерения акселерометра MPU 6050 и машинное обучение (ML) для распознавания трех жестов рукой с помощью ESP32. Данные из сенсора распознаются на микроконтроллере и результат выводится в консоль в виде названия жеста и вероятности результата. Модель ML использует TensorFlow и Keras и обучается на выборке данных, представляющей три различных жеста: "circle" (окружность), "cross" (пересечение) и "pad" (поступательное движение).

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

В следующей части рассмотрим как настроить Bluetooth LE (BLE) на ESP32 и Android устройстве. Передадим квантированный набор ускорений сенсора по BLE. Настроим Модель ML для распознания жестов на Android.

Читать далее

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

4 – 5 апреля
Геймтон «DatsCity»
Онлайн
8 апреля
Конференция TEAMLY WORK MANAGEMENT 2025
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань
20 – 22 июня
Летняя айти-тусовка Summer Merge
Ульяновская область

Работа с RISC-V контроллерами на примере GD32VF103 и CH32V303. Часть 6. Дробные числа

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

Макетная плата GD32VF103


Одно из основных предназначений микроконтроллера — это получение информации извне, ее обработка и выдача реакции. Причем зачастую эта информация представлена не в цифрах, а в терминах реального мира: 3 сантиметра, 101 килопаскаль, 3.6 вольта. Мало того, что информацию надо получить, ее зачастую надо потом отобразить человеку. Вот только подобные аналоговые величины плохо ложатся на целочисленные переменные, с которыми так хорошо работает контроллер. О том, как дробные числа можно закодировать и какие при этом встречаются подводные камни, сегодня и поговорим.

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

Руководство по началу работы с отладочной платой MIK32-DIP (K1948ВК018, Амур) в ОС GNU/Linux

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

MIK32 АМУР или K1948ВК018 является российским микроконтроллером (МК) с ядром на открытой архитектуре RISC‑V. По какой‑то причине производитель МК ГК «Микрон» предлагает в качестве средства разработки,‑ средство на базе Eclipse, но исключительно под Windows, что далеко не всех устраивает. А также, в руководстве по эксплуатации на данный МК, предлагается использовать VS Code, и это конечно более универсальный (кроссплатформеный) вариант, но предполагает использование VS Code совместно с плагином PlatformIO, что опять же устраивает далеко не всех. Поэтому я рассмотрю в данном руководстве старт работы с отладочной платой MIK32-DIP в ОС GNU/Linux в IDE Eclipse.

Чтобы начать работу вам понадобятся:

Читать далее

Зеркала вместо заводов: как город купил себе солнце и немножко разбогател

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

В прошлом году появилась новость про калифорнийский стартап Reflect Orbital, который собирался запустить 57 малых спутников, чтобы в любой момент можно было перенаправить солнечный свет в произвольную точку мира. Если вдруг не можете найти ключи в темноте, то заказываете в приложении свет по своим координатам – вуаля, только вам светит солнце. 

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

да будет свет!

Использование лидара от робота-пылесоса для системы предотвращения столкновений в автономных роботах

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

Как прочитать данные с недорогого лидара от робота-пылесоса на ESP32, визуализировать показания на кольце из 12 светодиодов и даже интегрировать решение в робота для участия в соревнованиях.

Читать далее

Управляем питанием компьютера кнопкой вызова от старого лифта

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров20K
Приветствую всех!
Однажды увидел я на просторах ролик, как кто-то подключил лифтовой вызывной пост вместо обычной кнопки включения компьютера. И вот как-то раз я снова вспомнил про это, отчего мне сразу захотелось сделать что-то подобное. Но, раз уж делать, то куда технологичнее. Сделаем такую кнопку, не требующую вскрытия корпуса и подключения напрямую к контактам на материнке. Можно ли это реализовать? Как оказалось, это несколько сложнее, чем я думал…



Итак, в сегодняшней статье сделаем аналог той штуки, который можно будет подключить к любому компьютеру. Заодно разберёмся, как это будет работать, поговорим про USB HID и все его нюансы, посмотрим на начинку лифтовых кнопок разных лет и наконец добавим на рабочий стол артефакт из подъезда двухтысячных.
Читать дальше →

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

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

Проект автоматизированного электропривода экспериментального ленточного конвейера, разработанный на кафедре электроэнергетики и автоматики Белгородского государственного технологического университета имени В.Г. Шухова.

Читать далее

BLE показометр

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

Здравствуй Хабр! Случилось так, что совпали три события. Коллега подарил красивый винтажный миллиамперметр, по почте пришла платка с CH592F на борту и возникло желание изучать BLE. А изучение интересно совместно с решением какой-либо прикладной задачи. В статье хочу поделиться опытом создания индикатора на основе микроконтроллера CH592. Рассмотрим что такое TMOS, настроим инструменты для создания прошивки. Напишем программу для микроконтроллера. Она будет читать характеристику и управлять стрелкой миллиамперметра. Создадим "верхнее" программное обеспечение для компьютера. Оно будет принимать загрузку процессора и отправлять это значение на индикатор.

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