BH1750 это простой цифровой чип датчика освещения с I2C интерфейсом от японской компании Rohm Semiconductor.
В этом тексте я представил обзор этого чипа. Перечислил его плюсы и минусы и проверил работу датчика в реальных условиях. Также представил возможные идеи устройств на основе датчика освещенности.
Обзор микросхемы DS3231. Это часы реального времени со встроенным будильником и термометром и даже кварцевым резонатором. В этот тексте я расскажу об особенностях программирования этой микросхемы.
PCB Black Pill V2.0 - эта дешевая плата-малютка которая подходит для прототипирования электронных устройств.
В этом тексте я написал с какой стороны подходить к плате Black Pill V2.0. Перечислил особенности аппаратной реализации и перечислил плюсы и минусы этой платформы.
В машиностроении есть такие детали, которые очень утомительно чертить вручную. Это, например, шестерни или диск оптического энкодера. Не всякий бесплатный софт способен сгенерировать симметричный и предсказуемый паттерн по кругу.
Однако есть языки программирования для черчения. Вот, например, Asymptote: The Vector Graphics Language отличный вариант для авто генерации чертежей.
Нам очень повезло, что Земля вращается вокруг своей оси!
Вращение Земли вокруг своей оси вызывает центробежную силу, которая противостоит гравитации. Поэтому ускорение свободного падения увеличивается на полюсах и уменьшается на экваторе.
На основе этого явления можно сконструировать навигатор, который по измеренному значению g скажет широту местности.
В этом тексте я представил обзор контроллера графических монохромных OLED экранов SSD1306. В этом тексте я напишу с какой стороны следует подходить к этому ASIC(у). Перечислю достоинства и недостатки дисплея SSD1306.
Есть один остроумный и умозрительный способ измерять углы: при помощи поляризаторов.
Всем известен физический эффект поляризации. Это когда берут 2 поляризационные фильтра от фотоаппарата, накладывают их друг на друга и проворачивают. В результате свет то проходит то не проходит сквозь cэндвич из пластинок.
Насколько реально сделать датчик угла на основе закона Малюса?
Наверное сложно поверить, что такой косный электротехнический компонент как фоторезистор может в какой-то мере заменить дорогущий цифровой санкционный навигационныйприемник. Но это в самом деле так.
Если взять микроконтроллер, к ADC пину подключить фоторезистор, целый день непрерывно записывать на SD карту показания солнечной освещенности с вкраплениями временных отметок из часов реального времени RTC, то спустя 24 часа можно оценить широту (длительность светового дня) и долготу (фаза светового дня).
Отладочная плата NRF5340-DK поддерживает программирование и пошаговую отладку внешних плат с микроконтроллерами серий nRF51, nRF52, nRF53. В том числе модули BT40. В этом случае отладочная плата NRF5340-DK выступает как программатор SEGGERJ-Link. Для этого на PCB NRF5340-DK заложен отдельный интерфейсный микроконтроллер (U2) с тремя SWD шинами (к слову тот же чип, что и сам target NRF5340 (U1)).
В этом тексте представлена методичка про то, как прошивать внешние дикие платы отладочной платой NRF5340-DK.
Настал первый случай за 12 лет, когда в программировании микроконтроллеров понадобились бинарные деревья поиска.
В этом тексте поговорим о том как можно построить эффективную программную реализацию энергонезависимой Key-Value Map(ки) над дешевой SPI NOR Flash для микроконтроллерных проектов. Суть проста. Нужна NVRAM.
Обзор Off-Chip SPI-NOR Flash памяти на примере микросхемы MX25R6435FZNI.
Число хранилище для электронных плат. Если расшифровывать маркировку, то внутри 8MByte NOR-Flash память с SPI интерфейсом, питанием 1.65V-3.6V, в корпусе 8-WSON и индустриальном диапазоне переносимых температур (-40°C to 85°C).
Бывает ситуация, когда надо чтобы прошивка или любой другой артефакт сам сказал в каком состоянии был GIT репозиторий с кодовой базой, когда эту прошивку собирали. Надо как-то добавить в text/rodata сегмент памяти такие метаданные как "из какой ветки собрали прошивку", "какой была контрольная сумма последнего коммита".
Данная подсказка может существенно помочь при сопровождении ПО.
В тексте представлен скрипт, который делает эту работу.
Как вы думаете сколько строк кода надо для подписи прошивки?
Существуют UWB радио трансиверы, которые умеют измерять точное время отправки и приема радио пакетов. Под словом "точно" подразумевается, что с дискретизацией 15ps. В качестве примера можно привести микросхему DW1000. TimeStamp(ы) очень полезная функция так как открывает дорогу для измерения расстояния между трансиверами.
Однако сам по себе чип DW1000 на аппаратном уровне не умеет вычислять TOF, которое фигурирует в формуле вычисления расстояние между трансиверами.
Вычисление TOF это чисто программная работа, которая должна осуществляться на уровне Firmware.
В этом тексте представлена инструкция настройки ToolChain(а) для работы с микроконтроллером CC26x2 при помощи языка программирования С и компилятора GCC. Сборка осуществляется прямо из Makefile(ов).
Тут же представлена инструкция для настройки пошаговой отладки в консоли Windows.
В принципе, если вы собираете из Makefile, то вам всё равно какой там микроконтроллер и какого он вендора. Для добавления поддержки очередного MCU достаточно написать всего один *.ld и один *.mk файлик.
Во многом по этому сборка из Makefile является предпочтительнее, когда в организации много разнообразного оборудования на разных МК (или просто много сборок) и одна переносимая кодовая база на всё.
В программировании микроконтроллеров нет как таковой общепринятой градации на Junior->Middle->Senior. Не сложилось.
Давайте попробуем вместе разобраться, где же проходит водораздел между Junior->Middle->Senior программистом МК и что справедливо требовать от каждого из них?
Далее речь пойдет в основном про программирование микроконтроллеров. Тут не будет затронут Embedded Linux, FPGA разработка.
Записали прошивку через интерфейс SWD/JTAG и... ничего не происходит. HeartBeat LED не мигает. Логи в UART(е) не появляются. CLI не отвечает. Очевидно, что прошивка где-то зависла.
Что же делать? Как понять, где ошибка?
Тут выручит пошаговая GDB отладка с подсветкой в eclipse.
Настал третий за 12 лет случай, когда в профессии программист-микроконтроллеров понадобилось вспомнить школьную математику. В этом тексте я представил перевод AppNote(а) "The mathematics of two-way ranging". Также добавил свои комментарии в те места, которые неочевидны при первом прочтении.
Тема нужна для определения расстояния между двумя UWB радио трансиверами, которые могут определять моменты времени прихода и отправки радиоволны. Такое умеют делать UWB трансиверы, например чип DW1000 и DW3000.