Skip to content

И снова про tm1637 на FreeBSD

tm1637 4-digit 7-segment displayСегодня снова речь пойдёт про недрогой 7 сегментный дисплей tm1637, пригодный для отображения 4х цифр и двоеточия, характерного для электронных часов. Особенность дисплея в том, что он не следует стандарту i2c, хотя подключение его к GPIO шине и протокол передачи данных по ней очень похож.
Несмотря на то, что я уже написал библиотеку для tm1637 на FreeBSD и в целом она меня вполне устраивает (два года на этом дисплее моя "малинка" показывала время), отчасти из-за некоей обиды, что такое простое устройство для простого общения с ним требует весьма непростых усилий, а отчасти из-за желания попробовать свои силы, я решил написать простенький драйвер для символьного устройства, на которое можно было бы просто отправить строку цифр.
Теперь же, с помощью этого драйвера, отображение на этом дисплее возможно и из PHP, и из Python, и, даже, из bash с помощью команды echo.

Продолжить чтение "И снова про tm1637 на FreeBSD"

FreeBSD на armv7. Подключение датчиков dht11/dht22 и ds18b20

АквариумИдея подключить термометр к arm-платформе, да ещё и под управлением ОС FreeBSD появилась у меня в процессе автоматизации управления аквариумом. Не буду углубляться в причины выбора FreeBSD, тогда как выбор платформы мне видится очевидным большинству (невысокая стоимость, удобство разработки, привычное ПО, многообразие доступных датчиков, да и моду на SoC следует упомянуть). Собрав воедино Orange PI Zero, 4-хканальное реле на 250в и четыре розетки, написав ПО на python для управления ими по 7-дневному расписанию и визуализировав управляемые события с помощью веб-связки nginx + php-fpm я с удивлением осознал "... что это хорошо" (копирайт не указываю). Захотелось добавить рюшечек и цветочков. Отображение температуры воды в банке стало одной из таких рюшечек. Беда в том, что информация о том, как подключить разнообразные устройства к ПК под FreeBSD значительно глубже закопана и найти её сложнее, чем аналогичные примеры и даже уроки по подключению устройств к Linux Armbian и Raspbian.
Продолжить чтение "FreeBSD на armv7. Подключение датчиков dht11/dht22 и ds18b20"

Дисплей tm1637 на FreeBSD

Всё началось с покупки нового телевизора...
С полки исчезла DVB-T2 приставка, почти ненужная, но Чемпионат по футболу смотрел именно на ней! Через пару-тройку дней, когда интерес к новым возможностям телевизора угас, я осознал, что с приставкой потерял нечто важное - часы! Простенькие электронные часы на лицевой панели приставки, самосинхронизирующиеся как-то там, всегда на виду... были... Но, вроде бы, не всё безнадёжно - рядом на полке стоит мой... эээ... мини-сервер точного времени для домашней сети - Raspberry Pi 2 c GLONASS-приёмником и под управлением FreeBSD (и кому, как не ему, знать точное время?), а в ящике стола завалялся 7-сегментный цифровой дисплей tm1637 0.36" с двумя точками как на часах и четырьмя контактами (рублей 50 за него отдал на Aliexpress.com)... Четыре проводка с F-F-контактами для соединения с "малинкой" тоже найдутся.
Посмотрим, что мы с этим можем сделать...


Продолжить чтение "Дисплей tm1637 на FreeBSD"

FreeBSD и device tree overlays

Хочу рассказать простыми словами, т.е., как дилетант для другого дилетанта, то, что пришлось вычитывать, додумывать и подбирать достаточно длительное время: как собрать и использовать device tree overlays на SOC компьютере в ОС FreeBSD.

Для начала о програмно-аппаратном обеспечении:

CODE:
$ uname -a FreeBSD rpi2 12.0-CURRENT FreeBSD 12.0-CURRENT #8 r328806: Sat Feb  3 08:06:35 +04 2018     root@host.domain:/usr/obj/usr/src/arm.armv7/sys/RPI2_CUSTOM  arm

Т.е., это Raspberry PI 2 с 32-разрядной архитектурой armv7 под управлением ОС FreeBSD 12.0-CURRENT ревизия r328806 с кастомным ядром, собранной на другом ПК host.domain с архитектурой amd64 с помощью кросскомпиляции (Как это сделать, худо бедно, но описано в предыдущей статье).
Дисковое пространство организовано с помощью двух разделов (msdos и ufs):
CODE:
$ mount /dev/mmcsd0s2a on / (ufs, local, noatime, soft-updates) devfs on /dev (devfs, local) /dev/mmcsd0s1 on /boot/msdos (msdosfs, local, noatime) tmpfs on /tmp (tmpfs, local) procfs on /proc (procfs, local) fdescfs on /dev/fd (fdescfs)

На разделе msdos лежат файлы, необходимые для загрузки ОС с помощью u-boot, а на ufs - собственно, сама операционная система.
Причина, по которой производились изыскания, это желание сократить связанное с добавлением дополнительных устройств внесение изменений в системный исходный код ОС, а использовать для этого "понятный и доступный" механизм по подключению оверлеев (или, плагинов) к существующему дереву устройств, в сочетании с условностями и ограничениями реализации этого "понятного и доступного" механизма во FreeBSD на текущий момент.
Итак...
Продолжить чтение "FreeBSD и device tree overlays"

Обновление FreeBSD на Raspberry Pi 2

В сети есть много руководств по созданию образа MicroSD с FreeBSD для Raspberry Pi 2. Это очень полезный опыт в плане разворачивания этой ОС из исходников, со своим ядром (Да! Там и для ARM есть что менять!). Но, для меня уже ясны пара моментов: во-первых, обновление ОС через чистый образ диска - не самая лучшая затея в плане сохранения предыдущих наработок на RPI2. Если у Вас не релизная ветка, то этот вопрос вас волнует. Во-вторых, не очевидно, но техника, используемая для создания образа диска, с небольшой коррекцией прекрасно подходит и для обновления ОС, как мы это обычно делаем на "взрослых" платформах.
Давайте определимся с некоторыми необходимыми пунктами:
  • Подразумеваем, что у Вас уже есть установленная FreeBSD на Raspberry PI 2, например, с помощью готового образа с оффициального сайта FreeBSD.org
  • Сборка мира и ядра производится кросс-компиляцией на той самой "взрослой" платформе (Она же "хост");
  • Для сборки мы будем использовать дерево исходников /usr/src на хосте. Оно же у Вас есть, правда?
  • Обновление производится на хосте на смонтированный диск RPI2 (MicroSD). Я для себя отвел папку /mnt/rpi2;
  • Для процесса инсталляции на MicroSD требуется установить порт sysutils/u-boot-rpi2;
  • Исходя из вышеупомянутых учебников по сборке образа, у нас на MicroSD два раздела: / (/dev/da0s2a) ufs2 и /boot/msdos (/dev/da0s1) msdosfs. При условии, что флешка единственная, предполагаем, что она монтируется как /dev/da0.
Приступим.

Продолжить чтение "Обновление FreeBSD на Raspberry Pi 2"