- Instaliranje potrebnih paketa za Bluetooth komunikaciju:
- Uparivanje uređaja s Raspberry Pi putem Bluetootha:
- Odabir automobila s igračkama:
- Kružni dijagram i objašnjenje:
- Daljinsko upravljanje automobilom pomoću Android aplikacije BlueTerm:
- Programiranje na Python:
Raspberry Pi vrlo je popularan za IoT projekte zbog svoje besprijekorne mogućnosti bežične komunikacije putem interneta. Raspberry Pi 3 ima ugrađeni Wi-Fi i Bluetooth, a Bluetooth je vrlo popularan protokol bežične komunikacije. Danas ćemo izgraditi automobil na daljinsko upravljanje pomoću Raspberry Pi 3 i Bluetootha, ovdje ćemo koristiti Smart Phone kao daljinski upravljač za upravljanje automobilom. Prethodno smo napravili kreirali ovaj RC automobil koristeći Arduino.
Ovdje koristimo Raspberry Pi 3 koji ima ugrađeni Bluetooth, tako da ne trebamo koristiti nijedan vanjski USB Bluetooth dongle. Ovdje koristimo RFCOMM Bluetooth protokol za bežičnu komunikaciju.
Programiranje za Bluetooth u Pythonu slijedi model programiranja soketa, a komunikacija između Bluetooth uređaja vrši se putem RFCOMM utičnice. RFCOMM (Radio Frequency Communication) je Bluetooth protokol koji pruža emulirane RS-232 serijske portove i naziva se i emulacija serijskog porta. Profil serijskog porta Bluetooth zasnovan je na ovom protokolu. RFCOMM je vrlo popularan u Bluetooth aplikacijama zbog svoje široke podrške i javno dostupnog API-ja. Vezana je za L2CAP protokol.
Ako imate Raspberry Pi 2, tada morate koristiti vanjski Bluetooth ključ ili Bluetooth modul HC-06. Provjerite naše prethodne projekte za upotrebu ovih vanjskih Bluetooth uređaja: Upravljanje Raspberry Pi GPIO pomoću Android aplikacije preko Bluetootha i kućanskih aparata kojima upravlja Raspberry Pi.
Instaliranje potrebnih paketa za Bluetooth komunikaciju:
Prije početka moramo instalirati neki softver za postavljanje Bluetooth komunikacije u Raspberry Pi. Trebali biste imati Raspbian Jessie instaliranu memorijsku karticu spremnu s Raspberry Pi. Pogledajte ovaj članak da biste instalirali OS Raspbian i započeli s radom s Raspberry Pi. Dakle, sada prvo moramo ažurirati Raspbian pomoću naredbi u nastavku:
sudo apt-get ažuriranje sudo apt-get nadogradnja
Zatim moramo instalirati nekoliko povezanih paketa s Bluetoothom:
sudo apt-get instaliraj bluetooth blueman bluez
Zatim ponovno pokrenite Raspberry Pi:
sudo ponovno pokretanje
BlueZ je projekt otvorenog koda i službeni Linux Bluetooth protokol. Podržava sve temeljne Bluetooth protokole i sada je postao dio službenog Linux kernela.
Blueman nudi stolno sučelje za upravljanje i kontrolu Bluetooth uređaja.
Napokon nam je potrebna Python knjižnica za Bluetooth komunikaciju kako bismo mogli slati i primati podatke putem RFCOMM-a koristeći jezik Python:
sudo apt-get instalirati python-bluetooth
Također instalirajte GPIO knjižnice podrške za Raspberry Pi:
sudo apt-get instalirati python-rpi.gpio
Sada smo završili s instaliranjem potrebnih paketa za Bluetooth komunikaciju u Raspberry Pi.
Uparivanje uređaja s Raspberry Pi putem Bluetootha:
Uparivanje Bluetooth uređaja, poput mobilnog telefona, s Raspberry Pi vrlo je jednostavno. Ovdje smo uparili naš Android Smart telefon s Raspberry Pi. Prethodno smo instalirali BlueZ u Pi, koji nudi uslužni program naredbenog retka nazvan "bluetoothctl" za upravljanje našim Bluetooth uređajima.
Sada otvorite uslužni program bluetoothctl pomoću naredbe ispod:
sudo bluetoothctl
Sve naredbe uslužnog programa bluetoothctl možete provjeriti upisivanjem "pomoć" . Za sada moramo unijeti naredbe ispod navedenim redoslijedom:
# napajanje # agent uključen # otkriven # vidljivo # skeniranje uključeno
Nakon posljednje naredbe "scan on", na popisu ćete vidjeti svoj Bluetooth uređaj (mobitel). Provjerite je li vaš mobitel uključen Bluetooth i vidljiv je u blizini uređaja. Zatim kopirajte MAC adresu svog uređaja i uparite je pomoću zadane naredbe:
par
Tada će se na konzoli terminala zatražiti lozinka ili pribadača, zatim tamo upišite lozinku i pritisnite enter. Zatim unesite istu lozinku u svoj mobilni telefon kada se to zatraži i sada ste uspješno upareni s Raspberry Pi. Čitav taj postupak također smo objasnili u videu navedenom u prethodnom vodiču za GPIO upravljanje. Evo izravne YouTube veze.

