Skip to content

FreeBSD драйвер для приёмника кодов с пульта управления 433МГц (или 315 МГц)

FreeBSD kernel driver for gpio based remote control codes receiver. Я рад представить свой новый FreeBSD драйвер для радиомодуля MX-RM-5V. Хочу заострить внимание, что это приёмник радио сигнала - моя задача была именно в получении кода нажатой кнопки с пульта управления и выполнения соответствующей этому коду задачи. Драйвер, как раз, и занимается получением и декодированием радио импульсов до того момента, пока не сочтёт, что получилось что-то похожее на RC-код. Поиском соответствующей задачи и её выполнением будет заниматься отдельный сервис (aka daemon), который большую часть времени проводит в ожидании события kevent (или poll) от драйвера. Получение данного события для демона означает, что у драйвера для него есть новый код, который можно считать непосредственно с символьного устройства драйвера или с помощью вызова ioctl(). В моём случае, пара драйвер и демон, служит для ручного включения и выключения света и аэрации аквариума, которые в обычном режиме управляются по расписанию моим OrangePI Zero. "Апельсинка" скрыта от посторонних глаз за аквариумом, а для ручного управления используется 4х-кнопочный пульт rf-433МГц от китайских настенных выключателей "miniTiger", закреплённый в распечатанном на 3D-принтере держателе.
Продолжить чтение "FreeBSD драйвер для приёмника кодов с пульта управления 433МГц (или 315 МГц)"

И снова про 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"

Температура процессора на Orange Pi Zero под FreeBSD

Внимание!!!
С версии r354736 разработчиками дополнен оверлей sun8i-h3-sid.dtso и добавлен оверлей sun8i-h3-ths.dtso. Для чипсета h2+, по-прежнему, рекомендуется исправить объявление совместимости с "allwinner,sun8i-h3" на "allwinner,sun8i-h2-plus", предварительно скопировав файлы с новыми именами. Статья утратила актуальность.


Просто не смог пройти мимо интересной информации...

Угнетающе неторопливое реализация возможностей SoC-платформ под FreeBSD стимулирует поиск крупиц информации по этой тематике в поисковых системах. Уж не помню, что я искал, но натолкнулся на обсуждение патча к дереву устройств (DT), предлагаемого FreeBSD коммитером по имени Emmanuel Vadot, для объявления устройства aw_thermal - датчика температуры для ряда процессоров семейства Allwinner. Несмотря на десяток неудачных попыток реализовать DT-оверлей, используя патчи разной достоверности от разных авторов, этот патч все-же показался интересным тем, что, вдобавок к примелькавшимся описаниям устройства aw_thermal, содержал дополнительный фрагмент кода к устройству aw_sid. Вот этот фрагмент:
CODE:
--- a/arch/arm/boot/dts/sun8i-h3.dtsi +++ b/arch/arm/boot/dts/sun8i-h3.dtsi @@ -145,6 +145,25 @@   sid: eeprom@1c14000 {   compatible = "allwinner,sun8i-h3-sid";   reg = <0x1c14000 0x400>; + + ths_calib: calib@234 { + reg = <0x234 0x2>; + }; + }; + + ths: thermal_sensor@1c25000 { + compatible = "allwinner,sun8i-h3-ths"; + reg = <0x01c25000 0x100>; + interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&ccu CLK_BUS_THS>, <&ccu CLK_THS>; + clock-names = "apb", "ths"; + resets = <&ccu RST_BUS_THS>; + reset-names = "apb"; + #thermal-sensor-cells = <0>; + status = "disabled"; + + nvmem-cells = <&ths_calib>; + nvmem-cell-names = "ths-calib";   };     mali: gpu@1c40000 {


Thanks to Emmanuel Vadot for this thread: [PATCH 2/7] ARM: dts: sun8i: h3: Add thermal sensor controller node

Продолжить чтение "Температура процессора на Orange Pi Zero под FreeBSD"

Дисплей tm1637 на FreeBSD

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


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