In der Datei /boot/ werden folgende Einträge modifiziert bzw. Arduino mit raspberry pi verbinden. hinzugefügt: enable_uart=1 dtoverlay=pi3-disable-bt Mit Letzerem wird Bluetooth deaktiviert. (falls dies wieder benötigt wird, dann muss diese Option wieder entfernt werden) Nun wird die Datei /boot/ editiert und folgende Zeichenfolge entfernt: console=serial0, 115200 (Der Rest muss bleiben, weil sonst Fehler mit hochfahren entstehen können) Nun wird noch die RPi-Konfiguration aufgerufen: sudo raspi-config Hier werden unter Interfacing options die Option Serial angewählt und No für eine serielle Login-Konsole geantwortet und Yes, um die seriellen Ports zu aktivieren. Jetzt muss der RPi neugestartet werden: sudo reboot Nun kann die Kommunikation zwischen RPi und Arduino ausprobiert werden. Dazu wird folgendes Software-Paket verwendet: sudo apt-get install minicom Dann kann man folgenden Aufruf durchführen und mit der Tastatur über die seriellen GPIOs mit dem Arduino kommunizieren: minicom -b 9600 -D /dev/ttyAMA0 Um den minicom-Client wieder zu verlassen drückt man CTRL + SHIFT + a und dann q I²C-Kommunikation Der Vorteil an der Kommunikation über I²C ist, das diese Verbindung über die GPIO-Pins stattfinden, die serielle Schnittstelle nicht belegt wird und sogar mit mehreren Clients (z.
Dann werden noch die Hilfsprogramme installiert: sudo apt-get install i2c-tools Zusätzlich benötigt man für das folgende Python-Skript noch eine Library: apt-get install python-smbus Nun prüft man auf I²C-Devices: ls /dev/i2c* Nun sollte mindestens ein I²C-Device auftauchen, z. B. Der sicherste Weg, Raspberry Pi mit Arduino Uno R3 zu verbinden. /dev/i2c-1 Man kann nun einen Scan nach der vom Arduino verwendeten I²C-Adresse durchführen: i2cdetect -y 1 Abb. : Erkennung der I²C-Adresse (0x05) vom Arduino durch den RPi Wird nun das folgende Python-Skript ausgeführt, so kann der RPi die LEDs auf dem Arduino steuern: import smbus bus = (1) address = 0x05 def writeNumber(value): bus. write_byte(address, value) return -1 def readNumber(): number = ad_byte(address) return number inp = input("Number between 1 and 9: ") if not inp: continue writeNumber(inp) print "RPi sends: ", inp (1) recv = readNumber() print "Arduino sends: ", recv zurück