- Instalace požadovaných balíčků pro komunikaci Bluetooth:
- Párování zařízení s Raspberry Pi přes Bluetooth:
- Výběr autíčka:
- Schéma zapojení a vysvětlení:
- Dálkové ovládání vozu pomocí aplikace pro Android BlueTerm:
- Programování v Pythonu:
Raspberry Pi je pro projekty IoT velmi populární díky své bezproblémové schopnosti bezdrátové komunikace přes internet. Raspberry Pi 3 má vestavěné Wi-Fi a Bluetooth a Bluetooth je velmi populární bezdrátový komunikační protokol. Dnes budeme stavět auto na dálkové ovládání pomocí Raspberry Pi 3 a Bluetooth, zde budeme používat chytrý telefon jako dálkový ovladač pro ovládání vozu. Dříve jsme tento RC vůz postavili pomocí Arduina.
Zde používáme Raspberry Pi 3, které mají vestavěný Bluetooth, takže nemusíme používat žádný externí USB Bluetooth dongle. Zde používáme pro bezdrátovou komunikaci protokol Bluetooth RFCOMM.
Programování pro Bluetooth v Pythonu se řídí modelem programování soketů a komunikace mezi zařízeními Bluetooth se provádí pomocí soketu RFCOMM. RFCOMM (Radio Frequency Communication) je protokol Bluetooth, který poskytuje emulované sériové porty RS-232 a také se nazývá emulace sériového portu. Profil sériového portu Bluetooth je založen na tomto protokolu. RFCOMM je v aplikacích Bluetooth velmi populární díky své široké podpoře a veřejně dostupnému API. Je vázán na protokol L2CAP.
Pokud máte Raspberry Pi 2, musíte použít externí Bluetooth dongle nebo Bluetooth modul HC-06. Podívejte se na naše předchozí projekty týkající se používání těchto externích zařízení Bluetooth: Ovládání GPIO Raspberry Pi pomocí aplikace Android přes Bluetooth a domácí zařízení ovládaná Raspberry Pi.
Instalace požadovaných balíčků pro komunikaci Bluetooth:
Před spuštěním musíme nainstalovat nějaký software pro nastavení komunikace Bluetooth v Raspberry Pi. Měli byste mít nainstalovanou paměťovou kartu Raspbian Jessie připravenou s Raspberry Pi. V tomto článku si přečtěte Raspbian OS a začněte s Raspberry Pi. Takže nyní musíme nejprve aktualizovat Raspbian pomocí níže uvedených příkazů:
sudo apt-get aktualizace sudo apt-get aktualizace
Pak musíme nainstalovat několik balíčků souvisejících s Bluetooth:
sudo apt-get nainstalovat bluetooth blueman bluez
Poté restartujte Raspberry Pi:
sudo restart
BlueZ je projekt s otevřeným zdrojovým kódem a oficiální linuxový protokol Bluetooth. Podporuje všechny základní protokoly Bluetooth a nyní se stává součástí oficiálního linuxového jádra.
Blueman poskytuje rozhraní plochy pro správu a ovládání zařízení Bluetooth.
Nakonec potřebujeme knihovnu pythonu pro komunikaci Bluetooth, abychom mohli odesílat a přijímat data prostřednictvím RFCOMM pomocí jazyka Python:
sudo apt-get nainstalovat python-bluetooth
Nainstalujte si také knihovny podpory GPIO pro Raspberry Pi:
sudo apt-get install python-rpi.gpio
Nyní jsme hotovi s instalací požadovaných balíčků pro komunikaci Bluetooth v Raspberry Pi.
Párování zařízení s Raspberry Pi přes Bluetooth:
Spárování zařízení Bluetooth, jako je mobilní telefon, s Raspberry Pi je velmi snadné. Zde jsme spárovali náš chytrý telefon Android s Raspberry Pi. Již jsme nainstalovali BlueZ v Pi, který poskytuje nástroj příkazového řádku s názvem „bluetoothctl“ pro správu našich zařízení Bluetooth.
Nyní otevřete nástroj bluetoothctl pomocí následujícího příkazu:
sudo bluetoothctl
Všechny příkazy nástroje bluetoothctl můžete zkontrolovat zadáním 'help' . Prozatím musíme zadat níže uvedené příkazy v daném pořadí:
# napájení na # agent na # zjistitelné na # pairable na # skenování na
Po posledním příkazu „skenovat“ se v seznamu zobrazí vaše zařízení Bluetooth (mobilní telefon). Ujistěte se, že váš mobilní telefon má zapnutou technologii Bluetooth a je viditelná pro okolní zařízení. Poté zkopírujte adresu MAC vašeho zařízení a spárujte ji pomocí zadaného příkazu:
pár
Poté budete vyzváni k zadání hesla nebo Pin v konzole terminálu, zadejte tam přístupový kód a stiskněte klávesu Enter. Po zobrazení výzvy zadejte do mobilního telefonu stejný přístupový kód a nyní jste úspěšně spárováni s Raspberry Pi. Celý tento proces jsme také vysvětlili ve videu uvedeném v předchozím výukovém programu pro ovládání GPIO. Zde je přímý odkaz na YouTube.
Jak již bylo řečeno, ke spárování mobilního telefonu můžete také použít rozhraní plochy. Po instalaci Bluemanu uvidíte na pravé straně plochy Raspberry Pi ikonu Bluetooth, jak je znázorněno níže, pomocí které můžete párování snadno provést.
Výběr autíčka:
V tomto projektu Raspberry Pi Controlled Car jsme pro demonstraci použili autíčko. Zde jsme vybrali RF autíčko s pohyblivou funkcí řízení zleva doprava. Po zakoupení tohoto vozu jsme vyměnili jeho RF obvod za náš Raspberry obvod. Toto auto má dva stejnosměrné motory, jeden pro otáčení dvou předních kol a druhý pro otáčení dvou zadních kol. Motor na přední straně se používá pro udávání směru automobilu, což znamená otáčení doleva nebo doprava (jako skutečná funkce řízení automobilu). A motor na zadní straně se používá k řízení vozu ve směru dopředu a dozadu. Bluetooth of Raspberry se používá k bezdrátovému přijímání příkazů z telefonu Android k ovládání vozu.
K otáčení předních a zadních kol můžete použít jakékoli autíčko, které má dva stejnosměrné motory.
Schéma zapojení a vysvětlení:
V tomto autě s dálkovým ovládáním musíme pouze připojit Raspberry Pi se dvěma motory pomocí modulu L293D. Pro napájení Raspberry Pi a automobilu jsme použili mobilní powerbanku. Mobilní powerbanka stačí k napájení Raspberry Pi a motorů automobilu, ale když ji umístíme nad auto, pak by se kvůli velké váze mobilního powerbanku auto nemohlo správně pohybovat. K napájení systému proto doporučujeme použít nízkonapěťový napájecí zdroj nebo lithiové baterie. Všechna připojení jsou uvedena v schématu zapojení níže. Podívejte se také na naši sekci Robotika, kde se dozvíte více o ovládání motorů různými technologiemi.
Poznámka: Do malinové pí nedávejte více než 5 V.
Tento obvod byl pro tento projekt vyroben na desce Perf Board, aby měl vůz menší váhu.
Dálkové ovládání vozu pomocí aplikace pro Android BlueTerm:
Nyní po nastavení všech věcí a úspěšném pokusu o párování chytrého telefonu přes bluetooth musíme nainstalovat aplikaci pro Android pro komunikaci s Raspberry Pi pomocí sériového adaptéru Bluetooth, abychom mohli ovládat GPIO piny Raspberry Pi. Jak již bylo řečeno, protokol RFCOMM / SPP emuluje sériovou komunikaci přes Bluetooth, takže jsme zde nainstalovali aplikaci BlueTerm, která tento protokol podporuje.
Můžete také použít jakoukoli jinou aplikaci Bluetooth Terminal, která podporuje komunikaci přes zásuvku RFCOMM.
Nyní po stažení a instalaci aplikace BlueTerm spusťte níže uvedený program Python z terminálu a připojte spárované zařízení raspberrypi z aplikace BlueTerm současně.
Po úspěšném připojení uvidíte připojeno: raspberrypi v pravém horním rohu aplikace, jak je uvedeno níže:
Nyní stačí zadat následující příkazy z aplikace BlueTerm, aby se vůz pohnul požadovaným směrem. Stisknutím klávesy „q“ program ukončíte. K ovládání tohoto vozu pomocí hlasu můžete použít klávesnici Google Voice Typing Keyboard. Podívejte se na kompletní ukázku ve videu na konci.
Příkazy:
F - Pohyb vpřed
B - Zpětný pohyb
S - Stop
L - Pohyb vpřed doleva
R - Pohyb vpřed doprava
A - Posun dozadu doleva
P - Posun dozadu doprava
Q - Konec
Programování v Pythonu:
Program Python pro ovládání Raspberry Pi GPIO s aplikací pro Android je velmi jednoduchý a vysvětlující. Pouze se musíme trochu naučit o kódu týkajícím se komunikace Bluetooth RFCOMM. Jinak je to stejné jako ovládání jakéhokoli robota nebo automobilu tím, že se kolík motoru nastaví na vysoký nebo nízký. Kompletní program je uveden níže v části Kód.
Nejprve musíme importovat knihovnu soketů Bluetooth, která nám umožňuje ovládat Bluetooth v jazyce Python; jsme nainstalovali knihovnu pro stejné v předchozí části.
importovat Bluetooth
Pak jsme zahrnuli několik dalších hlavičkových souborů a definovali piny pro motory, které jim nastavily výchozí nízkou hodnotu.
import bluetooth čas importu import RPi.GPIO jako 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)
Níže je uveden kód odpovědný za komunikaci Bluetooth:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM) port = 1 server_socket.bind (("", port)) server_socket.listen (1) client_socket, address = server_socket.accept () print "Přijato připojení z", adresa
Zde je můžeme pochopit řádek po řádku:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM): Vytváření soketu pro komunikaci Bluetooth RFCOMM.
server_socket.bind (("", port): - Server váže skript na hostiteli na port.
server_socket.listen (1): Server naslouchá přijímání jednoho připojení najednou.
client_socket, address = server_socket.accept (): Server přijme požadavek na připojení klienta a přiřadí adresu MAC proměnné adrese, client_socket je soket klienta
Poté jsme vytvořili některé funkce, které jsou odpovědné za pohyb automobilu v požadovaném směru: def left_side_forward (), def right_side_forward (), def forward (), def left_side_reverse (), def right_side_reverse (), def reverse () def stop (). Tyto funkce budou volány jednotlivě, když stiskneme L, R, F, A, P, B, S z aplikace Mobile blueTerm a vůz se podle toho pohne.
data = "" while 1: data = client_socket.recv (1024) print "Přijato:% s"% dat 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") konec client_socket.close () server_socket.close ()
data = client_socket.recv (1024): Přijímat data prostřednictvím klientského soketu client_socket a přiřadit je k proměnné data. Najednou lze přijmout maximálně 1024 znaků.
Nakonec po veškerém programování ukončete připojení klienta a serveru pomocí níže uvedeného kódu:
client_socket.close () server_socket.close ()