- Installazione dei pacchetti necessari per la comunicazione Bluetooth:
- Associazione di dispositivi con Raspberry Pi tramite Bluetooth:
- Selezione dell'auto giocattolo:
- Schema del circuito e spiegazione:
- Controllo dell'auto da remoto con l'app Android BlueTerm:
- Programmazione Python:
Raspberry Pi è molto popolare per i progetti IoT grazie alla sua perfetta capacità di comunicazione wireless su Internet. Raspberry Pi 3 ha Wi-Fi e Bluetooth integrati e Bluetooth è un protocollo di comunicazione wireless molto popolare. Oggi costruiremo un'auto telecomandata utilizzando Raspberry Pi 3 e Bluetooth, qui useremo Smart Phone come telecomando per controllare l'auto. Abbiamo già creato questa macchina RC utilizzando Arduino.
Qui stiamo usando Raspberry Pi 3 che ha Bluetooth integrato, quindi non abbiamo bisogno di utilizzare alcun dongle Bluetooth USB esterno. Qui stiamo usando il protocollo Bluetooth RFCOMM per la comunicazione wireless.
La programmazione per Bluetooth in Python segue il modello di programmazione socket e la comunicazione tra i dispositivi Bluetooth avviene tramite socket RFCOMM. RFCOMM (Radio Frequency Communication) è un protocollo Bluetooth che fornisce porte seriali RS-232 emulate e chiamato anche Serial Port Emulation. Il profilo della porta seriale Bluetooth si basa su questo protocollo. RFCOMM è molto popolare nelle applicazioni Bluetooth grazie al suo ampio supporto e all'API disponibile pubblicamente. È associato al protocollo L2CAP.
Se si dispone di Raspberry Pi 2, è necessario utilizzare un dongle Bluetooth esterno o il modulo Bluetooth HC-06. Controlla i nostri progetti precedenti per l'utilizzo di questi dispositivi Bluetooth esterni: Controllo GPIO Raspberry Pi utilizzando l'app Android su Bluetooth e elettrodomestici controllati Raspberry Pi.
Installazione dei pacchetti necessari per la comunicazione Bluetooth:
Prima di iniziare, dobbiamo installare alcuni software per impostare la comunicazione Bluetooth in Raspberry Pi. Dovresti avere una scheda di memoria installata Raspbian Jessie pronta con Raspberry Pi. Controlla questo articolo per installare il sistema operativo Raspbian e iniziare con Raspberry Pi. Quindi ora dobbiamo prima aggiornare Raspbian usando i seguenti comandi:
sudo apt-get update sudo apt-get upgrade
Quindi dobbiamo installare alcuni pacchetti relativi al Bluetooth:
sudo apt-get install bluetooth blueman bluez
Quindi riavvia il Raspberry Pi:
sudo riavvio
BlueZ è un progetto open source e stack di protocollo Bluetooth ufficiale di Linux. Supporta tutti i protocolli Bluetooth principali e ora diventa parte del kernel Linux ufficiale.
Blueman fornisce l'interfaccia Desktop per gestire e controllare i dispositivi Bluetooth.
Infine abbiamo bisogno della libreria python per la comunicazione Bluetooth in modo da poter inviare e ricevere dati tramite RFCOMM utilizzando il linguaggio Python:
sudo apt-get install python-bluetooth
Installa anche le librerie di supporto GPIO per Raspberry Pi:
sudo apt-get install python-rpi.gpio
Ora abbiamo finito con l'installazione dei pacchetti richiesti per la comunicazione Bluetooth in Raspberry Pi.
Associazione di dispositivi con Raspberry Pi tramite Bluetooth:
Associare dispositivi Bluetooth, come il telefono cellulare, a Raspberry Pi è molto semplice. Qui abbiamo accoppiato il nostro smartphone Android con Raspberry Pi. Abbiamo già installato BlueZ in Pi, che fornisce un'utilità della riga di comando chiamata "bluetoothctl" per gestire i nostri dispositivi Bluetooth.
Ora apri l' utilità bluetoothctl con il comando seguente:
sudo bluetoothctl
Puoi controllare tutti i comandi dell'utility bluetoothctl digitando "help" . Per ora dobbiamo inserire i seguenti comandi nell'ordine dato:
# accensione # agente attivo # rilevabile su # accoppiabile su # scansione attiva
Dopo l'ultimo comando "scan on", vedrai il tuo dispositivo Bluetooth (cellulare) nell'elenco. Assicurati che il tuo cellulare abbia il Bluetooth attivato e visibile dai dispositivi nelle vicinanze. Quindi copia l'indirizzo MAC del tuo dispositivo e abbinalo usando il comando dato:
paio
Quindi ti verrà richiesto il codice di accesso o il PIN nella console del terminale, quindi digita il codice di accesso e premi Invio. Quindi digita lo stesso passcode nel tuo telefono cellulare quando richiesto e ora sei accoppiato con successo con Raspberry Pi. Abbiamo anche spiegato l'intero processo nel video fornito nel precedente tutorial sul controllo GPIO. Ecco il link diretto a YouTube.
Come detto in precedenza, puoi anche utilizzare l' interfaccia Desktop per accoppiare il telefono cellulare. Dopo aver installato Blueman, vedrai un'icona Bluetooth sul lato destro del desktop Raspberry Pi come mostrato di seguito, utilizzando il quale puoi facilmente eseguire l'accoppiamento.
Selezione dell'auto giocattolo:
In questo progetto Raspberry Pi Controlled Car abbiamo utilizzato un'auto giocattolo per la dimostrazione. Qui abbiamo selezionato un'auto giocattolo RF con funzione di sterzo mobile da sinistra a destra. Dopo aver acquistato questa macchina abbiamo sostituito il suo circuito RF con il nostro circuito Raspberry. Questa macchina ha due motori a corrente continua, uno per far ruotare due ruote anteriori e l'altro per far ruotare due ruote posteriori. Il motore sul lato anteriore viene utilizzato per dare la direzione all'auto significa girare a sinistra oa destra (come la vera funzione di sterzo dell'auto). E il motore laterale posteriore viene utilizzato per guidare l'auto in avanti e indietro. Un Bluetooth di Raspberry viene utilizzato per ricevere comandi in modalità wireless dal telefono Android per controllare l'auto.
Puoi utilizzare qualsiasi macchinina dotata di due motori CC per ruotare le ruote anteriori e posteriori.
Schema del circuito e spiegazione:
In questa macchina telecomandata, dobbiamo solo collegare Raspberry Pi con due motori utilizzando il modulo L293D. Per alimentare il Raspberry Pi e l'auto abbiamo utilizzato un power bank mobile. Il power bank mobile è sufficiente per alimentare il Raspberry Pi e i motori dell'auto, ma quando mettiamo il power bank sull'auto, a causa del peso elevato del power bank mobile, l'auto non sarebbe in grado di muoversi correttamente. Quindi si consiglia di utilizzare l'alimentatore a basso peso o batterie al Litio per alimentare il sistema. Tutti i collegamenti sono mostrati nello schema elettrico di seguito. Controlla anche la nostra sezione Robotica per saperne di più sul controllo dei motori con diverse tecnologie.
Nota: non mettere più di 5v al raspberry pi.
Questo circuito è stato realizzato su Perf Board per questo progetto, in modo che ci sia meno peso sulla macchina.
Controllo dell'auto da remoto con l'app Android BlueTerm:
Ora, dopo aver impostato tutte le cose e aver provato con successo ad accoppiare lo Smart Phone tramite Bluetooth, dobbiamo installare un'app Android per comunicare con Raspberry Pi utilizzando un adattatore seriale Bluetooth, in modo da poter controllare i pin GPIO di Raspberry Pi. Come detto in precedenza, il protocollo RFCOMM / SPP emula la comunicazione seriale tramite Bluetooth, quindi abbiamo installato qui BlueTerm App che supporta questo protocollo.
È inoltre possibile utilizzare qualsiasi altra app per terminale Bluetooth che supporti la comunicazione tramite presa RFCOMM.
Ora, dopo aver scaricato e installato l'app BlueTerm, eseguire il programma Python indicato di seguito dal terminale e collegare contemporaneamente il dispositivo raspberrypi associato dall'app BlueTerm.
Dopo la connessione riuscita vedrai connesso: raspberrypi nell'angolo in alto a destra dell'App come mostrato di seguito:
Ora puoi semplicemente inserire i seguenti comandi dall'app BlueTerm per far muovere l'auto nella direzione desiderata. Premere "q" per uscire dal programma. Puoi utilizzare la tastiera di digitazione vocale di Google per controllare l'auto utilizzando la tua voce. Controlla la demo completa nel video fornito alla fine.
Comandi:
F - movimento in avanti
B - Spostamento all'indietro
S - Ferma
L - Avanti a sinistra
R - Avanti a destra
A - Spostamento indietro a sinistra
P - Spostamento indietro a destra
D - Esci
Programmazione Python:
Il programma Python per il controllo del GPIO Raspberry Pi con l'app Android è molto semplice e intuitivo. Abbiamo solo bisogno di imparare un po 'sul codice relativo alla comunicazione RFCOMM Bluetooth. Altrimenti è come controllare qualsiasi robot o macchina facendo il perno del motore alto o basso. Il programma completo è fornito di seguito nella sezione Codice.
Innanzitutto, dobbiamo importare la libreria del socket Bluetooth che ci consente di controllare il Bluetooth con il linguaggio Python; abbiamo installato la libreria per lo stesso nella sezione precedente.
importa Bluetooth
Quindi abbiamo incluso altri file di intestazione e abbiamo definito i pin per i motori impostandoli come valore predefinito basso.
importa l'ora di importazione bluetooth importa RPi.GPIO come 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)
Di seguito è riportato il codice responsabile della comunicazione Bluetooth:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM) port = 1 server_socket.bind (("", port)) server_socket.listen (1) client_socket, address = server_socket.accept () print "Connessione accettata da", indirizzo
Qui possiamo capirli riga per riga:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM): creazione di socket per la comunicazione Bluetooth RFCOMM.
server_socket.bind (("", port): - Il server collega lo script sull'host '' alla porta.
server_socket.listen (1): il server ascolta per accettare una connessione alla volta.
client_socket, address = server_socket.accept (): il server accetta la richiesta di connessione del client e assegna l'indirizzo mac all'indirizzo della variabile, client_socket è il socket del client
Dopo di che abbiamo creato alcune funzioni che sono responsabili dello spostamento dell'auto nella direzione desiderata: def left_side_forward (), def right_side_forward (), def forward (), def left_side_reverse (), def right_side_reverse (), def reverse () def stop (). Queste funzioni verranno chiamate rispettivamente quando premiamo L, R, F, A, P, B, S dall'app Mobile blueTerm e l'auto si muoverà di conseguenza.
data = "" while 1: data = client_socket.recv (1024) print "Ricevuto:% s"% data if (data == "F"): forward () elif (data == "L"): left_side_forward () elif (data == "R"): right_side_forward () elif (data == "B"): reverse () 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): riceve i dati tramite il client socket client_socket e li assegna alla variabile data. È possibile ricevere un massimo di 1024 caratteri alla volta.
Infine, dopo tutta la programmazione, chiudere la connessione client e server utilizzando il codice seguente:
client_socket.close () server_socket.close ()