ANAVI Light pHAT — плата расширения, оптимально подходящая для Raspberry Pi Zero (W/WH), но также совместимая с любыми другими платами Raspberry Pi с 40-контактным разъемом, способная управлять 12-вольтовой светодиодной лентой RGB и датчиками. Краудфандинг проекта недавно успешно завершен на CrowdSupply при поддержке 82 участников, но плату или наборы по-прежнему доступны для предзаказа от $25.
Разработчик Леон АНАВИ ранее предоставил стартовый набор для тестирования, и на этих выходных появилась возможность проверить базовые функции платы.
Комплект включает саму плату pHAT, метровую светодиодную ленту RGB, I2C-датчик и набор стикеров.

Датчик основан на сенсоре освещенности BH1750.
Плата Light pHAT содержит 4-контактный 12V/RGB синий клеммник, EEPROM, три I2C-разъема, 3.3V UART-коннектор для доступа к последовательной консоли (отладка/выполнение команд) и 3-контактный разъем для ИК-датчика слева.
Для работы платы требуется 12-вольтовый источник питания, а на нижней стороне расположен только 40-контактный гнездовой разъем для подключения к выбранной плате Raspberry Pi.
Для тестирования выбрана плата Raspberry Pi 2 с предустановленной Raspbian 8 (Jessie), ранее использовавшейся с ANAVI Infrared pHAT . Установка выполняется предельно просто без пайки:
- Установите плату на 40-контактный разъем RPi
- Подключите провода светодиодной ленты RGB к синему клеммнику и зафиксируйте прецизионной отверткой
- При необходимости добавьте I2C-датчик или ИК-датчик в соответствующие разъемы
- Расположите светодиодную ленту в «стратегической» позиции
В качестве примера размещения лента обернута вокруг шапки Санта-Клауса.
Перейдем к установке ПО, следуя инструкциям на Github . Требуется Raspbian, и учитывая выход Debian 9 для RPi после предыдущего тестирования, сначала выполнено обновление с Debian 8 до Debian 9, но из-за длительности процесса выбрана чистая установка Raspbian Stretch Lite с очисткой SD-карты.
Примечание: Raspbian теперь отключает SSH по умолчанию, поэтому для headless-конфигурации без последовательного подключения требуется активировать SSH, разместив файл ‘ssh’ (без расширения) в загрузочном разделе SD-карты (например, /boot/ssh). После подключения Ethernet доступ по SSH стал возможен.
После подключения к Raspberry Pi через SSH/терминал/HDMI можно обновить систему до последней версии и установить необходимые пакеты:
sudo apt update
sudo apt upgrade --fix-missing
sudo apt install -y git i2c-tools vim git-core python-dev python-rpi.gpio pigpio
Список пакетов немного отличается от указанного в wiki, поскольку Raspbian Lite по умолчанию не включает такие компоненты как pigpio, требующие ручной установки. После завершения запустим raspi-config:
sudo raspi-config
и в разделе Interfacing Options активируем I2C (P5) и опционально Serial (P6) при необходимости доступа к плате через последовательный терминал.
Теперь можно загрузить демон pigpio и включить красную подсветку:
sudo pigpiod
pigs p 9 255
отключить красную подсветку и включить синюю:
pigs p 9 0
pigs p 10 255
отключить синюю подсветку и включить зеленую:
pigs p 10 0
pigs p 11 255
Все функционирует корректно, что подтверждает исправность оборудования. Для управления светодиодной лентой потребуется собственное ПО, а в качестве примера Леоном предоставлена демонстрационная программа со случайной сменой цветов.
Для работы программы требуется WiringPi, поэтому загрузим и соберем код:
cd ~
git clone git://git.drogon.net/wiringPi
cd wiringPi
./build
Теперь доступно тестовое приложение на C для управления лентой через ШИМ:
cd ~
git clone https://github.com/AnaviTechnology/anavi-examples.git
cd ~/anavi-examples/anavi-light-phat/light-demo
make
./demo
Смотрите 2-минутную демонстрацию работы платы с выполнением базовых команд и запуском демо-программы.
Демонстрация управляет только светодиодной лентой RGB без задействования датчиков. Проверим обнаружение датчика освещенности:
sudo i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- 23 -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
Найден I2C-адрес 0x23. Соберем тестовое приложение, также написанное на C:
cd ~/anavi-examples/sensors/BH1750/c/
make
Результаты при выключенном освещении:
./BH1750
BH1750 Sensor Module
Light: 50 Lux
Результаты при включенном освещении:
./BH1750
BH1750 Sensor Module
Light: 117 Lux
Результаты при закрытии датчика рукой:
./BH1750
BH1750 Sensor Module
Light: 0 Lux
Исходный код функции получения значения освещенности компактен и понятен:
#include <wiringPi.h>
#include <wiringPiI2C.h>
#include "BH1750.h"
int getLux(int fd)
{
wiringPiI2CWrite(fd,0x10);
delay(LUXDELAY);
int word = wiringPiI2CReadReg16(fd, 0x00);
if (-1 == word)
{
return -1;
}
int lux=((word & 0xff00)>>8) | ((word & 0x00ff)<<8);
return lux;
}
Например, можно легко модифицировать демо-код RGB для активации светодиодной ленты только при значении освещенности ниже заданного порога. Это завершает вводное руководство, выполнение которого прошло гладко при следовании инструкциям на Github.
Для дальнейшего развития Леон добавил поддержку Home Assistant через дистрибутив Hassbian и работает над интеграцией настольной лампы IKEA GRÖNÖ с ANAVI Light pHAT (дополнительная цель).
Выражаем свою благодарность источнику, с которого взята и переведена статья, сайту cnx-software.com.
Оригинал статьи вы можете прочитать здесь.