- Installieren der erforderlichen Pakete für die Bluetooth-Kommunikation:
- Koppeln von Geräten mit Raspberry Pi über Bluetooth:
- Auswahl des Spielzeugautos:
- Schaltplan und Erklärung:
- Fernsteuerung des Autos mit der Android App BlueTerm:
- Python-Programmierung:
Raspberry Pi ist wegen seiner nahtlosen Fähigkeit zur drahtlosen Kommunikation über das Internet für IoT-Projekte sehr beliebt. Raspberry Pi 3 verfügt über integriertes Wi-Fi und Bluetooth, und Bluetooth ist ein sehr beliebtes Protokoll für die drahtlose Kommunikation. Heute werden wir ein ferngesteuertes Auto mit Raspberry Pi 3 und Bluetooth bauen. Hier werden wir das Smartphone als Fernbedienung zur Steuerung des Autos verwenden. Wir haben dieses RC-Auto bereits mit Arduino gebaut.
Hier verwenden wir Raspberry Pi 3 mit integriertem Bluetooth, sodass wir keinen externen USB-Bluetooth-Dongle verwenden müssen. Hier verwenden wir das RFCOMM Bluetooth-Protokoll für die drahtlose Kommunikation.
Die Programmierung für Bluetooth in Python folgt dem Socket-Programmiermodell, und die Kommunikation zwischen den Bluetooth-Geräten erfolgt über den RFCOMM-Socket. RFCOMM (Radio Frequency Communication) ist ein Bluetooth-Protokoll, das emulierte serielle RS-232-Ports bereitstellt und auch als Serial Port Emulation bezeichnet wird. Das Profil der seriellen Bluetooth-Schnittstelle basiert auf diesem Protokoll. RFCOMM ist in Bluetooth-Anwendungen aufgrund seiner breiten Unterstützung und der öffentlich verfügbaren API sehr beliebt. Es ist an das L2CAP-Protokoll gebunden.
Wenn Sie Raspberry Pi 2 haben, müssen Sie entweder einen externen Bluetooth-Dongle oder ein Bluetooth-Modul HC-06 verwenden. Überprüfen Sie unsere vorherigen Projekte für die Verwendung dieser externen Bluetooth-Geräte: Steuern von Raspberry Pi GPIO mithilfe der Android App über Bluetooth und Raspberry Pi gesteuerte Haushaltsgeräte.
Installieren der erforderlichen Pakete für die Bluetooth-Kommunikation:
Bevor wir beginnen, müssen wir eine Software zum Einrichten der Bluetooth-Kommunikation in Raspberry Pi installieren. Sie sollten eine Raspbian Jessie-Speicherkarte mit Raspberry Pi installiert haben. In diesem Artikel erfahren Sie, wie Sie das Raspbian-Betriebssystem installieren und mit Raspberry Pi beginnen. Jetzt müssen wir zuerst den Raspbian mit den folgenden Befehlen aktualisieren:
sudo apt-get update sudo apt-get upgrade
Dann müssen wir einige Bluetooth-bezogene Pakete installieren:
sudo apt-get installiere Bluetooth Blueman Bluez
Starten Sie dann den Raspberry Pi neu:
sudo neu starten
BlueZ ist ein Open Source-Projekt und offizieller Linux Bluetooth-Protokollstapel. Es unterstützt alle wichtigen Bluetooth-Protokolle und wird nun Teil des offiziellen Linux-Kernels.
Blueman bietet die Desktop-Oberfläche zum Verwalten und Steuern der Bluetooth-Geräte.
Schließlich benötigen wir die Python-Bibliothek für die Bluetooth-Kommunikation, damit wir Daten über RFCOMM in der Python-Sprache senden und empfangen können:
sudo apt-get installiere python-bluetooth
Installieren Sie auch die GPIO-Unterstützungsbibliotheken für Raspberry Pi:
sudo apt-get installiere python-rpi.gpio
Jetzt sind wir mit der Installation der erforderlichen Pakete für die Bluetooth-Kommunikation in Raspberry Pi fertig.
Koppeln von Geräten mit Raspberry Pi über Bluetooth:
Das Koppeln von Bluetooth-Geräten wie Mobiltelefonen mit Raspberry Pi ist sehr einfach. Hier haben wir unser Android-Smartphone mit Raspberry Pi gekoppelt. Wir haben BlueZ bereits in Pi installiert, das ein Befehlszeilenprogramm namens "bluetoothctl" zur Verwaltung unserer Bluetooth-Geräte bereitstellt.
Öffnen Sie nun das Dienstprogramm bluetoothctl mit dem folgenden Befehl:
sudo bluetoothctl
Sie können alle Befehle des Dienstprogramms bluetoothctl überprüfen, indem Sie 'help' eingeben. Im Moment müssen wir die folgenden Befehle in der angegebenen Reihenfolge eingeben:
# Power On # Agent On # Erkennbar bei # Pairable bei # Scan On
Nach dem letzten Befehl "Scannen ein" wird Ihr Bluetooth-Gerät (Mobiltelefon) in der Liste angezeigt. Stellen Sie sicher, dass auf Ihrem Mobiltelefon Bluetooth aktiviert und für Geräte in der Nähe sichtbar ist. Kopieren Sie dann die MAC-Adresse Ihres Geräts und koppeln Sie sie mit dem folgenden Befehl:
Paar
Anschließend werden Sie in Ihrer Terminalkonsole zur Eingabe von Passcode oder Pin aufgefordert. Geben Sie dort den Passcode ein und drücken Sie die Eingabetaste. Geben Sie dann den gleichen Passcode in Ihr Mobiltelefon ein, wenn Sie dazu aufgefordert werden, und Sie sind nun erfolgreich mit Raspberry Pi gekoppelt. Wir haben diesen gesamten Prozess auch in dem Video erklärt, das im vorherigen Tutorial zur GPIO-Steuerung gegeben wurde. Hier ist der direkte YouTube-Link.
Wie bereits erwähnt, können Sie das Mobiltelefon auch über die Desktop-Oberfläche koppeln. Nach der Installation von Blueman wird auf der rechten Seite Ihres Raspberry Pi-Desktops ein Bluetooth-Symbol angezeigt (siehe Abbildung unten), mit dem Sie das Pairing problemlos durchführen können.
Auswahl des Spielzeugautos:
In diesem Raspberry Pi Controlled Car-Projekt haben wir ein Spielzeugauto zur Demonstration verwendet. Hier haben wir ein RF- Spielzeugauto mit beweglicher Links-Rechts-Lenkfunktion ausgewählt. Nach dem Kauf dieses Autos haben wir seine HF-Schaltung durch unsere Himbeer-Schaltung ersetzt. Dieses Auto hat zwei Gleichstrommotoren, einen zum Drehen von zwei Vorderrädern und einen zum Drehen von zwei Hinterrädern. Der Frontseitenmotor wird verwendet, um dem Auto die Richtung zu geben, dh nach links oder rechts zu drehen (wie bei einer echten Lenkfunktion). Der Motor auf der Rückseite dient zum Vorwärts- und Rückwärtsfahren des Fahrzeugs. Ein Bluetooth von Raspberry wird verwendet, um Befehle drahtlos vom Android-Telefon zu empfangen, um das Auto zu steuern.
Sie können jedes Spielzeugauto mit zwei Gleichstrommotoren verwenden, um die Vorder- und Hinterräder zu drehen.
Schaltplan und Erklärung:
In diesem ferngesteuerten Auto müssen wir Raspberry Pi nur mit zwei Motoren über das L293D-Modul verbinden. Für die Stromversorgung des Raspberry Pi und des Autos haben wir eine mobile Powerbank verwendet. Die mobile Power Bank reicht aus, um den Raspberry Pi und die Motoren des Autos anzutreiben, aber wenn wir die Power Bank über das Auto legen, kann sich das Auto aufgrund des hohen Gewichts der mobilen Power Bank nicht richtig bewegen. Wir empfehlen daher, das Netzteil mit geringem Gewicht oder Lithiumbatterien für die Stromversorgung des Systems zu verwenden. Alle Anschlüsse sind im nachstehenden Schaltplan dargestellt. Weitere Informationen zur Steuerung von Motoren mit unterschiedlichen Technologien finden Sie in unserem Abschnitt Robotik.
Hinweis: Legen Sie nicht mehr als 5 V an den Himbeer-Pi.
Diese Schaltung wurde für dieses Projekt auf Perf Board hergestellt, damit das Auto weniger Gewicht hat.
Fernsteuerung des Autos mit der Android App BlueTerm:
Nachdem wir alle Dinge eingerichtet und erfolgreich versucht haben, das Smartphone über Bluetooth zu analysieren, müssen wir eine Android-App für die Kommunikation mit Raspberry Pi über einen seriellen Bluetooth-Adapter installieren , damit wir die GPIO-Pins von Raspberry Pi steuern können. Wie bereits erwähnt, emuliert das RFCOMM / SPP-Protokoll die serielle Kommunikation über Bluetooth. Daher haben wir hier die BlueTerm-App installiert, die dieses Protokoll unterstützt.
Sie können auch jede andere Bluetooth-Terminal-App verwenden, die die Kommunikation über den RFCOMM-Socket unterstützt.
Führen Sie nun nach dem Herunterladen und Installieren der BlueTerm-App das unten angegebene Python-Programm vom Terminal aus und verbinden Sie das gekoppelte Himbeer- Pi-Gerät gleichzeitig von der BlueTerm-App.
Nach erfolgreicher Verbindung sehen Sie verbunden: raspberrypi in der oberen rechten Ecke der App wie unten gezeigt:
Jetzt können Sie einfach die folgenden Befehle über die BlueTerm-App eingeben, um das Auto in die gewünschte Richtung zu bewegen. Drücken Sie 'q', um das Programm zu beenden. Sie können Google Voice Typing Keyboard verwenden, um dieses Auto mit Ihrer Stimme zu steuern. Überprüfen Sie die vollständige Demo im Video am Ende.
Befehle:
F - Vorwärtsbewegung
B - Rückwärtsbewegung
S - Halt an
L - Vorwärts nach links bewegen
R - Rechts vorwärts bewegen
A - Zurück nach links bewegen
P - Rückwärts rechts bewegen
Q - Beenden
Python-Programmierung:
Das Python-Programm zur Steuerung von Raspberry Pi GPIO mit der Android App ist sehr einfach und selbsterklärend. Wir müssen nur ein wenig über den Code für die Bluetooth RFCOMM-Kommunikation lernen. Ansonsten ist es dasselbe, als würde man einen Roboter oder ein Auto steuern, indem man den Motorstift hoch oder niedrig macht. Das vollständige Programm finden Sie weiter unten im Abschnitt Code.
Zuerst müssen wir die Bluetooth-Socket-Bibliothek importieren, mit der wir Bluetooth mit Python-Sprache steuern können. Wir haben die Bibliothek dafür im vorherigen Abschnitt installiert.
Bluetooth importieren
Dann haben wir einige weitere Header-Dateien eingefügt und Pins für Motoren definiert, die standardmäßig niedrig sind.
Bluetooth importieren Importzeit RPi.GPIO als GPIO importieren 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)
Unten finden Sie den Code für die Bluetooth-Kommunikation:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM) port = 1 server_socket.bind (("", port)) server_socket.listen (1) client_socket, address = server_socket.accept () print "Akzeptierte Verbindung von", Adresse
Hier können wir sie Zeile für Zeile verstehen:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM): Erstellen eines Sockets für die Bluetooth RFCOMM-Kommunikation.
server_socket.bind (("", port): - Server bindet das Skript auf Host '' an Port.
server_socket.listen (1): Der Server wartet darauf, jeweils eine Verbindung zu akzeptieren.
client_socket, address = server_socket.accept (): Der Server akzeptiert die Verbindungsanforderung des Clients und weist der variablen Adresse die Mac-Adresse zu. client_socket ist der Socket des Clients
Danach haben wir einige Funktionen erstellt, die dafür verantwortlich sind, das Auto in die gewünschte Richtung zu bewegen: def left_side_forward (), def right_side_forward (), def forward (), def left_side_reverse (), def right_side_reverse (), def reverse () def stop ()). Diese Funktionen werden jeweils aufgerufen, wenn wir in der Mobile blueTerm-App L, R, F, A, P, B, S drücken und das Auto sich entsprechend bewegt.
data = "" while 1: data = client_socket.recv (1024) print "Erhalten:% s"% data 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): Empfängt Daten über den Client-Socket client_socket und weist sie den variablen Daten zu. Es können maximal 1024 Zeichen gleichzeitig empfangen werden.
Schließen Sie nach der gesamten Programmierung die Client- und Serververbindung mit dem folgenden Code:
client_socket.close () server_socket.close ()