Heim Der Blog Blog Details

Wie verbindet man Arduino mit anderen Mikrocontrollern oder Geräten?

September 22 2025
Ampheo

Anfrage

Globaler Lieferant elektronischer Komponenten AMPHEO PTY LTD: Umfangreiches Inventar für One-Stop-Shopping. Einfache Anfragen, schnelle, individuelle Lösungen und Angebote.

SCHNELLE ANFRAGE
ZUR RFQ-LISTE HINZUFÜGEN
Das Zusammenspiel von Arduino mit anderen Mikrocontrollern (MCUs) oder Geräten hat drei Ebenen: elektrische Kompatibilität → physischer Bus/Protokoll → Anwendungslogik.

Das Zusammenspiel von Arduino mit anderen Mikrocontrollern (MCUs) oder Geräten hat drei Ebenen: elektrische Kompatibilität → physischer Bus/Protokoll → Anwendungslogik. Hier ist ein kompakter, praxisnaher Leitfaden.

Wie verbindet man Arduino mit anderen Mikrocontrollern oder Geräten?

1) Elektrische Grundlagen (nicht überspringen!)

  • Spannungspegel: Viele Arduinos (Arduino UNO/Nano) arbeiten mit 5 V; viele MCUs/Sensoren mit 3,3 V.

    • Pegelwandler verwenden:

      • I²C: PCA9306, BSS138-Typ.

      • SPI/UART/digital: TXS0108E (open-drain-freundlich), einfacher Teiler (auf Arduino-Eingänge), Transistor/MOSFET-Puffer.

  • Stromgrenzen: Behandle Arduino-GPIOs als ~20 mA pro Pin (weniger ist besser). Relais/Motoren nie direkt treiben — nutze Transistor/MOSFET + Freilaufdiode oder einen Treiber-IC.

  • Masse: GND zwischen Boards verbinden, außer du isolierst bewusst (Optokoppler/Isolatoren, isolierte DC-DC).

  • Schutz: 100–330 Ω in Reihe auf empfindlichen Leitungen, TVS-Dioden bei langen Kabeln, richtige Abschlüsse bei differentiellen Bussen.


2) Übliche Verbindungsarten

A) UART (asynchron, einfaches Peer-to-Peer)

  • Einsatz: Zwei MCUs tauschen Bytes/Strings; auch für RS-232/RS-485 mit Transceiver.

  • Verdrahtung (TTL): Arduino TX → anderer MCU RX, Arduino RX ← anderer MCU TX, plus GND.

    • RS-232: MAX3232 hinzufügen.

    • RS-485 (lange Kabel, Multidrop): MAX485/75176; 120-Ω-Abschluss an den Enden; DE/RE steuern.

  • Beispiel (Hardware-UART):

 
void setup() {
  Serial1.begin(115200);   // auf UNO: Serial verwenden; auf Boards mit mehreren UARTs: Serial1
}
void loop() {
  Serial1.println("PING");
  if (Serial1.available()) {
    int b = Serial1.read();
    // Protokoll / Frame hier parsen
  }
}
  • RS-485 DE/RE-Steuerung:

 
const int DE=2, RE=3;
void txMode(bool on){ digitalWrite(DE,on); digitalWrite(RE,on); }

B) I²C (zwei Leitungen, adressierbarer Bus)

  • Einsatz: Viele Sensoren/MCUs auf kurzem Leiterplatten-Bus; Master/Slave-Modell.

  • Verdrahtung: SDA, SCL, Pull-ups (typ. 4,7 kΩ) auf Busspannung, gemeinsame Masse. Leitungen kurz halten.

  • Master schreibt/liest:

 

#include <Wire.h>
void setup(){
  Wire.begin();                   // Master
}
void loop(){
  Wire.beginTransmission(0x10);   // Slave-Adresse
  Wire.write(0xAB);
  Wire.endTransmission();

  Wire.requestFrom(0x10, 4);
  while (Wire.available()) { byte x = Wire.read(); }
}

  • Arduino als I²C-Slave (vor allem AVR-Boards):

 
#include <Wire.h>
volatile byte last;
void onRx(int n){ while(n--) last = Wire.read(); }
void onTx(){ Wire.write(last); }
void setup(){ Wire.begin(0x10); Wire.onReceive(onRx); Wire.onRequest(onTx); }
void loop(){}

Hinweis: Manche Nicht-AVR-Cores haben eingeschränkten/alternativen Slave-Support.

