Съдържание:

Радио стрийминг кутия с един бутон: 7 стъпки (със снимки)
Радио стрийминг кутия с един бутон: 7 стъпки (със снимки)

Видео: Радио стрийминг кутия с един бутон: 7 стъпки (със снимки)

Видео: Радио стрийминг кутия с един бутон: 7 стъпки (със снимки)
Видео: Динко Вълев иска да вкара Стоян Колев в багажника 2024, Ноември
Anonim
Радио стрийминг кутия с един бутон
Радио стрийминг кутия с един бутон

Изградих кутия за бара на моя приятел, който има Raspberry Pi вътре и с натискането на един бутон той предава аудио към уебсайт, използвайки Darkice и Icecast, като едновременно свети знак „On-Air“. Мислех, че това е нещо, което хората вече правят, но след задълбочено търсене не намерих нищо и реших да го разбера сам и да направя този Instructable.

Използвах Raspberry Pi 3+ B, но доколкото мога да кажа, че ще работи на всеки Pi (може би номерата на пиновете на GPIO ще варират, но не мога да потвърдя това). Използвах пакета NOOBS за операционната система и купих супер проста звукова карта за въвеждане. Също така добавих бутон за безопасно изключване и светодиод за активност към кутията, за да защитя Pi.

Ще имаш нужда:

Малина Пи

Пакет NOOBS на SD карта

Превключвател за включване/изключване (използвах голям червен бутон за аварийно спиране по този начин, но може да бъде всякакъв вид превключвател за щракване)

Натисни бутона

1 светодиод

Знак „В ефир“направих сам с LED масив

Поялник и малка съединителна платка (току-що отрязах една лента от тези, които имах наоколо)

Звукова карта (използвах супер проста такава)

Стъпка 1: Настройте вашия сървър

За реалната радиостанция, която използваме, не направих тази част, тъй като нямах достъп до сървъра и приятелят ми го направи, но на уебсайта Icecast има основно ръководство за настройка и успях да получа той работи от Pi в началото, само за да види как върви. Като алтернатива можете да получите акаунт на internet-radio.com и той работи с Darkice.

Стъпка 2: Настройте Pi и инсталирайте Darkice

Вземете SD карта с пакета NOOBS. След като отворите Raspbian и инсталирате всички актуализации, отворете прозорец на терминала и въведете:

sudo apt-get update

sudo apt-get install darkice

Darkice е част от Debian, така че ще се инсталира автоматично, отнема няколко минути.

След като приключи с подканата, въведете:

darkice

Той ще даде съобщение за грешка и няма да работи, но това е добре. В съобщението ще се каже нещо като:

Използване на конфигурационен файл: /etc/darkice.cfg

Трябва да редактирате този файл, така че при подканата въведете:

sudo nano /etc/darkice.cfg

Редактирайте файла, който се отваря, като използвате информацията в тази уики. Радиореферентната страница, когато приключите, натиснете CTRL-X, за да затворите, Y, за да запишете, и трябва да се върнете към подканата на терминала. Винаги е добре да рестартирате след инсталиране на нова програма, така че въведете:

рестартирайте

и когато Pi се рестартира, отворете отново терминален прозорец. Сега, когато въведете „Darkice“, той трябва да работи без никакви съобщения за грешка. Ако отидете на https:// YOURSERVERADDRESS: 8000/(8000 или на който и да е порт, към който е присвоен вашият сървър за лед -каст), трябва да получите страница със статистически данни, че сте свързани. Ако не, ощипнете конфигурационния файл (реда за въвеждане на аудио ми създаде някои проблеми, но опитах всички опции и в крайна сметка намерих звуковата си карта). След като Darkice работи правилно, преминете към следващата стъпка.

Стъпка 3: Бутон за предаване и Ефирен знак

Бутон за предаване и знак в ефир
Бутон за предаване и знак в ефир

Направих куп различни уроци за това, тъй като нямаше конкретен за присвояване на действие на бутон в Python. Най -големият проблем, с който се сблъсках, беше да накарам Darkice да работи във фонов режим (и по този начин да не замрази скрипта на Python, когато той започна да работи), но помолих приятел кодиращ да дойде да помогне и той измисли начин да го направи, пишейки листове, нещо, което аз не получавай. Очевидно е възможно да се използва и „&“някъде в кода, но аз не съм кодиращ и това, което имам, работи, затова избрах да не се забърквам с него. След като свърших всичко, започнах да свалям всички кабели от макета, докато останах със следната настройка:

GPIO16 към външен 3-точков конектор.

GPIO7 към положителния извод на LED масива за знака ON-Air.

GPIO25 към превключвателя с щракване.

Другата страна на превключвателя за щракване се прикрепя към 3-точков конектор.

Отрицателният извод на светодиодната решетка също се прикрепя към 3-точков конектор.

(Другите компоненти на диаграмата са обяснени в следващата стъпка).

