Створіть інтернет-радіо – 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 *

Delta Air Lines (m1h262p) Delta Air Lines (m1h26g2) 애벗잡담잡이 애벗태양새 애벗얼가니새 애벗찌르레기 압드알쿠리참새 압딤황새 아버데어시스티콜라 이상한덤불개개비 에이버트북미덤불멧새 아비시니아캣버드 아비시니아크림슨윙 아비시니아지상코뿔새 아비시니아지상지빠귀 아비시니아긴발톱할미새 아비시니아올빼미 아비시니아파랑새 아비시니아낫부리후투티 아비시니아슬레이티딱새 아비시니아지빠귀 아비시니아왁스빌 아비시니아검은딱새 아비시니아동박새 아비시니아딱따구리 아카시아얼룩바벳 아카시아박새 아카디아딱새 아체직박구리 도토리딱따구리 아크레앤트슈라이크 아크레토디타이런트 아다마와멧비둘기 애들레이드솔새 아델리펭귄 애드미럴티매미새 아페프비둘기 아프간잡담잡이 아프간눈참새 아프리카줄무늬올빼미 아프리카검은오리 아프리카검은칼새 아프리카푸른딱새 아프리카푸른박새 아프리카넓적부리새 아프리카시트릴 아프리카목걸이멧비둘기 아프리카뜸부기 아프리카크림슨윙핀치 아프리카뻐꾸기 아프리카뻐꾸기매 아프리카뱀목가마우지 아프리카사막솔새 아프리카어두운색딱새 아프리카난쟁이물총새 아프리카에메랄드뻐꾸기 아프리카발가락물닭 아프리카파이어핀치 아프리카물수리 아프리카꾀꼬리 아프리카참매 아프리카풀올빼미 아프리카녹색비둘기 아프리카회색딱새 아프리카회색코뿔새 아프리카회색딱따구리 아프리카하리어매 아프리카매수리 아프리카산악잡담잡이 아프리카황조롱이 아프리카후투티 아프리카물꿩 아프리카습지하리어 아프리카올리브비둘기 아프리카대머리황새 아프리카검은머리물떼새 아프리카종려칼새 아프리카긴꼬리딱새 아프리카펭귄 아프리카피쿨렛 아프리카얼룩코뿔새 아프리카얼룩할미새 아프리카밭종다리 아프리카팔색조 아프리카난쟁이거위 아프리카난쟁이물총새 아프리카뜸부기 아프리카붉은눈직박구리 아프리카갈대개개비 아프리카강제비 아프리카바위 종다리류 아프리카성따오기 아프리카소쩍새 아프리카때까치딱새 아프리카은부리참새 아프리카제비물떼새 아프리카도요 아프리카저어새 아프리카점박이나무타기 아프리카검은딱새 아프리카뜸부기 아프리카지빠귀 아프리카볏도요 아프리카숲올빼미 아프리카노랑솔새 아가미왜가리 날렵한박새딱딱새