Обновить
231.73

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

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

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

Передача JPEG-видео по RTP/UDP на ESP32 (RFC 2435)

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

В этой статье я разберу, как реализовать передачу JPEG-видео по RTP поверх UDP напрямую с ESP32 - так, чтобы поток открывался в VLC и ffplay, без RTSP, FFmpeg и промежуточных серверов.

Читать далее

Новости

Полевое испытание диапазона модуля LoRa2021 и PDR (FLRC против LoRa) — LR2021

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

LoRa2021 — это модуль беспроводного приемопередатчика, разработанный компанией G-NiceRF на базе новейшего чипа Semtech LoRa® LR2021. Он не только сохраняет преимущества дальней связи LoRa, но и реализует переход от «низкоскоростных датчиков» к «высокоскоростной передаче».

Типичное значение чувствительности приема LoRa2021 составляет -143 дБм (SF12/62,5 кГц). В диапазоне частот Sub-GHz чип LR2021 добавляет поддержку FLRC, при этом скорость передачи данных может достигать 2,6 Мбит/с (в стандартном режиме LoRa она составляет до 125 кбит/с).

Значительное увеличение пропускной способности позволяет LoRa2021 поддерживать передачу изображений, отправку голосовых или аудиофрагментов, а также обновление пакетов данных большего объема.

Кроме того, данный модуль охватывает широкий спектр частот. Он поддерживает популярные диапазоны Sub-GHz (стандартные 433/470/868/915 МГц, с возможностью настройки 150–960 МГц) и диапазон 2,4 ГГц ISM. Также он поддерживает высокие частоты 1,5–2,5 ГГц (включая спутниковую связь S-диапазона), обеспечивая покрытие от земли до спутников.

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

При сохранении низкого энергопотребления с током в спящем режиме ≤2 мкА, LoRa2021 интегрирует технологию скачкообразной перестройки частоты LR-FHSS для работы в условиях сильных помех. Он также поддерживает измерение дальности RTToF и полностью совместим с основными протоколами Интернета вещей, такими как LoRaWAN, BLE 5.0 и Wi-SUN.

Читать далее

ИИ лажает там где должен был сиять

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

У меня недавно приняли статью на крутую конференцию, где я описываю, как ИИ лажает в микроархитектурных задачках на SystemVerilog, которые я даю студентам на интервью. Дошло до того, что стартаперы больше не берут от меня задачек, а с честными глазами говорят: мы пока не умеем решать ваши задачки, но научимся как только большая компания инвестирует в нас деньги, объявит нас своим партнером и даст нам доступ к миллионам строк на верилоге в своих закромах, на которых мы научимся и будем сиять. А пока смотрите наши слайдики.

Ну ладно, хорошо, допустим. А где же ИИ сияет сейчас? Мне говорили, что пусть ИИ не сияет на языках описания аппаратуры, но он уже дошел до продакшн в языках программирования, где заменил джуна и скоро заменит миддла. Так что во всех компаниях останется только несколько ИИ-гуру, а все остальные программисты будут отправлены собирать клубнику на плантациях города Ватсонвилл, Калифорния, где они заменят нелегальных мексиканцев, которых Трамп собирается отправить на родину.

Программирование, говорите? Ну хорошо, вот три мои попытки оправдать ИИ на задачах из программирования.

Читать далее

Пуск CAN-MAC на STM32

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

Многие STM32 микроконтроллеры обладают CAN трансивером. Даже не одним.
В этом тексте я расскажу про особенности работы CAN-трансивера на STM32 (bxCAN).

Вы узнаете как работает CAN буквально под капотом.

Читать далее

Управляем питанием по-взрослому: конечный автомат для устройств с батарейным питанием

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

В embedded-проектах с батарейным питанием управление энергопотреблением часто сводят к нескольким вызовам sleep() и проверке кнопки включения. Пока устройство простое — этого хватает. Но как только появляется аккумулятор, зарядка, дисплей, кнопка питания и требования к пользовательскому поведению, такой подход начинает разваливаться.

Типичные ситуации, с которыми сталкиваются на практике:

● устройство выключено, но подключили зарядку — что должно происходить?

● зарядка идёт, пользователь нажал кнопку — включаться или нет?

● батарея критически разряжена — как корректно отказать во включении?

● устройство долго не используется — когда и как его выключать?

● контроллер питания подал питание сам по себе — это включение или ошибка?

устройство вышло из Deep Sleep — это пробуждение или «холодный старт»?

Читать далее

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

Всем привет.

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

Загадка

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

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

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

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

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

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

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

Читать далее

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

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

Как вы знаете в 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 мин
Охват и читатели10K

Порой бывает так, что вы скачиваете 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.3K

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

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

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

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

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

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

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