Обновить
128K+

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

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

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

ZBFun: архитектура для ZigBee без обязательного облака на Python

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

Меня зовут ZolAnd, я - независимый инженер-разработчик embedded-систем в основном для дома и сельской усадьбы. В какой-то момент мне захотелось собрать под одной крышей разношёрстный парк ZigBee-устройств от разных производителей, работать с ним локально, без обязательной привязки к облаку, и при этом иметь возможность не только интегрировать чужие устройства, но и проектировать свои. Так появился проект ZBFun. Эта статья — про то, с какими вызовами я столкнулся, какие решения уже существуют и почему они мне не подошли, и про архитектуру, к которой я в итоге пришёл.

С чего всё началось

Задача звучала просто: хочу python-библиотеку для ZigBee на ESP32-C6. Готовой не нашлось — есть отличный esp-zigbee-lib от Espressif на C, но ничего сопоставимого на Python или MicroPython для этой платформы не было. Значит, писать самому. И тут выяснилась вторая, более фундаментальная проблема. Чтобы написать библиотеку, нужно понимать, что такое ZigBee Cluster Library (ZCL) — стандарт, который описывает, из чего вообще состоит ZigBee-устройство: кластеры, атрибуты, команды, типы данных, зависимости между ними. Официальный документ Alliance — 1213 страниц PDF, написанный для инженеров, имплементирующих стек с нуля, без какой-либо машиночитаемой версии. Ни JSON, ни XML — только текст, рассчитанный на то, что человек прочитает и перепечатает нужное руками. Дальше — хуже. Когда я стал сверять этот текст с реальными SDK и реальными устройствами, обнаружились расхождения. Причём не косметические, а такие, из-за которых устройство просто не будет работать правильно.

Читать далее

Новости

Драйвер шагового двигателя с векторным управлением

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

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

Вращать магнитное поле

Ретранслятор LoRa своими руками: увеличиваем дальность связи без лишней мощности

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

В предыдущей статье я рассказывал о том, как предоставить удалённый доступ к данным измерений метеостанции с помощью модулей Heltec Automation HTIT-WB32LAF V3, объединяющих микроконтроллер ESP32-S3FN8 с LoRa-чипом SX1262. При правильной установке антенн и хороших условиях распространения радиоволн возможна передача данных на километры.

Но что, если нужно передавать данные ещё дальше, а возможности антенн с большим коэффициентом усиления исчерпаны и мощность передатчика повышать нельзя? 

Читать далее

Нельзя просто взять и прочитать 64-битный SysTick на CH32V203

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

Когда я начал работать с CH32V203G6U6 и обнаружил, что там есть 64-битный аппаратный таймер, то подумал: ух, это же отлично, раз таймер аппаратный, то и о чтении/записи заботится сам микроконтроллер. И какое-то время это не вызывало вопросов. А потом…

Читать далее

Итоги сезона DIY: луноход, бинарные часы и стоп‑сигнал в котельной

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

Сделай сам — покажи другим, как надо. На старте сезона DIY Лемана Тех и Хабр пришли с таким запросом к сообществу авторов, и они не подвели. В рамках сезона вышло множество статей о самых разнообразных проектах, сочетающих работу с железом и софтом. Участники соревновались в том, кто лучше всех владеет отвёрткой, 3D‑принтером, различными языками программирования, у кого самая необычная идея и кто способен максимально хардкорно её воплотить.

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

Читать далее

Tymbal — нейросинтезатор на одном чипе

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

Инструмент называется Tymbal.

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

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

Слово к тому же приходит оттуда же, откуда «тембр». Merriam‑Webster выводит tymbal как изменённое от более раннего timbal (литавра), а timbre — от греческого tympanon, барабана: в старофранцузском это ещё барабан, в среднефранцузском — колокол под молоточком, и лишь потом слово стало означать окраску звука. Имя инструмента и слово «тембр» — родня по барабану.

