- Namestitev potrebnih paketov za komunikacijo Bluetooth:
- Seznanjanje naprav z Raspberry Pi prek Bluetootha:
- Izbira avtomobila za igrače:
- Shema vezja in razlaga:
- Daljinsko upravljanje avtomobila z aplikacijo Android BlueTerm:
- Programiranje na Python:
Raspberry Pi je zelo priljubljen za IoT projekte zaradi svoje brezhibne sposobnosti brezžične komunikacije prek interneta. Raspberry Pi 3 ima vgrajen Wi-Fi in Bluetooth, Bluetooth pa je zelo priljubljen protokol za brezžično komunikacijo. Danes bomo z uporabo Raspberry Pi 3 in Bluetootha izdelali avtomobil na daljinsko upravljanje, tu bomo pametni telefon uporabili kot daljinski upravljalnik avtomobila. Ta RC avtomobil smo že ustvarili z uporabo Arduina.
Tu uporabljamo Raspberry Pi 3, ki ima vgrajen Bluetooth, zato nam ni treba uporabljati nobenega zunanjega USB ključa Bluetooth. Tu uporabljamo RFCOMM Bluetooth protokol za brezžično komunikacijo.
Programiranje za Bluetooth v Pythonu sledi modelu programiranja vtičnic, komunikacija med napravami Bluetooth pa poteka prek vtičnice RFCOMM. RFCOMM (Radijska frekvenčna komunikacija) je protokol Bluetooth, ki zagotavlja emulirana serijska vrata RS-232 in se imenuje tudi emulacija serijskih vrat. Profil serijskih vrat Bluetooth temelji na tem protokolu. RFCOMM je zelo priljubljen v aplikacijah Bluetooth zaradi široke podpore in javno dostopnega API-ja. Vezana je na protokol L2CAP.
Če imate Raspberry Pi 2, morate uporabiti zunanji Bluetooth ključ ali modul Bluetooth HC-06. Preverite naše prejšnje projekte za uporabo teh zunanjih naprav Bluetooth: Nadzor Raspberry Pi GPIO z uporabo aplikacije Android prek gospodinjskih aparatov, ki jih nadzira Bluetooth in Raspberry Pi.
Namestitev potrebnih paketov za komunikacijo Bluetooth:
Pred začetkom moramo v Raspberry Pi namestiti nekaj programske opreme za nastavitev komunikacije Bluetooth. Na Raspberry Jessie bi morali imeti nameščeno pomnilniško kartico, pripravljeno z Raspberry Pi. Oglejte si ta članek, če želite namestiti OS Raspbian in začeti uporabljati Raspberry Pi. Zdaj moramo najprej posodobiti Raspbian z uporabo spodnjih ukazov:
posodobitev sudo apt-get
Nato moramo namestiti nekaj paketov, povezanih z Bluetoothom:
sudo apt-get namesti bluetooth blueman bluez
Nato znova zaženite Raspberry Pi:
sudo ponovni zagon
BlueZ je odprtokodni projekt in uradni sklad protokola Bluetooth Bluetooth. Podpira vse osnovne protokole Bluetooth in je zdaj postal del uradnega jedra Linuxa.
Blueman ponuja namizni vmesnik za upravljanje in nadzor naprav Bluetooth.
Nazadnje potrebujemo knjižnico python za komunikacijo Bluetooth, da lahko pošiljamo in prejemamo podatke prek RFCOMM z uporabo jezika Python:
sudo apt-get namestite python-bluetooth
Namestite tudi knjižnice podpore GPIO za Raspberry Pi:
sudo apt-get namestite python-rpi.gpio
Zdaj smo končali z namestitvijo potrebnih paketov za komunikacijo Bluetooth v Raspberry Pi.
Seznanjanje naprav z Raspberry Pi prek Bluetootha:
Seznanjanje naprav Bluetooth, kot je mobilni telefon, z Raspberry Pi je zelo enostavno. Tu smo naš pametni telefon Android povezali z Raspberry Pi. Pred tem smo v Pi namestili BlueZ, ki ponuja pripomoček za ukazno vrstico, imenovan "bluetoothctl", za upravljanje naših naprav Bluetooth.
Zdaj odprite pripomoček bluetoothctl s spodnjim ukazom:
sudo bluetoothctl
Vse ukaze pripomočka bluetoothctl lahko preverite tako, da vnesete »pomoč« . Za zdaj moramo spodaj ukaze vnesti v danem vrstnem redu:
# vklop # agent vklopljen # odkrit # vpogled ob # skeniranje vklopljeno
Po zadnjem ukazu »optično branje« boste na seznamu videli svojo napravo Bluetooth (mobilni telefon). Prepričajte se, da je v vašem mobilnem telefonu vklopljen Bluetooth in da ga vidijo naprave v bližini. Nato kopirajte naslov MAC svoje naprave in ga z danim ukazom seznanite:
par
Nato boste pozvani k geslu ali pripnite v terminalski konzoli, nato vnesite geslo in pritisnite enter. Nato po pozivu vtipkajte isto geslo v svoj mobilni telefon in zdaj ste uspešno seznanjeni z Raspberry Pi. Celoten postopek smo razložili tudi v videoposnetku, podanem v prejšnji vadnici za nadzor GPIO. Tukaj je neposredna povezava YouTube.
Kot smo že povedali, lahko za povezavo mobilnega telefona uporabite tudi namizni vmesnik. Po namestitvi Blueman-a boste na desni strani namizja Raspberry Pi videli ikono Bluetooth, kot je prikazano spodaj, s katero lahko enostavno opravite seznanjanje.
Izbira avtomobila za igrače:
V tem projektu Raspberry Pi Controlled Car smo za predstavitev uporabili avtomobilček za igrače. Tu smo izbrali RF- igračo z gibljivo levo-desno krmilno funkcijo. Po nakupu tega avtomobila smo njegovo RF vezje zamenjali z našim Raspberry vezjem. Ta avtomobil ima dva enosmerna motorja, enega za vrtenje dveh prednjih koles, drugega pa za vrtenje dveh zadnjih koles. Sprednji bočni motor se uporablja za usmerjanje avtomobila, kar pomeni zavijanje v levo ali desno stran (kot je pravo krmiljenje vozila). In zadnji bočni motor se uporablja za vožnjo avtomobila v smeri naprej in nazaj. Bluetooth Raspberry se uporablja za brezžično sprejemanje ukazov s telefona Android za nadzor avtomobila.
Za vrtenje sprednjih in zadnjih koles lahko uporabite kateri koli avtomobilček z dvema enosmernima motorjema.
Shema vezja in razlaga:
V tem avtomobilu na daljinsko upravljanje moramo Raspberry Pi povezati samo z dvema motorjema z uporabo modula L293D. Za napajanje Raspberry Pi in avtomobila smo uporabili mobilno banko napajanja. Mobilna napajalna enota zadostuje za napajanje Raspberry Pi in avtomobilskih motorjev, toda ko postavimo napajalno enoto nad avto, se zaradi velike teže mobilne napajalne enote avtomobil ne bi mogel pravilno premikati. Zato priporočamo, da za napajanje sistema uporabite napajalnik z nizko težo ali litijeve baterije. Vse povezave so prikazane v spodnjem vezju. Oglejte si tudi naš razdelek Robotika, če želite izvedeti več o nadzoru motorjev z različnimi tehnologijami.
Opomba: na malinovo pilo ne dajte več kot 5v.
To vezje je bilo narejeno na Perf Board za ta projekt, tako da je avtomobil manjši.
Daljinsko upravljanje avtomobila z aplikacijo Android BlueTerm:
Zdaj, ko smo nastavili vse stvari in uspešno poskusili razčleniti pametni telefon prek Bluetootha, moramo namestiti aplikacijo Android za komunikacijo z Raspberry Pi s pomočjo serijskega vmesnika Bluetooth, tako da lahko nadzorujemo GPIO nožice Raspberry Pi. Kot smo že povedali, protokol RFCOMM / SPP posnema serijsko komunikacijo prek Bluetootha, zato smo tukaj namestili aplikacijo BlueTerm, ki podpira ta protokol.
Uporabite lahko tudi katero koli drugo aplikacijo Bluetooth Terminal, ki podpira komunikacijo prek vtičnice RFCOMM.
Zdaj po prenosu in namestitvi aplikacije BlueTerm zaženite spodnji program Python s terminala in hkrati povežite seznanjeno napravo raspberrypi z aplikacijo BlueTerm.
Po uspešni povezavi boste v zgornjem desnem kotu aplikacije videli povezavo: raspberrypi, kot je prikazano spodaj:
Zdaj lahko preprosto vnesete naslednje ukaze iz aplikacije BlueTerm, da se avto premika v želeni smeri. Pritisnite 'q' za izhod iz programa. S tipkovnico Google Voice Typing lahko s svojim glasom upravljate ta avto. Preverite celotno predstavitev v videoposnetku na koncu.
Ukazi:
F - Premik naprej
B - Premik nazaj
S - Nehaj
L - Premik levo naprej
R - Premik naprej
A - Premik nazaj
P - Premik nazaj
Q - nehaj
Programiranje na Python:
Program Python za nadzor Raspberry Pi GPIO z aplikacijo Android je zelo preprost in samoumeven. Le malo se moramo naučiti o kodi, povezani s komunikacijo Bluetooth RFCOMM. V nasprotnem primeru je enako kot nadzor nad katerim koli robotom ali avtomobilom tako, da motorni zatič postavite visoko ali nizko. Celoten program je podan spodaj v poglavju Koda.
Najprej moramo uvoziti knjižnico vtičnic Bluetooth, ki nam omogoča nadzor Bluetootha v jeziku Python; v prejšnjem razdelku smo namestili knjižnico istega.
uvoz Bluetooth
Nato smo vključili še nekaj datotek z glavo in definirali zatiče za motorje, ki so bili privzeto nizki.
uvoz bluetooth čas uvoza uvoz RPi.GPIO kot 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.izhod (m22, 0)
Spodaj je koda, odgovorna za komunikacijo Bluetooth:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM) port = 1 server_socket.bind (("", port)) server_socket.listen (1) client_socket, address = server_socket.accept () print "Sprejeta povezava iz", naslov
Tu jih lahko razumemo po vrsticah:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM): Ustvarjanje vtičnice za komunikacijo Bluetooth RFCOMM.
server_socket.bind (("", port): - Strežnik veže skript na gostitelju '' na vrata.
server_socket.listen (1): Strežnik posluša, da sprejema po eno povezavo naenkrat.
client_socket, address = server_socket.accept (): Strežnik sprejme odjemalsko zahtevo za povezavo in dodeli naslov mac spremenljivki, client_socket je vtičnica odjemalca
Po tem smo ustvarili nekaj funkcij, ki so odgovorne za premikanje avtomobila v želeni smeri: def left_side_forward (), def right_side_forward (), def forward (), def left_side_reverse (), def right_side_reverse (), def reverse () def stop (). Te funkcije bodo poklicane, ko v aplikaciji Mobile blueTerm pritisnemo L, R, F, A, P, B, S in avto se bo ustrezno premaknil.
data = "" while 1: data = client_socket.recv (1024) print "Prejeto:% s"% podatkov 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): Prejmite podatke prek odjemalske vtičnice client_socket in jih dodelite spremenljivki data. Hkrati lahko prejmete največ 1024 znakov.
Na koncu po vsem programiranju zaprite povezavo med odjemalcem in strežnikom s spodnjo kodo:
client_socket.close () server_socket.close ()