- Εγκατάσταση απαιτούμενων πακέτων για επικοινωνία Bluetooth:
- Σύζευξη συσκευών με Raspberry Pi μέσω Bluetooth:
- Επιλογή του αυτοκινήτου παιχνιδιών:
- Διάγραμμα κυκλώματος και επεξήγηση:
- Έλεγχος του αυτοκινήτου από απόσταση με το Android App BlueTerm:
- Προγραμματισμός Python:
Το Raspberry Pi είναι πολύ δημοφιλές για έργα IoT, λόγω της απρόσκοπτης δυνατότητας ασύρματης επικοινωνίας μέσω του Διαδικτύου. Το Raspberry Pi 3 διαθέτει ενσωματωμένο Wi-Fi και Bluetooth και το Bluetooth είναι ένα πολύ δημοφιλές πρωτόκολλο ασύρματης επικοινωνίας. Σήμερα πρόκειται να κατασκευάσουμε ένα τηλεχειριστήριο αυτοκινήτου χρησιμοποιώντας το Raspberry Pi 3 και το Bluetooth, εδώ θα χρησιμοποιήσουμε το έξυπνο τηλέφωνο ως τηλεχειριστήριο για τον έλεγχο του αυτοκινήτου. Έχουμε ήδη δημιουργήσει αυτό το αυτοκίνητο RC χρησιμοποιώντας το Arduino.
Εδώ χρησιμοποιούμε το Raspberry Pi 3 που έχουν ενσωματωμένο Bluetooth, οπότε δεν χρειάζεται να χρησιμοποιήσουμε κανένα εξωτερικό dongle USB USB. Εδώ χρησιμοποιούμε το πρωτόκολλο Bluetooth RFCOMM για ασύρματη επικοινωνία.
Ο προγραμματισμός για Bluetooth στο Python ακολουθεί το μοντέλο προγραμματισμού υποδοχής και οι επικοινωνίες μεταξύ των συσκευών Bluetooth πραγματοποιούνται μέσω της υποδοχής RFCOMM. Το RFCOMM (Radio Frequency Communication) είναι ένα πρωτόκολλο Bluetooth που παρέχει προσομοιωμένες σειριακές θύρες RS-232 και ονομάζεται επίσης Serial Port Emulation. Το προφίλ σειριακής θύρας Bluetooth βασίζεται σε αυτό το πρωτόκολλο. Το RFCOMM είναι πολύ δημοφιλές στις εφαρμογές Bluetooth λόγω της ευρείας υποστήριξης και του διαθέσιμου στο κοινό API. Συνδέεται με το πρωτόκολλο L2CAP.
Εάν έχετε Raspberry Pi 2, τότε πρέπει είτε να χρησιμοποιήσετε εξωτερικό dongle Bluetooth ή μονάδα Bluetooth HC-06. Ελέγξτε τα προηγούμενα έργα μας για τη χρήση αυτών των εξωτερικών συσκευών Bluetooth: Έλεγχος του Raspberry Pi GPIO χρησιμοποιώντας εφαρμογή Android μέσω Bluetooth και ελεγχόμενων οικιακών συσκευών Raspberry Pi.
Εγκατάσταση απαιτούμενων πακέτων για επικοινωνία Bluetooth:
Πριν ξεκινήσουμε, πρέπει να εγκαταστήσουμε κάποιο λογισμικό για τη ρύθμιση της επικοινωνίας Bluetooth στο Raspberry Pi. Θα πρέπει να έχετε εγκατεστημένη μια κάρτα μνήμης Raspbian Jessie με το Raspberry Pi. Ελέγξτε αυτό το άρθρο για να εγκαταστήσετε το Raspbian OS και να ξεκινήσετε με το Raspberry Pi. Τώρα λοιπόν πρέπει πρώτα να ενημερώσουμε το Raspbian χρησιμοποιώντας τις παρακάτω εντολές:
sudo apt-get ενημέρωση sudo apt-get αναβάθμιση
Τότε πρέπει να εγκαταστήσουμε μερικά πακέτα που σχετίζονται με το Bluetooth:
sudo apt-get εγκατάσταση bluetooth blueman bluez
Στη συνέχεια, επανεκκινήστε το Raspberry Pi:
επανεκκίνηση sudo
Το BlueZ είναι ένα έργο ανοιχτού κώδικα και μια επίσημη στοίβα πρωτοκόλλου Bluetooth Linux. Υποστηρίζει όλα τα βασικά πρωτόκολλα Bluetooth και τώρα γίνονται μέρος του επίσημου πυρήνα Linux.
Το Blueman παρέχει τη διεπαφή επιφάνειας εργασίας για τη διαχείριση και τον έλεγχο των συσκευών Bluetooth.
Τέλος, χρειαζόμαστε τη βιβλιοθήκη python για επικοινωνία Bluetooth, ώστε να μπορούμε να στέλνουμε και να λαμβάνουμε δεδομένα μέσω RFCOMM χρησιμοποιώντας τη γλώσσα Python:
sudo apt-get εγκατάσταση python-bluetooth
Εγκαταστήστε επίσης τις βιβλιοθήκες υποστήριξης GPIO για το Raspberry Pi:
sudo apt-get εγκατάσταση python-rpi.gpio
Τώρα τελειώσαμε με την εγκατάσταση των απαιτούμενων πακέτων για επικοινωνία Bluetooth στο Raspberry Pi.
Σύζευξη συσκευών με Raspberry Pi μέσω Bluetooth:
Η σύζευξη συσκευών Bluetooth, όπως το κινητό τηλέφωνο, με το Raspberry Pi είναι πολύ εύκολη. Εδώ έχουμε συνδυάσει το έξυπνο τηλέφωνο Android με το Raspberry Pi. Προηγουμένως έχουμε εγκαταστήσει το BlueZ στο Pi, το οποίο παρέχει ένα βοηθητικό πρόγραμμα γραμμής εντολών που ονομάζεται "bluetoothctl" για τη διαχείριση των συσκευών Bluetooth.
Τώρα ανοίξτε το βοηθητικό πρόγραμμα bluetoothctl με την παρακάτω εντολή:
sudo bluetoothctl
Μπορείτε να ελέγξετε όλες τις εντολές του βοηθητικού προγράμματος bluetoothctl πληκτρολογώντας «βοήθεια» . Προς το παρόν πρέπει να εισαγάγουμε τις παρακάτω εντολές με δεδομένη σειρά:
# power on # agent on # Discoverable on # pairable on # scan on
Μετά την τελευταία εντολή "σάρωση ενεργοποιημένη", θα δείτε τη συσκευή Bluetooth (κινητό τηλέφωνο) στη λίστα. Βεβαιωθείτε ότι το κινητό σας έχει ενεργοποιήσει και ορατό το Bluetooth από κοντινές συσκευές. Στη συνέχεια, αντιγράψτε τη διεύθυνση MAC της συσκευής σας και αντιστοιχίστε τη χρησιμοποιώντας τη δεδομένη εντολή:
ζεύγος
Στη συνέχεια, θα σας ζητηθεί κωδικός πρόσβασης ή Pin στην κονσόλα τερματικού σας και στη συνέχεια πληκτρολογήστε τον κωδικό πρόσβασης εκεί και πατήστε enter. Στη συνέχεια, πληκτρολογήστε τον ίδιο κωδικό πρόσβασης στο κινητό σας τηλέφωνο όταν σας ζητηθεί και τώρα έχετε συνδυαστεί με επιτυχία με το Raspberry Pi. Έχουμε εξηγήσει επίσης όλη αυτή τη διαδικασία στο βίντεο που δόθηκε στο προηγούμενο πρόγραμμα εκμάθησης του GPIO. Εδώ είναι ο άμεσος σύνδεσμος YouTube.
Όπως ειπώθηκε προηγουμένως, μπορείτε επίσης να χρησιμοποιήσετε τη διεπαφή επιφάνειας εργασίας για τη σύζευξη του κινητού τηλεφώνου. Μετά την εγκατάσταση του Blueman, θα δείτε ένα εικονίδιο Bluetooth στη δεξιά πλευρά της επιφάνειας εργασίας Raspberry Pi όπως φαίνεται παρακάτω, χρησιμοποιώντας το οποίο μπορείτε εύκολα να κάνετε τη σύζευξη.
Επιλογή του αυτοκινήτου παιχνιδιών:
Σε αυτό το έργο Raspberry Pi Controlled Car έχουμε χρησιμοποιήσει ένα αυτοκίνητο παιχνιδιών για επίδειξη. Εδώ έχουμε επιλέξει ένα αυτοκίνητο παιχνιδιών RF με κινούμενο αριστερό-δεξιό σύστημα διεύθυνσης. Αφού αγοράσαμε αυτό το αυτοκίνητο, αντικαταστήσαμε το κύκλωμα RF με το κύκλωμα Raspberry. Αυτό το αυτοκίνητο διαθέτει δύο κινητήρες DC, ένας για περιστροφή δύο μπροστινών τροχών και άλλος για περιστροφή δύο πίσω τροχών. Ο μπροστινός κινητήρας χρησιμοποιείται για την κατεύθυνση του αυτοκινήτου σημαίνει στροφή αριστερά ή δεξιά (όπως το πραγματικό χαρακτηριστικό διεύθυνσης αυτοκινήτου) Και ο πίσω πλευρικός κινητήρας χρησιμοποιείται για την οδήγηση του αυτοκινήτου προς τα εμπρός και προς τα πίσω. Ένα Bluetooth του Raspberry χρησιμοποιείται για τη λήψη ασύρματης εντολής από τηλέφωνο Android για τον έλεγχο του αυτοκινήτου.
Μπορείτε να χρησιμοποιήσετε οποιοδήποτε παιχνίδι αυτοκινήτου που έχει δύο DC Motors για περιστροφή εμπρός και πίσω τροχούς.
Διάγραμμα κυκλώματος και επεξήγηση:
Σε αυτό το τηλεχειριστήριο αυτοκινήτου, χρειάζεται μόνο να συνδέσουμε το Raspberry Pi με δύο κινητήρες χρησιμοποιώντας τη μονάδα L293D. Για την τροφοδοσία του Raspberry Pi και του αυτοκινήτου χρησιμοποιήσαμε μια κινητή τράπεζα τροφοδοσίας. Η κινητή τράπεζα τροφοδοσίας είναι αρκετή για να τροφοδοτήσει το Raspberry Pi και τους κινητήρες του αυτοκινήτου, αλλά όταν βάζουμε power bank πάνω από το αυτοκίνητο τότε λόγω του μεγάλου βάρους του κινητού power bank car δεν θα μπορούσε να κινηθεί σωστά. Προτείνουμε λοιπόν να χρησιμοποιείτε την τροφοδοσία χαμηλού βάρους ή μπαταρίες λιθίου για την τροφοδοσία του συστήματος. Όλες οι συνδέσεις εμφανίζονται στο διάγραμμα κυκλώματος παρακάτω. Ελέγξτε επίσης την ενότητα Ρομποτική για να μάθετε περισσότερα σχετικά με τον έλεγχο των κινητήρων με διαφορετικές τεχνολογίες.
Σημείωση: μην τοποθετείτε περισσότερο από 5v στο βατόμουρο pi.
Αυτό το κύκλωμα έχει κατασκευαστεί στο Perf Board για αυτό το έργο, έτσι ώστε να υπάρχει μικρότερο βάρος στο αυτοκίνητο.
Έλεγχος του αυτοκινήτου από απόσταση με το Android App BlueTerm:
Τώρα, αφού ρυθμίσουμε όλα τα πράγματα και δοκιμάσουμε με επιτυχία την αντιστοίχιση του Smart Phone μέσω Bluetooth, πρέπει να εγκαταστήσουμε μια εφαρμογή Android για επικοινωνία με το Raspberry Pi χρησιμοποιώντας έναν σειριακό προσαρμογέα Bluetooth, έτσι ώστε να μπορούμε να ελέγχουμε τις ακίδες GPIO του Raspberry Pi. Όπως προαναφέρθηκε, το πρωτόκολλο RFCOMM / SPP μιμείται σειριακή επικοινωνία μέσω Bluetooth, επομένως εγκαταστήσαμε εδώ την εφαρμογή BlueTerm που υποστηρίζει αυτό το πρωτόκολλο.
Μπορείτε επίσης να χρησιμοποιήσετε οποιαδήποτε άλλη εφαρμογή Bluetooth Terminal που υποστηρίζει επικοινωνία μέσω της υποδοχής RFCOMM.
Τώρα μετά τη λήψη και την εγκατάσταση της εφαρμογής BlueTerm, εκτελέστε το παρακάτω πρόγραμμα Python από το τερματικό και συνδέστε την αντιστοιχισμένη συσκευή raspberrypi από την εφαρμογή BlueTerm ταυτόχρονα.
Μετά την επιτυχή σύνδεση θα δείτε συνδεδεμένο: raspberrypi στην επάνω δεξιά γωνία της εφαρμογής όπως φαίνεται παρακάτω:
Τώρα μπορείτε απλώς να εισαγάγετε τις ακόλουθες εντολές από την εφαρμογή BlueTerm για να κάνετε το αυτοκίνητο να κινείται προς την επιθυμητή κατεύθυνση. Πατήστε 'q' για έξοδο από το πρόγραμμα. Μπορείτε να χρησιμοποιήσετε το Πληκτρολόγιο πληκτρολόγησης Google Voice για να ελέγξετε αυτό το αυτοκίνητο χρησιμοποιώντας το Voice σας. Ελέγξτε την πλήρη επίδειξη στο βίντεο που δίνεται στο τέλος.
Εντολές:
F - Προώθηση
Β - Μετακίνηση προς τα πίσω
S - Σταματήστε
L - Εμπρός αριστερά
R - Προώθηση προς τα δεξιά
Α - Αριστερή κίνηση προς τα πίσω
P - Δεξιά κίνηση προς τα πίσω
Q - Κλείστε
Προγραμματισμός Python:
Το πρόγραμμα Python για τον έλεγχο του Raspberry Pi GPIO με εφαρμογή Android είναι πολύ απλό και αυτονόητο. Μόνο που πρέπει να μάθουμε λίγο για τον κώδικα που σχετίζεται με την επικοινωνία Bluetooth RFCOMM. Διαφορετικά είναι ίδιο με τον έλεγχο οποιουδήποτε ρομπότ ή αυτοκινήτου κάνοντας τον πείρο του κινητήρα ψηλά ή χαμηλά. Το πλήρες πρόγραμμα δίνεται παρακάτω στην ενότητα Κώδικας.
Κατ 'αρχάς, πρέπει να εισαγάγουμε τη βιβλιοθήκη υποδοχής Bluetooth που μας επιτρέπει να ελέγχουμε το Bluetooth με τη γλώσσα Python. έχουμε εγκαταστήσει τη βιβλιοθήκη για το ίδιο στην προηγούμενη ενότητα.
εισαγωγή Bluetooth
Στη συνέχεια, συμπεριλάβαμε μερικά περισσότερα αρχεία κεφαλίδας και ορίσαμε τις καρφίτσες για τους κινητήρες που τα έβαζαν προεπιλεγμένα χαμηλά.
εισαγωγή χρόνου εισαγωγής bluetooth εισαγωγή RPi.GPIO ως GPIO m11 = 18 m12 = 23 m21 = 24 m22 = 25 GPIO.setwarnings (False) GPIO.setmode (GPIO.BCM) GPIO.setup (m11, GPIO.OUT) GPIO.setup (m12, GPIO.OUT) GPIO.setup (m21, GPIO.OUT) GPIO.setup (m22, GPIO.OUT) GPIO.output (m11, 0) GPIO.output (m12, 0) GPIO.output (m21, 0) GPIO.output (m22, 0)
Παρακάτω είναι ο υπεύθυνος κωδικός για την επικοινωνία Bluetooth:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM) port = 1 server_socket.bind (("", port)) server_socket.listen (1) client_socket, address = server_socket.accept () εκτύπωση "Αποδεκτή σύνδεση από", διεύθυνση
Εδώ μπορούμε να τους καταλάβουμε κάθε γραμμή:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM): Δημιουργία υποδοχής για επικοινωνία Bluetooth RFCOMM.
server_socket.bind (("", port): - Ο διακομιστής συνδέει το σενάριο στον κεντρικό υπολογιστή "" στη θύρα
server_socket.listen (1): Ο διακομιστής ακούει να δέχεται μία σύνδεση κάθε φορά.
client_socket, address = server_socket.accept (): Ο διακομιστής δέχεται το αίτημα σύνδεσης του πελάτη και εκχωρεί τη διεύθυνση mac στη μεταβλητή διεύθυνση, το client_socket είναι η υποδοχή του πελάτη
Μετά από αυτό έχουμε δημιουργήσει ορισμένες λειτουργίες που είναι υπεύθυνες για την κίνηση του αυτοκινήτου στην επιθυμητή κατεύθυνση: def left_side_forward (), def right_side_forward (), def forward (), def left_side_reverse (), def right_side_reverse (), def reverse () def stop ()). Αυτές οι λειτουργίες θα κληθούν αντίστοιχα όταν πατάμε L, R, F, A, P, B, S από την εφαρμογή BlueTerm για κινητά και το αυτοκίνητο θα κινηθεί ανάλογα.
data = "" while 1: data = client_socket.recv (1024) print "Λήφθηκε:% s"% data if (data == "F"): forward () elif (data == "L"): left_side_forward () elif (data == "R"): right_side_forward () elif (data == "B"): αντίστροφη () elif (data == "A"): left_side_reverse () elif (data == "P"): right_side_reverse () elif data == "S": stop () elif (data == "Q"): print ("Quit") break client_socket.close () server_socket.close ()
data = client_socket.recv (1024): Λάβετε δεδομένα μέσω της υποδοχής πελάτη client_socket και εκχωρήστε τα στα μεταβλητά δεδομένα. Μπορείτε να λάβετε έως 1024 χαρακτήρες κάθε φορά.
Τέλος, μετά από όλο τον προγραμματισμό, κλείστε τη σύνδεση πελάτη και διακομιστή χρησιμοποιώντας τον παρακάτω κώδικα:
client_socket.close () server_socket.close ()