Первый вариант я написал через i, как в литавре. Пришлось переименовывать: у цикады это tymbal, через y.

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

Читать далее

Спутник как VPS: честная история про космический SSH, TinySat и TriSat

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

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

В июле прошлого года я рассказывал, что мы готовим к запуску спутник с бортовым компьютером, к которому можно будет подключаться по SSH. Прямо как к нашему VPS, только он летит над головой со скоростью 7,8 км/с. Звучало как фантастика, но мы это сделали.

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

Читать далее

Пульт красивый, но непонятный. Вскрываем BLE протокол

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

Иногда новый проект начинается не с технического задания, а с вещи, которая случайно попала в руки.

В моём случае это был Bluetooth-пульт Makeblock MBBTCTR01. Красивый? Да. Удобный? Более-менее.
Два стика, крестовина, кнопки — всё, что нужно для управления мобильным роботом. А пара тележек с дифференциальным приводом у меня как раз была под рукой.

Читать далее

ESP32 Кликер

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

Мини проект для esp32 уровня hello world. Используем esp32 как подобие геймпада.

Вдохновившись постом https://habr.com/ru/articles/1061100/ захотелось сделать что-то тактильное, одно кнопочное, но без паяльника, станков и при условии что руки растут отнюдь не из плеч. Немного помаявшись и покрутив в руках фиджет кубик, пришла простоя идея - а что если просто считать сколько раз потеребонькал кубик? Спойлер - после подсчёта размеров платы разработки, платы зарядки и аккумулятора, стало понятно, что впихнуть это во вменяемый размер никак не получится. Но плата и несколько кнопок-тумблеров на волне энтузиазма уже были куплены, поэтому идея несколько трансформировалась. Было решено сделать управление простой мини игрой через тумблеры.

Читать далее

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

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

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

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

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

Читать далее

ESP-KVM: как я сделал IP-KVM на ESP32-P4 за копейки — и обо что споткнулся по дороге

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

Собрал полностью открытый IP-KVM на ESP32-P4: две платы без единой капли припоя, прошивка прямо из браузера, а по возможностям он уже почти догнал “взрослые” KVM-over-IP - видео с автоопределением режима, виртуальный привод, ATX, Tailscale и даже маленький экранчик со статусом на корпусе (которого пока нет). Внутри - вся история проекта: от “сервер не грузится, а монитор на антресоли” до граблей с H.264, microSD…

Ну давай, покажи уже, что получилось!

Делаем из Raspberry Pi Pico синтезатор Roland SC-55

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

В прошлой статье мы рассмотрели, как создать простой синтезатор на основе Raspberry Pi Pico. Звуки на основе синусоиды интересны, но хочется получить звук реального инструмента с его уникальным тембром.

Если вы думаете, что достаточно просто проигрывать записанный звук для каждой ноты, то, по крайней мере, для Raspberry Pi такой подход не сработает из-за ограниченных ресурсов. А вот использование звуковых шрифтов (SoundFont), которые придумали ещё в прошлом веке, поможет решить задачу.

Изобретать велосипед и реализовывать обработку SoundFont-файлов с нуля мы не будем, а воспользуемся готовой библиотекой TinySoundFont.

Изучение технологии SoundFont и то, как устроены звуковые банки вообще, даёт много в понимании синтеза звука.

В этой статье мы подключим библиотеку TinySoundFont к Raspberry Pi Pico, устраним главный недостаток библиотеки — загрузку всего SoundFont в оперативную память, и заставим синтезатор читать семплы напрямую из флеш-памяти.

Читать далее

Электричество, масло и вода: готовим эмульсию под напряжением в 25 000 вольт

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

