Πίνακας περιεχομένων:

Κουτί ροής ραδιοφώνου με ένα κουμπί: 7 βήματα (με εικόνες)
Κουτί ροής ραδιοφώνου με ένα κουμπί: 7 βήματα (με εικόνες)

Βίντεο: Κουτί ροής ραδιοφώνου με ένα κουμπί: 7 βήματα (με εικόνες)

Βίντεο: Κουτί ροής ραδιοφώνου με ένα κουμπί: 7 βήματα (με εικόνες)
Βίντεο: Εικόνες ντροπής στην μαθητική παρέλαση στην Ν.Φιλαδέλφεια 2024, Ιούνιος
Anonim
Κουτί ροής ραδιοφώνου με ένα κουμπί
Κουτί ροής ραδιοφώνου με ένα κουμπί

Δημιούργησα ένα κουτί για το μπαρ του φίλου μου που έχει μέσα ένα Raspberry Pi και με το πάτημα ενός κουμπιού μεταδίδει ήχο σε έναν ιστότοπο χρησιμοποιώντας το Darkice και το Icecast, ενώ ταυτόχρονα ανάβει μια πινακίδα «On-Air». Νόμιζα ότι αυτό ήταν κάτι που οι άνθρωποι ήδη έκαναν, αλλά μετά από εκτεταμένο ψάξιμο δεν βρήκα τίποτα και αποφάσισα να το καταλάβω μόνος μου και να κάνω αυτό το Instructable.

Χρησιμοποίησα ένα Raspberry Pi 3+ B αλλά από όσο μπορώ να πω ότι θα λειτουργούσε σε οποιοδήποτε Pi (ίσως οι αριθμοί καρφιτσών GPIO να διαφέρουν, δεν μπορώ να το βεβαιώσω όμως). Χρησιμοποίησα το πακέτο NOOBS για το λειτουργικό σύστημα και αγόρασα μια εξαιρετικά απλή κάρτα ήχου για την είσοδο. Πρόσθεσα επίσης ένα ασφαλές κουμπί τερματισμού λειτουργίας και LED δραστηριότητας στο κουτί για την προστασία του Pi.

Θα χρειαστείτε:

Raspberry Pi

Πακέτο NOOBS σε κάρτα SD

Διακόπτης ενεργοποίησης/απενεργοποίησης (χρησιμοποίησα ένα μεγάλο κόκκινο κουμπί διακοπής έκτακτης ανάγκης όπως αυτό, αλλά μπορεί να είναι κάθε είδους διακόπτης "κλικ")

Κουμπί ώθησης

1 LED

Μια πινακίδα «On-Air», έφτιαξα τη δική μου με μια σειρά LED

Συγκολλητικό σίδερο και μικρή πλακέτα σύνδεσης (μόλις έκοψα μια λωρίδα από ένα από αυτά που είχα γύρω)

Κάρτα ήχου (χρησιμοποίησα μια εξαιρετικά απλή, όπως αυτή)

Βήμα 1: Ρύθμιση του διακομιστή σας

Για τον πραγματικό ραδιοφωνικό σταθμό που χρησιμοποιούμε δεν έκανα αυτό το μέρος καθώς δεν είχα πρόσβαση στον διακομιστή και ο φίλος μου το έκανε, αλλά υπάρχει ένας βασικός οδηγός ρύθμισης στον ιστότοπο του Icecast και κατάφερα να δουλεύει από το Pi στην αρχή για να δούμε πώς θα πάει. Εναλλακτικά, μπορείτε να αποκτήσετε έναν λογαριασμό στο internet-radio.com και λειτουργεί με το Darkice.

Βήμα 2: Ρυθμίστε το Pi και εγκαταστήστε το Darkice

Αποκτήστε μια κάρτα SD με το πακέτο NOOBS. Μόλις ανοίξετε το Raspbian και εγκαταστήσετε όλες τις ενημερώσεις, ανοίξτε ένα παράθυρο τερματικού και πληκτρολογήστε:

sudo apt-get ενημέρωση

sudo apt-get install darkice

Το Darkice είναι μέρος του Debian οπότε θα εγκατασταθεί αυτόματα, χρειάζονται λίγα λεπτά.

Μόλις τελειώσει με την προτροπή πληκτρολογήστε:

σκοτεινιά

Θα δώσει ένα μήνυμα σφάλματος και δεν θα εκτελεστεί, αλλά είναι εντάξει. Στο μήνυμα θα πει κάτι σαν:

Χρησιμοποιώντας το αρχείο ρυθμίσεων: /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 στο θετικό τερματικό της συστοιχίας LED για το σήμα ON-Air.

GPIO25 στον διακόπτη κλικ.

Η άλλη πλευρά του διακόπτη κλικ συνδέεται με τη σύνδεση 3 σημείων.

Ο αρνητικός ακροδέκτης της συστοιχίας LED συνδέεται επίσης με τη σύνδεση 3 σημείων.

(Τα άλλα στοιχεία στο διάγραμμα εξηγούνται στο επόμενο βήμα).

Το σενάριο Python με το οποίο καταλήξαμε έχει ως εξής (παρακαλώ σημειώστε ότι αυτό είναι ένα εγχειρίδιο για ολόκληρο το έργο, δεν ξέρω πραγματικά αρκετά για να εξηγήσω τον κώδικα. Το συνέταξα από διάφορα άλλα σεμινάρια για διαφορετικές λειτουργίες):