Сценарият на Python, който получихме, е следният (моля, обърнете внимание, че това е инструкция за целия проект, всъщност не знам достатъчно, за да обясня кода. Събрах го заедно от различни други уроци за различни функции):

импортиране време импорт os импортиране на RPi. GPIO като GPIO GPIO.setwarnings (False) GPIO.setmode (GPIO. BOARD) ledPin = 12 buttonPin = 16 GPIO.setup (ledPin, GPIO. OUT) GPIO.setup (buttonPin, GPIO. IN, pull_up_down = GPIO. PUD_UP)

toggle = False

def start_darkice ():

print ('извикващ подпроцес') #result = subprocess.call ('sh screen -S darkice -d -m darkice') os.system ('screen -S darkice -d -m darkice') print ('възобновяване') def stop_darkice (): os.system ('screen -X -S darkice quit')

докато е вярно:

buttonState = GPIO.input (buttonPin) if buttonState == True: ако не превключва: toggle = True print ('включване на darkice') start_darkice () #print ('BUTTON STATE TRUE') GPIO.output (ledPin, GPIO. HIGH)

иначе:

if toggle: toggle = False print ('стопиране на darkice') stop_darkice () #print ('BUTTON STATE FALSE') GPIO.output (ledPin, GPIO. LOW) time.sleep (1)

Py файлът е прикачен към този Instructible, можете просто да го изтеглите и да следвате стъпка 5, ако желаете.

Стъпка 4: Бутон за безопасно изключване и светодиод за активност

Бутон за безопасно изключване и светодиод за активност
Бутон за безопасно изключване и светодиод за активност

Само за безопасност и за удължаване живота на Pi добавих бутон за безопасно изключване и светодиод за външна активност, така че хората да знаят кога е безопасно да изключите кутията. Лесно намерих уроци и за двете, но забелязах, че Raspberry Pi 3 B+ има ACT LED присвоен GPIO щифт, докато по -ранните модели не го правят и това може да бъде проблематично, ако имате по -стар Pi.

Прикрепете положителния извод на светодиода към GPIO13 и отрицателния към GPIO26. За да работи светодиодът ACT, трябва да редактирате файла config.txt в директорията BOOT. Можете да намерите това в браузъра Raspbian или с:

sudo nano /usr/boot/config.txt

Когато редактирате файла, просто добавете следните редове:

# Използвайте външен светодиод като SD ACT LED dtoverlay = pi3-act-led, gpio = 19

Сега външният светодиод ще мига с активност на SD картата.

Прикрепете клемите на превключвателя към GPIO3 и GPIO8. Намерих следния код от урок и работи добре:

време за импортиране от gpiozero Бутон за импортиране от подпроцес импортиране check_call от пауза на импортиране на сигнал

def shutdown ():

check_call (['sudo', 'poweroff'])

shutdown_btn = Бутон (2, hold_time = 1)

shutdown_btn.when_held = изключване

пауза ()

time.sleep (1)

Този py файл също е прикачен за изтегляне, ако искате. Бутонът ми трябва да се задържи за 1 секунда, ако искате да промените тази промяна на стойността 'hold-time ='.

Стъпка 5: Накарайте скриптовете на Python да се изпълняват от зареждане

Отново има много уроци по тази тема, използвах този от Dexter Industries и последвах стъпка първа, като редактирах файла rc.local.

sudo nano /etc/rc.local

Тук трябва да добавите пълния път към файла в края на документа, пълен с '&' в края на всеки ред. Трябва да добавите по един ред за всеки от файловете:

sudo python/home/pi/YOURFILENAME, py &

sudo python /home/pi/YOURFILENAME2.py &

точно преди реда

изход 0

'&' В края на всеки ред е важно, за да се осигурят цикли на програмата.

Стъпка 6: Изградете кутията

Изградете кутията
Изградете кутията
Изградете кутията
Изградете кутията
Изградете кутията
Изградете кутията

Това зависи изцяло от вас. Наистина трябва само да бъде размерът на Pi, но аз сложих компресор в настройката си, за да поддържам радио потока на доста последователно ниво, така че кутията да е малко по-голяма. Моят има дупка отпред за знака On-Air и една за Big Red Button, плюс направих малка карта с инструкции за диджеите и я инкрустирах под бутона. Отстрани на кутията има дупка за бутона, ACT светодиода и аудио входа, плюс инкрустирани инструкции за персонала на бара как безопасно да изключат кутията.

Стъпка 7: Инсталиране

Инсталация
Инсталация
Инсталация
Инсталация
Инсталация
Инсталация
Инсталация
Инсталация

Поправете всички отделни компоненти в кутията си, като имате предвид, че винаги е добре да се позволи някаква циркулация на въздуха около Pi, за да се предотврати прегряване. Прикрепете аудио кабелите от вашия миксер, натиснете бутона и се насладете на излъчването!

Препоръчано: