Управление голосом и наклоном «пульта» для робота CrowBot BOLT: разбор изменений в заводскую прошивку


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

Оригинальный самодельный двухлучевой инфракрасный счётчик для счёта входящих в помещение и выходящих из него людей. Полтора десятка таких счётчиков, образующих сеть, проходят "обкатку" в составе действующего прототипа системы управления эвакуацией. Работу сети счётчиков в реальном времени можно посмотреть по ссылке.
В статье подробно описаны принципы, положенные в основу алгоритма распознавания направления движения человека, реализованные в программе для микроконтроллера счётчика.
Настал тот первый день, когда в программировании микроконтроллеров наконец пригодилась такая абстрактная структура данных как стек LIFO.
У нас в организации существует обязательное внутреннее требование к оформлению исходных кодов на языке программирования Си для микроконтроллеров, которое звучит так:
В конце каждого блока if(...) {...} ; switch(...) {...} ; for(...) {...} и т.п. необходимо пиcать комментарий // end of if(...). end of switch(...) end of for(...) соответственно.
Я написал утилиту-локатор, которая автоматически находит аномалии в коде согласно этому странному правилу.
Существует одна очень замечательная учебно-треннировочная электронная плата Olimex-STM32-H407.
В этом тексте я покажу как на этой PCB можно запустить прошивку культового российского аппаратного хранителя паролей Пастильда (Pas~).

Здравствуйте все! ✋
При первой же попытке подключить экран ILI9341 по SPI к MIK32 АМУР выявил пару проблем, одна касается библиотеки HAL от Микрона, а вторая касается платы ELBEAR ACE-UNO ревизии 1.0.1 от ELRON.
Для начала поясню, я использую свой Makefile и работаю в VSCode, есть возможность работать с PlatformIO но я ей не пользуюсь. Прошиваю МК через COM-порт, для этого использую бутлоадер и загрузчик от elron.tech.
Для запуска экрана я взял библиотеку которую использовал ранее для работы с МК от Миландр К1986ВК025 (ОКР «Счетчик М»), заменил внутренности функций SPI_Master_Init, SPI_SendData и т.д., взяв их из примера который находится в репозитории Микрона - HAL_SPI_Master.
В их примере идёт передача 20 байт с одновременным приёмом, мне же необходимо передавать побайтово. В этом моменте как раз и появляется ошибка, с которой пришлось немного повозиться. В функции HAL_SPI_Exchange есть метка error, посмотрите пример ниже:
В программировании микроконтроллеров на выходе получается довольно много артефактов. Всё это надо как-то связать и заточить в архив, чтобы всегда можно было ассоциировать *.hex с нужным для него *.map и *.elf.
Логичным шагом является архивация всех этих файликов в *.tar архив. Один архив очень удобен при транспортировке программного обеспечения.
В этом тексте я написал как это можно провернуть средствами утилиты GNU Make.
Датчик заявлен как высокоточный, +/- 0.1 градуса для 0…+85 град. С, в корпусе DFN-2L. Для всего диапазона температур -40 … +150 градусов точность несколько хуже, до +/- 0.5 градуса. У датчика 15-ти битное АЦП, восемь разрядов на градусы и семь на дробную часть, что дает разрешающую способность 1/128 или 0.0078125 градуса. Время преобразования и считывания данных порядка 32-х миллисекунд. Подключается он по шине 1-Wire и имеет два варианта конструктивного исполнения: DFN-2L (1.6 x 0.8 мм) и TO-92S-2L (4.0 x 3.0 mm).
Типовая схема подключения показана на Рис.1 и требует 2 ножки микроконтроллера. GPIO1 используется для управления обменом, GPIO2 для считывания данных. Рекомендуемое значение резистора 4.7 кОм @ 3.3 В.

Репортаж с прошедшего мероприятия по Robot Operating System (ROS) - фреймворку, который предназначен для разработки программного обеспечения роботов. В него входит целый набор различных инструментов, библиотек и определённых правил, цель которых — создать единую и удобную среду разработки роботов. Выкладываем видеозаписи докладов с подробными описаниями.
В программировании микроконтроллеров часто используют Eclipse с плагинами.
Главным образом от незнания языков скриптов сборки (Make, Cmake, Ninjia и т п).
В этом тексте я напишут почему способ сборки из Eclipse c ARM плагинами — это тупиковый путь в разработке больших промышленных командных проектов.
И как можно частично компенсировать недостатки Eclipse с плагинами.

Если Вы не знали, как начать использовать ненужный Raspberry Pi Pico, "измерьте" температуру с помощью мигающего светодиода.

