====== 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)