C) SPI (schnell, Master-zentriert)

  • Einsatz: Hochgeschwindigkeits-Peripherie (ADCs, DACs, Displays) oder MCU-zu-MCU mit klarem Master.

  • Verdrahtung: MISO, MOSI, SCK, CS (pro Gerät), GND (+ ggf. Pegelwandlung).

  • Master-Beispiel:

 
#include <SPI.h>
const int CS=10;
void setup(){
  pinMode(CS, OUTPUT); digitalWrite(CS, HIGH);
  SPI.begin();
}
void loop(){
  SPI.beginTransaction(SPISettings(1000000, MSBFIRST, SPI_MODE0));
  digitalWrite(CS, LOW);
  byte r = SPI.transfer(0x42);
  digitalWrite(CS, HIGH);
  SPI.endTransaction();
}

Arduino als SPI-Slave ist möglich, aber board-/core-spezifisch; für MCU-zu-MCU sind UART oder I²C meist einfacher.

D) 1-Wire / GPIO-„Bit-Banging“

  • Einsatz: Sehr einfache Sensoren (DS18B20) oder kundenspezifische Protokolle mit niedriger Geschwindigkeit.

  • Bibliotheken (z. B. OneWire) übernehmen das Timing.

E) Analog & PWM-Brücken

  • Analog in: Fremdgerät gibt 0–5 V (UNO) oder 0–3,3 V (viele andere) aus → Teiler/Puffer nutzen; mit analogRead() einlesen.

  • Arduino als „DAC“: PWM mit R-C filtern (z. B. 10 kΩ + 0,1 µF) und skalieren.

F) Feld-/Industriebusse und höhere Schichten

  • CAN: MCP2515 + TJA1050/TJA1051 (SPI) oder integriertes CAN auf manchen Boards.

  • Modbus RTU (RS-485): MAX485 + Modbus-Bibliothek.

  • USB: USB-Device-Boards (Arduino Leonardo/Micro) emulieren CDC/KB/MIDI; für USB-Host (z. B. Maus) USB-Host-Shield oder Board mit nativem USB-Host.

  • Ethernet/Wi-Fi/BLE: ESP32/ESP8266, W5500 oder Arduino-Ethernet/Wi-Fi-Shields; dann TCP/UDP, MQTT, HTTP, WebSockets sprechen.


3) Protokoll & Framing (robust machen)

  • Frame definieren: Start-Byte(s), Länge, Payload, CRC oder Checksumme.

  • Timeouts & Retries: Nicht-blockierende Reads; mit Teilframes umgehen.

  • Flusskontrolle: Bei schnellen UART-Links CTS/RTS oder App-seitige Acks/Fenster.

  • Adressen: I²C nutzt 7-Bit-Adressen; Kollisionen vermeiden.


4) Schnellwahl Pegelwandler

  • I²C: PCA9306 oder BSS138-Typ (bidirektional, Open-Drain).

  • Push-Pull-GPIO/SPI/UART: TXS0108E/TXB0108 (TXB kann mit Pull-ups zickig sein); einfacher Teiler → Arduino-Eingang; MOSFET/BJT für 3,3→5-V-Treiber.


5) Isolation (wenn Massen nicht verbunden sein sollen)

  • Digital: Optokoppler oder ADuM-Digitalisolatoren (I²C-spezifische Varianten existieren).

  • Versorgung: Isolierter DC-DC, um die Gegenseite zu speisen.

  • RS-485/CAN: In rauer/weiter Umgebung isolierte Transceiver bevorzugen.


6) Debug-Checkliste

  • Logikanalysator oder Oszi: Spannungen, Flanken, Pull-ups und Timing prüfen.

  • Doppelt checken: Baudrate, I²C-Pull-ups, SPI-Modus (CPOL/CPHA), CS-Polarität.

  • Langsam starten: Bus-Geschwindigkeit reduzieren (Wire.setClock(100000), langsameres SPI, geringere UART-Baudrate), dann steigern.

  • Loopback auf jeder Seite separat testen; dann verbinden.


Schnellwahl-Matrix

  • Kurz & simpel MCU↔MCU: UART (TTL)

  • Mehrere Bausteine auf kurzem Bus: I²C

  • Hochgeschwindigkeits-Peripherie, ein Master: SPI

  • Lange Leitung / Störumgebung / viele Knoten: RS-485 (+ Modbus) oder CAN

  • PC/Phone/Cloud: USB-CDC, Wi-Fi/Ethernet (HTTP/MQTT), BLE-GATT

Ampheo