Створіть інтернет-радіо – Raspberry Pi

Створіть інтернет-радіо – Raspberry Pi


Цей посібник є в книзі Raspberry Pi Press «Проста електроніка з GPIO Zero». Ця книга, оновлена ​​для останніх пристроїв Raspberry Pi, містить усю інформацію, необхідну для створення електронних проектів за допомогою контактів GPIO Raspberry Pi. Закодовані на Python з бібліотекою GPIO Zero, проекти включають світлодіодні ліхтарі, сигналізацію руху, далекомір, лазерну мережу та робота Raspberry Pi.

в Офіційний журнал Raspberry Pi №167, ми використали трюк із конденсатором, щоб отримати показання з аналогового датчика. Найкращий і найнадійніший спосіб для Raspberry Pi виявити аналогові входи — це використовувати мікросхему аналого-цифрового перетворювача (АЦП), наприклад MCP3008, яка пропонує вісім вхідних каналів для підключення датчиків та інших аналогових входів. Це не тільки усуває потребу в конденсаторі, але й дозволяє отримувати більш точні та миттєві показання в усьому діапазоні вихідних сигналів датчика.

У цьому підручнику ми підключимо потенціометр до MCP3008, щоб контролювати яскравість світлодіода, повертаючи ручку. Потім ми додаємо другий потенціометр і створюємо інтернет-радіо, використовуючи два потенціометри для зміни станції та регулювання гучності.

Створіть інтернет-радіо – Raspberry Pi
Фінальний раунд із двома банками

Увімкніть SPI

Аналогові значення з мікросхеми АЦП передаються на Raspberry Pi за допомогою протоколу SPI. Хоча це працює на GPIO Zero з коробки, ви можете отримати кращі результати, якщо ввімкнете повну підтримку SPI. По-перше, переконайтеся, що Python spidev пакет встановлено (він має бути за замовчуванням). Відкрийте вікно терміналу та введіть:

$ sudo apt install python3-spidev

Далі клацніть меню Raspberry Pi, виберіть Preferences і відкрийте Control Center, потім увімкніть SPI в розділі Interfaces. Натисніть OK і перезапустіть Raspberry Pi. Ви також можете використовувати інструмент командного рядка, запустивши sudo raspi-config з командного рядка перейдіть до параметрів інтерфейсу, увімкніть SPI та перезапустіть Raspberry Pi.

Підключіть АЦП

Як зазвичай, ви повинні вимкнути Raspberry Pi під час побудови схеми. Як з нього видно малюнок 1для підключення АЦП MCP3008 до контактів GPIO Raspberry Pi потрібно багато кабелів.

Спочатку розташуйте MCP3008 посередині макетної плати, вирівнявши її центральний паз. Тепер підключіть дроти-перемички, як показано на схемі. Два підключаються до шини живлення «+», яка підключається до контакту 3V3; інші два підключені до контакту GND через шлях «–». Середні чотири контакти АЦП підключені до GPIO 8 (CE0), 10 (MOSI), 9 (MISO) і 11 (SCLK).

малюнок 1: Підключення АЦП до макетної плати

Прочитайте значення

Підключивши АЦП до Raspberry Pi, ви можете підключити пристрої до його восьми вхідних каналів (номера від 0 до 7). Тут ми підключаємо перший потенціометр (крайній зліва), який є змінним резистором: коли ви повертаєте його ручку, Raspberry Pi зчитує напругу (від 0 В до 3,3 В). Ми можемо використовувати це для керування іншими компонентами, наприклад світлодіодами. Як в малюнок 1підключіть одну зовнішню ніжку потенціометра (внизу ліворуч) до шини живлення «+», іншу — до заземлюючої доріжки «–», а середню ніжку — до першого входу MCP3008: канал 0.

Тепер ми можемо прочитати значення потенціометра в Python. Створіть новий файл, а потім збережіть наступний код як test_pot.pyі зробіть це.

from gpiozero import MCP3008

pot = MCP3008(channel=0)

while True:

    print(pot.value)

Вище ми імпортуємо MCP3008 класу GPIO Zero, потім налаштуйте pot змінної до каналу АЦП 0. A while True: потім коло безперервно показує на екрані значення потенціометра (від 0 до 1); спробуйте перетворити його під час виконання коду, щоб побачити зміну числа. натисніть на CTRL+C вийти

Засвітіть світлодіод

Далі ми додамо світлодіод до світлодіодної схеми малюнок 2підключення довшого (позитивного) плеча до GPIO 21, а його коротше плече через резистор до реле заземлення “–”. Створіть новий файл, введіть наступний код і збережіть програму як source_values.py.

