Bluetooth: 6. Steuern des Arduinos über den Raspberry Pi


Gepostet September 2015, Kategorie: Bluetooth HC05


Bluetooth: 6. Steuern des Arduinos über den Raspberry Pi

In diesen Teil wird gezeigt, wie man ein Bluetooth-Modul mit den Raspberry Pi verbindet. Als Beispielprogramm wird die RGB-LED angesteuert.


  • Installation auf dem RPi
    • Pakete installieren: sudo apt-get install bluetooth bluez-utils blueman
    • Name des Bluetooth-Gerätes herausfinden durch: hciconfig (Meist hci0)
    • Bluetooth-Modul am Arduino anschalten
    • Adresse des Arduino herausfinden: hcitool scan (Bsp: 98:D3:31:FC:01:35)
    • Raspberry Pi mit dem Arduino paaren: sudo bluez-simple-agent hci0 98:D3:31:FC:01:35
      Pin eingeben: 1234
    • Einstellen des Protocols RFCOMM zur seriellen Kommunikation: sudo nano /etc/bluetooth/rfcomm.conf
      Folgende Zeilen hinzufügen (Kommentare aufheben, Zeilen editieren):
      rfcomm0 {
          bind yes;
          device <span style="font-family: monospace;">98:D3:31:FC:01:35</span>;
          channel 1;
          comment "Communication with an Arduino.";
      }
    • Beenden: Strg+X, Y, Enter
    • Nun wird bei jedem Systemstart dieses Protokoll initialsiert. Eine Bluetooth-Verbindung wird aber noch nicht aufgebaut
    • Um den Systemstart zu vermeiden, muss jetzt nocheinmal das Protokoll manuell initialisiert werden: sudo rfcomm bind all
    • Paket für die Serial-Python-Bibliothek: sudo apt-get install python-serial
  • Python-Programmierung:
# Importieren der Bibliothek 
import serial
 
# Erstelle die Serielle Kommunikation. /dev/rfcomm0 ist der Pfad dieser Kommunikation 
bt = serial.Serial("/dev/rfcomm0")
 
# Frag per Eingabe die RGB-Werte ab 
print "RGB-Werte (0-255) bitte eingeben:"
red = int(input("R:"))
green = int(input("G:"))
blue = int(input("B:"))
 
# Prüft, ob die RGB-Werte gültig sind. 
if (red<0 or red>255 or green<0 or green>255 or blue<0 or blue>255):
    print "Fehlerhafte Eingabe!"
else:
    # Erstelle die Nachricht. 
    msg = "SET"
    msg += str(red) + ","
    msg += str(green) + ","
    msg += str(blue) + ";"
 
    # Schicke die Nachricht an den Arduino 
    bt.write(msg)
 
    print "Versendet. Warte auf OK."
 
    msg = "";
 
    while True:
        if (bt.inWaiting() > 0):
            c = bt.read(1)
            if (c != ';'):
                msg += c
            else:
                # Wenn OK, dann Nachricht empfangen, Beende das Programm 
                if (msg == "OK"):
                    print "OK!"
                    break;
                msg = "";
bt.close()
Wetterdaten Eilenburg
Temperatur: 13.1 °C
Luftdruck: 1029.4 hPa
Luftfeuchte: 60 %
[mehr]