Forum: Mikrocontroller und Digitale Elektronik I/Os steuern per WLAN-Router


von M. G. (looking)


Lesenswert?

Ich würde gerne per WLAN I/Os steuern, z.B. mit einem Android Smartphone 
oder Tablet. Es gibt einen preisgünstigen (ca. 30€) kleinen WLAN-Router 
TL-MR3020, der von OpenWrt unterstützt wird. Der Router hat einen 
USB-Host-Anschluss sowie intern eine Uart-Schnittstelle.

Die Idee ist, an die USB-Buchse dieses Routers eine Arduino Nano 
Hardware (mit integriertem FTDI USB-Seriell-Chip) anzuschließen.
Vorteile: Der Router muss nicht geöffnet werden, der Arduino Nano ist 
klein und preiswert erhältlich, die I/O-Steuerung wird per AVR auf dem 
Nano übernommen.

Auf dem Router müsste dann eine Art WLAN-Seriell-Bridge laufen.
WLAN <=> TL-MR3020 <=> USB <=> Arduino Nano <=> I/Os

Leider habe ich keinerlei Erfahrung mit Embedded Linux, ich stelle mir 
das in etwa so vor:

1) OpenWrt-Firmware auf dem Router installieren 
http://wiki.openwrt.org/toh/tp-link/tl-mr3020
2) WLAN-Parameter konfigurieren
3) per OPKG Package Manager die FTDI-Unterstützung installieren
opkg update
opkg install kmod-usb-serial-ftdi
4) Serverapplikation auf dem Router installieren, die Daten zwischen 
WLAN und USB-FTDI austauscht

Die Punkte 1-3 würde ich mir mit etwas googeln und ausprobieren 
zutrauen.
Aber wie sieht es mit Punkt 4 aus?

Kann man mit C ein Programm schreiben und ein Package erzeugen, sodass 
es mit opkg installiert werden kann, ohne dass der Linux-Kernel neu 
kompiliert werden muss?
Wenn ja, wie ist die genaue Vorgehensweise?

Benötigt man zwingend eine Linux-Entwicklungsumgebung oder könnte man 
sowas auch unter Windows erstellen?

von Sascha W. (sascha-w)


Lesenswert?

Hallo,

die Frage ist wie du die Steuerung vom Smartphone machen willst?
Selbst eine App schreiben, dann könnte Punkt 4 recht einfach ausfallen.
Es gibt fertige Software, die dir die serielle Schnittstelle über IP 
weiterreicht (Telnet). Die App müsste dann einen kleinen Telnetclient 
enthalten der die entspechenden Daten sendet, oder auch empfängt wenn du 
das brauchst.
Willst du keine App schreiben, sondern die Bedienung per Browser machen 
müsste auf dem Router erst mal ein HTTP-Server laufen (dürfte schon der 
Fall sein - für die Konfiguration) der dann per Script auf die Hardware 
zugreifen kann und entsprechenden Daten an die serielle (USB) 
weiterleitet.

Sascha

von M. G. (looking)


Lesenswert?

Wie würde die Telnet-Lösung auf dem Router aussehen?
Standardmäßig wird Telnet vermutlich auf die "echte" interne serielle 
Schnittstelle des Routers gehen, wie können die Daten auf dem USB (FTDI) 
weitergegeben werden?
Müsste dann auf dem Arduino Nano das Telnet-Protokoll implementiert 
werden?

von Dr. G. Reed (Gast)


Lesenswert?

Recht einfach lässt sich sowas mit dem Flyport-Modul machen, siehe h
http://www.openpicus.com.

Das hat genau diese Funktionalität praktisch schon eingebaut, 
entsprechende Beispielprogramme gibt es auch...

von Mick M. (highlow)


Lesenswert?

M. G. schrieb:
> Kann man mit C ein Programm schreiben und ein Package erzeugen, sodass
> es mit opkg installiert werden kann, ohne dass der Linux-Kernel neu
> kompiliert werden muss?
> Wenn ja, wie ist die genaue Vorgehensweise?
>
> Benötigt man zwingend eine Linux-Entwicklungsumgebung oder könnte man
> sowas auch unter Windows erstellen?

Besorg dir das OpenWrt-SDK für deine Architektur und du kannst 
problemlos eigene Packages bauen. Dies sollte auch mittels cygwin unter 
Windows funktionieren.
Wenn du nicht wirklich exotische Dinge 'treibst' muss der Kernel nicht 
neu kompiliert werden.

von Basti (Gast)


Lesenswert?

