- Inštalácia požadovaných balíkov pre komunikáciu Bluetooth:
- Párovanie zariadení s Raspberry Pi cez Bluetooth:
- Výber autíčka:
- Schéma zapojenia a vysvetlenie:
- Diaľkové ovládanie auta pomocou aplikácie pre Android BlueTerm:
- Programovanie v Pythone:
Raspberry Pi je pre projekty IoT veľmi obľúbený pre svoju bezproblémovú schopnosť bezdrôtovej komunikácie cez internet. Raspberry Pi 3 má zabudované Wi-Fi a Bluetooth a Bluetooth je veľmi populárny bezdrôtový komunikačný protokol. Dnes budeme stavať auto na diaľkové ovládanie pomocou Raspberry Pi 3 a Bluetooth, tu budeme na ovládanie automobilu používať diaľkový ovládač ako diaľkový ovládač. Toto RC auto sme predtým postavili pomocou Arduina.
Tu používame Raspberry Pi 3, ktoré majú zabudované Bluetooth, takže nemusíme používať žiadny externý USB Bluetooth kľúč. Tu používame pre bezdrôtovú komunikáciu protokol RFCOMM Bluetooth.
Programovanie pre Bluetooth v Pythone sa riadi programovacím modelom soketu a komunikácia medzi zariadeniami Bluetooth sa vykonáva prostredníctvom soketu RFCOMM. RFCOMM (Radio Frequency Communication) je protokol Bluetooth, ktorý poskytuje emulované sériové porty RS-232 a nazýva sa tiež ako emulácia sériového portu. Profil sériového portu Bluetooth je založený na tomto protokole. RFCOMM je v aplikáciách Bluetooth veľmi populárny kvôli svojej širokej podpore a verejne dostupnému API. Je viazaný na protokol L2CAP.
Ak máte Raspberry Pi 2, musíte buď použiť externý Bluetooth kľúč alebo Bluetooth modul HC-06. Skontrolujte, či naše predchádzajúce projekty využívajú tieto externé zariadenia Bluetooth: Ovládanie GPIO Raspberry Pi pomocou aplikácie pre Android cez Bluetooth a domáce spotrebiče ovládané Raspberry Pi.
Inštalácia požadovaných balíkov pre komunikáciu Bluetooth:
Pred spustením musíme nainštalovať softvér na nastavenie komunikácie Bluetooth v Raspberry Pi. Mali by ste mať nainštalovanú pamäťovú kartu Raspbian Jessie pripravenú s Raspberry Pi. V tomto článku nájdete informácie o inštalácii operačného systému Raspbian a začiatku práce s programom Raspberry Pi. Takže teraz musíme najskôr aktualizovať Raspbian pomocou nasledujúcich príkazov:
sudo apt-get aktualizácia sudo apt-get aktualizácia
Potom musíme nainštalovať niekoľko balíkov súvisiacich s Bluetooth:
sudo apt-get nainštalovať bluetooth blueman bluez
Potom reštartujte Raspberry Pi:
sudo reštart
BlueZ je projekt s otvoreným zdrojovým kódom a oficiálny zásobník protokolu Bluetooth pre systém Linux. Podporuje všetky základné protokoly Bluetooth a teraz sa stáva súčasťou oficiálneho jadra systému Linux.
Spoločnosť Blueman poskytuje rozhranie pracovnej plochy na správu a kontrolu zariadení Bluetooth.
Nakoniec potrebujeme knižnicu python pre komunikáciu Bluetooth, aby sme mohli odosielať a prijímať dáta cez RFCOMM pomocou jazyka Python:
sudo apt-get nainštalovať python-bluetooth
Nainštalujte si tiež podporné knižnice GPIO pre Raspberry Pi:
sudo apt-get nainštalovať python-rpi.gpio
Teraz sme hotoví s inštaláciou požadovaných balíkov pre komunikáciu Bluetooth v Raspberry Pi.
Párovanie zariadení s Raspberry Pi cez Bluetooth:
Spárovanie zariadení Bluetooth, ako je napríklad mobilný telefón, s Raspberry Pi je veľmi jednoduché. Tu sme spárovali náš inteligentný telefón s Androidom s Raspberry Pi. Predtým sme nainštalovali BlueZ do Pi, ktorý poskytuje nástroj príkazového riadku s názvom „bluetoothctl“ na správu našich zariadení Bluetooth.
Teraz otvorte nástroj bluetoothctl pomocou príkazu dole:
sudo bluetoothctl
Všetky príkazy obslužného programu bluetoothctl môžete skontrolovať zadaním príkazu „help“ . Zatiaľ musíme zadať nižšie príkazy v danom poradí:
# zapnutie # agent zapnutý # objaviteľné pri # opraviteľné pri # skenovanie zapnuté
Po poslednom príkaze „skenovať“ sa v zozname zobrazí vaše zariadenie Bluetooth (mobilný telefón). Uistite sa, že váš mobil má zapnuté Bluetooth a viditeľné pre zariadenia v okolí. Potom skopírujte MAC adresu vášho zariadenia a spárujte ju pomocou daného príkazu:
pár
Potom sa v terminálovej konzole zobrazí výzva na zadanie hesla alebo PIN, potom zadajte prístupový kód a stlačte kláves Enter. Potom po výzve zadajte do mobilného telefónu rovnaký prístupový kód a teraz ste úspešne spárovaní s Raspberry Pi. Celý tento proces sme tiež vysvetlili vo videu uvedenom v predchádzajúcom výučbe ovládania GPIO. Tu je priamy odkaz na YouTube.
Ako už bolo povedané, na spárovanie mobilného telefónu môžete použiť aj rozhranie pracovnej plochy. Po inštalácii programu Blueman sa na pravej strane pracovnej plochy Raspberry Pi zobrazí ikona Bluetooth, ako je to znázornené nižšie, pomocou ktorej môžete párovanie jednoducho vykonať.
Výber autíčka:
V tomto projekte Raspberry Pi Controlled Car sme na ukážku použili autíčko. Tu sme vybrali RF autíčko s pohyblivou funkciou riadenia zľava-doprava. Po kúpe tohto automobilu sme vymenili jeho RF obvod za náš Raspberry obvod. Toto auto má dva jednosmerné motory, jeden na otáčanie dvoch predných kolies a druhý na otáčanie dvoch zadných kolies. Predný bočný motor sa používa na udanie smeru automobilu, čo znamená otáčanie doľava alebo doprava (ako pri skutočnom riadení vozidla). A motor na zadnej strane sa používa na jazdu autom v smere dopredu a dozadu. Bluetooth Raspberry sa používa na bezdrôtový príjem príkazov z telefónu Android na ovládanie vozidla.
Na otáčanie predných a zadných kolies môžete použiť akékoľvek autíčko, ktoré má dva jednosmerné motory.
Schéma zapojenia a vysvetlenie:
V tomto aute s diaľkovým ovládaním musíme iba pripojiť Raspberry Pi k dvom motorom pomocou modulu L293D. Na napájanie Raspberry Pi a automobilu sme použili mobilnú powerbanku. Mobilná powerbanka stačí na napájanie Raspberry Pi a motorov automobilu, ale keď ju umiestnime nad auto, potom by sa automobil kvôli veľkej hmotnosti mobilnej powerbanky nemohol správne pohybovať. Na napájanie systému preto odporúčame použiť nízkonapäťový napájací zdroj alebo lítiové batérie. Všetky pripojenia sú zobrazené v schéme zapojenia nižšie. Skontrolujte tiež našu sekciu Robotika a získajte viac informácií o ovládaní motorov rôznymi technológiami.
Poznámka: Do malinovej pí nedávajte viac ako 5 V.
Tento obvod bol pre tento projekt vyrobený na doske Perf Board, aby malo auto menšiu váhu.
Diaľkové ovládanie auta pomocou aplikácie pre Android BlueTerm:
Teraz po nastavení všetkých vecí a úspešnom vyskúšaní párovania smartphonu cez bluetooth si musíme nainštalovať aplikáciu pre Android pre komunikáciu s Raspberry Pi pomocou sériového adaptéra Bluetooth, aby sme mohli ovládať GPIO piny Raspberry Pi. Ako už bolo povedané, protokol RFCOMM / SPP emuluje sériovú komunikáciu cez Bluetooth, preto sme si tu nainštalovali aplikáciu BlueTerm, ktorá tento protokol podporuje.
Môžete tiež použiť ľubovoľnú inú aplikáciu Bluetooth Terminal, ktorá podporuje komunikáciu cez zásuvku RFCOMM.
Teraz po stiahnutí a nainštalovaní aplikácie BlueTerm spustite z terminálu nižšie uvedený program Python a súčasne pripojte spárované zariadenie raspberrypi z aplikácie BlueTerm.
Po úspešnom pripojení uvidíte pripojené: raspberrypi v pravom hornom rohu aplikácie, ako je uvedené nižšie:
Teraz stačí zadať nasledujúce príkazy z aplikácie BlueTerm, aby sa auto pohlo požadovaným smerom. Stlačením klávesu „q“ program opustíte. Na ovládanie tohto auta pomocou svojho hlasu môžete použiť klávesnicu Google Voice Typing Keyboard. Kompletné ukážky nájdete vo videu na konci.
Príkazy:
F - Pohyb vpred
B - Posun dozadu
S - prestaň
L - Pohyb vpred vľavo
R - Dopredu doprava
A - Posun dozadu doľava
P - Posun dozadu doprava
Q - Ukončiť
Programovanie v Pythone:
Program Python na ovládanie Raspberry Pi GPIO s Android App je veľmi jednoduchý a zrozumiteľný. Len sa musíme trochu dozvedieť viac o kóde spojenom s Bluetooth RFCOMM komunikáciou. V opačnom prípade je to rovnaké ako ovládať ktoréhokoľvek robota alebo auto tak, že urobíte vysoký alebo nízky kolík motora. Kompletný program je uvedený nižšie v časti Kód.
Najprv musíme importovať knižnicu zásuviek Bluetooth, ktorá nám umožňuje ovládať Bluetooth v jazyku Python; knižnicu sme pre to isté nainštalovali v predchádzajúcej časti.
importovať Bluetooth
Potom sme zahrnuli niekoľko ďalších súborov hlavičiek a definovali piny pre motory, aby boli predvolene nízke.
import bluetooth čas importu import RPi.GPIO ako 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. Výstup (m22, 0)
Nižšie je uvedený kód zodpovedný za komunikáciu Bluetooth:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM) port = 1 server_socket.bind (("", port)) server_socket.listen (1) client_socket, address = server_socket.accept () print "Prijaté pripojenie z", adresa
Tu ich môžeme chápať riadok po riadku:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM): Vytvára sa soket pre komunikáciu Bluetooth RFCOMM.
server_socket.bind (("", port): - Server naviaže skript na hostiteľovi na port.
server_socket.listen (1): Server počúva prijať jedno pripojenie naraz.
client_socket, address = server_socket.accept (): Server prijme požiadavku na pripojenie klienta a priradí adresu MAC premennej adrese, client_socket je soket klienta
Potom sme vytvorili niektoré funkcie zodpovedné za pohyb vozidla v požadovanom smere: def left_side_forward (), def right_side_forward (), def forward (), def left_side_reverse (), def right_side_reverse (), def reverse () def stop (). Tieto funkcie sa budú volať, keď stlačíme L, R, F, A, P, B, S z aplikácie Mobile blueTerm a auto sa bude príslušne pohybovať.
data = "" while 1: data = client_socket.recv (1024) print "Prijaté:% s"% údajov 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): Prijímajte údaje prostredníctvom klientskeho soketu client_socket a priraďte ich k premennej data. Naraz je možné prijať maximálne 1024 znakov.
Nakoniec po ukončení celého programovania ukončite spojenie klienta a servera pomocou nižšie uvedeného kódu:
client_socket.close () server_socket.close ()