- Installere nødvendige pakker for Bluetooth-kommunikasjon:
- Pare enheter med Raspberry Pi via Bluetooth:
- Kretsdiagram:
- Kontrollerende LED med Android App BlueTerm:
- Programmeringsforklaring:
Raspberry Pi er veldig populær for IoT-prosjekter på grunn av sin sømløse evne til trådløs kommunikasjon over internett. Raspberry Pi 3 har innebygd Wi-Fi og Bluetooth, og Bluetooth er en veldig populær trådløs kommunikasjonsprotokoll. Så i dag skal vi kontrollere Raspberry Pi GPIO Pin gjennom en Android-app ved hjelp av Bluetooth.
Her bruker vi Raspberry 2 Pi Model B som ikke har innebygd Bluetooth, så vi bruker en enkel USB Bluetooth-dongle. Bortsett fra det trenger vi bare en motstand (220R) og en LED for å demonstrere GPIO-kontrollen. Her bruker vi RFCOMM Bluetooth-protokoll for trådløs kommunikasjon.
Programmering for Bluetooth i Python følger sokkelprogrammeringsmodellen og kommunikasjon mellom Bluetooth-enhetene skjer gjennom RFCOMM-sokkelen. RFCOMM (Radio Frequency Communication) er en Bluetooth-protokoll som ga emulerte RS-232 serielle porter og også kalt Serial Port Emulation. Bluetooth-seriell portprofil er basert på denne protokollen. RFCOMM er veldig populært i Bluetooth-applikasjoner på grunn av bred støtte og offentlig tilgjengelig API. Den er bundet til L2CAP-protokollen.
Vi har også brukt Bluetooth-modul HC-06 i vårt forrige prosjekt: Stemmestyrte lysdioder ved bruk av Raspberry Pi. Sjekk også våre tidligere Raspberry Pi-prosjekter sammen med noen gode IoT-prosjekter.
Installere nødvendige pakker for Bluetooth-kommunikasjon:
Før start må vi installere noen programvare for å konfigurere Bluetooth-kommunikasjon i Raspberry Pi. Du bør ha et Raspbian Jessie-installert minnekort klart med Raspberry Pi. Sjekk denne artikkelen for å installere Raspbian OS og komme i gang med Raspberry Pi. Så nå må vi først oppdatere Raspbian ved hjelp av kommandoene nedenfor:
sudo apt-get update sudo apt-get upgrade
Da må vi installere noen Bluetooth-relaterte pakker:
sudo apt-get install bluetooth blueman bluez
Start Raspberry Pi på nytt:
sudo omstart
BlueZ er et open source-prosjekt og offisiell Linux Bluetooth-protokollstabel. Den støtter alle Bluetooth-protokollene og blir nå en del av den offisielle Linux-kjernen.
Blueman tilbyr Desktop-grensesnittet for å administrere og kontrollere Bluetooth-enhetene.
Til slutt trenger vi python-biblioteket for Bluetooth-kommunikasjon slik at vi kan sende og motta data gjennom RFCOMM ved hjelp av Python-språk:
sudo apt-get install python-bluetooth
Installer også GPIO-støttebibliotekene for Raspberry Pi:
sudo apt-get install python-rpi.gpio
Nå er vi ferdige med å installere nødvendige pakker for Bluetooth-kommunikasjon i Raspberry Pi.
Pare enheter med Raspberry Pi via Bluetooth:
Det er veldig enkelt å koble Bluetooth-enheter, som mobiltelefon, med Raspberry Pi. Her har vi paret Android-smarttelefonen vår med Raspberry Pi. Vi har tidligere installert BlueZ i Pi, som tilbyr et kommandolinjeprogram som heter “bluetoothctl” for å administrere Bluetooth-enhetene våre. Men før det, kobler du USB Bluetooth-dongelen med Raspberry Pi og sjekker om den blir oppdaget eller ikke, ved å bruke kommandoen nedenfor:
lsusb
Åpne nå Bluetoothctl- verktøyet med kommandoen nedenfor:
sudo bluetoothctl
Du kan sjekke alle kommandoene til Bluetoothctl- verktøyet ved å skrive 'hjelp' . For nå må vi legge inn kommandoer nedenfor i gitt rekkefølge:
# slå på # agent på # oppdagbar på # parbar på # skanning på
Etter den siste kommandoen "skann på", vil du se Bluetooth-enheten din (mobiltelefon) i listen. Forsikre deg om at mobilen din har Bluetooth slått på og synlig av enheter i nærheten. Kopier deretter MAC-adressen til enheten din og par den ved å bruke den gitte kommandoen:
par
Deretter blir du bedt om å oppgi passord eller pin i terminalkonsollen, skriv deretter inn passord der og trykk enter. Skriv deretter inn samme passord i mobiltelefonen din når du blir bedt om det, og du er nå parret med Raspberry Pi. Vi har også forklart hele prosessen i vår video gitt til slutt.
Som fortalt tidligere, kan du også bruke Desktop-grensesnitt for å koble mobiltelefonen. Etter at du har installert Blueman, vil du se et Bluetooth-ikon på høyre side av Raspberry Pi-skrivebordet, som vist nedenfor, ved hjelp av hvilket du enkelt kan gjøre sammenkoblingen.
Kretsdiagram:
Kretsskjema er veldig enkelt, vi koblet nettopp en LED til PIN 40 (GPIO 21) av Raspberry Pi med en motstand på 220 Ohm:
Kontrollerende LED med Android App BlueTerm:
Nå etter paring av mobiltelefonen, må vi installere en Android-app for å kommunisere med Raspberry Pi ved hjelp av en Bluetooth-seriell adapter. Som tidligere fortalt emulerer RFCOMM / SPP-protokollen seriell kommunikasjon over Bluetooth, så vi installerte her BlueTerm App som støtter denne protokollen.
Du kan også bruke hvilken som helst annen Bluetooth Terminal App som støtter kommunikasjon via RFCOMM-kontakten.
Nå, etter å ha lastet ned og installert BlueTerm-appen, kjører du det gitte Python-programmet fra terminalen og kobler den sammenkoblede raspberrypi- enheten fra BlueTerm-appen samtidig.
Etter vellykket tilkobling vil du se tilkoblet: raspberrypi øverst til høyre i appen som vist nedenfor:
Nå kan du bare skrive inn '1' eller '0' fra BlueTerm-appen for å gjøre henholdsvis GPIO-pinnen HØY og LAV, som i sin tur slår PÅ og AV LED-en som er koblet til denne pinnen. Trykk på 'q' for å avslutte programmet. Du kan bruke Google Voice Typing Keyboard til å kontrollere GPIO ved hjelp av stemmen din. Sjekk fullstendig demo i videoen som er gitt til slutt.
Så dette er hvordan du kan styre GPIO Pin trådløst ved hjelp av en Android-app via Bluetooth. Sjekk også Hvordan bruke Bluetooth med Arduino.
Programmeringsforklaring:
Python-programmet for å kontrollere Raspberry Pi GPIO med Android App er veldig enkelt og selvforklarende. Bare vi trenger å lære litt om koden relatert til Bluetooth RFCOMM-kommunikasjon. Først må vi importere Bluetooth-stikkontaktbiblioteket som gjør det mulig å kontrollere Bluetooth med Python-språk; vi har installert biblioteket for det samme i forrige avsnitt.
importere Bluetooth
Nedenfor er koden som er ansvarlig for Bluetooth-kommunikasjon:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM) port = 1 server_socket.bind (("", port)) server_socket.listen (1) client_socket, address = server_socket.accept () print "Accepted connection from", adresse mens 1: data = client_socket.recv (1024)
Her kan vi forstå dem linje for linje:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM): Opprette stikkontakt for Bluetooth RFCOMM-kommunikasjon.
server_socket.bind (("", port): - Server binder skriptet på verten '' til porten.
server_socket.listen (1) : Server lytter til å godta en forbindelse om gangen.
client_socket, address = server_socket.accept () : Server godtar klientens tilkoblingsforespørsel og tilordner mac-adressen til den variable adressen, client_socket er klientens socket
data = client_socket.recv (1024): Motta data gjennom client socket client_socket og tilordne dem til de variable dataene . Maksimalt 1024 tegn kan mottas om gangen.
Til slutt, etter all programmering, lukker du klient- og serverforbindelsen ved hjelp av koden nedenfor:
client_socket.close () server_socket.close ()
All den andre koden er enkel og selvforklarende. Sjekk hele koden nedenfor. Prøv å endre dette prosjektet, og du kan bruke det til å kontrollere mange andre ting trådløst, som å bruke Relays kan du kontrollere husholdningsapparater, eller du kan også kontrollere en robotbil via Android-telefon.