Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Всем привет, В этом руководстве я объясню, как я сделал рекордер воспроизведения с помощью Raspberry Pi. Устройство представляет собой модель Raspberry Pi B + с 7 кнопками сверху, динамиком, подключенным к одному из портов USB Pi, и микрофоном, подключенным к другим портам USB. Каждая кнопка связана со звуком, поэтому она может воспроизводить 7 разных звуков. Звуки воспроизводятся после краткого нажатия кнопки. Чтобы записать новый звук, просто нажмите кнопку более 1 секунды, запишите после звукового сигнала и отпустите кнопку в конце записи. Нет ничего проще!
Шаг 1: Необходимый материал
Для этого проекта мне понадобились:
- Модель Raspberry Pi B + и карта micro SD - 29,95 $ + 9,95 $
- Пластиковый корпус Raspberry Pi - 7.95 $
- USB-колонки - 12,50 $
- USB-микрофон - 5.95 $
- Плата perma-proto половинного размера - 4,50 $
- 7 кнопок мгновенного действия - 2.50 $
Еще мне понадобились:
- Какой-то электрический провод
- Заголовки под прямым углом с внутренней резьбой
- Немного дерева, черной краски и клея для корпуса пуговиц.
- Паяльник и припой
Шаг 2: кнопки
Используемые кнопки довольно высокие (6 мм), чтобы проходить сквозь толщину корпуса.
Я разместил свои 7 кнопок на плате perma-proto, которая похожа на макет, за исключением того, что на ней припаяны компоненты. Это более надежно, чем макет, и дешевле, чем печатать печатную плату. Каждая кнопка подключает землю к GPIO на Raspberry Pi. У меня здесь нет резисторов, так как у Pi уже есть внутренние подтягивающие / понижающие резисторы, которые будут установлены в программе. В этом случае я настроил их на подтягивание (см. Программу ниже).
Пуговицы размещаются через каждые 4 ряда или каждые 0,4 дюйма.
Шаг 3: чехол для кнопок
Я сделал очень простой футляр для пуговиц из листов фанеры и деревянного квадратного дюбеля. Размер дюбеля должен быть достаточно большим, чтобы вмещать основание кнопки и доску, но достаточно маленьким, чтобы пуговица выходила из корпуса. Я использовал дюбель размером 1/4 дюйма на 1/4 дюйма.
Убедившись, что доска вошла в корпус, дюбели приклеиваются к листу основы. Затем в верхнем листе просверливаются отверстия (можно использовать доску для точных отметок через каждые 0,4 дюйма). Все детали из дерева окрашиваются, доска помещается в корпус, а на него наклеивается верхний лист.
Шаг 4: Raspberry Pi
Я не хотел припаивать провода непосредственно к Pi, на случай, если я захочу использовать Pi для чего-то еще в будущем. Поэтому я припаял провода к прямоугольным гнездовым разъемам и подключил разъемы к Pi.
Используемые GPIO: 21, 26, 20, 19, 13, 6 и 5. Также используется контакт заземления.
Микрофон и динамик просто подключаются к 2 из 4 портов USB.
Pi питается от розетки micro-usb.
Шаг 5: Программирование
Чтобы запрограммировать Pi, я подключил его к Интернету с помощью кабеля Ethernet и управлял им с удаленного компьютера с помощью программы просмотра VNC. Однако вы не можете использовать эту настройку при первом подключении к Pi, потому что ОС еще не установлена, а SSH не работает. Таким образом, вам нужно будет подключить экран, клавиатуру и мышь, по крайней мере, в первый раз.
Было довольно сложно найти команды для записи и воспроизведения звука на правильной звуковой карте. Вот те команды, которые у меня сработали:
-
aplay -D plughw: CARD = Device_1, DEV = 0 0.wav
Воспроизводит 0.wav
-
arecord 0.wav -D sysdefault: CARD = 1 -f cd -d 20
Записывает максимум 20 секунд в файл 0.wav с качеством cd
Звуковые файлы находятся в каталоге по умолчанию (/ home / pi). Также необходим звуковой файл для звукового сигнала, помещенный в каталог по умолчанию и названный beep.wav.
Сам код Python следующий:
код python для рекордера воспроизведения Raspberry Pi
импортировать RPi. GPIO как GPIO |
время импорта |
импорт ОС |
# переменные: |
butPressed = [True, True, True, True, True, True, True] # если кнопка i нажата, то butPressed имеет значение False |
pin = [26, 19, 13, 6, 5, 21, 20] # контактов GPIO каждой кнопки |
recordBool = False # Истина, если запись в процессе |
GPIO.setmode (GPIO. BCM) |
для i в диапазоне (0, 7): |
GPIO.setup (pin , GPIO. IN, pull_up_down = GPIO. PUD_UP) # устанавливает внутренние резисторы Pi на подтягивание |
в то время как True: |
для i в диапазоне (0, 7): |
butPressed = GPIO.input (pin ) # проверяет, нажата ли кнопка |
if butPressed == False: # если кнопка нажата |
previousTime = time.time () |
while butPressed == False и recordBool == False: |
butPressed = GPIO.input (контакт ) |
if time.time () - previousTime> 1.0: # если кнопка нажата более секунды, то recordBool имеет значение True |
recordBool = True |
if recordBool == True: # if recordBool равно True, он воспроизводит звуковой сигнал, а затем записывает |
os.system ("aplay -D plughw: CARD = Device_1, DEV = 0 beep.wav") |
os.system ("arecord% d.wav -D sysdefault: CARD = 1 -f cd -d 20 &"% i) # записывает максимум 20 секунд в файл i.wav с качеством компакт-диска |
while butPressed == False: |
butPressed = GPIO.input (контакт ) |
os.system ("pkill -9 arecord") # запись останавливается при отпускании кнопки или через 20 секунд |
recordBool = False |
else: #if recordBool имеет значение False, он воспроизводит звук i.wav |
os.system ("aplay -D plughw: CARD = Device_1, DEV = 0% d.wav"% i) |
time.sleep (0,1) |
просмотреть рекордер rawPlayback, размещенный на ❤ от GitHub
Шаг 6. Запускайте скрипт Python при каждом запуске
Чтобы запустить скрипт python при каждом запуске Pi, следующие строки помещаются в файл с именемplay.desktop в папке /home/pi/.config/autostart/
запускает play.py при запуске Raspberry Pi
[Desktop Entry] |
Кодировка = UTF-8 |
Тип = Приложение |
Имя = Воспроизведение |
Комментарий = Это приложение для воспроизведения |
Exec = python /home/pi/playback.py |
StartupNotify = false |
Терминал = истина |
Скрытый = ложь |
просмотреть rawplayback.desktop, размещенный на ❤ от GitHub
Шаг 7: Конец примечания
Расскажите, пожалуйста, в разделе комментариев, что вы думаете об этом проекте, дайте мне знать о своих рекомендациях и проголосуйте за меня в конкурсе Raspberry Pi, если он вам понравился.
Жду возможности вас прочитать!