Kommunikation µC und PC/Smartphone

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)

Häufig stellt sich die Frage wie die Kommunikation zwischen Mikrocontroller und Software auf einem PC oder Smartphone am Besten gelöst werden kann. Hier sollen diverse Möglichkeiten aufgelistet werden.

RS232

  • Einfache Umsetzung: siehe z.B. AVR-Tutorial:_UART
  • Neuere PCs besitzen teilweise keine RS232-Schnittstelle mehr (bei Smartphones praktisch überhaupt nicht vorhanden)
  • Es gibt viele RS232<->USB Adapterkabel

USB: CDC-Klasse (virtueller COM-Port)

  • Benötigt USB-Host-fähiges Smartphone (und entsprechende Treiberunterstützung)
  • Unter neueren Windows-Versionen wird für die (erforderliche) *.inf/*.cat eine digitale Signatur benötigt

USB: Custom/Drittanbieter

  • z.B. FTDI [[1]] (erzeugt je nach Treiber virtuellen COM-Port unter Windows, gute Treiberunterstützung)
  • oder Silabs CP210x
  • Benötigt USB-Host-fähiges Smartphone (und entsprechende Treiberunterstützung)
  • (Zukünftige) Treiberunterstützung ist abhängig vom Hersteller

USB: HID

  • Benötigt USB-Host-fähiges Smartphone (und entsprechende Treiberunterstützung)
  • Unter den meisten Betriebssystemen wird kein Treiber benötigt
  • Geschwindigkeit bei USB-FullSpeed auf 64KByte/s begrenzt
  • (kein virtueller COM-Port)

USB: WinUSB

USB: LibUSB

Bluetooth

  • Bluetooth-Module für µC: siehe Bluetooth oder HC-05/HC-06
  • kann nahezu jedes Smartphone
  • Genutzt wird häufig das SPP (Serial Port Profile, erzeugt auf PCs einen virtuellen COM-Port)
  • auf PCs bei SPP-Nutzung keine zusätzlichen Treiber* nötig (*außer für den BT-Adapter des PCs)

LAN/WLAN

  • WLAN wird von jedem halbwegs aktuellen Smartphone unterstützt.
  • Teilweise höherer Resourcenverbrauch auf µC (gegenüber USB/RS232)

LPT/Parallelport

  • keine Smartphone-Unterstützung
  • an neueren PCs häufig nicht mehr vorhanden
  • Adapterkabel auf USB meist nur für Drucker tauglich (ansonsten ggf. Timing-Probleme)

IrDA

  • Recht einfache Umsetzung
  • nahezu keine Unterstützung bei PCs und Smartphones (hauptsächlich bei veralteten Notebooks und Handys vorhanden)

Anmerkungen

Die USB-Lösungen bieten hier den Vorteil eine Stromversorgung gleich mitzuliefern. HID+WinUSB bieten hier den Vorteil, dass Treiber ggf. nicht benötigt werden (es muss sich nicht selbst um digitale Signatur gekümmert werden oder bei Fertiglösungen auf die Treiberunterstützung für spätere Windows-Versionen gehofft werden). Zudem bleibt bei HID+WinUSB dem Endkunden die Konfiguration von Baudraten erspart.

RS232 + USB-Adapterkabel ist auch relativ zukunftssicher, ggf. muss für neuere Windows-Versionen das Adapterkabel durch ein neueres getauscht werden.

Für Kommunikation mit Smartphones bietet sich die Bluetooth-Variante an, da Bluetooth dort weit verbreitet ist und in der Regel APIs bereitstehen (für Android siehe z.B. den 'BluetoothChat' Beispielcode des Android SDKs). USB-Lösungen funktionieren meist nur mit bestimmten Smartphones (siehe z.B. https://github.com/mik3y/usb-serial-for-android/wiki/Compatible-Android-Devices) und erst ab Android 3.1.

LPT und IrDA sind nahezu tot.