Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Datenaustausch zwischen PC und Arduino, zukünftig zusätzlich über Android (https://www.delphipraxis.net/172594-datenaustausch-zwischen-pc-und-arduino-zukuenftig-zusaetzlich-ueber-android.html)

DelphiFan2008 13. Jan 2013 10:30

Datenaustausch zwischen PC und Arduino, zukünftig zusätzlich über Android
 
Hallo,

habe mit verschiedene Arduino-Boards besorgt und die eine oder andere "stand alone" Applikation erstellt. Das neu erworbene Arduino Board besitzt eine Ethernet Schnittstelle inkl. der Arduino Library für den Datenaustausch per TCP oder UDP. Im ersten Schritt würde ich gerne einen Datenaustausch zwischen PC und Arduino Board realisieren, später sollte das ganze auch mit einem Android Smartfone und/oder Tablett funktionieren - Ziel ist "Hausautomatisierung, Ein-/Ausschalten von Gartenlicht abhängig von Zeit etc."

Meine erste Idee:
- Datenaustasch per TCP
- Arduino als Server
- PC und Android als Client
- Komponente unter Delphi XE2 ist Indy10 TIdTCPClient
- Zum Test: Umsetzung einer Server-Applikation (Simulation der Ardiuno-Funktionalität) mit Delphi XE2 und Indy10 TIdTCPServer auf gleichem oder anderem PC

Hat jemand schon mal etwas ähnliches umgesetzt oder kann mir Informationen zur Anwendung der Indy10 bzw. TCP senden.

Bzgl. Ethernet Datentransfer etc. bin ich Neuling. Vielleicht kenn jemand eine Doku die hinsichtlich Ethernet und Verwendung/Umsetzung mit Delphi weiterhilft.

Gruß DelphiFan2008

mjustin 13. Jan 2013 11:09

AW: Datenaustausch zwischen PC und Arduino, zukünftig zusätzlich über Android
 
Zitat:

Zitat von DelphiFan2008 (Beitrag 1198863)
- Komponente unter Delphi XE2 ist Indy10 TIdTCPClient
- Zum Test: Umsetzung einer Server-Applikation (Simulation der Ardiuno-Funktionalität) mit Delphi XE2 und Indy10 TIdTCPServer auf gleichem oder anderem PC

Hat jemand schon mal etwas ähnliches umgesetzt oder kann mir Informationen zur Anwendung der Indy10 bzw. TCP senden.

Ist es ein proprietäres (Arduino-)Protokoll, das der Client beherrschen muss?
Muss man den Arduino-Simulationsserver selber programmieren, oder gibt es vielleicht schon eine Beispielimplementierung (es muss nicht in Delphi sein) für Testzwecke? Das würde es mir als Android Entwickler ja ermöglichen, einen Teil zumindest zu programmieren und Android Unittests laufen zu lassen ohne ein physisches Device anschliessen zu müssen.

DelphiFan2008 13. Jan 2013 11:30

AW: Datenaustausch zwischen PC und Arduino, zukünftig zusätzlich über Android
 
Hallo,

danke für die schnelle Antwort. Das Arduino Board besitzt eine eigene an C angelehnte Entwicklungsumgebung, welche es sehr einfach mach auf dem µC-Board Programme zu erstellen. Die Beschreibung der Arduino-Ethernet-Library ist hier. Die Anwendung wird z.B. hier beschrieben.

Der "Datenlayer" über TCP in der/den Applikationen muss aus meiner Sicht natürlich selbst gestaltet werden.

z.B. Gesendeter Datenframe vom Client an Server <Cmd><Data><CRC> Rückmeldung vom Server <Cmd><DataSet><CRC>

Gruß DelphiFan2008

mjustin 13. Jan 2013 12:55

AW: Datenaustausch zwischen PC und Arduino, zukünftig zusätzlich über Android
 
Zitat:

Zitat von DelphiFan2008 (Beitrag 1198873)

Der "Datenlayer" über TCP in der/den Applikationen muss aus meiner Sicht natürlich selbst gestaltet werden.

z.B. Gesendeter Datenframe vom Client an Server <Cmd><Data><CRC> Rückmeldung vom Server <Cmd><DataSet><CRC>

Verstehe - der Server (der auf dem Arduino laufen soll) wäre also eine komplette Eigenentwicklung, und muss sich nicht auf ein bestimmtes Protokoll festlegen.

Ist die Kommunikation nur als Request/Response (Client sendet an Arduino und wartet - blockierend - auf Antwort) geplant, oder soll das Arduino Device selber die Initiative ergreifen und unabhängig von einem vorhergehenden Request Daten an den Client senden können?

Falls nein (es wird also nur Request/Response benötigt) könnte man HTTP als Protokoll verwenden, oder ist das aufgrund beschränkter Systemresourcen nicht gewünscht? Denn mit einem so bewährten Protokoll wären ja einige Probleme gegenüber Eigenkreationen gelöst, unter anderem was die Ausgereiftheit und die Verfügbarkeit von Clientbibliotheken, auch auf anderen Plattformen, betrifft. Man könnte sofort mit der eigentlichen Daten/Anwendungssxhicht loslegen, und bestehende Infrastruktur nutzen. Konkret zum Beispiel den Indy HTTP Client.

Update: ein HTTP Server für Arduino ist zum Beispiel Webduino, er beherrscht einige sehr interessante Features:

* HTTP Methods: GET, HEAD, POST, PUT, DELETE, PATCH
* Web Forms
* JSON/RESTful interface
* HTTP Basic Authentication

Neben der primären Nutzung über die Delphi / Android Clients hätte man damit auch die Möglichkeit, ein einfaches webbasiertes Administrationsinterface zu erstellen.

DelphiFan2008 13. Jan 2013 13:06

AW: Datenaustausch zwischen PC und Arduino, zukünftig zusätzlich über Android
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

habe im beigefügten Bild die Grundidee abgebildet. Per Arduino werden die Befehle per TCP empfangen und ein Status an die Clients versendet (welche Lampen sind gerade an, Status von I/O-Ports, A/D-Wandler, Timer etc.) abhängig von Protokoll. Eventuell zyklisches Senden/Empfangen, kann über Client Ein-/Ausgeschaltet werden, ebenfalls Zyklus.

Die Arduino Library bietet ja zum einfachen Senden/Empfangen entsprechende Routinen, Bsp. Schreiben

Gruß DelphiFan2008


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:50 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz