- A Bluetooth kommunikációhoz szükséges csomagok telepítése:
- Eszközök párosítása Raspberry Pi-vel Bluetooth-on:
- A játékautó kiválasztása:
- Áramkör és magyarázat:
- Autó távvezérlése az Android App BlueTerm segítségével:
- Python programozás:
A Raspberry Pi nagyon népszerű az IoT-projekteknél, mivel zökkenőmentesen képes vezeték nélküli kommunikációt folytatni az interneten keresztül. A Raspberry Pi 3 beépített Wi-Fi-t és Bluetooth-ot tartalmaz, és a Bluetooth egy nagyon népszerű vezeték nélküli kommunikációs protokoll. Ma távirányítású autót fogunk építeni Raspberry Pi 3 és Bluetooth használatával, itt az intelligens telefont távirányítóként fogjuk használni az autó vezérléséhez. Korábban már készítettük ezt az RC autót Arduino felhasználásával.
Itt a Raspberry Pi 3-at használjuk, amely beépített Bluetooth-t tartalmaz, ezért nincs szükségünk külső USB Bluetooth-kulcs használatára. Itt RFCOMM Bluetooth protokollt használunk a vezeték nélküli kommunikációhoz.
A Pythonban a Bluetooth programozása a socket programozási modellt követi, és a Bluetooth eszközök közötti kommunikáció az RFCOMM socketen keresztül történik. Az RFCOMM (rádiófrekvenciás kommunikáció) egy Bluetooth protokoll, amely emulált RS-232 soros portokat biztosított, és soros port emulációnak is hívták. A Bluetooth soros port profil ezen a protokollon alapul. Az RFCOMM széles körű támogatása és nyilvánosan elérhető API miatt nagyon népszerű a Bluetooth-alkalmazásokban. Az L2CAP protokollhoz van kötve.
Ha Raspberry Pi 2-vel rendelkezik, akkor vagy külső Bluetooth kulcsot, vagy pedig a HC-06 Bluetooth modult kell használnia. Ellenőrizze korábbi projektjeinket, hogy használják-e ezeket a külső Bluetooth-eszközöket: A Raspberry Pi GPIO vezérlése az Android App segítségével Bluetooth és Raspberry Pi által vezérelt háztartási gépek segítségével.
A Bluetooth kommunikációhoz szükséges csomagok telepítése:
Indulás előtt telepítenünk kell néhány szoftvert a Bluetooth kommunikáció beállításához a Raspberry Pi alkalmazásban. Rendelkeznie kell egy Raspbian Jessie telepített memóriakártyával a Raspberry Pi-vel. A Raspbian operációs rendszer telepítéséhez és a Raspberry Pi használatának megkezdéséhez olvassa el ezt a cikket. Tehát most először az alábbi parancsok használatával kell frissítenünk a Raspbian-t:
sudo apt-get update sudo apt-get upgrade
Ezután telepítenünk kell néhány Bluetooth-hoz kapcsolódó csomagot:
sudo apt-get install bluetooth blueman bluez
Ezután indítsa újra a Raspberry Pi-t:
sudo újraindítás
A BlueZ egy nyílt forráskódú projekt és hivatalos Linux Bluetooth protokoll verem. Támogatja az összes alapvető Bluetooth protokollt, és most a hivatalos Linux Kernel részévé válik.
A Blueman biztosítja az Asztal felületet a Bluetooth-eszközök kezeléséhez és vezérléséhez.
Végül szükségünk van python könyvtárra a Bluetooth kommunikációhoz, hogy adatokat küldhessünk és fogadhassunk az RFCOMM-en keresztül Python nyelv használatával:
sudo apt-get install python-bluetooth
Telepítse a Raspberry Pi GPIO támogatási könyvtárait is:
sudo apt-get install python-rpi.gpio
Most befejeztük a Bluetooth kommunikációhoz szükséges csomagok telepítését a Raspberry Pi-ben.
Eszközök párosítása Raspberry Pi-vel Bluetooth-on:
A Bluetooth-eszközök, például a mobiltelefon, és a Raspberry Pi párosítása nagyon egyszerű. Itt párosítottuk Android okostelefonunkat a Raspberry Pi-vel. Korábban telepítettük a BlueZ-et a Pi-be, amely a „bluetoothctl” nevű parancssori segédprogramot biztosítja Bluetooth-eszközeink kezeléséhez.
Most nyissa meg a bluetoothctl segédprogramot az alábbi paranccsal:
sudo bluetoothctl
A „help” beírásával ellenőrizheti a bluetoothctl segédprogram összes parancsát. Jelenleg az alábbi parancsokat kell beírnunk a megadott sorrendben:
# bekapcsol # ügynök be # felfedezhető # párosítható # beolvasás
Az utolsó „scan on” parancs után megjelenik a Bluetooth eszköz (mobiltelefon) a listán. Győződjön meg arról, hogy a mobilján be van kapcsolva a Bluetooth, és a közeli eszközök láthatják. Ezután másolja az eszköz MAC-címét, és párosítsa a megadott paranccsal:
pár
Ezután a terminálkonzolon meg kell adnia a kódot vagy a PIN kódot, majd írja be oda a kódot, és nyomja meg az Enter billentyűt. Ezután írja be ugyanazt a jelszót a mobiltelefonjára, amikor a rendszer kéri, és most sikeresen párosítva van a Raspberry Pi-vel. Ezt az egész folyamatot a korábbi GPIO vezérlő oktatóanyagban bemutatott videóban is elmagyaráztuk. Itt van a közvetlen YouTube-link.
Mint korábban elmondtuk, az Asztal felületen is használhatja a mobiltelefon párosítását. A Blueman telepítése után egy Bluetooth ikont lát a Raspberry Pi asztal jobb oldalán, az alábbiak szerint, amellyel egyszerűen elvégezheti a párosítást.
A játékautó kiválasztása:
Ebben a Raspberry Pi Controlled Car projektben játékautót használtunk bemutatásra. Itt egy RF játékautót választottunk, mozgatható bal-jobb kormányzási funkcióval. Miután megvásároltuk ezt az autót, kicseréltük az RF áramkört a Raspberry áramkörünkre. Ennek az autónak két egyenáramú motorja van, az egyik két első kerék, a másik pedig két hátsó kerék forgatására szolgál. Az első oldali motort arra használjuk, hogy irányt adjon az autónak, vagyis balra vagy jobbra fordulunk (mint a valódi autó-kormányzás). A hátsó oldalsó motort pedig az autó előre és hátra történő mozgatására használják. A Raspberry Bluetooth segítségével vezeték nélküli parancsokat fogadhat az androidos telefonról az autó vezérléséhez.
Bármely játékautót használhat, amely két DC motorral rendelkezik az első és a hátsó kerekek forgatásához.
Áramkör és magyarázat:
Ebben a távirányítós autóban csak a Raspberry Pi-t kell két motorral csatlakoztatnunk az L293D modul segítségével. A Raspberry Pi és az autó áramellátásához mobil erőbankot használtunk. A mobil erőbank elegendő a Raspberry Pi és az autó motorjainak meghajtására, de amikor a power bankot az autó fölé helyezzük, akkor a mobil erő nagy súlya miatt a banki autó nem tud megfelelően mozogni. Ezért javasoljuk, hogy a rendszer áramellátásához használja az alacsony súlyú tápegységet vagy a lítium elemeket. Az összes csatlakozást az alábbi kapcsolási rajz mutatja. Nézze meg a Robotika részt is, ha többet szeretne megtudni a különböző technológiájú motorok vezérléséről.
Megjegyzés: 5v-nál többet ne tegyen a málna pi-be.
Ez az áramkör a Perf Boardon készült erre a projektre, így kevesebb súlya van az autónak.
Autó távvezérlése az Android App BlueTerm segítségével:
Miután beállítottuk az összes dolgot, és sikeresen megpróbáltuk párosítani az okostelefont bluetooth-on keresztül, telepítenünk kell egy Android alkalmazást a Raspberry Pi kommunikációjához Bluetooth soros adapter segítségével, hogy vezérelhessük a Raspberry Pi GPIO-csapjait. Mint korábban elmondtuk, az RFCOMM / SPP protokoll emulálja a soros kommunikációt Bluetooth-on keresztül, ezért ide telepítettük a BlueTerm alkalmazást, amely támogatja ezt a protokollt.
Használhat bármely más Bluetooth Terminal alkalmazást is, amely támogatja az RFCOMM aljzaton keresztüli kommunikációt.
Miután letöltötte és telepítette a BlueTerm alkalmazást, futtassa az alább megadott Python programot a terminálról, és egyidejűleg csatlakoztassa a párosított raspberrypi eszközt a BlueTerm alkalmazásból.
A sikeres kapcsolódás után a csatlakoztatott: raspberrypi jelenik meg az alkalmazás jobb felső sarkában, az alábbiak szerint:
Most csak beírhatja a következő parancsokat a BlueTerm alkalmazásból, hogy az autó a kívánt irányba haladjon. A programból való kilépéshez nyomja meg a 'q' gombot. A Google Voice gépelési billentyűzet segítségével irányíthatja ezt az autót a Voice segítségével. Ellenőrizze a teljes bemutatót a videó végén.
Parancsok:
F - Haladás előre
B - Visszafelé mozgás
S - állj meg
L - balra előre
R - jobbra előre
A - balra balra mozog
P - Visszafelé jobbra
Q - Kilépés
Python programozás:
A Python program a Raspberry Pi GPIO vezérléséhez az Android App alkalmazással nagyon egyszerű és magától értetődő. Csak nekünk kell megismernünk egy kicsit a Bluetooth RFCOMM kommunikációhoz kapcsolódó kódot. Egyébként ugyanaz, mint bármely robot vagy autó vezérlése a motor csapjának magas vagy alacsony állásával. A teljes program alább a Kód szakaszban található.
Először be kell importálnunk a Bluetooth socket könyvtárat, amely lehetővé teszi számunkra a Bluetooth Python nyelvű vezérlését; ugyanarra az előző szakaszban telepítettük a könyvtárat.
importálja a Bluetooth-t
Ezután felvettünk még néhány fejlécfájlt, és meghatároztuk a motorok csapjait, amelyek alapértelmezés szerint alacsonyak.
import bluetooth import time import RPi.GPIO as 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)
Az alábbiakban található a Bluetooth kommunikációért felelős kód:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM) port = 1 server_socket.bind (("", port)) server_socket.listen (1) client_socket, address = server_socket.accept () print "Elfogadott kapcsolat innen", cím
Itt soronként érthetjük meg őket:
server_socket = bluetooth. BluetoothSocket (bluetooth.RFCOMM): Socket létrehozása a Bluetooth RFCOMM kommunikációhoz.
server_socket.bind (("", port): - A kiszolgáló a "" gazdagépen lévő szkriptet a porthoz köti.
server_socket.listen (1): A szerver egyszerre csak egy kapcsolatot fogad el.
client_socket, address = server_socket.accept (): A szerver elfogadja az ügyfél csatlakozási kérelmét, és a változó címhez rendeli a mac címet, a client_socket az ügyfél foglalata
Ezek után létrehoztunk néhány olyan funkciót, amelyek felelősek az autó kívánt irányba történő elmozdulásáért: def left_side_forward (), def right_side_forward (), def forward (), def left_side_reverse (), def right_side_reverse (), def reverse () def stop (). Ezeket a funkciókat akkor hívjuk meg, amikor megnyomjuk az L, R, F, A, P, B, S gombokat a Mobile blueTerm alkalmazásból, és az autó ennek megfelelően mozog.
data = "" while 1: data = client_socket.recv (1024) print "Received:% s"% data if (data == "F"): forward () elif (data == "L"): left_side_forward () elif (data == "R"): right_side_forward () elif (data == "B"): fordított () elif (data == "A"): left_side_reverse () elif (data == "P"): right_side_reverse () elif data == "S": stop () elif (data == "Q"): print ("Quit") törés client_socket.close () server_socket.close ()
data = client_socket.recv (1024): Adatokat fogad a client_socket ügyfél socketen keresztül, és rendelje hozzá a változó adatokhoz. Egyszerre legfeljebb 1024 karaktert lehet fogadni.
Végül az összes programozás után zárja be az ügyfél és a kiszolgáló kapcsolatát az alábbi kód használatával:
client_socket.close () server_socket.close ()