Обновить
222.46

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

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

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

RC-лодка на ESP8266 NodeMCU

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


Примерно полгода мне понадобилось, чтобы собрать такую лодку на дистанционном управлении.


Я расскажу про процесс разработки с самого начала: от лодки из потолочной плитки, гелевой ручки и консервной банки до модели из пластика, которую не стыдно подарить.


Если интересно, какие шишки мне пришлось набить, прошу под кат!


Осторожно! Под катом много картинок!

Промышленный реверс-инжиниринг

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

Рассказ о процессе заимствования при разработке электроники на наглядном примере.



Запись лога работы лифта самодельным сниффером

Как мы делали БелАЗ. Часть 2 – Лабораторные испытания

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


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

«Байкал-T1»: знакомство с платой на первом в России 28-нм процессоре

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

В нашу инженерную лабораторию попала демоплата Baikal BFK Rev 1.6 на основе первого российского процессора для коммерческих разработок — SOM Baikal-T1 MIPS.


Двухъядерный процессор «Байкал-Т1» на архитектуре MIPS Warrior P-class P5600 MIPS 32 был анонсирован еще в 2015 году в рамках программы по импортозамещению, его разработчик — российская фаблес-компания «Байкал Электроникс». Эта система на кристалле была создана для проектирования промышленных и потребительских устройств: маршрутизаторов и сетевых накопителей, тонких клиентов, мультимедийных центров, систем ЧПУ и т.п.


Откроем коробку и посмотрим, как работает стандартный пакет поддержки платформы (BSP) на тестовой плате:


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

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

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


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

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

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

Фантомный double в прошивках для ядер Cortex-M*

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

В последнее время появилось много микроконтроллеров на ядрах ARM Cortex-M*, которые поддерживают аппаратную реализацию математики плавающей запятой (FPU). В основном FPU работают с одиночной точностью (float) и её вполне достаточно для работы с сигналами, полученными с АЦП. FPU позволяет забыть о проблемах дискретизации и проблемах переполнения целочисленных вычислений. FPU быстр - все математические операции с одиночными float, кроме деления и взятия корня, занимают на Cortex-M4F один такт. Поэтому после перехода на Cortex-M4F мы вздохнули свободно и стали писать математику на float. Как же мы удивились, найдя в скомпилированном коде математические операции над double с программной, очень медленной эмуляцией.

В статье рассказывается, как обнаружить и исправить присутствие double в прошивках, где ядро аппаратно поддерживает тип float, но не поддерживает double.

Работа ведётся в среде IAR Embedded Workbench на примере реального кода на языке Си.

Читать далее

Передача аналогового тв сигнала с помощью STM32

Время на прочтение5 мин
Охват и читатели28K
Помните как некто cnlohr запустил передачу ТВ сигнала на ESP8266?

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

Затем я вспомнил что STM32 умеет выводить свой тактовый сигнал на один из пинов.

Модернизация настольных электромеханических часов

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

У меня есть старые электромеханические часы «Янтарь», которым почти 50 лет. По паспорту их продали в 1976 году. Эти часы дороги мне как память, потому что достались от бабушки с дедушкой.

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

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

Погружаемся в схемотехнику, механику и код

Пишем Hex Viewer для Flipper Zero

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

Примерно месяц назад основная поставка Flipper'ов таки доехала до России. Вопреки моим ожиданиям, это не вызвало волну публикаций про создание приложений под него. Хорошие публикации есть (например, эта и вот эта), но массовости нет. Слишком долго ждали и перегорели? Пишут долго и обстоятельно? Технологический стек устройства не подходит для быстрого и легкого старта? Как бы то ни было, такой расклад ничуть не убавил мотивации поиграться с устройством!! С удовольствием уделил несколько вечеров созданию своего первого приложения под Flipper Zero: Hex Viewer, шестнадцатеричного просмотрщика. О своем опыте и интересных находках расскажу в теле статьи.

Читать далее

Лучшее время для изучения микроконтроллеров

Время на прочтение12 мин
Охват и читатели213K
image
Признайтесь, как часто вы думали о том, чтоб освоить азы программирования микроконтроллеров? Наверняка у вас есть в голове несколько идей потенциальных проектов, но воплощать их в жизнь вы так и не взялись. Так вот: лучше времени для старта, чем сейчас просто не найти.

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

С другой стороны, в моём текущем окружении очень много программистов, но почти нет имбедеров. Когда я разговариваю с ними на тему микроконтроллеров, у меня создаётся впечатление, что мнение о них у многих осталось на уровне 10-летней давности.
Читать дальше →

Все мои Ардуинки: часть вторая, ATtiny и STM

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

Продолжаю перебирать все мои Ардуинки и делиться опытом работы с ними.

В прошлый раз я выдал базу про платы, начавшие свою жизнь как официальные продукты Arduino. Но время показывает, что истинная сила платформы скрывалась не в конкретных Uno и Nano, а в открытости и расширяемости. В этой и следующей части речь пойдёт уже о сторонних решениях, разработанных и поддержанных в Arduino IDE творческими усилиями множества энтузиастов.

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