У каждого новичка рано или поздно возникает необходимость увеличить количество портов ввода-вывода для своего проекта и МК. В моем случае — ESP32 devboard. По крайней мере, на ней все тестировалось, а расширение портов планировалось на кастомной плате с тем же модулем esp32-WROOM на борту. В детали схемотехники и распиновки для моего случая вдаваться не будем, тема статьи — реализация клавиатуры на SN74HC165N в Arduino-фреймворке для esp32 с использованием функционала freeRTOS в проекте (т.е. будем писать код с планировщиком и задачами, а не в одном цикле, так же известном как «Round Robin»).
Если вы уже добрались до freeRTOS, думаю, как подключать кнопку и проводки на breadboard мне объяснять вам не требуется, поэтому кратко и по делу: расскажу, как получилось у меня. Решение, наверное, не оптимальное — буду рад услышать ваше мнение, если получилось сделать лучше. Работаю над своим первым проектом в электронике. В свое время не нашел подходящей информации на эту тему, что и сподвигло меня на написание статьи.
Полный код примера:
В программировании микроконтроллеров новые сборки появляются каждый день.
Какие-то сборки уходят в релиз, а какие-то в циркулируют на разных электронных платах внутри предприятия.
Как отличать прошивки между собой? Как понять, какая прошивка новее, а какая старее?
Проблема в том, что вручную обновлять номер версии прошивки очень утомительно.
В тексте представлен механизм автоматического увеличения версии прошивки

А именно, мы будем добавлять отличную систему Сeedling. Данная система содержит в себе сразу два инструмента – Unity – непосредственно для проведения и написания тестов и CMock для генерации объектов-заглушек. Но самая большая заслуга данного пакета – простота во всех аспектах – начиная от генерации тестируемых модулей и до релиза проекта. Использование Сeedling превращает рутинное TDD (Разработка через тестирование) или TLD(если захочется так) в обычный рабочий процесс.

Чем хорош FPGA-хаб на Хабре это еще и тем что тема протокола valid/ready время от времени тут всплывает. И это действительно важно так как valid/ready является одним из основных протоколов организации управления потоком (flow-control). Понимание valid/ready для микроархитектора так же необходимо как необходимо понимание закона Ома электрику.
На прошлом занятии мы отработали концепцию очереди FIFO на микроархитектурном тренажере - hdlgadgets. В этот раз мы возьмем два FIFO буфера (которые образуют конвейер с valid/ready рукопожатиями) и будем менять flow-control логику конвейера.
Мы покажем что valid/ready это не только механизм передачи данных от одной очереди к другой, но еще и метод для организации разного рода логического функционала между очередями.
Если до этого момента вы не сталкивались с протоколом valid/ready, то будете приятно удивлены как легким движением руки (а если точнее, написанием пары строк на верилоге) мы можем реализовывать разного рода функционал взяв за основу конвейер из двух FIFO.

Для настройки спутникового телевидения необходимо управлять диапазоном конвертера(LNB). Для переключения диапазона используется управляющий сигнал 22 кГц. В статье описаны два варианта синтеза сигнала управления, соответствующего требованиям протокола управления спутниковым оборудованием.

ISO26262 это международный текст, который объясняет как создавать безопасный и высоконадежный встраиваемый софт для мотоциклов, автомобилей, грузовиков и автобусов.
В этом тексте я попробовал разобраться с тем как понять автомобильный стандарт функциональной безопасности ISO26262 в той части, которая относится к требованиям к программному обеспечению (часть 6).
-----
Это вторая из трех частей (ссылка на первую), описывающих развитие процесса обучения инженеров АСУТП. Целью всех трех статей является попытка осмыслить подготовку инженеров АСУТП в ВУЗе (какая была, и какая есть сейчас), и обсудить с сообществом хабра, какой она должна быть в будущем. Каким образом ее можно актуализировать.
В этом тексте я написал про свой опыт поездки на это мероприятие из России в Израиле. Написал немного про Израиль и про само мероприятие тоже.
Разработчик микроконтроллеров Nordic Semiconductor в этом году провели целую компанию мастер классов по всей Eвропе про свои новые продукты.

В этом тексте представлены атрибуты хорошего и простого канального Master-Slave протокола для пакетного обмена информацией между устройствами на общей шине таких как RS485, CAN, LoRa, BLE.
Несмотря на то, что есть канальные протоколы ModBus, DLMS, RDS, UBX, NEC, Pelco-D, yModem, многие компании всё же придумывают собственный канальный протокол для взаимодействия между своими электронными платами. Тут представлены общие атрибуты таких доморощенных протоколов.