Оглавление:
- Запасы
- Шаг 1: Описание части малины:
- Шаг 2: Коды ИК-пульта ДУ
- Шаг 3: основная программа
- Шаг 4: Малиновая часть: автозапуск и добавление новых файлов
- Шаг 5: Управление питанием через Arduino Nano
- Шаг 6: кабельная разводка
- Шаг 7: Коробка
Видео: Распитон: простой в использовании музыкальный автомат: 7 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:50
Здравствуйте, мой следующий проект, как я обычно делал, не очень полезный:
Музыкальный автомат на основе Raspberry 3 B +
Знаю, что-то подобное можно легко сделать с помощью смартфона и динамика Bluetooth.
Но для моего проекта у меня было два обязательных условия:
Я хотел сделать что-то «винтажное».
И в целом, учитывая тот факт, что моя леди окончательно безнадежна для компьютера, bluetooth или чего-то еще из 21 века (и даже 20 века), мне пришлось сделать что-то очень простое в использовании ………
Итак, спецификации были следующие:
Одна кнопка для запуска машины
Сенсорный экран (очень простой) для управления музыкой.
Одно касание экрана, чтобы остановить машину.
И чтобы звук был хороший ………
Запасы
Для этого я использовал:
1 Малина 3 млрд +
1 старый домашний кинотеатр, который был бесполезен из-за OOS DVD-ридера (старый Samsung 2.1 с вуфером и 2 динамиками, которые я модифицировал, чтобы поместиться в коробку)
1 плата HIFIBERRY DIGI + (с оптическим выходом для усилителя мощности)
1 емкостный сенсорный экран 7 дюймов (у меня Makeasy для raspberry с входом HDMI и питанием от USB, но подойдет любой сенсорный экран HDMI)
1 блок питания 5V 5A
1 релейный экран
1 Arduino nano для управления процессом включения / выключения питания
1 ИК-светодиод для управления домашним кинотеатром (светодиод, управляемый транзистором 2N2222 NPN)
1 ИК-приемник (для части проекта, посвященной изучению ИК-кодов, я получаю свой со старого мультимедийного жесткого диска с помощью удаленной команды)
3 светодиода
1 переключатель для режима обслуживания
1 переключатель для работы на ардуино (во время загрузки ардуино сбрасывается)
некоторые разъемы JST и Dupont
И для коробки
Дерево и фанера (но я не буду подробно описывать изготовление коробки). просто хочу сказать, что относительно бумер внутри коробки, фанера 10 мм и дерево 18 мм являются обязательными, если вы не хотите, чтобы музыкальный автомат пересекал гостиную во время игры !!!!
Шаг 1: Описание части малины:
Распи должен управлять разными вещами:
1) команды в домашний кинотеатр (через ИК-пульт)
2) музыкальные файлы
3) сенсорный экран
4) Сердцебиение Arduino (которое управляет Wdt (таймер сторожевого пса))
Я начал с распространения Raspbian strech на SD-карте 16 Гб (поскольку мы будем читать только файлы с SD-карты, использование жесткого диска не обязательно). Я не буду тратить время на эту часть, так как в сети полно об этом …
Давайте посмотрим на различные части в следующих шагах….
Шаг 2: Коды ИК-пульта ДУ
Так как мне не удалось найти схему домашнего кинотеатра, я решил управлять им с помощью удаленных команд.
Первым шагом, который мне нужно было выполнить, было выучить Распи коды удаленной команды домашнего кинотеатра. Для этого я использовал очень хороший учебник в инструкциях от Остина Стэнтона ИК-коды.
У меня были некоторые отличия, вероятно, из-за новой версии, поскольку инструкции довольно старые, файл hardware.conf больше не существует (по крайней мере, я его не нашел)
Также кажется, что транзистор, используемый в tuto, является транзистором PNP, со своей стороны я использовал 2N2222, который является NPN, но результат тот же. (За исключением кабеля !!!!!!!!)
Назначение контактов приведено в /boot/config.txt:
#autorisation de lirc le 08.07.2019dtoverlay = lirc-rpi, gpio_out_pin = 22, gpio_in_pin = 23
ИК-светодиод будет подключен к контакту 22 Raspi.
Одно важное замечание: при изучении кодов Raspi обязательно использовать ключевые слова, перечисленные в команде
irrecord --list-пространство имен
Вот файл, который я создал для своего музыкального автомата:
pi @ raspitone: / etc / lirc $ cat lircd.conf
# Найдите время, чтобы закончить этот файл, как описано в # https://sourceforge.net/p/lirc-remotes/wiki/Check… #, и сделайте его доступным для других, отправив его на # #
# Этот файл конфигурации был автоматически сгенерирован
# использование lirc-0.9.4c (по умолчанию) в четверг, 9 мая 17:33:37 2019 # Используемая командная строка: -d / dev / lirc0 /root/lircd.conf
# Версия ядра (uname -r): 4.14.98-v7 + # # Удаленное имя (как в файле конфигурации): jukebox
# Марка удаленного устройства, вещь, которую вы держите в руке: # Модель удаленного устройства:
# URL информации об удаленном устройстве:
# Есть ли на удаленном устройстве встроенное устройство захвата e. г., а
# USB-ключ?:
# Для USB-устройств в комплекте: usb vendor id, product id
# и строка устройства (используйте dmesg или lsusb):
# Тип управляемого устройства
# (Телевизор, видеомагнитофон, аудио, DVD, спутниковое, кабельное, HTPC,…):
# Устройства, управляемые этим пультом дистанционного управления:
начать удаленно
имя музыкальный автомат
биты 16
флаги SPACE_ENC | CONST_LENGTH
эп 30
100 человек
заголовок 4470 4496
один 542 1693
ноль 542 581
ptrail 553
pre_data_bits 16
pre_data 0xC2CA
разрыв 107863
toggle_bit_mask 0x0
частота 38000
начать коды
KEY_POWER 0x807F
KEY_AUX 0x8877
KEY_VOLUMEUP 0xCC33
KEY_VOLUMEDOWN 0xDC23
конечные коды
конец удаленного
Как видите, мне нужно всего 4 команды для управления домашним кинотеатром.
Питание (ВКЛ / ВЫКЛ)
AUX => для переключения на оптический входной канал (поскольку HC всегда запускается на DVD-ридере)
И громкость +/-
Соответствующие команды выполняются с помощью команд LIRC:
например: "irsend SEND_ONCE музыкальный автомат KEY_VOLUMEUP"
Шаг 3: основная программа
Основная программа написана на Python:
Поскольку я новичок в Python, я думаю, что можно сделать много улучшений, но он работает….
Технические характеристики:
1) управлять графическим экраном:
Для этого я использовал APPJAR, который является TKINTER, но цивилизованным для студентов (мой случай), это означает, что его гораздо проще использовать, возможно, с меньшими возможностями, но этого было достаточно для моей цели.
2) воспроизвести файлы mp3:
Я использовал mplayer для Python.
3) генерировать случайные числа для игры в случайном порядке:
Поскольку я не хотел слышать одну и ту же песню каждый квартал, я создал небольшую программу, чтобы проверять, нет ли этого числа в списке x предыдущих номеров (x в зависимости от длины списка воспроизведения).
Насколько я понял, функция randint в python не такая уж "случайная".
4) отправьте "сердцебиение" на Arduino
5) управлять проигрывателем файлов:
Поскольку Mplayer является асинхронным, когда файл запускается, для Python нет способа узнать, когда он закончится (по крайней мере, я не нашел простого способа)
Чтобы решить эту проблему, я использовал команды mplayer, указывающие длину файла и прогресс в текущем файле.
И для 4, и для 5 я использовал возможность, предоставленную Appjar, для создания периодической задачи (поскольку appjar - это программа событий, это способ создания периодического события). функция:
# ******************* запустить диспетчер задач ********************** app.registerEvent (диспетчер задач)
p.setPollTime (1000)
Taskman для «диспетчера задач», который является дефолтом в программе, который управляет всем, что не является событиями на экране (конец воспроизводимого файла, заполнение индикатора выполнения, отправка сердцебиения в Nano,….)
После запуска экран выглядит так:
Вот программа: (можно открыть через Notepad ++ или Geany)
Шаг 4: Малиновая часть: автозапуск и добавление новых файлов
Если вы посмотрите на программу, вы увидите, что я использую несколько файлов bash:
1) Start_jukebox:
Фактически цель состоит в том, чтобы включить домашний кинотеатр и переключиться на вход D. IN (оптический вход в моем домашнем кинотеатре).
pi @ raspitone: / bin $ cat start_jukebox #! / bin / bash
irsend SEND_ONCE музыкальный автомат KEY_POWER
спать 7
irsend SEND_ONCE музыкальный автомат KEY_AUX
спать 2
2) stop_jukebox:
Отключение домашнего кинотеатра
pi @ raspitone: / bin $ cat stop_jukebox
#! / bin / bash
irsend SEND_ONCE музыкальный автомат KEY_POWER
Эти два файла bash вызываются Python с помощью команды os.system
Чтобы запустить скрипт Python, я сделал небольшой bash
pi @ raspitone: ~ $ cat dem_jukebox.bash #! / bin / bash
cd / home / pi
python jukebox_gui.py
Для автоматического запуска в режиме графического интерфейса я просто изменил файл автозапуска в / etc / xdg / lxsession / LXDE-pi
pi @ raspitone: / etc / xdg / lxsession / LXDE-pi $ cat autostart @ lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@xscreensaver -no-splash
@lxterminal --command = "dem_jukebox.bash"
точка-rpi
Добавление новых файлов mp3:
Для добавления новых файлов я предпочел создать небольшой специальный скрипт Python:
new_song_file.py
Сначала я объясню организацию системных файлов:
Все файлы находятся в / home / pi
mp3 файлы хранятся в каталоге / home / pi / Music
У каждого исполнителя есть собственный подкаталог, в котором хранятся соответствующие mp3-файлы.
pi @ raspitone: ~ / Music / Mike_oldfield $ ls -ltotal 760516
-rwxr ----- 1 pi pi 2254923 30 июля 2017 г. A_New_Beginning.mp3
-rwxr ----- 1 pi pi 2691736 июн 30 2017 Arrival.mp3
-rwxr ----- 1 pi pi 8383244 июн 30 2017 Ascension.mp3
-rwxr ----- 1 pi pi 5410816 июн 30 2017 Blue_Night.mp3
-rwxr ----- 1 pi pi 13125199 июн 30 2017 Castaway_ (Инструментальная).mp3
-rwxr ----- 1 pi pi 12903583 июн 30 2017 Castaway.mp3
-rwxr ----- 1 pi pi 2969869 июн 30 2017 Celt.mp3
-rwxr ----- 1 pi pi 9047745 июн 30 2017 Chariots_ (Инструментальная).mp3
-rwxr ----- 1 pi pi 9403263 июн 30 2017 Chariots.mp3
В каталоге Documents мы можем найти список файлов для воспроизведения.
pi @ raspitone: ~ / Документы $ cat list.txtFranz_Ferdinand / Michael_live.mp3
Franz_Ferdinand / evil_and_a_heathen.mp3
Franz_Ferdinand / Walk_Away_live.mp3
Franz_Ferdinand / love_and_destroy.mp3
Franz_Ferdinand / his_fffire.mp3
Franz_Ferdinand / eleanor_put_your_boots_on.mp3
Franz_Ferdinand / missing_you.mp3
Franz_Ferdinand / this_fire_ (playgroup_remix).mp3
Franz_Ferdinand / Jacqueline.mp3
Мы также можем найти данные плейлистов (но они созданы скриптом Python)
Небольшой скрипт Python добавляет новые песни, сохраненные в Music, в list.txt после форматирования заголовков в формате UNIX.
Вот сценарий: (можно открыть с помощью Notepad ++ или Geany)
Шаг 5: Управление питанием через Arduino Nano
Поскольку я хотел начать что-то легкое, я решил сделать это с помощью небольшого нано:
Принцип:
При нажатии кнопки запуска все устройства получают питание, nano запускается (1 или 2 секунды) и берет на себя управление питанием, срабатывая реле, которое шунтирует контакты кнопки.
Затем Nano ждет 35 секунд, чтобы получить сердечный сигнал от Raspberry (это означает, что процесс запуска завершен и программа музыкального автомата работает).
Пока nano получает сердцебиение, реле остается включенным (таймер Watch Dog).
Если больше нет сердцебиения (означает, что программа музыкального автомата остановлена) Nano ждет 20 секунд (чтобы убедиться, что raspi полностью остановлен), чтобы освободить реле питания.
Затем музыкальный автомат полностью отключается.
Я добавил переключатель для активации входа nano, чтобы указать режим обслуживания (я использую музыкальный автомат для управления другими моими серверами raspi через ssh et vnc). Затем Nano деактивирует процесс сторожевого пса.
Замечание:
вход для сердцебиения от Raspi должен быть понижен (но 3,3 В от Raspi рассматривается Nano как высокий уровень)
Это можно было бы сделать с NE555, но я ленив и всегда держу несколько нано в моем ящике !!!!
Вот короткая программа на C (может быть открыта с помощью Notepad ++)
Шаг 6: кабельная разводка
Для экрана:
Кабель HDMI и кабель USB используются на Raspi для питания и управления экраном.
Для передней панели:
USB-кабель также подключен к Raspi, чтобы иметь возможность загружать новые файлы или делать резервные копии.
USB-кабель подключен от Nano для доступа к софту (для модификации при необходимости)
Я также подключаю к Raspberry ключ беспроводной клавиатуры, чтобы иметь возможность производить обслуживание без использования внешнего USB-разъема.
Поскольку используются Raspberry и Arduino, разводка кабелей довольно проста.
Все расположено на плате стрип-матрицы.
От малины 2 GPIO используются:
Pin22 для ИК-светодиода
Пин 27 для сердцебиения к Arduino
на Ардуино
Контакт 2 используется как контакт прерывания для тактового сигнала от Распи.
Контакты с 3 по 5 используются для управления светодиодами (Start, Wdt, Maintenance).
Контакт 6 предназначен для переключателя обслуживания.
Вывод 7 выводится на экран реле.
Вот файл фритзинга:
Шаг 7: Коробка
Я не буду подробно описывать то, что я сделал, так как это зависит от усилителя мощности и используемых динамиков.
В качестве информации внизу коробки находится домашний кинотеатр.
Прямо над динамиками:
1 низкочастотный динамик
2 средних динамика, которые я модифицировал, чтобы вставить их в коробку.
На вершине:
Передняя панель с экраном, светодиодами, переключателями и разъемами USB.
Дерево:
Для динамиков, верхних и нижних боковых панелей я использовал деревянную доску толщиной 18 мм.
Лицевая сторона - фанера толщиной 10 мм с винтами 40 мм.
Чтобы облегчить прокладку кабелей и обслуживание (при необходимости !!!), я положил схему в ящик за передней панелью.
Чтобы избежать перегрева, в нижней части задней панели сделано большое отверстие, и я поместил вентилятор на 5 В (8 см) на заднюю панель рядом со схемой.
Картинка выше предназначена для того, чтобы дать общее представление.
Итак, это все !!!!!!!!!
Спасибо, что прочитали меня
И увидимся в следующий раз за новыми приключениями
Рекомендуемые:
Музыкальный автомат Casera Por: Tono Kiehnle: 5 шагов (с изображениями)
Музыкальный автомат Casera Por: Tono Kiehnle: Музыкальный автомат, который находится в программе с Arduino UNO. Содержит 3 музыкальных проигрывателя, воспроизводящих музыку с звуковым сигналом, который звучит у вас с пульсирующими ботинками и ЖК-дисплеем для взаимодействия с другими пользователями. Музыкальный автомат с 3-мя ботами. 2 de ellos se util
Музыкальный автомат + Arduino: 5 шагов
Jukebox + Arduino: Этот проект создан Rocola Digital как программа для Arduino. Su función es muy simple y no es muy Difícil de Crear. La Rocola tiene muchas funciones interesantes, y una de ellas es que a través de una pantalla LCD se
Музыкальный автомат: 13 шагов (с изображениями)
Музыкальный автомат: обнаружив Volumio (Open Audiophile Music Player), я подумал, что его можно использовать для создания отличного музыкального автомата; а остальное - история. Следующие инструкции являются более общим обзором того, как я построил этот проект. Таким образом, некоторые из небольших
PiTextReader - простой в использовании читатель документов для людей с ослабленным зрением: 8 шагов (с изображениями)
PiTextReader - простой в использовании читатель документов для людей с ослабленным зрением: обзорОбновление: короткое демонстрационное видео: https://youtu.be/n8-qULZp0GoPiTextReader позволяет людям с ослабленным зрением «читать» текст с конвертов, писем и других предметов. Он делает снимки изображения объекта, преобразует его в обычный текст с помощью OCR (Optical Char
Музыкальный реактивный свет -- Как сделать супер простой музыкальный реактивный свет, чтобы сделать рабочий стол приятным: 5 шагов (с изображениями)
Музыкальный реактивный свет || Как сделать супер простой музыкальный реактивный свет для настольного компьютера. бас, который на самом деле является низкочастотным звуковым сигналом. Строить очень просто. Мы