Оглавление:

Однокнопочный радиопоток: 7 шагов (с изображениями)
Однокнопочный радиопоток: 7 шагов (с изображениями)

Видео: Однокнопочный радиопоток: 7 шагов (с изображениями)

Видео: Однокнопочный радиопоток: 7 шагов (с изображениями)
Видео: Песня Дезика про однокнопочных WoT 2024, Июнь
Anonim
Однокнопочный радиопоток
Однокнопочный радиопоток

Я построил коробку для бара моего друга, внутри которого находится Raspberry Pi, и одним нажатием кнопки он передает звук на веб-сайт с помощью Darkice и Icecast, одновременно зажигая знак «В эфире». Я думал, что это то, чем люди уже занимались, но после долгих поисков я ничего не нашел и решил разобраться в этом для себя и сделать это Руководство.

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

Тебе понадобится:

Raspberry Pi

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

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

Нажать кнопку

1 светодиод

Вывеску «В эфире» я сделал сам с помощью светодиодной матрицы.

Паяльник и небольшая соединительная плата (я просто отрезал полоску от одной из них, которая у меня была)

Звуковая карта (я использовал такую супер-простую)

Шаг 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

Отредактируйте открывшийся файл, используя информацию на этой странице wiki. Radioreference, когда вы закончите, нажмите CTRL-X, чтобы закрыть, Y, чтобы сохранить, и вы должны вернуться в окно терминала. Всегда полезно перезагрузиться после установки новой программы, поэтому введите:

перезагружать

и когда Pi перезагрузится, снова откройте окно терминала. Теперь, когда вы набираете «Darkice», он должен работать без сообщений об ошибках. Если вы перейдете по адресу https:// YOURSERVERADDRESS: 8000 / (8000 или любой другой порт, к которому назначен ваш сервер icecast), вы должны получить страницу статистики, сообщающую, что вы подключены. Если нет, настройте файл конфигурации (строка аудиовхода вызвала у меня некоторые проблемы, но я перепробовал все варианты и в конце концов нашел свою звуковую карту). Как только Darkice заработает правильно, переходите к следующему шагу.

Шаг 3. Кнопка трансляции и знак в эфире

Кнопка трансляции и знак в эфире
Кнопка трансляции и знак в эфире

Я сделал кучу разных руководств по этому поводу, так как в Python не было конкретного для назначения действия кнопке. Самой большой проблемой, с которой я столкнулся, было заставить Darkice работать в фоновом режиме (и, таким образом, не замораживать скрипт Python, когда он начал работать), но я попросил друга-программиста прийти и помочь, и он придумал, как это сделать, записывая листы, что я не получить. По-видимому, это также можно было бы использовать где-нибудь в коде, используя '&', но я не кодировщик, и то, что у меня есть, работает, поэтому я решил не связываться с этим. Как только у меня все заработало, я начал сокращать все кабели от макета, пока не остался со следующей настройкой:

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

GPIO7 к положительному выводу светодиодной матрицы для знака ON-Air.

GPIO25 к переключателю.

Другая сторона переключателя присоединяется к трехточечному разъему.

Отрицательный вывод светодиодной матрицы также подключается к трехточечному разъему.

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

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

import timeimport os import RPi. GPIO as 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 = Ложь

def start_darkice ():

print ('вызывающий подпроцесс') #result = subprocess.call ('sh screen -S darkice -d -m darkice') os.system ('screen -S darkice -d -m darkice') print ('resuming') def stop_darkice (): os.system ('экран -X -S darkice выйти')

в то время как True:

buttonState = GPIO.input (buttonPin) if buttonState == True: если не toggle: 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, назначенный для вывода GPIO, в то время как более ранние модели этого не делают, и это может быть проблематичным, если у вас более старый Pi.

Подключите положительный вывод светодиода к GPIO13, а отрицательный к GPIO26. Чтобы светодиод ACT работал, вам необходимо отредактировать файл config.txt в каталоге BOOT. Вы можете найти это в браузере Raspbian или с помощью:

судо нано /usr/boot/config.txt

Когда вы редактируете файл, просто добавьте следующие строки:

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

Теперь внешний светодиод будет мигать при активности SD-карты.

Подключите клеммы кнопочного переключателя к GPIO3 и GPIO8. Я нашел следующий код из учебника, и он отлично работает:

import timefrom gpiozero import Button from subprocess import check_call from signal import pause

def shutdown ():

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

shutdown_btn = Кнопка (2, hold_time = 1)

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

Пауза()

время сна (1)

Этот файл py также прилагается для загрузки, если вы хотите. Моя кнопка должна удерживаться в течение 1 секунды, если вы хотите изменить это изменение значения 'hold-time ='.

Шаг 5. Запустите скрипты Python из загрузки

Опять же, есть много руководств по этой теме, я использовал это от Dexter Industries и выполнил первый шаг, отредактировав файл rc.local.

sudo nano /etc/rc.local

Здесь вам нужно добавить полный путь к файлу в конец документа с символом '&' в конце каждой строки. Вы должны добавить по одной строке для каждого файла:

sudo python / home / pi / ИМЯ ФАЙЛА, py &

sudo python /home/pi/YOURFILENAME2.py &

прямо перед линией

выход 0

Знак «&» в конце каждой строки важен для обеспечения цикла программы.

Шаг 6: соберите коробку

Построить коробку
Построить коробку
Построить коробку
Построить коробку
Построить коробку
Построить коробку

Это полностью зависит от вас. На самом деле он должен быть только размером с Pi, но я включил компрессор в свою настройку, чтобы поддерживать стабильный уровень радиопотока, поэтому коробка немного больше. У меня есть отверстие спереди для вывески «В эфире» и одно для Большой красной кнопки, плюс я сделал небольшую карточку с инструкциями для ди-джеев и вложил ее под кнопкой. На боковой стороне коробки есть отверстие для кнопки, светодиода ACT и аудиовхода, а также инструкции для персонала бара о том, как безопасно выключить коробку.

Шаг 7: Установка

Установка
Установка
Установка
Установка
Установка
Установка
Установка
Установка

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

Рекомендуемые: