- Instal·lació dels paquets necessaris per a la comunicació Bluetooth:
- Emparellament de dispositius amb Raspberry Pi per Bluetooth:
- Selecció del cotxe de joguina:
- Diagrama del circuit i explicació:
- Controlar el cotxe de forma remota amb l'aplicació Android BlueTerm:
- Programació Python:
Raspberry Pi és molt popular per als projectes IoT per la seva capacitat de comunicació sense fils a través d’Internet. Raspberry Pi 3 té Wi-Fi i Bluetooth incorporats, i el Bluetooth és un protocol de comunicació sense fils molt popular. Avui construirem un cotxe controlat a distància mitjançant Raspberry Pi 3 i Bluetooth, aquí utilitzarem el telèfon intel·ligent com a comandament a distància per controlar el cotxe. Anteriorment, hem creat aquest cotxe RC amb Arduino.
Aquí fem servir Raspberry Pi 3 que té Bluetooth integrat, de manera que no necessitem utilitzar cap dongle Bluetooth USB extern. Aquí estem utilitzant el protocol RFCOMM Bluetooth per a la comunicació sense fils.
La programació per Bluetooth a Python segueix el model de programació de sòcol i les comunicacions entre els dispositius Bluetooth es fan mitjançant el sòcol RFCOMM. RFCOMM (Radio Frequency Communication) és un protocol Bluetooth que proporcionava ports sèrie RS-232 emulats i també anomenat emulació de port sèrie. El perfil del port sèrie Bluetooth es basa en aquest protocol. RFCOMM és molt popular a les aplicacions Bluetooth a causa del seu ampli suport i de l'API disponible públicament. Està vinculat al protocol L2CAP.
Si teniu Raspberry Pi 2, cal que utilitzeu un dongle Bluetooth extern o un mòdul Bluetooth HC-06. Consulteu els nostres projectes anteriors per utilitzar aquests dispositius Bluetooth externs: Controlar Raspberry Pi GPIO mitjançant l'aplicació d'Android mitjançant Bluetooth i electrodomèstics controlats per Raspberry Pi.
Instal·lació dels paquets necessaris per a la comunicació Bluetooth:
Abans de començar, hem d’instal·lar alguns programes per configurar la comunicació Bluetooth a Raspberry Pi. Hauríeu de tenir instal·lada una targeta de memòria Raspbian Jessie amb Raspberry Pi. Consulteu aquest article per instal·lar el sistema operatiu Raspbian i començar a utilitzar Raspberry Pi. Per tant, ara hem d’actualitzar primer Raspbian mitjançant les ordres següents:
sudo apt-get update sudo apt-get upgrade
A continuació, hem d’instal·lar alguns paquets relacionats amb Bluetooth:
sudo apt-get install bluetooth blueman bluez
A continuació, reinicieu el Raspberry Pi:
sudo reiniciar
BlueZ és un projecte de codi obert i una pila oficial de protocols Bluetooth de Linux. Admet tots els protocols Bluetooth bàsics i ara passa a formar part del nucli oficial de Linux.
Blueman proporciona la interfície d'escriptori per gestionar i controlar els dispositius Bluetooth.
Finalment, necessitem la biblioteca Python per a la comunicació Bluetooth per poder enviar i rebre dades mitjançant RFCOMM mitjançant el llenguatge Python:
sudo apt-get install python-bluetooth
Instal·leu també les biblioteques de suport GPIO per a Raspberry Pi:
sudo apt-get install python-rpi.gpio
Ara hem acabat d’instal·lar els paquets necessaris per a la comunicació Bluetooth a Raspberry Pi.
Emparellament de dispositius amb Raspberry Pi per Bluetooth:
Emparellar dispositius Bluetooth, com el telèfon mòbil, amb Raspberry Pi és molt fàcil. Aquí hem emparellat el nostre telèfon intel·ligent Android amb Raspberry Pi. Anteriorment hem instal·lat BlueZ a Pi, que proporciona una utilitat de línia d’ordres anomenada “bluetoothctl” per gestionar els nostres dispositius Bluetooth.
Ara obriu la utilitat bluetoothctl mitjançant l'ordre següent:
sudo bluetoothctl
Podeu comprovar totes les ordres de la utilitat bluetoothctl escrivint "ajuda" . De moment, hem d’introduir a continuació les ordres en un ordre determinat:
# engegada # agent activada # descoberta el # emparellable en # escaneig activada
Després de l'última ordre "scan on", veureu el dispositiu Bluetooth (telèfon mòbil) a la llista. Assegureu-vos que el dispositiu mòbil tingui el Bluetooth activat i visible pels dispositius propers. A continuació, copieu l'adreça MAC del vostre dispositiu i emparegeu-la mitjançant l'ordre donada:
parella
A continuació, se us demanarà la contrasenya o el PIN a la consola del terminal, a continuació, escriviu la contrasenya i premeu Retorn A continuació, escriviu la mateixa contrasenya al vostre telèfon mòbil quan se us demani i ja estigueu sincronitzat amb Raspberry Pi. També hem explicat tot aquest procés al vídeo presentat a l’anterior Tutorial de control de GPIO. Aquí teniu l’enllaç directe de YouTube.

Com s’ha dit anteriorment, també podeu utilitzar la interfície d’escriptori per emparellar el telèfon mòbil. Després d’instal·lar Blueman, veureu una icona Bluetooth al costat dret de l’escriptori Raspberry Pi, tal com es mostra a continuació, amb la qual podeu fer fàcilment l’aparellament.

Selecció del cotxe de joguina:
En aquest projecte de Raspberry Pi Controlled Car, hem utilitzat un cotxe de joguina per demostrar. Aquí hem seleccionat un cotxe de joguina RF amb funció de direcció en moviment esquerra-dreta. Després de comprar aquest cotxe, hem substituït el seu circuit de RF pel nostre circuit de gerds. Aquest cotxe té dos motors de corrent continu, un per girar dues rodes davanteres i un altre per girar dues rodes posteriors. El motor lateral frontal s’utilitza per donar direcció al cotxe, vol dir girar cap a l’esquerra o cap a la dreta (com la funció de direcció real del cotxe). I el motor lateral posterior s’utilitza per conduir el cotxe cap endavant i cap enrere. Un Bluetooth de gerds s’utilitza per rebre comandes sense fils des del telèfon Android per controlar el cotxe.

Podeu utilitzar qualsevol cotxe de joguina que tingui dos motors CC per girar les rodes davantera i posterior.
Diagrama del circuit i explicació:
En aquest cotxe teledirigit, només necessitem connectar Raspberry Pi amb dos motors mitjançant el mòdul L293D. Per alimentar el Raspberry Pi i el cotxe, hem utilitzat un banc d’energia mòbil. El banc de potència mòbil és suficient per alimentar els motors del Raspberry Pi i del cotxe, però quan posem el banc de potència sobre el cotxe, a causa del pes pesat del banc de potència mòbil no es podria moure correctament. Per tant, us recomanem que feu servir la font d’alimentació de baix pes o les bateries de liti per alimentar el sistema. Totes les connexions es mostren a continuació en el diagrama de circuits. Consulteu també la nostra secció de robòtica per obtenir més informació sobre el control de motors amb diferents tecnologies.
Nota: no poseu més de 5v al raspberry pi.

Aquest circuit s’ha fet a Perf Board per a aquest projecte, de manera que hi ha menys pes al cotxe.


Controlar el cotxe de forma remota amb l'aplicació Android BlueTerm:
Ara, després de configurar totes les coses i provar d’escapar el telèfon intel·ligent mitjançant bluetooth, hem d’instal·lar una aplicació d’Android per comunicar-nos amb Raspberry Pi mitjançant un adaptador de sèrie Bluetooth, de manera que puguem controlar els pins GPIO de Raspberry Pi. Com ja es va dir anteriorment, el protocol RFCOMM / SPP emula la comunicació en sèrie mitjançant Bluetooth, de manera que hem instal·lat aquí l' aplicació BlueTerm que admet aquest protocol.

També podeu utilitzar qualsevol altra aplicació de terminal Bluetooth que admeti la comunicació mitjançant el sòcol RFCOMM.
Ara, després de descarregar i instal·lar l'aplicació BlueTerm, executeu el programa Python que s'indica a continuació des del terminal i connecteu el dispositiu raspberrypi emparellat des de l'aplicació BlueTerm alhora.

Després de la connexió correcta, veureu connectat: raspberrypi a l'extrem superior dret de l'aplicació, tal com es mostra a continuació:


Ara només podeu introduir les ordres següents des de l’aplicació BlueTerm per fer que el cotxe es mogui en la direcció desitjada. Premeu 'q' per sortir del programa. Podeu utilitzar el teclat de mecanografia de Google Voice per controlar aquest cotxe amb la vostra veu. Consulteu la demostració completa al vídeo que apareix al final.
Ordres:
F - Avançar
B - Moure cap enrere
S - Atura't
L - Avanç cap a l'esquerra
R - Avanç cap a la dreta
A - Avanç cap a l'esquerra
P - Moviment cap enrere cap a la dreta
P - Vés

Programació Python:
El programa Python per al control de Raspberry Pi GPIO amb aplicació per a Android és molt senzill i s’explica per si mateix. Només hem d’aprendre una mica sobre el codi relacionat amb la comunicació RFCOMM Bluetooth. En cas contrari, és el mateix que controlar qualsevol robot o cotxe fent que el passador del motor sigui alt o baix. A continuació es mostra el programa complet a la secció Codi.
En primer lloc, hem d’importar la biblioteca de sòcol Bluetooth que ens permet controlar Bluetooth amb el llenguatge Python; hem instal·lat la biblioteca per a la mateixa a la secció anterior.
importar Bluetooth
A continuació, vam incloure alguns fitxers de capçalera més i vam definir els pins per als motors per defecte.
importació del temps d’importació Bluetooth importació RPi.GPIO com 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)
A continuació es mostra el codi responsable de la comunicació Bluetooth:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM) port = 1 server_socket.bind (("", port)) server_socket.listen (1) client_socket, address = server_socket.accept () imprimir "Connexió acceptada des de", adreça
Aquí els podem entendre línia per línia:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM): crea socket per a la comunicació RFCOMM Bluetooth.
server_socket.bind (("", port): - El servidor vincula l'script de l'amfitrió '' al port.
server_socket.listen (1): el servidor escolta com acceptar una connexió cada vegada.
client_socket, address = server_socket.accept (): el servidor accepta la sol·licitud de connexió del client i assigna l'adreça mac a l'adreça variable, client_socket és el sòcol del client
Després d'això, hem creat algunes funcions que s'encarreguen de moure el cotxe en la direcció desitjada: def left_side_side endavant (), def right_side_forward (), def endavant (), def left_side_reverse (), def right_side_reverse (), def reverse () def stop (). Aquestes funcions es criden respectivament quan premem L, R, F, A, P, B, S des de l'aplicació Mobile blueTerm i el cotxe es mourà en conseqüència.
data = "" mentre que 1: data = client_socket.recv (1024) imprimeix "Rebut:% s"% dades 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): rebeu dades a través del socket client_socket del client i assigneu-les a les dades variables. Es poden rebre un màxim de 1024 caràcters alhora.
Finalment, després de tota la programació, tanqueu la connexió client i servidor mitjançant el codi següent:
client_socket.close () server_socket.close ()
