- Installera nödvändiga paket för Bluetooth-kommunikation:
- Para ihop enheter med Raspberry Pi via Bluetooth:
- Välja leksaksbilen:
- Kretsschema och förklaring:
- Fjärrstyrning av bilen med Android-appen BlueTerm:
- Python-programmering:
Raspberry Pi är mycket populär för IoT-projekt på grund av dess sömlösa förmåga att trådlös kommunikation över internet. Raspberry Pi 3 har inbyggd Wi-Fi och Bluetooth, och Bluetooth är ett mycket populärt trådlöst kommunikationsprotokoll. Idag ska vi bygga en fjärrstyrd bil med Raspberry Pi 3 och Bluetooth, här kommer vi att använda Smart Phone som fjärrkontroll för att styra bilen. Vi har tidigare skapat skapat den här RC-bilen med Arduino.
Här använder vi Raspberry Pi 3 som har inbyggd Bluetooth, så vi behöver inte använda någon extern USB Bluetooth-dongel. Här använder vi RFCOMM Bluetooth-protokoll för trådlös kommunikation.
Programmering för Bluetooth i Python följer sockelprogrammeringsmodellen och kommunikation mellan Bluetooth-enheter sker via RFCOMM-uttaget. RFCOMM (Radio Frequency Communication) är ett Bluetooth-protokoll som tillhandahöll emulerade RS-232 seriella portar och även kallad Serial Port Emulation. Bluetooth-seriell portprofil baseras på detta protokoll. RFCOMM är mycket populärt i Bluetooth-applikationer på grund av sitt breda stöd och allmänt tillgängliga API. Den är bunden till L2CAP-protokollet.
Om du har Raspberry Pi 2 måste du antingen använda extern Bluetooth-dongel eller Bluetooth-modul HC-06. Kontrollera våra tidigare projekt för att använda dessa externa Bluetooth-enheter: Styr Raspberry Pi GPIO med Android-app via Bluetooth och Raspberry Pi-kontrollerade hushållsapparater.
Installera nödvändiga paket för Bluetooth-kommunikation:
Innan vi börjar måste vi installera programvara för att ställa in Bluetooth-kommunikation i Raspberry Pi. Du bör ha ett Raspbian Jessie-installerat minneskort redo med Raspberry Pi. Läs den här artikeln för att installera Raspbian OS och komma igång med Raspberry Pi. Så nu måste vi först uppdatera Raspbian med kommandona nedan:
sudo apt-get uppdatering sudo apt-get upgrade
Då måste vi installera några Bluetooth-relaterade paket:
sudo apt-get install bluetooth blueman bluez
Starta sedan om Raspberry Pi:
omstart av sudo
BlueZ är ett open source-projekt och officiell Linux Bluetooth-protokollstack. Den stöder alla Bluetooth-kärnprotokoll och blir nu en del av den officiella Linux-kärnan.
Blueman tillhandahåller skrivbordsgränssnittet för att hantera och styra Bluetooth-enheter.
Slutligen behöver vi python-biblioteket för Bluetooth-kommunikation så att vi kan skicka och ta emot data via RFCOMM med Pythonspråk:
sudo apt-get install python-bluetooth
Installera också GPIO-stödbiblioteken för Raspberry Pi:
sudo apt-get install python-rpi.gpio
Nu är vi klara med att installera nödvändiga paket för Bluetooth-kommunikation i Raspberry Pi.
Para ihop enheter med Raspberry Pi via Bluetooth:
Att para ihop Bluetooth-enheter, som mobiltelefon, med Raspberry Pi är väldigt enkelt. Här har vi parat ihop vår Android-smarttelefon med Raspberry Pi. Vi har tidigare installerat BlueZ i Pi, som tillhandahåller ett kommandoradsverktyg som heter "bluetoothctl" för att hantera våra Bluetooth-enheter.
Öppna nu Bluetoothctl- verktyget med kommandot nedan:
sudo bluetoothctl
Du kan kontrollera alla kommandon för Bluetoothctl- verktyget genom att skriva "hjälp" . För närvarande måste vi ange kommandon nedan i angiven ordning:
# ström på # agent på # upptäckbar på # parbar vid # skanning på
Efter det sista kommandot "skanna på" ser du din Bluetooth-enhet (mobiltelefon) i listan. Se till att Bluetooth är aktiverat på din mobil och synlig för enheter i närheten. Kopiera sedan din enhets MAC-adress och para ihop den med ett kommando:
par
Då kommer du att bli ombedd att ange lösenord eller stift i din terminalkonsol, skriv sedan lösenord där och tryck på enter. Skriv sedan samma lösenord i din mobiltelefon när du blir ombedd och du är nu lyckad ihopkopplad med Raspberry Pi. Vi har också förklarat hela denna process i videon i tidigare GPIO-kontrollhandledning. Här är den direkta YouTube-länken.
Som sagt tidigare kan du också använda skrivbordets gränssnitt för att para ihop mobiltelefonen. Efter installationen av Blueman ser du en Bluetooth-ikon på höger sida av ditt Raspberry Pi-skrivbord som visas nedan, där du enkelt kan göra ihopkopplingen.
Välja leksaksbilen:
I detta Raspberry Pi Controlled Car-projekt har vi använt en leksaksbil för demonstration. Här har vi valt en RF- leksaksbil med rörlig vänster-höger styrfunktion. Efter att ha köpt den här bilen har vi bytt ut RF-kretsen mot vår Raspberry-krets. Den här bilen har två likströmsmotorer, en för att rotera två framhjul och en för att rotera två bakhjul. Motorn på framsidan används för att ge riktning till bilen betyder att du svänger åt vänster eller höger sida (som en verklig bilstyrningsfunktion). Och baksidemotorn används för att köra bilen framåt och bakåt. En Bluetooth of Raspberry används för att ta emot kommandon trådlöst från Android-telefonen för att styra bilen.
Du kan använda vilken leksaksbil som helst som har två DC-motorer för att rotera fram- och bakhjulen.
Kretsschema och förklaring:
I den här fjärrstyrda bilen behöver vi bara ansluta Raspberry Pi med två motorer med hjälp av L293D-modulen. För att driva Raspberry Pi och bilen har vi använt en mobil kraftbank. Den mobila kraftbanken räcker för att driva Raspberry Pi och bilens motorer, men när vi sätter kraftbanken över bilen skulle den mobila kraftbankbilens tunga vikt inte kunna röra sig ordentligt. Så vi rekommenderar att du använder strömförsörjningen med låg vikt eller litiumbatterier för att driva systemet. Alla anslutningar visas i kretsschemat nedan. Kolla även in vår Robotics-sektion för att lära dig mer om hur du styr motorer med olika tekniker.
Obs: lägg inte mer än 5v till hallon pi.
Denna krets har gjorts på Perf Board för detta projekt, så att det blir mindre vikt på bilen.
Fjärrstyrning av bilen med Android-appen BlueTerm:
Nu efter att ha konfigurerat alla saker och lyckats försöka para smarttelefonen via Bluetooth måste vi installera en Android-app för att kommunicera med Raspberry Pi med en Bluetooth-seriell adapter så att vi kan styra GPIO-stiften på Raspberry Pi. Som tidigare nämnts emulerar RFCOMM / SPP-protokoll seriell kommunikation via Bluetooth, så vi installerade här BlueTerm App som stöder detta protokoll.
Du kan också använda vilken annan Bluetooth Terminal-app som helst som stöder kommunikation via RFCOMM-uttaget.
Efter nedladdning och installation av BlueTerm-appen, kör nedanstående Python-program från terminalen och anslut den parade raspberrypi- enheten från BlueTerm-appen samtidigt.
Efter lyckad anslutning ser du ansluten: raspberrypi längst upp till höger i appen som visas nedan:
Nu kan du bara ange följande kommandon från BlueTerm-appen för att få bilen att röra sig i önskad riktning. Tryck på 'q' för att avsluta programmet. Du kan använda Google Voice Typing Keyboard för att styra den här bilen med din Voice. Kontrollera den fullständiga demonstrationen i videon som ges i slutet.
Kommandon:
F - Framåt Flytta
B - Flytta bakåt
S - Sluta
L - Framåt Vänster drag
R - Framåt högerflyttning
A - Bakåt vänster rörelse
P - Bakåt höger rörelse
Q - Sluta
Python-programmering:
Python-programmet för att styra Raspberry Pi GPIO med Android-appen är väldigt enkelt och självförklarande. Bara vi behöver lära oss lite om koden relaterad till Bluetooth RFCOMM-kommunikation. Annars är det samma som att kontrollera vilken robot eller bil som helst genom att göra motorns stift hög eller låg. Det fullständiga programmet ges nedan i avsnittet Kod.
Först måste vi importera Bluetooth-uttagsbiblioteket som gör att vi kan styra Bluetooth med Pythonspråk. vi har installerat biblioteket för samma i föregående avsnitt.
importera Bluetooth
Sedan inkluderade vi några fler sidfiler och definierade stift för motorer sätter dem som standard låg.
importera Bluetooth-importtid importera 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)
Nedan följer koden som ansvarar för Bluetooth-kommunikation:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM) port = 1 server_socket.bind (("", port)) server_socket.listen (1) client_socket, address = server_socket.accept () skriv ut "Accepterad anslutning från", adress
Här kan vi förstå dem rad för rad:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM): Skapar uttag för Bluetooth RFCOMM-kommunikation.
server_socket.bind (("", port): - Servern binder skriptet på värden '' till porten.
server_socket.listen (1): Servern lyssnar på att acceptera en anslutning i taget.
client_socket, address = server_socket.accept (): Server accepterar klientens anslutningsförfrågan och tilldelar mac-adressen till den variabla adressen, client_socket är klientens socket
Efter detta har vi skapat några funktioner som är ansvariga för att flytta bilen i önskad riktning: def vänster_sida_framåt (), def höger_sida_framåt (), def framåt (), def vänster_sida_omvänd (), def höger_sida_omvänd (), def bakåt () def stopp (). Dessa funktioner kommer att anropas när vi trycker på L, R, F, A, P, B, S från Mobile blueTerm-appen och bilen kommer att röra sig därefter.
data = "" medan 1: data = client_socket.recv (1024) skriver ut "Mottaget:% s"% data om (data == "F"): framåt () elif (data == "L"): vänster_sida_forward () elif (data == "R"): höger sida framåt () elif (data == "B"): omvänd () elif (data == "A"): vänster sida omvänd () elif (data == "P"): höger sida () elif data == "S": stop () elif (data == "Q"): skriv ut ("Quit") bryt client_socket.close () server_socket.close ()
data = client_socket.recv (1024): Ta emot data via client socket client_socket och tilldela dem till variabeldata. Maximalt 1024 tecken kan tas emot åt gången.
Slutligen, efter all programmering, stäng klient- och serveranslutningen med hjälp av nedanstående kod:
client_socket.close () server_socket.close ()