Смешать воду и растительное масло в стойкую эмульсию можно и венчиком на кухне. Но как сделать это для 10 тонн отработанного машинного масла, чтобы получить дешёвое топливо для дизельной горелки? Или уничтожить бактерии в 50 кубах свиных стоков так, чтобы не платить огромные штрафы за сбросы? Этого можно добиться с помощью мощного разряда в жидкости, который известен как эффект Юткина, или электрогидроударный эффект. На Хабре очень мало информации об этом интересном эффекте, что я и попытаюсь исправить. Поехали!

Читать далее

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

Железный ключ к Secure Boot RK35xx

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

Уже несколько лет в Positive Labs мы исследуем механизмы безопасности в SoC RK35xx от Rockchip. За это время нам и другим исследователям безопасности удалось весьма неплохо проанализировать их. В результате было обнаружено несколько уязвимостей, две из которых были интересны нам, как людям, причастным к «железу».

В первом случае нам пришлось разработать эмулятор eMMC памяти, чтобы эксплуатировать TOC‑TOU уязвимость в момент загрузки прошивки.

Во втором — мы атаковали SoC с помощью Power Glitch, воздействуя на процесс проверки прошивки.

В обоих случаях нам удалось обойти механизм Secure Boot, а платформа RK35xx стала поистине хрестоматийным примером с точки зрения аппаратного хакинга, поэтому мы решили поделиться техническими деталями. 

Hardware Hacking

Разбор мат-модели четырехногого робота-«паука»

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

Хотел бы рассмотреть код открытого проекта робота-"паука" с 12DoF

Разберем по косточкам весь скелет и код, управляющий им.

TLDR: инверсная кинематика, теорема косинусов

Поехали!

Я просто хотел часы, которые не нужно подводить. Всё закончилось Pi Zero и LLM

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

Это история о том, к чему привело моё желание иметь часы, которые в магазине не купишь.

Ещё с детских лет у моей кровати всегда стояли какие-нибудь дешёвые часы с красными семисегментными индикаторами и функцией радио, купленные в Walmart или Target. Это всегда были дешёвые, простые и живучие модели — вот только все они неизменно требовали ручной подстройки при переходе не летнее/зимнее время и при сбое питания. И после недавнего такого сбоя, когда я в очередной раз стоял у тумбочки, зажав кнопку «TIME» и лихорадочно нажимая кнопку «HOUR», моё терпение лопнуло: «Мы прожили уже четверть 21-го века. Должен же быть какой-то более совершенный способ!»

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

Читать далее

В заголовке моего ELF есть точка входа. Оказалось, её никто не читает

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

Три статьи я собирал файл и отдавал его эмулятору, ни разу в него не заглянув. Заглянул. Внутри два разных описания одних и тех же байтов, ответ на вопрос, откуда взялся адрес 0x80000000, и поле, которое я заполнял зря.

Ну, открываем!

Моя рекурсия зависла навсегда, и это был правильный результат

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

Написал рекурсию тем же приёмом, что во второй статье, и программа повисла навсегда: возвращаться ей было некуда. Чиню, завожу стек и по дороге выясняю, что регистра sp в наборе команд нет вовсе. А потом урезаю стек до 128 байт, и сборка об этом не говорит ни слова.

Ломать второй раз!

ESP32 + MicroPython + трубка Гейгера: как за вечер собрать детектор радиации

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

Радиация окружает нас повсюду – естественный радиоактивный фон присутствует всегда и везде. Имея под рукой плату ESP32 за 8 долларов, OLED-дисплей за 3 доллара, MicroPython и трубку Гейгера – Мюллера, можно без труда собрать полноценный детектор радиации. Он сможет не только выводить текущие показатели на экран, но и отправлять данные на GMCMap, в Home Assistant и другие сервисы.

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

Читать далее

Как PVS-Studio улучшает качество embedded-проектов

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

Embedded-разработка отличается множеством уникальных настроек, компиляторов и систем сборки. А при использовании стандартных методов анализа могут возникать сложности. Для решения этой проблемы PVS-Studio предоставляет специально разработанный механизм. Давайте узнаем о нём больше и посмотрим, как его можно применять на практике.

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