Πίνακας περιεχομένων:
- Βήμα 1: Ρύθμιση του διακομιστή σας
- Βήμα 2: Ρυθμίστε το Pi και εγκαταστήστε το Darkice
- Βήμα 3: Κουμπί ροής και πινακίδα στον αέρα
- Βήμα 4: Κουμπί ασφαλούς τερματισμού λειτουργίας και LED δραστηριότητας
- Βήμα 5: Κάντε τα σενάρια Python να εκτελούνται από την εκκίνηση
- Βήμα 6: Φτιάξτε το κουτί
- Βήμα 7: Εγκατάσταση
Βίντεο: Κουτί ροής ραδιοφώνου με ένα κουμπί: 7 βήματα (με εικόνες)
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:36
Δημιούργησα ένα κουτί για το μπαρ του φίλου μου που έχει μέσα ένα 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 δραστηριότητας
Μόνο για λόγους ασφάλειας και για να παρατείνω τη ζωή του 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 για να αποφύγετε την υπερθέρμανση. Συνδέστε τα καλώδια ήχου από το μίξερ σας, πατήστε το κουμπί και απολαύστε την εκπομπή!
Συνιστάται:
Πώς να δημιουργήσετε ένα μετρητή ροής νερού: 7 βήματα
Πώς να δημιουργήσετε έναν μετρητή ροής νερού: Ένας ακριβής, μικρός και χαμηλού κόστους μετρητής ροής υγρού μπορεί εύκολα να κατασκευαστεί χρησιμοποιώντας εξαρτήματα GreenPAK. Σε αυτό το Instructable παρουσιάζουμε έναν μετρητή ροής νερού που μετρά συνεχώς τη ροή νερού και την εμφανίζει σε τρεις οθόνες 7 τμημάτων. Η αίσθηση ροής
Μικροελεγκτής AVR. Εναλλαγή LED με χρήση διακόπτη με κουμπί. Κουμπί απωθήσεων: 4 βήματα
Μικροελεγκτής AVR. Εναλλαγή LED με χρήση διακόπτη με κουμπί. Πιέζοντας το πλήκτρο Debouncing .: Σε αυτήν την ενότητα, θα μάθουμε πώς να κάνουμε τον κωδικό προγράμματος C για το ATMega328PU για να αλλάξουμε την κατάσταση των τριών LED σύμφωνα με την είσοδο από έναν διακόπτη κουμπιού. Επίσης, έχουμε διερευνήσει λύσεις στο πρόβλημα του "Switch Bounce". Ως συνήθως, θα
Μέτρηση ροής με μετρητές ροής νερού (υπερήχων): 5 βήματα (με εικόνες)
Μέτρηση ροής με μετρητές ροής νερού (Υπερήχων): Το νερό είναι ένας κρίσιμος πόρος για τον πλανήτη μας. Οι άνθρωποι χρειαζόμαστε νερό κάθε μέρα. Και το νερό είναι απαραίτητο για μια ποικιλία βιομηχανιών και εμείς οι άνθρωποι το χρειαζόμαστε καθημερινά. Καθώς το νερό έχει γίνει πιο πολύτιμο και λιγοστό, η ανάγκη για αποτελεσματική παρακολούθηση και τον άνθρωπο
Δημιουργήστε ένα κουτί ομιλίας μέσα σε ένα έμβολο τουαλέτας: 6 βήματα (με εικόνες)
Δημιουργήστε ένα κουτί ομιλίας μέσα σε ένα έμβολο τουαλέτας: Με ένα συγκολλητικό σίδερο, ένα ζευγάρι ηχεία υπολογιστή και κάποιο υδραυλικό εξοπλισμό (συμπεριλαμβανομένου ενός εμβόλου τουαλέτας). Μπορείτε να δημιουργήσετε ένα αρκετά καλό Talk Box (ένα talk box είναι αυτό που χρησιμοποιούν καλλιτέχνες όπως το Daft Punk για να αποκτήσουν αυτό το Robot Voice Effect σε τραγούδια όπως το Around th
Προσθέστε ένα κουμπί Rapid-fire στο ποντίκι σας χρησιμοποιώντας ένα χρονόμετρο 555: 5 βήματα (με εικόνες)
Προσθέστε ένα κουμπί Rapid-fire στο ποντίκι σας χρησιμοποιώντας ένα χρονόμετρο 555: Το δάχτυλό σας κουράζεται εύκολα ενώ παίζετε βιντεοπαιχνίδια; Θα θέλατε ποτέ να μπορούσατε να συγκεντρώσετε n00bs γρηγορότερα από την ταχύτητα του φωτός χωρίς να ιδρώσετε ποτέ; Αυτό το Instructable θα σας δείξει πώς