Raspberry Pi | Μετατρέπουμε το Pi σε έναν πραγματικό ραδιοφωνικό σταθμό!


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

Πώς στο καλό γίνεται αυτό;


Όλες οι ηλεκτρονικές συσκευές εκπέμπουν σήματα σε ραδιοσυχνότητες και τα σήματα που εκπέμπονται από τις θύρες GPIO του Raspberry Pi τυγχάνει να συμπίπτουν με τις συχνότητες του ραδιοφώνου (87.5MHz - 108MHz). Το μόνο που χρειάζεται να κάνουμε λοιπόν είναι να τρέξουμε ένα πρόγραμμα που θα στέλνει αρχεία ήχου σε ένα από τα pin στο οποίο θα συνδέσουμε ένα καλώδιο που θα χρησιμοποιηθεί ως κεραία. Στη συνέχεια μπορούμε να ανοίξουμε ένα κοινό ραδιόφωνο στη συχνότητα που έχουμε επιλέξει και θα ακούσουμε τη μουσική μας!

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

Διαφήμιση

Μεγάλη προσοχή!


Για όσους έχουν δει την ταινία "Βασικά καλησπέρα σας" με το Στάθη Ψάλτη (Κούλα μ'ακούς; Πολύ κωλόπαιδο ο Κυριάκος...), θα θυμούνται ότι οι ραδιοφωνικοί σταθμοί χωρίς άδεια από το κράτος θεωρούνται "πειρατικοί" και τα πρόστιμα είναι πολύ μεγάλα! Είναι σημαντικό λοιπόν να πούμε ότι μπορεί να έχουμε πρόβλημα με το νόμο εκπέμποντας από το Raspberry Pi, αλλά αυτό δεν είναι απαραίτητα σίγουρο.

Όπως είπαμε προηγουμένως όλες οι ηλεκτρονικές συσκευές εκπέμπουν σήματα σε ραδιοσυχνότητες, για αυτό και οι επίσημες άδειες του κράτους βγαίνουν ανάλογα με την ισχύ και ξεκινούν από το 1W (Watt) και άνω. Το Raspberry Pi λοιπόν εκπέμπει σε ισχύ 0.1W με 0.5W, οπότε θεωρητικά δε θα έχουμε πρόβλημα. Όπως για παράδειγμα είναι νόμιμος ένας FM Transmitter αυτοκινήτου, ο οποίος κάνει ακριβώς την ίδια δουλειά με αυτό που θα φτιάξουμε σήμερα, έτσι θεωρητικά δε θα έχουμε και εμείς πρόβλημα, αρκεί να κρατήσουμε την ισχύ άρα και την εμβέλεια σε χαμηλά επίπεδα.

Εδώ πρέπει να πούμε ότι δεν προτείνουμε σε κανένα να φτιάξει έναν "πειρατικό" ραδιοφωνικό σταθμό και ότι ο σημερινός οδηγός έχει μόνο πειραματικό σκοπό.


Πώς μετατρέπουμε το Raspberry Pi σε ραδιοφωνικό σταθμό

Ψάξαμε στο ίντερνετ και βρήκαμε αρκετά προγράμματα και script που μπορούν να κάνουν αυτή τη δουλειά, επιλέξαμε όμως το "PiFMPlay", γιατί είναι το πιο ολοκληρωμένο και πιο εύκολο στη χρήση. Πρόκειται για ένα πρόγραμμα γραμμένο σε Python, το οποίο τρέχουμε μέσα από το τερματικό, κάτι που μπορούμε να κάνουμε και απομακρυσμένα μέσω SSH.

Ο σταθμός μας θα μπορεί να παίξει μεμονωμένα κομμάτια ή ολόκληρους φακέλους, οπότε καλό θα είναι να χωρίσουμε τη μουσική μας ανά είδος ή ανά καλλιτέχνη. Τα αρχεία ήχου θα πρέπει να είναι αποκλειστικά σε μορφή WAV για να εκπέμπονται ραδιοφωνικά, θα κατεβάσουμε όμως και μερικούς μετατροπείς, οι οποίοι πρακτικά θα μας επιτρέψουν να παίξουμε WAV, MP3 και M4A αρχεία.

Ξεκινάμε λοιπόν κατεβάζοντας το sox, το ffmpeg και το git με την εντολή:

sudo apt install ffmpeg sox libsox-fmt-all git


Κατεβάζουμε το PiFMPlay με την εντολή:

git clone https://github.com/Mikael-Jakhelln/PiFMPlay.git

Μπαίνουμε στο φάκελο που περιλαμβάνει τα αρχεία δίνοντας την εντολή:

cd PiFMPlay/pifmplay

Τέλος πρέπει να κάνουμε εκτελέσιμα τα αρχεία "pifmplay" και "pifm" με την εντολή:

sudo chmod +x pifmplay pifm

Αυτό ήταν όλο! Ο ραδιοφωνικός μας σταθμός είναι έτοιμος ή μάλλον σχεδόν έτοιμος γιατί δεν έχουμε φτιάξει ακόμη την κεραία του. Για να τη φτιάξουμε λοιπόν θα χρειαστούμε ιδανικά ένα κοινό καλώδιο από χαλκό. Όσο μεγαλύτερη, παχύτερη και καλύτερης ποιότητας είναι η κεραία μας, τόσο πιο καθαρό θα είναι το σήμα μας και τόσο πιο μεγάλη εμβέλεια θα έχει. Θυμίζουμε ξανά ότι η μεγάλη εμβέλεια είναι παράνομη, οπότε δώστε προσοχή σε αυτό τον τομέα.

Στο δικό μας πείραμα χρησιμοποιήσαμε ένα καλώδιο dupont, το οποίο μπαίνει εύκολα στις θύρες GPIO του Pi, χάρη στις ενσωματωμένες κεφαλές που διαθέτει. Θα το βάλουμε υποχρεωτικά στη GPIO 4 (ή αλλιώς στο PIN 7), η οποία είναι η τέταρτη από τα αριστερά στη δεύτερη σειρά του Raspberry Pi.


Διαφήμιση

Πώς χρησιμοποιούμε το PiFMPlay


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

cd PiFMPlay/pifmplay

Στο φάκελο υπάρχει ένα αρχείο ήχου με το theme από το Star Wars. Το τρέχουμε με την εντολή:

sudo sh pifmplay starwars.wav 100.3

Συντονίζουμε τώρα ένα οποιοδήποτε ραδιόφωνο στη συχνότητα 100.3 και ακούμε αν παίζει το Star Wars. Προσέξτε ότι στο τέλος της εντολής, δώσαμε τη συχνότητα στην οποία θέλουμε να παίζει ο σταθμός μας. Εννοείται ότι μπορούμε να την αλλάξουμε με όποια άλλη θέλουμε.

Βάζουμε λοιπόν όλη μας τη μουσική στο φάκελο "Music" του Raspberry Pi. Για να παίξουμε για παράδειγμα το αρχείο "sound.mp3" από αυτό το φάκελο στη συχνότητα 95.5, δίνουμε την εντολή:

sudo sh pifmplay /Music/sound.mp3 95.5

Για να παίξουμε όλα τα τραγούδια του φακέλου στη συχνότητα 87.6, δίνουμε την εντολή:

sudo sh pifmplay /Music 87.6


Όταν παίζουμε έναν ολόκληρο φάκελο, σίγουρα θα θέλουμε να προσπεράσουμε κάποιο τραγούδι ή να σταματήσουμε για λίγο τη μετάδοση. Αν θέλουμε απλά να πάμε στο επόμενο τραγούδι, πληκτρολογούμε το γράμμα "q" στο τερματικό. Αν πάλι θέλουμε να σταματήσουμε τελείως τη μετάδοση πατάμε "Ctrl + c".

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

sudo sh pifmplay pause 
sudo sh pifmplay resume 
sudo sh pifmplay stop 
sudo sh pifmplay next

Τέλος μπορούμε αν θέλουμε να μιλήσουμε ζωντανά στον αέρα, όπως στις πραγματικές εκπομπές! Για αυτό το σκοπό θα χρειαστεί να συνδέσουμε ένα USB μικρόφωνο και να δώσουμε την εντολή:

arecord -d0 -c2 -f S16_LE -r 22050 -twav -D copy | sudo ./pifm -

Έτσι λοιπόν μετατρέπουμε το Raspberry Pi σε ραδιοφωνικό σταθμό και αυτά είναι σε γενικές γραμμές όσα μπορεί να κάνει το PiFMPlay. Περισσότερες πληροφορίες για αυτό θα βρούμε στη σελίδα του στο GitHub.

Σχόλια

Δείτε επίσης...

Φεύγω από την Google (μέρος 15) | ''Ξηλώνουμε'' τα Google apps από το Android

Android | Γιατί δε θα αγόραζα ποτέ smartphone της OnePlus

Ιδιωτικό απόρρητο | Το αφελές επιχείρημα του ''Δεν έχω τίποτα να κρύψω''

Docker (μέρος 7) | Στήνουμε έναν reverse proxy για τα container μας με το Traefik

Μάθε παιδί μου Linux (μέρος 11) | Δίσκοι, κατατμήσεις και σύστημα αρχείων (filesystem)

Απόρρητο | ''Μπερδεύουμε'' τον αλγόριθμο Google και Facebook με ψεύτικες πληροφορίες

Ubuntu Touch 2020 review | Μια πραγματική mobile GNU/Linux διανομή έτοιμη για καθημερινή χρήση

Android | Περιόρισε την παρακολούθηση των εφαρμογών και κόψε τις διαφημίσεις με το TrackerControl

Docker (μέρος 1) | Τι είναι και πώς το εγκαθιστούμε στον υπολογιστή μας;

Android | Βάλε στην ''απομόνωση'' τις εφαρμογές που δεν εμπιστεύεσαι με το Shelter