37. Python UIO RGB LED Controller

37.1. Описание

Этот Python-скрипт позволяет управлять RGB-светодиодом, подключённым к Raspberry Pi, через интерфейс UIO (Userspace I/O). Пользователь может выбирать цвета из терминала, а программа управляет GPIO напрямую, используя отображение памяти через /dev/uio0.

37.2. Используемые GPIO (BCM)

  • GPIO 16 – Красный

  • GPIO 20 – Зелёный

  • GPIO 21 – Синий

Эти пины должны быть сконфигурированы в Device Tree и доступны через UIO-драйвер.

37.3. Зависимости

  • Raspberry Pi с UIO-драйвером (rgb_uio.ko)

  • Корректно описанный фрагмент в .dts

  • Python 3.x

  • Доступ к /dev/uio0 (требует sudo)

37.4. Поддерживаемые команды

red      - только красный
green    - только зелёный
blue     - только синий
yellow   - красный + зелёный
cyan     - зелёный + синий
magenta  - красный + синий
white    - все три цвета
off      - выключить все
exit     - выход из программы

37.5. Как работает

  • Скрипт открывает /dev/uio0 и отображает регистры GPIO в память.

  • Через mmap получаем доступ к регистрам GPSET0 и GPCLR0.

  • Команда пользователя (например, green) управляет масками GPIO и включает нужные пины.

  • Все цвета сначала сбрасываются, затем активируются нужные.

37.6. Пример запуска

sudo python3 rgb_uio_control.py

37.7. Пример диалога

RGB UIO-контроллер
Команды: red, green, blue, yellow, cyan, magenta, white, off, exit
Выберите цвет: red
>> Установлен цвет: RED
Выберите цвет: yellow
>> Установлен цвет: YELLOW
Выберите цвет: off
>> Установлен цвет: OFF
Выберите цвет: exit
Выход.

37.8. Ошибки и отладка

  • Permission denied — используйте sudo, доступ к /dev/uio0 только для root.

  • /dev/uio0: No such file or directory — UIO-драйвер не загружен или неправильно описан DT.

  • Не горит светодиод — проверьте провода, маски GPIO, соответствие .dts и python.

37.9. Авторы

Разработка: KONTAKT’S LAB Поддержка: ChatGPT (OpenAI) Версия: 1.0