====== RaspberryPi mit Arduino koppeln ====== Um den Arduino mit dem Raspberry Pi zu verbinden muss man lediglich die TX-Leitung des Pis mit der RX-Leitung des Arduinos und jeweils die Masseleitung miteinander verbinden. {{ :computer:raspberrypi:serielle_kommunikation_steckplatine.png |}} ===== Arduino ===== Auf der Arduino-Seite reicht folgendes kleines Programm aus, um Daten zu empfangen, die an der seriellen Schnittstelle ankommen (dabei darf die Datenleitung während des Programmierens **nicht** mit dem Pi verbunden sein!): int i = 0; // for incoming serial data void setup() { Serial.begin(9600); // opens serial port, sets data rate to 9600 bps } void loop() { if (Serial.available() > 0) { // send data only when you receive data: i = Serial.read(); // read the incoming byte: Serial.println(i, DEC); // say what you got: } } ===== Raspberry Pi ===== Zuerst muss man die serielle Schnittstelle für die eigene Nutzung freischaufeln (zuvor diente die Schnittstelle, um dort Terminals zu betreiben.) sudo nano /etc/inittab 1:2345:respawn:/sbin/getty 115200 tty1 # Line below commented out # 2:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100 3:23:respawn:/sbin/getty 115200 tty3 4:23:respawn:/sbin/getty 115200 tty4 5:23:respawn:/sbin/getty 115200 tty5 6:23:respawn:/sbin/getty 115200 tty6 sudo nano /boot/cmdline.txt folgende Zeilen auskommentieren: ... console=ttyAMA0,115200 ... kgdboc=ttyAMA0,115200 ... Für das Programm braucht man noch Python-Bibliotheken, die man schnell installiert: apt-get install python-pip pip install pyserial Anschließend den Raspberry Pi neu starten: sudo reboot Das nachfolgende Programm übergibt abwechselnd 0 und 255 an den Arduino: import serial import time delay = 0.5 comunicacion = serial.Serial('/dev/ttyAMA0',9600) comunicacion.close() comunicacion.open() while True: comunicacion.write(chr(0)) time.sleep(delay) comunicacion.write(chr(255)) time.sleep(delay)