Вторичная жизнь вторичных часов. На Arduino

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

Сегодня разберём решение небольшой практической задачи: запустим советские вторичные электромеханические часы максимально простым способом. Попутно узнаем несколько простых и не очень вещей из области электроники и программирования микроконтроллеров.

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

Создание контроллера вторичных часов “Воронеж”

Время на прочтение12 мин
Охват и читатели14K
Отладочный стенд.

Многие из вас на предприятиях и иных объектах бывшего СССР встречали зелёные сегментные часы. Были самостоятельные устройства, типа “Электроника-7”, но так же существовали и вторичные, как в предыдущем посте, только более сложного строения — часы семейства “Воронеж”. Они также включались в единую часовую сеть предприятия и показывали то время, которое передавалось от главных первичных часов по проводам.

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

Тем не менее, я смог их победить, и могу теперь рассказать, как же они работают и поделиться кодом своего проекта.
Читать дальше →

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

Самодельные портативные игровые консоли и ESPboy

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

С некоторых пор в среде самодельщиков обрёл популярность новый формат — портативные игровые устройства на основе недорогих микроконтроллеров и OLED или TFT-экранчиков, подражающие популярным портативным игровым системам прошлого, таким как Game Boy компании Nintendo 1989 года.

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

Искусство кройки и шитья или возможность заменить игры в портативной игровой консоли SUP

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

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

Читать далее

TinyFL — драйвер фонарика на микроконтроллере

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

Привет, Habr!


Хочу рассказать историю о том, как мне в руки попал китайский налобный фонарик на светодиоде Cree XM-L и что дальше с ним стало.


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

Генерация случайных чисел на микроконтроллерах

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


Про генераторы случайных чисел написано очень много, но почти всегда, когда дело доходит до реализации, подразумевается (или явно говорится), что речь идет об x86/x64 и других «взрослых» архитектурах. В то же время, форумы, посвященные разработке устройств на микроконтроллерах, пестрят вопросами «как мне сгенерировать случайное число на %controllername%?». Причем диапазон ответов простирается от «смотри гугл/википедию» до «используй стандартную функцию». Далеко не всегда эта «стандартная функция» есть и устраивает разработчика по всем параметрам, чаще наоборот: то числа получаются далеки от случайных, то скорость работы слишком мала, а то полученный код вообще не помещается в свободную память.
Попробуем разобраться, какие бывают алгоритмы генерации случайных чисел, как выбрать подходящий, а главное, в чем особенности реализации этих алгоритмов на контроллерах.
Читать дальше →

Пастильда: итоги

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


Как устроено контрактное производство электроники в США?
Можно ли заработать на краудфандинге?
Софт, который убивает железо. Миф или реальность?
Есть ли жизнь у open-source проектов?

Все это в заключительной части детективной истории про разработку Пастильды — аппаратного менеджера паролей с открытым исходным кодом.
Читать дальше →

Как делать парсинг текста голым хардвером, без процессора и без софтвера

Время на прочтение13 мин
Охват и читатели40K
Кто-то парсирует текстовый файл программой на Питоне, другой пишет скрипт с регулярными выражениями на Перле, Си-программист стыдливо возится с буферами и указателями, иногда применяя Yacc и Lex.

А можно ли парсировать текст голым железом? Вообще без программы?

— А как это?, — спросил меня знакомый, — С помощью Ардуино?

— Внутри Ардуино стоит вполне фон-неймановский процессор и работает программа, — ответил я, — Нет, еще более голое железо.

— А-а-а-а, этот, микрокод?, — догадался мой товарищ и взглянул на меня победно.

— Нет, термин «микрокод» использовался для специфической организации процессоров в 1970-е годы, потом его использование сошло на нет, — ответил я и добавил, — Правда есть еще микрооперации в интеловских процессорах, в которые перекодируется x86, но это тоже другое. Нет, я имею в виду парсинг текста устройством, состоящим из логических элементов И-ИЛИ-НЕ и Д-триггерами, как на картинке ниже.

— Невозможно! — воскликнул мой приятель, — в таком устройстве где-то сбоку должен сидеть процессор и хитро подмигивать!

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

— Нуу, машина Тьюринга, — протянул приятель, — это абстракция, типа Демона Максвелла.

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

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

Переходим с STM32 на GD32

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

Микроконтроллеры STM32 и GigaDevice GD32 часто сравнивают из-за схожей архитектуры и совместимости. GD32 является своеобразным «клоном» STM32, использующим такое же ядро ARM Cortex-M. Основное отличие между ними — это цена, так как GD32 обычно дешевле, что делает его привлекательным для проектов с ограниченным бюджетом. Однако несмотря на схожесть, существуют различия в характеристиках и уровне поддержки, которые могут повлиять на выбор между этими двумя семействами микроконтроллеров.
Читать дальше →

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