- Instalarea pachetelor necesare pentru comunicarea Bluetooth:
- Asocierea dispozitivelor cu Raspberry Pi prin Bluetooth:
- Selectarea mașinii de jucărie:
- Schema și explicația circuitului:
- Controlul automobilului de la distanță cu aplicația Android BlueTerm:
- Programare Python:
Raspberry Pi este foarte popular pentru proiectele IoT datorită capacității sale perfecte de comunicare fără fir prin internet. Raspberry Pi 3 are Wi-Fi și Bluetooth încorporate, iar Bluetooth este un protocol de comunicație wireless foarte popular. Astăzi vom construi o mașină cu telecomandă folosind Raspberry Pi 3 și Bluetooth, aici vom folosi Smart Phone ca telecomandă pentru a controla mașina. Am construit anterior această mașină RC folosind Arduino.
Aici folosim Raspberry Pi 3 care are Bluetooth încorporat, deci nu este nevoie să folosim niciun dongle USB extern USB. Aici folosim protocolul RFCOMM Bluetooth pentru comunicații fără fir.
Programarea pentru Bluetooth în Python urmează modelul de programare socket și comunicațiile între dispozitivele Bluetooth se realizează prin socket RFCOMM. RFCOMM (Radio Frequency Communication) este un protocol Bluetooth care furnizează porturi seriale RS-232 emulate și denumit și Emulare port serial. Profilul portului serial Bluetooth se bazează pe acest protocol. RFCOMM este foarte popular în aplicațiile Bluetooth datorită suportului larg și API-ului disponibil public. Este legat de protocolul L2CAP.
Dacă aveți Raspberry Pi 2, atunci trebuie să utilizați dongle Bluetooth extern sau modulul Bluetooth HC-06. Verificați proiectele noastre anterioare pentru utilizarea acestor dispozitive Bluetooth externe: Controlul Raspberry Pi GPIO utilizând aplicația Android prin Bluetooth și Raspberry Pi controlate electrocasnice.
Instalarea pachetelor necesare pentru comunicarea Bluetooth:
Înainte de a începe, trebuie să instalăm un software pentru configurarea comunicării Bluetooth în Raspberry Pi. Ar trebui să aveți un card de memorie instalat Raspbian Jessie gata cu Raspberry Pi. Consultați acest articol pentru a instala sistemul de operare Raspbian și pentru a începe să utilizați Raspberry Pi. Deci, acum trebuie mai întâi să actualizăm Raspbian folosind comenzile de mai jos:
sudo apt-get update sudo apt-get upgrade
Apoi, trebuie să instalăm câteva pachete legate de Bluetooth:
sudo apt-get install bluetooth blueman bluez
Apoi reporniți Raspberry Pi:
sudo reboot
BlueZ este un proiect open source și un stack oficial de protocol Linux Bluetooth. Acceptă toate protocoalele de bază Bluetooth și devine acum parte a Linux Kernel oficial.
Blueman oferă interfața desktop pentru a gestiona și controla dispozitivele Bluetooth.
În cele din urmă, avem nevoie de Python Library pentru comunicarea Bluetooth, astfel încât să putem trimite și primi date prin RFCOMM folosind limbajul Python:
sudo apt-get install python-bluetooth
Instalați, de asemenea, bibliotecile de suport GPIO pentru Raspberry Pi:
sudo apt-get install python-rpi.gpio
Acum am terminat cu instalarea pachetelor necesare pentru comunicarea Bluetooth în Raspberry Pi.
Asocierea dispozitivelor cu Raspberry Pi prin Bluetooth:
Împerecherea dispozitivelor Bluetooth, cum ar fi telefonul mobil, cu Raspberry Pi este foarte ușoară. Aici ne-am asociat telefonul inteligent Android cu Raspberry Pi. Am instalat anterior BlueZ în Pi, care oferă un utilitar de linie de comandă numit „bluetoothctl” pentru a gestiona dispozitivele noastre Bluetooth.
Acum deschideți utilitarul bluetoothctl prin comanda de mai jos:
sudo bluetoothctl
Puteți verifica toate comenzile utilitarului bluetoothctl tastând „help” . Deocamdată trebuie să introducem mai jos comenzile în ordinea dată:
# pornire # agent activat # descoperibil pe # asociat pe # scanare activată
După ultima comandă „scan on”, veți vedea dispozitivul dvs. Bluetooth (telefon mobil) în listă. Asigurați-vă că mobilul dvs. are Bluetooth activat și vizibil de dispozitivele din apropiere. Apoi copiați adresa MAC a dispozitivului dvs. și asociați-o utilizând comanda dată:
pereche
Apoi vi se va solicita codul de acces sau PIN în consola terminalului, apoi tastați codul de acces acolo și apăsați Enter. Apoi tastați aceeași parolă în telefonul mobil când vi se solicită și acum sunteți asociat cu succes cu Raspberry Pi. De asemenea, am explicat acest întreg proces în videoclipul prezentat în ghidul anterior de control GPIO. Iată linkul direct YouTube.
După cum am spus mai devreme, puteți utiliza și interfața desktop pentru a asocia telefonul mobil. După instalarea Blueman, veți vedea o pictogramă Bluetooth în partea dreaptă a desktopului dvs. Raspberry Pi, așa cum se arată mai jos, cu ajutorul căreia puteți face cu ușurință asocierea.
Selectarea mașinii de jucărie:
În acest proiect Raspberry Pi Controlled Car, am folosit o mașină de jucărie pentru demonstrație. Aici am selectat o mașină de jucărie RF cu funcție de direcție în stânga-dreapta. După cumpărarea acestei mașini, i-am înlocuit circuitul RF cu circuitul nostru Raspberry. Această mașină are două motoare de curent continuu, unul pentru a roti două roți față și altul pentru a roti două roți spate. Motorul din față este utilizat pentru a da direcția mașinii înseamnă a roti partea stângă sau dreapta (cum ar fi funcția reală de direcție a mașinii). Și motorul din spate este utilizat pentru a conduce mașina în direcția înainte și înapoi. Un Bluetooth al Raspberry este utilizat pentru a primi comenzi wireless de la telefonul Android pentru a controla mașina.
Puteți folosi orice mașină de jucărie care are două motoare DC pentru a roti roțile din față și din spate.
Schema și explicația circuitului:
În această mașină controlată la distanță, trebuie să conectăm Raspberry Pi doar cu două motoare folosind modulul L293D. Pentru alimentarea Raspberry Pi și a mașinii am folosit o bancă de putere mobilă. Banca de putere mobilă este suficientă pentru a alimenta Raspberry Pi și motoarele mașinii, dar atunci când punem banca de putere peste mașină, din cauza greutății mari a mașinii de bancă de putere mobilă nu ne vom putea mișca corect. Prin urmare, vă recomandăm să utilizați sursa de alimentare cu greutate redusă sau bateriile cu litiu pentru alimentarea sistemului. Toate conexiunile sunt prezentate în schema de circuit de mai jos. Consultați și secțiunea noastră de robotică pentru a afla mai multe despre controlul motoarelor cu diferite tehnologii.
Notă: nu puneți mai mult de 5v la zmeura pi.
Acest circuit a fost realizat pe Perf Board pentru acest proiect, astfel încât să aibă o greutate mai mică pe mașină.
Controlul automobilului de la distanță cu aplicația Android BlueTerm:
Acum, după ce am configurat toate lucrurile și am încercat cu succes pararea Smart Phone-ului prin Bluetooth, trebuie să instalăm o aplicație Android pentru comunicarea cu Raspberry Pi folosind un adaptor serial Bluetooth, astfel încât să putem controla pinii GPIO ai Raspberry Pi. După cum am spus mai devreme, protocolul RFCOMM / SPP emulează comunicarea serială prin Bluetooth, așa că am instalat aici aplicația BlueTerm care acceptă acest protocol.
Puteți utiliza, de asemenea, orice altă aplicație Bluetooth Terminal care acceptă comunicarea prin socket RFCOMM.
Acum, după descărcarea și instalarea aplicației BlueTerm, rulați programul Python de mai jos de la terminal și conectați dispozitivul raspberrypi asociat din aplicația BlueTerm în același timp.
După o conexiune reușită, veți vedea conectat: raspberrypi în colțul din dreapta sus al aplicației, după cum se arată mai jos:
Acum puteți introduce următoarele comenzi din aplicația BlueTerm pentru a face mașina să se deplaseze în direcția dorită. Apăsați „q” pentru a ieși din program. Puteți utiliza tastatura Google Voice Typing pentru a controla această mașină folosind Voice. Verificați demo-ul complet în videoclipul prezentat la final.
Comenzi:
F - Mutare înainte
B - Mutare înapoi
S - Oprește-te
L - Mutare înainte spre stânga
R - Înainte Mutați spre dreapta
A - Mutare înapoi spre stânga
P - Mutare înapoi spre dreapta
Î - Renunță
Programare Python:
Programul Python pentru controlul Raspberry Pi GPIO cu aplicația Android este foarte simplu și se explică de la sine. Doar trebuie să învățăm puțin despre codul legat de comunicarea Bluetooth RFCOMM. În caz contrar, este la fel ca și controlul oricărui robot sau mașină prin creșterea sau scăderea pinului motorului. Programul complet este dat mai jos în secțiunea Cod.
În primul rând, trebuie să importăm biblioteca de soclu Bluetooth care ne permite să controlăm Bluetooth cu limbajul Python; am instalat biblioteca pentru același lucru în secțiunea anterioară.
import Bluetooth
Apoi am mai inclus câteva fișiere de antet și am definit pinii pentru motoare, care le-au redus implicit.
import bluetooth import timp de import RPi.GPIO ca GPIO m11 = 18 m12 = 23 m21 = 24 m22 = 25 GPIO.setwarnings (Fals) 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)
Mai jos este codul responsabil pentru comunicarea Bluetooth:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM) port = 1 server_socket.bind (("", port)) server_socket.listen (1) client_socket, address = server_socket.accept () print "Conexiune acceptată de la", adresa
Aici le putem înțelege rând cu rând:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM): Se creează soclu pentru comunicarea RFCOMM Bluetooth.
server_socket.bind (("", port): - Serverul leagă scriptul de pe gazda '' la port.
server_socket.listen (1): Serverul ascultă să accepte o conexiune la un moment dat.
client_socket, address = server_socket.accept (): Serverul acceptă cererea de conectare a clientului și atribuie adresa Mac la adresa variabilă, client_socket este soclul clientului
După aceasta am creat câteva funcții care sunt responsabile pentru deplasarea mașinii în direcția dorită: def left_side_side forward (), def right_side_forward (), def forward (), def left_side_reverse (), def right_side_reverse (), def reverse () def stop (). Aceste funcții vor fi apelate respectiv atunci când apăsăm L, R, F, A, P, B, S din aplicația Mobile blueTerm și mașina se va deplasa corespunzător.
data = "" în timp ce 1: data = client_socket.recv (1024) print "Received:% s"% data if (data == "F"): forward () elif (data == "L"): left_side_forward () elif (date == "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): Primiți date prin soclul client client_socket și alocați-le datelor variabile. Se pot primi maximum 1024 de caractere odată.
În cele din urmă, după toată programarea, închideți conexiunea client și server folosind codul de mai jos:
client_socket.close () server_socket.close ()