İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
Herkese selam, Bu talimatta, Raspberry Pi kullanarak bir oynatma kaydediciyi nasıl yaptığımı açıklıyorum. Cihaz, üstte 7 basma düğmesi, Pi'nin usb bağlantı noktalarından birine bağlı bir hoparlör ve başka bir usb bağlantı noktasına bağlı bir mikrofon bulunan bir Raspberry Pi model B+'dır. Her düğme bir sesle ilişkilendirilir, böylece 7 farklı ses çalabilir. Sesler, düğmeye kısa bir basıştan sonra çalınır. Yeni bir ses kaydetmek için düğmeye 1 saniyeden fazla basmanız, bip sesinden sonra kaydetmeniz ve kaydın sonunda düğmeyi bırakmanız yeterlidir. Bundan daha basit olamaz!
Adım 1: Gerekli Malzeme
Bu proje için ihtiyacım vardı:
- Raspberry Pi model B+ ve mikro SD kart - 29.95 $ + 9.95 $
- Raspberry Pi plastik kasa - 7,95 $
- USB hoparlörler - 12.50 $
- USB mikrofon - 5,95 $
- Yarım boyutlu bir perma-proto board - 4,50 $
- 7 anlık buton - 2,50 $
Ayrıca ihtiyacım vardı:
- Biraz elektrik teli
- Sağ açılı dişi başlıklar
- Düğme kasası için biraz ahşap, siyah boya ve yapıştırıcı
- Bir havya ve lehim
2. Adım: Düğmeler
Kullanılan butonlar oldukça uzun (6mm) yani kasa kalınlığından geçebiliyorlar.
7 düğmemi, bileşenlerin lehimlenmesi dışında, devre tahtası gibi bir kalıcı protokol kartına yerleştirdim. Bu, bir devre tahtasından daha sağlamdır ve bir pcb yazdırmaktan daha ucuzdur. Her düğme, Raspberry Pi'deki bir GPIO'ya toprak bağlantısı sağlar. Pi'nin zaten programda ayarlanacak dahili yukarı/aşağı dirençleri olduğu için burada dirençlerim yok. Bu durumda onları yukarı çekmeye ayarladım (aşağıdaki programa bakın).
Düğmeler her 4 sırada bir veya her 0,4 inçte bir yerleştirilir.
3. Adım: Düğmeler Kılıfı
Düğmeler için kontrplak levhalar ve ahşap kare dübel ile çok basit bir kılıf yaptım. Dübel boyutu, düğme tabanını ve kartı içerecek kadar büyük, ancak düğmenin kasanın dışına çıkmasına izin verecek kadar küçük olmalıdır. 1/4 inç x 1/4 inç dübel kullandım.
Levhanın kasaya oturduğundan emin olduktan sonra dübeller taban sacına yapıştırılır. Delikler daha sonra üst tabakada delinir (tahta her 0,4 inçte bir tam olarak işaretler yapmak için kullanılabilir). Tüm ahşap parçalar boyanır, tahta kasaya yerleştirilir ve üstüne üst tabaka yapıştırılır.
4. Adım: Ahududu Pi
Gelecekte Pi'yi başka bir şey için kullanmak istersem, kabloları doğrudan Pi'ye lehimlemek istemedim. Bu nedenle kabloları dik açılı dişi başlıklara lehimledim ve başlıkları Pi'ye taktım.
Kullanılan GPIO'lar 21, 26, 20, 19, 13, 6 ve 5'tir. Topraklama pimi de kullanılır.
Mikrofon ve hoparlör, 4 usb bağlantı noktasından 2'sine basitçe takılır.
Pi, mikro-usb çıkışından güç alır
Adım 5: Programlama
Pi'yi programlamak için ethernet kablosu kullanarak internete bağladım ve VNC görüntüleyici kullanarak uzak bir bilgisayardan kontrol ettim. Ancak, bu kurulumu Pi'ye ilk bağlandığınızda kullanamazsınız, çünkü işletim sistemi henüz kurulmamıştır ve SSH etkin değildir. Yani en azından ilk seferde bir ekran, klavye ve fare bağlamanız gerekecek.
Doğru ses kartına ses kaydetme ve çalma komutlarını bulmak oldukça zordu. Bunlar benim için çalışan komutlar:
-
aplay -D plughw:CARD=Aygıt_1, DEV=0 0.wav
0.wav oynatır
-
arecord 0.wav -D sysdefault:CARD=1 -f cd -d 20
0.wav dosyasına cd kalitesinde maksimum 20 saniye kayıt yapar
Ses dosyaları varsayılan dizinde (/home/pi) bulunur. Bip sesi için varsayılan dizine yerleştirilmiş ve beep.wav olarak adlandırılan bir ses dosyası da gereklidir.
Python kodunun kendisi şudur:
Raspberry Pi oynatma kaydedici için piton kodu
RPi. GPIO'yu GPIO olarak içe aktar |
ithalat zamanı |
işletim sistemini içe aktar |
#değişkenler: |
butPressed = [True, True, True, True, True, True, True]#if düğmesine basılırsa, butPressed False olur |
pin = [26, 19, 13, 6, 5, 21, 20]#GPIO her bir düğmenin pinleri |
recordBool = False#True bir kayıt devam ediyorsa |
GPIO.setmode(GPIO. BCM) |
i aralığında (0, 7): |
GPIO.setup(pin, GPIO. IN, pull_up_down=GPIO. PUD_UP)#P'nin dahili dirençlerini yukarı çekmek için ayarlar |
Doğru iken: |
i aralığında (0, 7): |
butPressed = GPIO.input(pin)#bir düğmeye basılıp basılmadığını kontrol eder |
if butPressed == False:#eğer bir düğmeye basılırsa |
öncekiZaman = zaman.zaman() |
while butPressed == False ve recordBool == False: |
butPressed = GPIO.input(pin) |
if time.time() - öncekiTime > 1.0:#düğmeye bir saniyeden fazla basılırsa, recordBool True olur |
recordBool = Doğru |
eğer recordBool == True:#if recordBool True ise, bir bip sesi çalar ve ardından kayıt yapar |
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)#records i.wav dosyasında maksimum 20 saniye, cd kalitesinde |
while butPressed == Yanlış: |
butPressed = GPIO.input(pin) |
os.system("pkill -9 arecord")#düğme bırakıldığında veya 20 saniye sonra kayıt durdurulur |
recordBool = Yanlış |
else:#recordBool False ise, sesi çalar i.wav |
os.system("aplay -D plughw:CARD=Device_1, DEV=0 %d.wav" %i) |
zaman.uyku(0.1) |
GitHub tarafından ❤ ile barındırılan rawPlayback kaydediciyi görüntüle
Adım 6: Python Komut Dosyasını Her Başlangıçta Çalıştırın
Her Pi'nin başlangıcında python betiğini çalıştırmak için, aşağıdaki satırlar /home/pi/.config/autostart/ klasöründeki play.desktop adlı bir dosyaya konur.
Raspberry Pi'nin başlangıcında play.py'yi çalıştırır
[Masaüstü Girişi] |
Kodlama=UTF-8 |
Tip=Uygulama |
Ad=Oynatma |
Yorum=Bu bir oynatma uygulamasıdır |
Yürütme= python /home/pi/playback.py |
StartupNotify=yanlış |
uç=doğru |
Gizli=yanlış |
GitHub tarafından ❤ ile barındırılan rawplayback.desktop'u görüntüle
7. Adım: Notu Bitir
Lütfen yorum bölümünde bu proje hakkında ne düşündüğünüzü söyleyin, önerilerinizi bildirin ve beğendiyseniz Raspberry Pi yarışmasında bana oy verin.
Seni okumak için sabırsızlanıyorum!