Съдържание:
- Консумативи
- Стъпка 1: Описание на частта от малина:
- Стъпка 2: IR дистанционните кодове
- Стъпка 3: Основна програма
- Стъпка 4: Малинова част: автоматично стартиране и добавяне на нови файлове
- Стъпка 5: Управление на захранването чрез Arduino Nano
- Стъпка 6: Окабеляване
- Стъпка 7: Кутията
Видео: Raspitone: лесен за използване Jukebox: 7 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:51
Здравейте, следващият ми проект е, както го правя, не особено полезен проект:
Това е джубокс, базиран на Raspberry 3 B+
Знам, нещо подобно може лесно да се направи със смартфон и Bluetooth високоговорител.
Но за моя проект имах две трудни предпоставки:
Исках да направя нещо „реколта“.
Като цяло, като се има предвид фактът, че моята дама е окончателно безнадеждна за компютър или Bluetooth или нещо друго от 21 -ви век (и дори 20 -ти), трябваше да направя нещо много просто за използване ………
И така, спецификациите бяха следните:
Един единствен бутон за стартиране на машината
Сензорен екран (много прост) за управление на музиката.
С едно докосване на екрана, за да спрете машината.
И за да има добър звук ………
Консумативи
За това използвах:
1 малина 3 B+
1 старо домашно кино, което беше безполезно поради DVD четец OOS (стар Samsung 2.1 с нискочестотен говорител и 2 високоговорителя, които промених, за да се поберат в кутията)
1 HIFIBERRY DIGI+ платка (с оптичен изход за усилвателя на мощността)
1 капацитивен сензорен екран 7 (моят е Makeasy за малина с HDMI вход и захранван чрез USB, но всеки HDMI сензорен екран трябва да е ОК)
1 захранване 5V 5A
1 релеен щит
1 Arduino nano за управление на процеса на включване/изключване на захранването
1 инфрачервен светодиод за управление на домашното кино (задвижван от 2N2222 NPN транзистор)
1 IR приемник (за част от проекта за изучаване на IR кодове, получавам моя от стар мултимедиен твърд диск с дистанционна команда)
3 светодиода
1 превключвател за режим на поддръжка
1 превключвател за работа върху arduino (по време на качването arduino се нулира)
някои конектори JST и Dupont
И за кутията
Дърво и шперплат (но няма да описвам задълбочено изработката на кутията). само да кажа, че по отношение на бумера вътре в кутията, 10 мм шперплат и 18 мм дърво са задължителни, ако не искате да видите джубокса да пресича хола, докато играете !!!!
Стъпка 1: Описание на частта от малина:
Raspi трябва да управлява различни неща:
1) командите към домашното кино (чрез IR дистанционно)
2) музикалните файлове
3) сензорният екран
4) Сърдечния ритъм към Arduino (който управлява Wdt (часовник за куче за гледане))
Започнах от Raspbian strech разпространение на 16 G SD карта (Тъй като ще четем само файлове от SD картата, използването на твърд диск не е необходимо). Няма да прекарвам време в тази част, тъй като мрежата е пълна с обучения за нея.
Нека да видим различните части в следващите стъпки …
Стъпка 2: IR дистанционните кодове
Тъй като не можах да намеря схемата на схемата на домашното кино, реших да я управлявам чрез дистанционни команди
Първата стъпка, която трябваше да завърша, беше да се науча да разписвам кодовете на дистанционната команда за домашно кино. За това използвах много доброто туто в Instructables от IR кодовете на Austin Stanton
Имах някои разлики, вероятно поради новата версия, тъй като инструкциите са доста стари, файлът hardware.conf вече не съществува (поне аз не го намерих)
Изглежда също, че транзисторът, използван в туто, е PNP транзистор, от моя страна използвах 2N2222, който е NPN, но резултатът е същият. (С изключение на кабелите !!!!!!!!)
Присвояването на пина е дадено в /boot/config.txt:
#autorisation de lirc le 2019-07-08dtoverlay = lirc-rpi, gpio_out_pin = 22, gpio_in_pin = 23
IR LED ще бъде свързан така към pin22 на Raspi.
Една важна забележка: при изучаването на кодовете към Raspi е задължително да се използват ключовите думи, изброени в командата
unrecord --list-namespace
Ето файла, който създадох за моя джубокс:
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+ # # Отдалечено име (от конфигурационния файл): джубокс
# Марка на отдалечено устройство, това, което държите в ръка: # Модел на отдалечено устройство номер:
# URL адрес на информация за отдалечено устройство:
# Има ли отдалеченото устройство пакетно устройство за заснемане e. г., а
# usb dongle?:
# За вградени USB устройства: идентификатор на доставчик на usb, идентификатор на продукта
# и низ на устройството (използвайте dmesg или lsusb):
# Тип контролирано устройство
# (Телевизор, видеорекордер, аудио, DVD, сателит, кабел, HTPC, …):
# Устройства, управлявани от това дистанционно:
започнете дистанционно
име джубокс
битове 16
флагове SPACE_ENC | CONST_LENGTH
eps 30
аепс 100
заглавка 4470 4496
едно 542 1693
нула 542 581
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 команди, за да управлявам домашното кино
Захранване (ON/OFF)
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 (taskman)
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
За автоматичното стартиране в режим GUI току-що промених файла за автоматично стартиране в/etc/xdg/lxsession/LXDE-pi
pi@raspitone:/etc/xdg/lxsession/LXDE-pi $ cat autostart@lxpanel --профил LXDE-pi
@pcmanfm --desktop --профил LXDE-pi
@xscreensaver -no -splash
@lxterminal --command = "dem_jukebox.bash"
point-rpi
Добавяне на нови mp3 файлове:
За да добавя нови файлове, предпочетох да направя малък специален скрипт на Python:
new_song_file.py
Първо ще обясня организацията на системните файлове:
Всички файлове са в /home /pi
mp3 файловете се записват в/home/pi/Music указател
Всеки изпълнител има своя собствена поддиректория, където се намират свързаните mp3 файлове
pi@raspitone: ~/Music/Mike_oldfield $ ls -общо 760516
-rwxr ----- 1 pi pi 2254923 30 юни 2017 A_New_Beginning.mp3
-rwxr ----- 1 пи пи 2691736 30 юни 2017 Пристигане.mp3
-rwxr ----- 1 pi pi 8383244 30 юни 2017 Възнесение.mp3
-rwxr ----- 1 pi pi 5410816 30 юни 2017 Blue_Night.mp3
-rwxr ----- 1 pi pi 13125199 30 юни 2017 Castaway_ (инструментален).mp3
-rwxr ----- 1 пи пи 12903583 юни 30 2017 Castaway.mp3
-rwxr ----- 1 пи пи 2969869 30 юни 2017 г. Celt.mp3
-rwxr ----- 1 pi pi 9047745 30 юни 2017 Chariots_ (Инструментален).mp3
-rwxr ----- 1 pi pi 9403263 30 юни 2017 Chariots.mp3
В директорията Документи можем да намерим изградения списък с файлове за възпроизвеждане.
pi@raspitone: ~/Documents $ 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 получава сърдечния ритъм, той поддържа релето включено (часовник за наблюдение на куче)
Ако няма повече сърдечен ритъм (означава, че програмата за джубокс е спряна) Nano изчаква 20 секунди (за да е сигурен, че raspi е напълно спрян), за да освободи релето за захранване.
След това джубокса се изключва напълно
Добавих превключвател, за да активирам въвеждане на nano, за да посоча режима на поддръжка (използвам джубокса за управление на другите си raspi сървъри чрез ssh et vnc). След това Nano деактивира процеса на куче пазач
Забележка:
входът за сърдечния ритъм от Raspi трябва да бъде изтеглен (но 3.3V от Raspi се счита за високо ниво от Nano)
Може да се направи с NE555, но аз съм мързелив и винаги имам някакви нано в чекмеджето си !!!!
Ето кратката програма на C (може да се отвори с Notepad ++)
Стъпка 6: Окабеляване
За екрана:
HDMI кабел и USB кабел се използват на Raspi за захранване и задвижване на екрана.
За предния панел:
USB кабел също е свързан от Raspi, за да можете да качвате нови файлове или да правите резервни копия.
USB кабел е свързан от Nano за достъп до софтуера (за промени, ако е необходимо)
Включвам и безжичен клавиатурен ключ на малината, за да мога да извършвам поддръжка, без да използвам външния USB щепсел
Тъй като се използват Raspberry и Arduino, окабеляването е доста просто.
Всичко е разположено на лентова матрична платка.
От малинов 2 GPIO се използват:
Pin22 за IR LED
Пин 27 за сърдечен ритъм към Arduino
на Arduino
Пин 2 се използва като прекъсващ щифт за сърдечния ритъм от Raspi.
Щифтове 3 до 5 се използват за задвижване на светодиодите (Start, Wdt, Maintenance).
Пин 6 е за превключвателя за поддръжка.
Пин 7 се извежда към релейния щит.
Ето файла за пресукване:
Стъпка 7: Кутията
Няма да описвам много какво направих, тъй като зависи от усилвателя на мощността и от използваните високоговорители.
Като информация домашното кино се намира в долната част на кутията.
Точно над високоговорителите:
1 бас
2 средни високоговорителя, които промених, за да ги вмъкна в кутията.
На върха:
Предната панел с екрана, светодиодите, превключвателите и USB щекерите.
Дървото:
За високоговорителите, страничните панели отгоре и отдолу използвах 18 мм дървена дъска.
Предната страна е 10 мм шперплат с 40 мм винтове.
За да улесня окабеляването и поддръжката (ако е необходимо !!!) поставих електрическата верига на чекмедже зад предната панел
За да се избегне прегряване, на дъното на задната панел се прави голям отвор и поставям 5V вентилатор (8 см) на задната панел точно до електрическата верига.
Снимката по -горе е само за да даде представа.
Значи това е !!!!!!!!!
Благодаря, че ме прочетохте
И ще се видим следващия път за нови приключения
Препоръчано:
Neopixel Ws2812 Rainbow LED Glow с M5stick-C - Стартиране на Rainbow на Neopixel Ws2812 Използване на M5stack M5stick C Използване на Arduino IDE: 5 стъпки
Neopixel Ws2812 Rainbow LED Glow с M5stick-C | Изпълнение на Rainbow на Neopixel Ws2812 Използване на M5stack M5stick C Използване на Arduino IDE: Здравейте момчета в тази инструкция ще се научим как да използваме неопиксели ws2812 светодиоди или LED лента или LED матрица или LED пръстен с m5stack m5stick-C платка за разработка с Arduino IDE и ние ще направим модел на дъга с него
Направи си сам „Измервателен уред за използване на компютър ROG Base“Използване на Arduino и Python: 5 стъпки (със снимки)
Направи си сам „Измерител за използване на компютър ROG Base“Използване на Arduino и Python: ************************************* +На първо място, тези инструкции са написани от неносещ англоговорящ … не е професор по английски, така че, моля, информирайте за някаква граматическа грешка, преди да ми се подигравате.: P +и моля, не имитирайте
PiTextReader-лесен за използване четец на документи за увредено зрение: 8 стъпки (със снимки)
PiTextReader-лесен за използване четец на документи за увредено зрение: Общ преглед Актуализация: Демонстрация на кратко видео: https://youtu.be/n8-qULZp0GoPiTextReader позволява на някой с увредено зрение да „чете“текст от пликове, писма и други предмети. Той прави снимка на елемента, преобразува се в обикновен текст с помощта на OCR (оптична Char
Бърз и лесен начин да промените заключения екран в 6 прости стъпки (Windows 8-10): 7 стъпки
Бърз и лесен начин да промените заключения екран в 6 прости стъпки (Windows 8-10): Искате ли да промените нещата на вашия лаптоп или компютър? Искате промяна в атмосферата си? Следвайте тези бързи и лесни стъпки, за да персонализирате успешно екрана за заключване на компютъра
DIY MusiLED, музикално синхронизирани светодиоди с приложение за Windows и Linux с едно щракване (32-битово и 64-битово). Лесен за пресъздаване, лесен за използване, лесен за пренасяне .: 3 стъпки
DIY MusiLED, музикално синхронизирани светодиоди с приложение за Windows и Linux с едно щракване (32-битово и 64-битово). Лесен за пресъздаване, лесен за използване, лесен за пренасяне .: Този проект ще ви помогне да свържете 18 светодиода (6 червени + 6 сини + 6 жълти) към вашата платка Arduino и да анализирате сигналите на звуковата карта на вашия компютър в реално време и да ги предадете на светодиодите, за да ги светят според ритъма (Snare, High Hat, Kick)