Kao što je ranije rečeno, za spajanje mobitela možete koristiti i sučelje radne površine. Nakon instalacije Bluemana, vidjet ćete ikonu Bluetooth na desnoj strani radne površine Raspberry Pi, kao što je prikazano u nastavku, pomoću koje možete lako obaviti uparivanje.

Odabir automobila s igračkama:
U ovom projektu kontroliranog automobila Raspberry Pi koristili smo automobil za igračke za demonstraciju. Ovdje smo odabrali RF igrački automobil s pomičnim lijevim-desnim obilježjem upravljanja. Nakon kupnje ovog automobila zamijenili smo njegov RF krug našim Raspberry krugom. Ovaj automobil ima dva istosmjerna motora, jedan za okretanje dva prednja kotača, a drugi jedan za okretanje dva stražnja kotača. Motor s prednje strane koristi se za usmjeravanje automobila, što znači okretanje lijeve ili desne strane (poput značajke stvarnog upravljanja automobilom). A motor sa stražnje strane služi za vožnju automobila u smjeru naprijed i natrag. Bluetooth od Raspberryja koristi se za bežično primanje naredbi s android telefona za upravljanje automobilom.

Možete koristiti bilo koji automobil s igračkama koji ima dva istosmjerna motora za okretanje prednjih i stražnjih kotača.
Kružni dijagram i objašnjenje:
U ovom automobilu na daljinsko upravljanje trebamo spojiti Raspberry Pi samo s dva motora pomoću modula L293D. Za napajanje Raspberry Pi i automobila koristili smo mobilnu banku napajanja. Mobilna banka napajanja dovoljna je za napajanje Raspberry Pi-a i motora automobila, ali kada stavimo power bank preko automobila, zbog velike težine mobilnog power bank automobila ne bi se mogao pravilno kretati. Stoga preporučujemo da za napajanje sustava koristite napajanje male težine ili litijeve baterije. Sve veze su prikazane na donjem shematskom dijagramu. Također pogledajte naš odjeljak Robotika da biste saznali više o upravljanju motorima različitim tehnologijama.
Napomena: nemojte stavljati više od 5v na malinu pi.

Ovaj je sklop napravljen na Perf Board-u za ovaj projekt, tako da je na automobilu manja težina.


Daljinsko upravljanje automobilom pomoću Android aplikacije BlueTerm:
Nakon postavljanja svih stvari i uspješnog pokušaja uparivanja pametnog telefona preko Bluetootha, moramo instalirati Android aplikaciju za komunikaciju s Raspberry Pi pomoću Bluetooth serijskog adaptera, kako bismo mogli kontrolirati GPIO pinove Raspberry Pi. Kao što je ranije rečeno, RFCOMM / SPP protokol oponaša serijsku komunikaciju putem Bluetootha, pa smo ovdje instalirali aplikaciju BlueTerm koja podržava ovaj protokol.

Također možete koristiti bilo koju drugu aplikaciju Bluetooth Terminal koja podržava komunikaciju putem RFCOMM utičnice.
Nakon preuzimanja i instaliranja aplikacije BlueTerm, pokrenite donji zadani program Python s terminala i istovremeno povežite upareni raspberrypi uređaj s aplikacije BlueTerm.

Nakon uspješne veze vidjet ćete povezano: raspberrypi u gornjem desnom kutu aplikacije kao što je prikazano dolje:


Sada možete samo unijeti sljedeće naredbe iz aplikacije BlueTerm kako bi se automobil kretao u željenom smjeru. Pritisnite 'q' za izlaz iz programa. Možete koristiti tipkovnicu Google Voice Typing za upravljanje ovim automobilom pomoću vašeg Voicea. Potpuni demo pogledajte u videozapisu navedenom na kraju.
Naredbe:
F - Pomicanje naprijed
B - Pomicanje unatrag
S - Stani
L - Pomicanje naprijed lijevo
R - Naprijed udesno
A - Pomicanje unatrag ulijevo
P - Natrag udesno
P - Prestani

Programiranje na Python:
Python program za upravljanje Raspberry Pi GPIO s Android aplikacijom vrlo je jednostavan i samorazumljiv. Samo moramo saznati malo o kodu koji se odnosi na Bluetooth RFCOMM komunikaciju. Inače je to isto kao i upravljanje bilo kojim robotom ili automobilom postavljanjem zatiča motora visoko ili nisko. Kompletni program dan je u nastavku odjeljka Code.
Prvo, moramo uvesti knjižnicu Bluetooth utičnice koja nam omogućuje kontrolu Bluetootha na jeziku Python; u prethodnom smo odjeljku instalirali knjižnicu za istu.
uvezite Bluetooth
Zatim smo uključili još nekoliko datoteka zaglavlja i definirali igle za motore, postavili ih prema zadanim postavkama.
uvoz bluetooth vrijeme uvoza uvoz RPi.GPIO kao 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.izlaz (m22, 0)
Ispod je kod odgovoran za Bluetooth komunikaciju:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM) port = 1 server_socket.bind (("", port)) server_socket.listen (1) client_socket, address = server_socket.accept () print "Prihvaćena veza sa", adresa
Ovdje ih možemo razumjeti redak po redak:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM): Stvaranje utičnice za Bluetooth RFCOMM komunikaciju.
server_socket.bind (("", port): - Poslužitelj veže skriptu na hostu '' na port.
server_socket.listen (1): Poslužitelj sluša prihvaćajući jednu po jednu vezu.
client_socket, address = server_socket.accept (): Poslužitelj prihvaća zahtjev za povezivanje klijenta i dodjeljuje mac adresu promjenjivoj adresi, client_socket je klijentova utičnica
Nakon toga stvorili smo neke funkcije odgovorne za pomicanje automobila u željenom smjeru: def left_side_forward (), def right_side_forward (), def forward (), def left_side_reverse (), def right_side_reverse (), def reverse () def stop (). Te će se funkcije pozvati kada pritisnemo L, R, F, A, P, B, S iz aplikacije Mobile blueTerm i automobil će se prema tome kretati.
data = "" while 1: data = client_socket.recv (1024) print "Primljeno:% s"% podataka if (data == "F"): forward () elif (data == "L"): left_side_forward () elif (podaci == "R"): desni_bok_naprijed () elif (podaci == "B"): reverse () elif (podaci == "A"): left_side_reverse () elif (podaci == "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): Primite podatke putem klijentske utičnice client_socket i dodijelite ih varijabli podataka. Istodobno se može primiti najviše 1024 znaka.
Napokon, nakon cijelog programiranja, zatvorite vezu klijenta i poslužitelja koristeći donji kod:
client_socket.close () server_socket.close ()