from gpiozero import MCP3008, PWMLED

from signal import pause

pot = MCP3008(0)

led = PWMLED(21)

led.source = pot.values

pause()

Введіть пароль MCP3008 і PWMLED класи також signal мод pause функція В MCP3008 дозволяє контролювати яскравість світлодіода за допомогою широтно-імпульсної модуляції (ШІМ). Ми створюємо PWMLED на GPIO 21, призначте його led Ми встановлюємо наш потенціометр на канал 0, як і раніше. Нарешті, ми використовуємо інтелектуальну систему джерела та нульові значення GPIO для поєднання потенціометра зі світлодіодом, щоб постійно встановлювати рівень яскравості останнього на початкове значення. Запустіть код і поверніть ручку, щоб налаштувати яскравість світлодіода. натисніть на CTRL+C щоб вийти з програми.

малюнок 2: До макетної дошки додано світлодіоди та горщики

Додайте другий горщик

Якщо ви ще цього не зробили, додайте другий потенціометр до нашої схеми, як у малюнок 2з його середньою ніжкою, підключеною до каналу 1 MCP3008. Тепер ми будемо використовувати обидва потенціометри для контролю частоти миготіння нашого світлодіода. У Thonny створіть новий файл, введіть наступний код і збережіть його як two_pots.py.

from gpiozero import MCP3008, PWMLED

pot1 = MCP3008(0)
pot2 = MCP3008(1)
led = PWMLED(21)
while True:
    print(pot1.value, pot2.value)
    led.blink(on_time=pot1.value)
off_time=pot2.value, n=1, background=False)

Тут ми створюємо два окремих pot1 і pot2 змінні, призначені каналам АЦП 0 і 1 відповідно. В а while True: циклу, ми потім друкуємо два значення на екран і блимає світлодіод, час увімкнення та вимкнення якого залежить від наших двох потенціометрів. Запустіть код і покрутіть обидві кнопки, щоб побачити, як він зміниться.

Встановіть VLC

Ми використовуємо ту саму схему для створення простого інтернет-радіо, де один потенціометр використовується для зміни станції, а інший для регулювання гучності. Якщо він не встановлений за замовчуванням, вам потрібно встановити медіаплеєр VLC, щоб мати можливість відтворювати потоки Інтернет-радіо M3U. Відкрийте вікно терміналу та введіть:

$ sudo apt install vlc

Зробіть радіо

Створіть новий файл, введіть показаний код radio_new.py вище та збережіть його під цим ім’ям.

Спочатку імпортуємо MCP3008 класу, разом з Popen, runі time; Popen дозволяє нам запускати та зупиняти VLC. Ми створюємо змінні для станцій і голосових номерів на каналах АЦП 0 і 1 відповідно. Потім ми призначаємо змінні двом URL-адресам радіопотоків (у цьому прикладі ми використовували SomaFM Groove Salad та Indie Pop).

Далі ми створимо деякі функції. по-перше, set_volumeвикористовує wpctl (інструмент керування командним рядком для WirePlumber, менеджер сеансів PipeWire) для керування звуком. по-друге, change_stationвключає в себе if Він працює лише тоді, коли станція, встановлена ​​в першому положенні потенціометра, відрізняється від поточного вибраного положення (current_station). Якщо так, він зупинить поточний потік і відновить відтворення перед скиданням потоку current_station змінна до нього.

Нарешті, в a while True: кільце, всередині a try … except блоку, ми зчитуємо та використовуємо кожен потенціометр по черзі if умовні оператори для виклику пов’язаних функцій, set_volume і change_stationколи потрібно.

Запустіть код і спробуйте змінити обидва потенціометри, щоб змінити станцію та відрегулювати гучність. Для простоти ми використали лише дві радіостанції в цьому прикладі, але ви можете легко додати більше, station.dial.value відповідно мінімум.

Завдяки try … except блокувати, придушувати CTRL+C зупиняє радіопотік перед виходом з програми.

Завантажте повний код.

Проста електроніка з GPIO Zero

Цей посібник міститься в книзі Raspberry Pi Press, Проста електроніка з GPIO Zero. Ця книга, оновлена ​​для останніх пристроїв Raspberry Pi, містить усю інформацію, необхідну для створення електронних проектів за допомогою контактів GPIO Raspberry Pi. Закодовані на Python з бібліотекою GPIO Zero, проекти включають світлодіодні ліхтарі, сигналізацію руху, далекомір, лазерну мережу та робота Raspberry Pi.



Source link

Leave a Reply

Your email address will not be published. Required fields are marked *