Du brauchst nur lighttpd und microperl. Mit Perl kannst du problemlos 
die Serielle Schnittstelle ansprechen. Auch über USB.

Du erstellst z.b. eine html Seite mit einem Button der beim klicken ein 
Perl Script ausführt.

von Klaus D. (kolisson)


Lesenswert?

.. und ein Pollin Net-IO an einem beliebigen Wlan Router
ist zu einfach ?

k.

von M. G. (looking)


Lesenswert?

Klaus De lisson schrieb:
> .. und ein Pollin Net-IO an einem beliebigen Wlan Router
> ist zu einfach ?
>
> k.

Ist halt im Vergleich zum Arduino Nano größer, teurer und braucht mehr 
Strom.

von Sascha W. (sascha-w)


Lesenswert?

M. G. schrieb:
> Wie würde die Telnet-Lösung auf dem Router aussehen?
> Standardmäßig wird Telnet vermutlich auf die "echte" interne serielle
> Schnittstelle des Routers gehen, wie können die Daten auf dem USB (FTDI)
> weitergegeben werden?
Schau mal nach "remserial" das scheint das passende zu sein um eine 
serielle oder bei dir eben virtuelle serielle Schnittstelle über TCP zu 
leiten.
Das Port auf dem remserial den Dienst zur Verfügung stellt kannst du 
sicherlich einstellen um mit dem normalen Telnet nicht in die Quere zu 
kommen

> Müsste dann auf dem Arduino Nano das Telnet-Protokoll implementiert
> werden?
nein auf dem Arduino hast du ja nach dem FTDI die serielle Schnittstelle

µC <-> FTDI <-USB-> Virtuelle COM <-> remserial <-WLAN-> Telnetclient
RS232   RS232 over USB           RS232      RS232 over telnet
+-- ARDUINO --+ +--------- WLAN-ROUTER -----------+ +--- SMARTPHONE

Sascha

von M. G. (looking)


Lesenswert?

Sascha Weber schrieb:
> Schau mal nach "remserial" das scheint das passende zu sein um eine
> serielle oder bei dir eben virtuelle serielle Schnittstelle über TCP zu
> leiten.

Das hört sich gut an.
Jetzt stellt sich mir noch die Frage, ob man remserial unter OpenWrt auf 
TL-MR3020 zum Laufen kriegt, möglichst im schon vorhandenen Flash?

von was? (Gast)


Lesenswert?

M. G. schrieb:
> Jetzt stellt sich mir noch die Frage, ob man remserial unter OpenWrt auf
> TL-MR3020 zum Laufen kriegt, möglichst im schon vorhandenen Flash?

Alternativ schau dir mal socat an, gibt es garantiert auch ein Paket für 
OpenWrt:
http://www.dest-unreach.org/socat/

von Sascha W. (sascha-w)


Lesenswert?

M. G. schrieb:
> Sascha Weber schrieb:
>> Schau mal nach "remserial" das scheint das passende zu sein um eine
>> serielle oder bei dir eben virtuelle serielle Schnittstelle über TCP zu
>> leiten.
>
> Das hört sich gut an.
> Jetzt stellt sich mir noch die Frage, ob man remserial unter OpenWrt auf
> TL-MR3020 zum Laufen kriegt, möglichst im schon vorhandenen Flash?

such einfach mal bei G.., so wie ich es auch gemacht habe, unter OpenWrt 
läufts auf alle Fälle.

Sascha

von Klaus D. (kolisson)


Lesenswert?

M. G. schrieb:
>> .. und ein Pollin Net-IO an einem beliebigen Wlan Router
>> ist zu einfach ?
>>
>> k.
>
> Ist halt im Vergleich zum Arduino Nano größer, teurer und braucht mehr
> Strom.

Da hast du wohl recht. Das Teil von Pollin zieht einiges an Saft.
Meines habe ich zwar mit Hilfe von Schaltreglern etwas ruhiger machen
können aber der Stromsparfuchs ist es nicht geworden.

Gruss k.

von Fabi (Gast)


Lesenswert?

... gibt es denn nicht auch irgend welche W-Lan Router, die direkt ein 
paar Pins frei haben? Da könnte man sich doch den ganzen Aufwand ausen 
rum sparen und die direkt schalten.

Falls es sowas gibt --> suche ich auch. Ich selbst brauch das für ein 
simples Projekt, habe aber eigentlich wenig Lust an mehreren Stellen 
anzufangen zu programmieren.

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
Noch kein Account? Hier anmelden.