Mit meinem Arduino logge ich einen Temperaturverlauf mit. Jetzt siche ich nach einen Weg, diese Daten mit einem eigen programmierten PC Programm auszuwerten. Wie kann ich am einfachsten die Kommunikation zwischen Arduino und PC herstellen? Ich möchte keinesfalls händisch angeben, welchen COM Port ich auslesehn will, etc. Der PC soll den Arduino schon selbst erkennen. Bitte um Tipps. Danke!
:
Verschoben durch User
Arduino lauscht an seiner Seriellen (über USB) auf Triggerworte / Strings z.B. "hallo Arduino" und antwortet "hier" Der PC (bzw. das Programm) öffnet einen comX nach dem anderen mit den passenden Einstellungen z.B 19K2 und sendet und lauscht Im Misserfolgsfall kommt bei open Error oder nichts, im Erfolgsfall "hier" Dann weiss der PC auf welchen Port der Arduino lauscht. Das könnte der PC auch in der REG oder in seiner ini sich merken und speichern.
Die Ports der Reihe nach abhören bis man mit einem Codewort einen Treffer landet - sehr sehr gute Idee!!! :)
Martin schrieb: > Der PC soll den Arduino schon selbst erkennen. Kann man über eine Anlyse der Registry Daten erkennen. Allerdings ist so nur eine generische Erkunnung Deines Arduino Typs möglich - d.h. es knallt wenn 2 für verschiedene Zwecke angeschlossen sind. Custom USB Deskriptoren sind auf den Arduinos mit nativem USB im µC möglich - d.h. auf den Varianten mit Atmega32U4 oder den dickeren Cortex-M3 µCs. Dort würde man entweder HID oder WinUSB einsetzen.
Martin schrieb: > möchte keinesfalls händisch angeben, welchen COM Port ich auslesehn > will, etc. Der PC soll den Arduino schon selbst erkennen. Das geht am Besten, wenn man direkt mit USB programmiert, was aber deutlich komplizierter ist als die serielle Schnittstelle. Im USB-Tutorial mit STM32 steht einiges dazu, aber das trifft auf die normalen Arduinos nicht so zu, weil die andere Controller nutzen - der allgemeine Teil hilft aber vielleicht trotzdem.
Martin schrieb: > Der PC soll den Arduino schon selbst erkennen. Inwiefern? Der Arduino-Treiber meldet sich im Geräte-Manager mit einem Namen an, der "Arduino" enthält (oder einen anderen passenden Bezeichner). Den kann man mit Hilfe eines Programms auslesen und entsprechend in einer Batchdatei auswerten/weiter verwursten. Wenn du selber eine Software schreiben kannst, "klappesrst" du einfach die verfügbaren COM-Ports nach deinem Logger ab (oder liest die Daten des Gerätemanagers aus).
Man könnte ja auch einen Netzwerk-Shield auf den Arduino setzen, dann wird dieser über die MAC/IP-Adresse eindeutig identifizierbar. UDP ist nicht besonders resourcen-fressend. Oder man verwendet gleich einen (weitgehend) kompatiblen ESP8266-Ableger ... Großer Vorteil auf der PC-Seite: Kein Treiber-Geraffel, Netzwerk kann heute jeder. Auf Arduino-Seite: plattformunabhängig, zur Not weltweit zu erreichen, auch vom Smartphone. Nachteil: Keine (einfache) Stromversorgung wie bei USB. Man könnte ein USB-Netzteil nutzen, oder ein Solarmodul oder einen Energy-Harvesting-Chip. Es gibt auch Projekte, die Energeie aus normalem Netzwerkverkehr (ohne PoE!) sammeln können ...
Frank E. schrieb: > Großer Vorteil auf der PC-Seite: Kein Treiber-Geraffel, Hat man bei USB ab Windows 8 auch nicht, wenn man es richtig (WinUSB Device) macht - und unter Linux sowieso nicht. Für Netzwerk muss der User die IP des Geräts kennen, auf diesem muss man ggf. eine IP einstellen können - auch nicht super benutzerfreundlich.
Niklas Gürtler schrieb: > Frank E. schrieb: >> Großer Vorteil auf der PC-Seite: Kein Treiber-Geraffel, > > Hat man bei USB ab Windows 8 auch nicht, wenn man es richtig (WinUSB > Device) macht - und unter Linux sowieso nicht. > > Für Netzwerk muss der User die IP des Geräts kennen, auf diesem muss man > ggf. eine IP einstellen können - auch nicht super benutzerfreundlich. Nö, dafür hat man Broadcasts erfunden (zumindest für das gleiche Subnet). Einmal ins Netz gebrüllt und der Schützling meldet sich. Fortan kennt man seine IP ...
Alle COM Ports öffnen und den Logger einfach jede Sekunde "hier" schreien lassen. Dann weiß man nach einer Sekunde, welcher Port der richtige ist. Ungefragt Daten an unbekannte Geräte schreiben macht in 99% der Fälle keine Probleme, aber wenn man wichtige Geräte angeschlossen hat, die zu den 1% gehören, will man das vielleicht nicht. Ist eben die Frage, ob du das verkaufen willst und damit alle Eventualitäten abkaspern willst (dann am besten per HID oder libUSB) oder nur zum privaten gebrauch nutzt (dann ist fast egal, was du machst).
Frank E. schrieb: > Nö, dafür hat man Broadcasts erfunden (zumindest für das gleiche > Subnet). Einmal ins Netz gebrüllt und der Schützling meldet sich. Es sei denn es meldet sich irgendein anderes Gerät welches auf der selben Port-Nummer arbeitet. Oder es ist irgendeine Firewall dazwischen - z.B. Heim vs. Gast Netz bei DSL-Routern. Es hat schon seinen Grund warum die meisten Peripherie-Geräte wie Mäuse und Festplatten per USB angebunden sind. Dort hat man einen einheitlichen zentral verwalteten Mechanismus zur Erkennung von Geräten. Das ist für den End-User immer noch am Einfachsten. Der hat auch nicht immer einen Ethernet Port zur Hand - da wäre wenn schon WLAN gefragt, was aber wieder Konfiguration des Schlüssels erfordert. Eine Netzwerk-Anwendung ist auch nicht unbedingt einfacher zu programmieren als USB. Es gibt wohl nur mehr Tutorials & Bibliotheken. Dafür haben viele Controller eine komplette USB Peripherie bereits integriert, da fehlt nur noch ggf. eine Schutzschaltung. Bei Ethernet braucht's immer Übertrager und fast immer ein PHY-IC. Es gibt zwar Shields die das haben, aber auch Arduinos mit nativem USB (z.B. Due).
Mathias schrieb: > Alle COM Ports öffnen und den Logger einfach jede Sekunde "hier" > schreien lassen. Dann weiß man nach einer Sekunde, welcher Port der > richtige ist. der Logger könnte sogar "hier Ardu Logger 007" "hier Ardu Logger 008" "hier Ardu Input 001" schreien, dann wären auch andere Ardu erkennbar.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.