- Installere nødvendige pakker for Bluetooth-kommunikasjon:
- Pare enheter med Raspberry Pi via Bluetooth:
- Velge lekebilen:
- Kretsdiagram og forklaring:
- Styring av bil eksternt med Android App BlueTerm:
- Python-programmering:
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. I dag skal vi bygge en fjernstyrt bil ved hjelp av Raspberry Pi 3 og Bluetooth, her vil vi bruke Smart Phone som fjernkontroll for å kontrollere bilen. Vi har tidligere laget denne RC-bilen ved hjelp av Arduino.
Her bruker vi Raspberry Pi 3 som har innebygd Bluetooth, så vi trenger ikke bruke noen ekstern USB Bluetooth-dongle. 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.
Hvis du har Raspberry Pi 2, må du enten bruke ekstern Bluetooth-dongle eller Bluetooth-modul HC-06. Sjekk våre tidligere prosjekter for bruk av disse eksterne Bluetooth-enhetene: Kontrollere Raspberry Pi GPIO ved hjelp av Android-app over Bluetooth og Raspberry Pi-kontrollerte husholdningsapparater.
Installere nødvendige pakker for Bluetooth-kommunikasjon:
Før du begynner, må vi installere litt programvare for å sette opp 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.
Å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 videoen gitt i forrige GPIO-kontrollveiledning. Her er den direkte YouTube-lenken.
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.
Velge lekebilen:
I dette Raspberry Pi Controlled Car-prosjektet har vi brukt en lekebil til demonstrasjon. Her har vi valgt en RF- lekebil med bevegelig venstre-høyre styringsfunksjon. Etter å ha kjøpt denne bilen har vi byttet ut RF-kretsen med vår Raspberry-krets. Denne bilen har to DC-motorer, en for å rotere to forhjul og den andre for å rotere to bakhjul. Motoren på forsiden brukes til å gi retning til bilen, dvs. å vri på venstre eller høyre side (som ekte bilstyringsfunksjon). Og baksidemotoren brukes til å kjøre bilen fremover og bakover. En Raspberry Bluetooth brukes til å motta kommando trådløst fra Android-telefonen for å kontrollere bilen.
Du kan bruke hvilken som helst lekebil som har to DC-motorer for å rotere forhjulene og bakhjulene.
Kretsdiagram og forklaring:
I denne fjernstyrte bilen trenger vi bare å koble Raspberry Pi til to motorer ved hjelp av L293D-modulen. For å drive Raspberry Pi og bilen har vi brukt en mobil kraftbank. Den mobile kraftbanken er nok til å drive Raspberry Pi og bilens motorer, men når vi setter kraftbanken over bilen, vil den mobile kraftbankbilens tunge vekt ikke kunne bevege seg ordentlig. Så vi anbefaler å bruke strømforsyningen med lav vekt eller litiumbatterier for å drive systemet. Alle tilkoblingene er vist i kretsskjemaet nedenfor. Sjekk også seksjonen Robotics for å lære mer om å kontrollere motorer med forskjellige teknologier.
Merk: ikke legg mer enn 5v til bringebær-pi.
Denne kretsen er laget på Perf Board for dette prosjektet, slik at det blir mindre vekt på bilen.
Styring av bil eksternt med Android App BlueTerm:
Nå etter å ha satt opp alle tingene og prøvd å parre smarttelefonen via Bluetooth, må vi installere en Android-app for å kommunisere med Raspberry Pi ved hjelp av en Bluetooth-seriell adapter, slik at vi kan kontrollere GPIO-pinnene til Raspberry Pi. 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 følgende kommandoer fra BlueTerm-appen for å få bilen til å bevege seg i ønsket retning. Trykk på 'q' for å avslutte programmet. Du kan bruke Google Voice Typing Keyboard til å kontrollere denne bilen ved hjelp av Voice. Sjekk fullstendig demo i videoen som er gitt til slutt.
Kommandoer:
F - Fremover
B - Flytt bakover
S - Stopp
L - Fremover Venstre bevegelse
R - Fremover Høyre Flytt
A - Bakover venstre bevegelse
P - Bakover Høyre Flytt
Q - Avslutt
Python-programmering:
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. Ellers er det som å kontrollere hvilken som helst robot eller bil ved å gjøre motorens pin høy eller lav. Det komplette programmet er gitt nedenfor i delen Kode.
Først må vi importere Bluetooth-stikkontaktbiblioteket som gjør det mulig for oss å kontrollere Bluetooth med Python-språk; vi har installert biblioteket for det samme i forrige avsnitt.
importere Bluetooth
Så inkluderte vi noen flere headerfiler og definerte pinner for motorer, og la dem som standard lave.
importere Bluetooth-importtid import RPi.GPIO som 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.output (m22, 0)
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
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
Etter dette har vi laget noen funksjoner som er ansvarlige for å flytte bilen i ønsket retning: def venstre_side_forover (), def høyre_side_forward (), def forover (), def venstre_side_revers (), def høyre_side_revers (), def revers () def stopp (). Disse funksjonene vil bli kalt henholdsvis når vi trykker på L, R, F, A, P, B, S fra Mobile blueTerm-appen, og bilen vil bevege seg deretter.
data = "" mens 1: data = client_socket.recv (1024) skriver ut "Mottatt:% s"% data hvis (data == "F"): fremover () elif (data == "L"): venstre_side_forward () elif (data == "R"): høyre side forover () elif (data == "B"): omvendt () elif (data == "A"): venstre side (revers) (elif (data == "P"): høyre side () elif data == "S": stopp () elif (data == "Q"): skriv ut ("Quit") break client_socket.close () server_socket.close ()
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 ()