εισαγωγή χρόνου εισαγωγής os εισαγωγή RPi. GPIO ως 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)

εναλλαγή = Λάθος

def start_darkice ():

print ('call subprocess') #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 ('screen -X -S darkice quit')

ενώ True:

buttonState = GPIO.input (buttonPin) εάν buttonState == True: αν όχι εναλλαγή: toggle = True print ('turn on darkice') start_darkice () #print ('BUTTON STATE TRUE') GPIO.output (ledPin, GPIO. HIGH)

αλλού:

if toggle: toggle = seευδής εκτύπωση ('stopping darkice') stop_darkice () #print ('BUTTON STATE FALSE') GPIO.output (ledPin, GPIO. LOW) time.sleep (1)

Το αρχείο py είναι προσαρτημένο σε αυτό το Instructible, μπορείτε απλά να το κατεβάσετε και να ακολουθήσετε το Βήμα 5, αν θέλετε.

Βήμα 4: Κουμπί ασφαλούς τερματισμού λειτουργίας και LED δραστηριότητας

Κουμπί ασφαλούς τερματισμού λειτουργίας και LED δραστηριότητας
Κουμπί ασφαλούς τερματισμού λειτουργίας και LED δραστηριότητας

Μόνο για λόγους ασφάλειας και για να παρατείνω τη ζωή του Pi, πρόσθεσα ένα ασφαλές κουμπί απενεργοποίησης και ένα LED εξωτερικής δραστηριότητας, ώστε οι άνθρωποι να γνωρίζουν πότε είναι ασφαλές να αποσυνδέσετε το κουτί. Βρήκα εύκολα σεμινάρια και για τα δύο, αλλά παρατήρησα ότι το Raspberry Pi 3 B+ έχει ACT LED GPIO pin, ενώ τα προηγούμενα μοντέλα δεν το κάνουν και αυτό θα μπορούσε να είναι προβληματικό αν έχετε παλαιότερο Pi.

Συνδέστε το θετικό τερματικό του LED στο GPIO13 και το αρνητικό στο GPIO26. Για να λειτουργήσει το LED ACT πρέπει να επεξεργαστείτε το αρχείο config.txt στον κατάλογο BOOT. Μπορείτε να το βρείτε στο πρόγραμμα περιήγησης Raspbian ή με:

sudo nano /usr/boot/config.txt

Όταν επεξεργάζεστε το αρχείο, απλά προσθέστε τις ακόλουθες γραμμές:

# Χρησιμοποιήστε εξωτερικό LED ως SD ACT LED dtoverlay = pi3-act-led, gpio = 19

Τώρα το εξωτερικό LED αναβοσβήνει με δραστηριότητα κάρτας SD.

Συνδέστε τους ακροδέκτες του διακόπτη ώθησης στα GPIO3 και GPIO8. Βρήκα τον ακόλουθο κώδικα από ένα σεμινάριο και λειτουργεί καλά:

εισαγωγή χρόνου από το gpiozero Κουμπί εισαγωγής από υποεπεξεργασία εισαγωγή check_call από παύση εισαγωγής σήματος

def shutdown ():

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

shutdown_btn = Κουμπί (2, χρόνος αναμονής = 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/YOURFILENAME, py &

sudo python /home/pi/YOURFILENAME2.py &

λίγο πριν τη γραμμή

έξοδος 0

Το «&» στο τέλος κάθε γραμμής είναι σημαντικό για να διασφαλιστεί ότι οι βρόχοι του προγράμματος.

Βήμα 6: Φτιάξτε το κουτί

Φτιάξτε το κουτί
Φτιάξτε το κουτί
Φτιάξτε το κουτί
Φτιάξτε το κουτί
Φτιάξτε το κουτί
Φτιάξτε το κουτί

Αυτό εξαρτάται αποκλειστικά από εσάς. Πραγματικά χρειάζεται μόνο το μέγεθος του Pi, αλλά έβαλα έναν συμπιεστή στη ρύθμιση μου για να διατηρήσω τη ροή του ραδιοφώνου σε αρκετά σταθερό επίπεδο, ώστε το κουτί να είναι λίγο μεγαλύτερο. Το δικό μου έχει μια τρύπα στο μπροστινό μέρος για την πινακίδα On-Air και μία για το μεγάλο κόκκινο κουμπί, καθώς έφτιαξα μια μικρή κάρτα οδηγιών για τους DJ και την ένθεσα κάτω από το κουμπί. Στο πλάι του κουτιού υπάρχει μια τρύπα για το κουμπί, το LED ACT και την είσοδο ήχου, καθώς και ένθετες οδηγίες για το προσωπικό της γραμμής για το πώς να κλείσετε με ασφάλεια το κουτί.

Βήμα 7: Εγκατάσταση

Εγκατάσταση
Εγκατάσταση
Εγκατάσταση
Εγκατάσταση
Εγκατάσταση
Εγκατάσταση
Εγκατάσταση
Εγκατάσταση

Στερεώστε όλα τα ξεχωριστά εξαρτήματα στο κουτί σας, έχοντας κατά νου ότι είναι πάντα καλό να επιτρέπετε κάποια κυκλοφορία αέρα γύρω από το Pi για να αποφύγετε την υπερθέρμανση. Συνδέστε τα καλώδια ήχου από το μίξερ σας, πατήστε το κουμπί και απολαύστε την εκπομπή!

Συνιστάται: