- Namestitev potrebnih paketov za komunikacijo Bluetooth:
- Seznanjanje naprav z Raspberry Pi prek Bluetootha:
- Shema vezja:
- Upravljanje LED z Android App BlueTerm:
- Pojasnilo programiranja:
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. Torej, danes bomo Raspberry Pi GPIO Pin nadzirali prek aplikacije za Android z uporabo Bluetootha.
Tu uporabljamo Raspberry 2 Pi Model B, ki nima vgrajenega Bluetootha, zato uporabljamo preprost USB ključ Bluetooth. Poleg tega potrebujemo le upor (220R) in LED za prikaz GPIO nadzora. 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.
V prejšnjem projektu smo uporabili tudi modul Bluetooth HC-06: LED z glasovnim nadzorom z uporabo Raspberry Pi. Preverite tudi naše prejšnje projekte Raspberry Pi skupaj z nekaj dobrimi IoT projekti.
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. Pred tem pa USB-ključ Bluetooth povežite z Raspberry Pi in s spodnjim ukazom preverite, ali je zaznan ali ne:
lsusb
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 tam vnesite geslo in pritisnite enter. Nato vnesite isto geslo v svoj mobilni telefon, ko boste pozvani, in zdaj ste uspešno seznanjeni z Raspberry Pi. Celoten postopek smo razložili tudi v našem videu na koncu.
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.
Shema vezja:
Shema vezij je zelo preprosta, na PIN 40 (GPIO 21) Raspberry Pi smo priklopili LED z uporom 220 Ohm:
Upravljanje LED z Android App BlueTerm:
Zdaj, ko smo razčlenili mobilni telefon, moramo namestiti aplikacijo Android za komunikacijo z Raspberry Pi s pomočjo serijskega vmesnika Bluetooth. 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 '1' ali '0' iz aplikacije BlueTerm, da nastavite GPIO pin HIGH oziroma LOW, ki nato vklopi in izklopi LED, priključen na ta pin. Pritisnite 'q' za izhod iz programa. Za nadzor GPIO-ja z glasom lahko uporabite tipkovnico Google Voice Typing Keyboard. Preverite celotno predstavitev v videoposnetku na koncu.
Tako lahko brezžično upravljate GPIO Pin z aplikacijo Android prek Bluetootha. Preverite tudi, kako uporabljati Bluetooth z Arduino.
Pojasnilo programiranja:
Program Python za nadzor Raspberry Pi GPIO z aplikacijo Android je zelo preprost in samoumeven. Le malo se moramo naučiti kode, povezane s komunikacijo Bluetooth RFCOMM. 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
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 med 1: podatki = client_socket.recv (1024)
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
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 celotnem programiranju zaprite povezavo med odjemalcem in strežnikom s spodnjo kodo:
client_socket.close () server_socket.close ()
Vsa druga koda je enostavna in samoumevna. Spodaj preverite celotno kodo. Poskusite spremeniti ta projekt in z njim lahko brezžično nadzorujete številne druge stvari, na primer z uporabo relejev lahko nadzirate gospodinjske aparate ali pa tudi z robotskim avtomobilom prek telefona android.