Плата расширения Troyka HAT поможет подключить модули форм-фактора Troyka к одноплатникам Raspberry Pi без дополнительных проводов и макетных плат.
Платформа Troyka HAT также расширит возможности малинки, ведь у неё на борту расположен I²C-расширитель портов на микроконтроллере STM32F030F4P6 с вычислительным ядром ARM Cortex M0. Контроллер даёт восемь дополнительных пинов ввода-вывода с аппаратной поддержкой 12-битного АЦП и 16-битного ШИМ.
Дисплей выполнен специально для компьютеров Raspberry Pi. В качестве примера приведем настройку на малинке Pi 4 Model B.
Для старта необходимо подключить железо и выполнить программную настройку.
При использовании платы расширения Troyka HAT не подключайте питания через разъём USB на Raspberry Pi.
sudo i2cdetect -y 1
Сканер должен найти адрес
, который является I²C-адресом расширителя портов по умолчанию.pip3 install troykahat
На этом настройка закончена, теперь смело переходите к экспериментам.
Имена пинов на Troyka HAT относятся к нумерации Wiring Pi
, которая отличается от стандартной нумерации BCM
, как например в стартовом наборе Малина. Для удобства в примерах ниже будем использовать именно нумерацию Wiring Pi
. А все подробности распиновки вы можете найти в соответствующем разделе.
Для начала мигнём светодиодом на группе контактов «Wiring Pi IO».
# Библиотека для работы с платой Troyka HAT. import troykahat # Библиотека для работы с функциями времени. from time import sleep # Назначаем константное имя пину 7 из группы "Wiring PI IO", # Подключите светодиод к этому пину. PIN_WP_LED = 7 # Создаём объект wp для работы с пинами, # помеченными как «Wiring Pi IO» на плате Troyka HAT. # Это пины, подключенные напрямую к Raspberry Pi через его GPIO-разъём. wp = troykahat.wiringpi_io() # Конфигурируем контакт "PIN_WP_LED" в режим выхода. wp.pinMode(PIN_WP_LED, wp.OUTPUT) while True: # Зажигаем светодиод wp.digitalWrite(PIN_WP_LED, True) # Ждём 500 мс sleep(0.5) # Гасим светодиод wp.digitalWrite(PIN_WP_LED, False) # Ждём 500 мс sleep(0.5)
После запуска скрипта, светодиод начнёт мигать раз в пол секунды.
Продолжим, теперь мигнём светодиодом на группе контактов «Analog IO».
# Библиотека для работы с платой Troyka HAT. import troykahat # Библиотека для работы с функциями времени. from time import sleep # Назначаем константное имя пину 7 из группы "Analog IO", # Подключите светодиод к этому пину. PIN_AP_LED = 7 # Создаём объект ap для работы с пинами, # помеченными как «Analog IO» на плате Troyka HAT. # Это пины, подключенные к встроенному на плате I²C расширителю # на микроконтроллере STM32F030F4P6. ap = troykahat.analog_io() # Конфигурируем контакт "PIN_AP_LED" в режим выхода. ap.pinMode(PIN_AP_LED, ap.OUTPUT) while True: # Зажигаем светодиод ap.digitalWrite(PIN_AP_LED, True) # Ждём 500 мс sleep(0.5) # Гасим светодиод ap.digitalWrite(PIN_AP_LED, False) # Ждём 500 мс sleep(0.5)
После запуска скрипта, светодиод начнёт мигать раз в пол секунды.
Соединим два скрипта: один светодиод подключим к группе контактов «WiringPi IO», а второй — к «Analog IO».
# Библиотека для работы с платой Troyka HAT. import troykahat # Библиотека для работы с функциями времени. from time import sleep # Назначаем константное имя пину 7 из группы "Wiring PI IO", # Подключите красный светодиод к этому пину. PIN_WP_LED = 7 # Назначаем константное имя пину 7 из группы "Analog IO", # Подключите зеленый светодиод к этому пину. PIN_AP_LED = 7 # Создаём объект wp для работы с пинами, # помеченными как «Wiring Pi IO» на плате Troyka HAT. # Это пины, подключенные напрямую к Raspberry Pi через его GPIO-разъём. wp = troykahat.wiringpi_io() # Создаём объект ap для работы с пинами, # помеченными как «Analog IO» на плате Troyka HAT. # Это пины, подключенные к встроенному на плате I²C расширителю # на микроконтроллере STM32F030F4P6. ap = troykahat.analog_io() # Конфигурируем контакт "PIN_WP_LED" в режим выхода. wp.pinMode(PIN_WP_LED, wp.OUTPUT) # Конфигурируем контакт "PIN_AP_LED" в режим выхода. ap.pinMode(PIN_AP_LED, ap.OUTPUT) while True: # Зажигаем светодиод на контакте "PIN_WP_LED" wp.digitalWrite(PIN_WP_LED, True) # Зажигаем светодиод на контакте "PIN_AP_LED" ap.digitalWrite(PIN_AP_LED, True) # Ждём 500 мс sleep(0.5) # Гасим светодиод на контакте "PIN_WP_LED" wp.digitalWrite(PIN_WP_LED, False) # Гасим светодиод на контакте "PIN_AP_LED" ap.digitalWrite(PIN_AP_LED, False) # Ждём 500 мс sleep(0.5)
После запуска скрипта, светодиоды начнут мигать раз в пол секунды.
В продолжении соберем простой кнопочный выключатель.
# Библиотека для работы с платой Troyka HAT. import troykahat # Назначаем константное имя пину 7 из группы "Wiring PI IO", # Подключите светодиод к этому пину. PIN_WP_LED = 7 # Назначаем константное имя пину 22 из группы "Wiring PI IO", # Подключите кнопку к этому пину. PIN_WP_BUTTON = 22 # Создаём объект wp для работы с пинами, # помеченными как «Wiring Pi IO» на плате Troyka HAT. # Это пины, подключенные напрямую к Raspberry Pi через его GPIO-разъём. wp = troykahat.wiringpi_io() # Конфигурируем контакт "PIN_WP_LED" в режим выхода. wp.pinMode(PIN_WP_LED, wp.OUTPUT) # Конфигурируем контакт "PIN_WP_BUTTON" в режим входа. wp.pinMode(PIN_WP_BUTTON, wp.INPUT) while True: # Если кнопка нажата if not wp.digitalRead(PIN_WP_BUTTON): # Зажигаем светодиод wp.digitalWrite(PIN_WP_LED, True) # Если кнопка отжата else: # Гасим светодиод wp.digitalWrite(PIN_WP_LED, False)
Если кнопка нажата — светодиод загорится, а если отжата — погаснет.
Далее соберем светильник с управляемой яркостью. К сожалению в Raspberry Pi всего два канала ШИМ, а АЦП вовсе отсутствует. Однако порты «Analog IO» на плате Troyka HAT с отдельным контроллером подарят малинке 8 пинов с поддержкой ШИМ и АЦП.
# Библиотека для работы с платой Troyka HAT. import troykahat # Назначаем константное имя пину 6 из группы "Analog IO", # Подключите светодиод к этому пину. PIN_AP_LED = 6 # Назначаем константное имя пину 3 из группы "Analog IO", # Подключите потенциометр к этому пину. PIN_AP_POT = 3 # Создаём объект ap для работы с пинами, # помеченными как «Analog IO» на плате Troyka HAT. # Это пины, подключенные к встроенному на плате I²C расширителю # на микроконтроллере STM32F030F4P6. ap = troykahat.analog_io() # Конфигурируем контакт "PIN_AP_LED" в режим выхода. ap.pinMode(PIN_AP_LED, ap.OUTPUT) # Конфигурируем контакт "PIN_AP_INPUT" в режим входа. ap.pinMode(PIN_AP_POT, ap.INPUT) while True: # Считываем данные с потенциометра potValue = ap.analogRead(PIN_AP_POT) # Указываем полученные данные в качестве яркости светодиода ap.analogWrite(PIN_AP_LED, potValue)
После запуска скрипта, яркость светодиода будет меняться в зависимости от перемещения ползунка слайдера.
Выйдем за рамки светодиодной робототехники. Сделаем аналоговую регулировку громкости одноплатника Raspberry Pi.
Установите библиотеку pyalsaaudio для контроля уровня громкости:
pip3 install pyalsaaudio
# Библиотека для работы с платой Troyka HAT. import troykahat # Библиотека для контроля уровня громкости import alsaaudio # Назначаем константное имя пину 3 из группы "Analog IO", # Подключите потенциометр к этому пину. PIN_AP_POT = 3 # Создаём объект ap для работы с пинами, # помеченными как «Analog IO» на плате Troyka HAT. # Это пины, подключенные к встроенному на плате I²C расширителю # на микроконтроллере STM32F030F4P6. ap = troykahat.analog_io() # Создаём объект для работы с регулировкой громкости mixer = alsaaudio.Mixer('Master') while True: # Считываем данные с потенциометра potValue = ap.analogRead(PIN_AP_POT) # Умножаем полученное значение со слайдера на 100 # и преобразовываем переменную float в int volume = int(potValue * 100) # Устанавливаем громкость mixer.setvolume(volume)
Громкость в операционной системы будет меняться в зависимости от перемещения ползунка слайдера.
Raspberry Pi обладает всего двумя каналами ШИМ и не имеет аналого-цифрового преобразователя. Troyka HAT решает проблему аналоговых интерфейсов через встроенный микроконтроллер STM32F030F4P6 на архитектуре ARM Cortex M0+, который получает команды от малинки по шине I²C и дальнейшие операции по железу берет на себя. Ножки микроконтроллера выведены на соответствующую колодку Troyka-контактов I²C расширителя.
На плате установлены группы штыревых Troyka-контактов «S-5V-G»:
Отдельными пинами на плате выведены три группы контактов аппаратного интерфейса I²C и две группы SPI.
Колодки позволяют быстро подключать типовые Troyka-модули к малинке без дополнительных проводов и макетных плат. Подробности про сигналы и интерфейсы Troyka HAT читайте в разделе распиновка.
Пины I²C расширителя выведены на отдельную группу Troyka-контактов «S-V-G»:
Колодки позволяют быстро подключать типовые Troyka-модули к малинке без дополнительных проводов и макетных плат. Подробности про сигналы и интерфейсы Troyka HAT читайте в разделе распиновка.
На линии питания I²C-расширителя есть возможность выбора питания установкой джампера:
V
будет присутствовать напряжение 5 вольт. Режим пригодится при подключении модулей с рабочим напряжением 5 вольт, например микросервопривод FS90 или ультразвуковой дальномер SR-04.V
— 3,3 вольта. Т.к. микроконтроллер ожидает принимать диапазон входного напряжения от 0 до 3,3 вольт, то режим полезен при подключении аналоговых сенсоров, которые возвращают напряжение от 0 до значения на линии питания, например модуль потенциометр или датчик освещённости.Имя светодиода | Назначение |
---|---|
L23 | Светодиод контакта 23 по нумерации WiringPi. При подачи высокого уровня — светодиод загорается, при низком — гаснет. |
ACT | Мигает при обмене данными между одноплатником Raspberry Pi и I²C расширителям портов. Если светодиод не мигает, скорее всего микроконтроллер не прошит. |
Коннектор DC Barrel Jack служит для подключения внешнего источника напряжения в диапазоне от 7 до 15 вольт, который будет питать одновременно Troyka HAT и подключенную Raspberry Pi. Если запитать устройство от порта Raspberry Pi, то напряжение на Troyka-контактах Raspberry Pi будет отсутствовать.
При использовании платы расширения Troyka HAT не подключайте питания через разъём USB на Raspberry Pi.
Понижающий импульсный преобразователь TPS565208 обеспечивает питание Troyka HAT и подключенной Raspbeery Pi при напряжения через разъём питания DC. Диапазон входного напряжения от 7 до 15 вольт. Выходное напряжение 5 В с максимальным выходным током 5 А.
На плате Troykaa HAT расположена микросхема EEPROM-памяти AT24C32D, которая содержит информацию о производителе платы, настройке GPIO и описание подключенного оборудования, которое позволяет Linux автоматически загружать необходимые драйверы.
Микросхема ID EEPROM одно из основных требований компании Raspberry Pi Foundation в спецификации производств плат расширения с именем Raspbery Pi HATs.
Troyka HAT подключается к одноплатникам Rasperry Pi сверху через входной 40-пиновый разъём.