Forum: Mikrocontroller und Digitale Elektronik AVR Wi-Fi und Smartphones


von Florian (Gast)


Lesenswert?

Hallo Experten :)

Ich hätte eine Frage undzwar, es gibt doch einige Geräte die per Wifi 
Daten senden, zb. an Smartphones. Ich denke dabei an ein OBD2 - Wifi 
Sender, der die Daten vom Auto an ein Smartphone sendet, und man das 
Smartphone praktisch als "Boardcomputer" verwendet.

Ich hätte dazu ein paar Fragen. Undzwar ist Wifi doch mit verschiedenen 
Layern aufgebaut, wie können wir also Daten alleine gesendet werden? Ich 
meine, ich verbinde mich via Handy mit dem AVR ( der einen Wifi Sender 
angeschlossen hat ). Soweit so klar, nur wie kommen nun Daten an, bzw. 
welche Möglichkeiten gibt es Daten für das Smartphone bereitzustellen.

Hat hiervon jemand Erfahrung/Ahnung und kann mir dazu eventuell ein paar 
Informationen geben?

Danke!

MfG
Florian

von Florian (Gast)


Lesenswert?

Hallo nochmal!

Etwas zum Hintergrund:

Ich möchte etwas ähnliches bauen, es soll allerdings keine OBD Daten 
senden, sondern andere Daten.

Am Smartphone würde ich das ganze in Java programmieren.

Meines Erachtens brauche ich hier doch kaum TCP/IP Fähigkeiten bzw. 
Stack am µC da ich ja nur Daten senden möchte, aber keine wirklichen 
Netzwerkzugriffe mache oder?

Ich weiß dass es mit Bluetooth einfacher wäre, aber viele Smartphones 
haben selbiges leider nicht.

Per Bluetooth würde ich auch einen UART - Bluetooth Adapter setzen, ist 
auch per Java am Smartphone einfach zu machen.

Es geht auch nicht um große Übertragungsraten, es reicht locker 
9600Baud.

Ich bedanke mich schonmal für jegliche Anregungen und Informationen!

Lg
Florian

von Tobi W. (todward)


Lesenswert?

Hallo,

Florian schrieb:
> Meines Erachtens brauche ich hier doch kaum TCP/IP Fähigkeiten bzw.
> Stack am µC da ich ja nur Daten senden möchte, aber keine wirklichen
> Netzwerkzugriffe mache oder?

das kommt denke ich mal auf dein Modul an. Wenn dies den kompletten 
Stack-Kram übernimmt und dir die Daten meinetwegen per SPI/Uart/I²C/USB 
oder sonst irgenteine Schnittstelle bereit stellt, dann brauchste das 
nicht.
Sollte das Modul aber ein reines Sende/Empfangsmodul sein, wo du alles 
"zu Fuß" lösen musst, dann brauchste so ein Stack.

Mal ganz davon abgeseheen: Ist Wi-Fi nicht mit Wlan gleichzusetzen. Weil 
laut google ist das nur ein Marketing-Name für Wlan, der dem User 
irgentetwas suggerieren soll.

Florian schrieb:
> Ich weiß dass es mit Bluetooth einfacher wäre, aber viele Smartphones
> haben selbiges leider nicht.

Wieso sollten sie sowas nicht haben? Was machen denn dann die ganzen 
Chefs mit ihren Headsets? Wichtig ist doch erstmal hat DEIN Smartphone 
BT. Wenn ja kannst du ein BTM-222 modul verwenden, diese stellt dann 
direkt einen Uart auf der anderen Seite bereit und du brauchst nur die 
Daten einlesen.

Grüße
Tobi

von Frank K. (fchk)


Lesenswert?

Florian schrieb:

> Hat hiervon jemand Erfahrung/Ahnung und kann mir dazu eventuell ein paar
> Informationen geben?

Schau hier:

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2884

Da gibt es kleine WiFi Module, die über SPI angesprochen werden, und es 
gibt einen fertigen TCP/IP-Stack, der diese Module ansteuern kann. Das 
kannst Du so für Dein Projekt verwenden. Häkchen dabei: Du wirst einen 
PIC benutzen müssen, weil der TCP/IP-Stack und der WLAN-Treiber nur 
damit funktioniert und nur dafür lizensiert ist. Das sollte aber auch 
kein großes Problem sein. Du lädst Dir das MPLAB8, den C-Compiler für 
die Architektur, die Du verwenden willst (PIC18, PIC24/dsPIC, PIC32) und 
kaufst ein PICKIT3, und damit hast Du alles beisammen.

fchk

von Florian (Gast)


Lesenswert?

Hallo !

Das sieht doch gut aus, ich werde mir das mit dem PIC einmal anschauen.

Ich hätte noch etwas gefunden:

http://cgi.ebay.com/ConnectBlue-OWLAN211g-802-11-wireless-WLAN-SPI-module-/180687579091?pt=UK_BOI_Electrical_Components_Supplies_ET&hash=item2a11d1a7d3

Das hat aber auch keinen TCP/IP Stack integriert oder ?
Im Datenblatt kann ich das zumindest so nicht wirklich herauslesen.

Ich würde gerne erst versuchen ob es mit Wlan nicht doch geht, falls es 
absolut unmöglich ist, würde ich auf Bluetooth umsteigen. Aber probieren 
kann man es ja, aus Fehlern wird man klug.

Danke

Florian

von Christian R. (supachris)


Lesenswert?

Welches Smartphone hat denn bitteschön kein Bluetooth? Das war ja noch 
vor WLAN Serienausstattung.

Klar geht das über WLAN auch, ist aber um ein vielfaches aufwendiger.

von Florian (Gast)


Lesenswert?

Hallo Christian!

Ja die meisten Smartphones, bis auf ein paar Billiggeräte haben 
natürlich alle Bluetooth da hast du schon recht! Aber wie gesagt ich 
würde es hald gerne einmal per Wlan probieren!

Wie die Daten per Bluetooth mehr oder weniger übertragen werden ist 
soweit kalr, ist ja eher wie ein virtueller RS232, aber wie sieht es per 
Wlan aus?

Welches Protokoll sollte ich da verwenden? UDP oder soetwas? weil HTTP 
Protokoll bräuchte ich ja nur wenn ich eine Web Oberfläche machen 
möchte, aber ich möchte ja rein Daten übertragen.

Danke!

Florian

von Frank K. (fchk)


Lesenswert?

Florian schrieb:

> Welches Protokoll sollte ich da verwenden? UDP oder soetwas? weil HTTP
> Protokoll bräuchte ich ja nur wenn ich eine Web Oberfläche machen
> möchte, aber ich möchte ja rein Daten übertragen.

UDP: Blockorientiert, kein Schutz gegen Paketverlust (das muss die 
Anwendung abkönnen oder selber behandeln)
TCP: Stromorientiert, Schutz gegen Paketverlust

Installiere Dir die Microchip Application Libraries und schaue Dir das 
GenericTCPServer bzw GenericUDPServer Beispiel an. Das kannst Du dann 
nach Deinen Bedürfnissen erweitern.

fchk

von Florian (Gast)


Lesenswert?

Hallo!

Wäre für mich nicht die UART Funktion interessanter ? Oder kann ich die 
Daten dann nicht rückrechnen am Smartphone, da die Funktion nur dazu da 
ist, zwischen 2 gleichen Microchip Wlan Adapter + PIC zu funktionieren?

Lg
Florian

von Frank K. (fchk)


Lesenswert?

Florian schrieb:

> Wäre für mich nicht die UART Funktion interessanter ?

Nein, das ist ein Gateway zwischen dem physikalischen UART und einem 
TCP-Socket. GenericTCPServer ist das passende Beispiel.

fchk

von Florian (Gast)


Lesenswert?

Hallo Frank!

Ja ich dachte eventuell, dass ich den PIC als eigenständigen UART - WLan 
übersetzer nehme, und den Rest per AVR mache ( Da habe ich schon alles 
Programmiert )

Weißt du wie ich meine?

Lg
Florian

von Frank K. (fchk)


Lesenswert?

Florian schrieb:

> Ja ich dachte eventuell, dass ich den PIC als eigenständigen UART - WLan
> übersetzer nehme, und den Rest per AVR mache ( Da habe ich schon alles
> Programmiert )

Das ist technisch gesehen Unsinn - der PIC könnte das sicher problemlos 
mitmachen. Außerdem hat das UART-Beispiel kein Handshake.

Aber natürlich kann man das so machen.

fchk

von Florian (Gast)


Lesenswert?

Hallo und danke Frank!

Ich weiß dass es technisch wirklich schlecht ist, aber ich habe den rest 
eben schon Programmiert am AtMega644 und würde deshalb gerne das ganze 
einfach per UART anschließen.

Wie schlecht ist es denn, wenn kein Handshake dabei ist ?

Das ganze wird doch dann per TCP Protokoll gesendet richtig?

Eventuell fehlt mir das Verständnis für TCP/IP aber ist das ganze steht 
doch als Ad-Hoc Netzwerk zur Verfügung. Angenommen ich verbinde mich 
dann darauf mit einem PC, so habe ich dann die IP von meinem Gerät, wie 
kann ich nun die Daten abgreifen die per TCP kommen ? Ich meine jetzt 
zb. ob die wenn ich ein Programm wie Putty starte und das richtige 
Protokoll auswähle einfach so reinpurzeln oder wie das genau 
funktioniert?

Sorry für die etwas Laienhafte Frage  ich schäme ich 
Danke!

Lg
Florian

von Frank K. (fchk)


Lesenswert?

Florian schrieb:

> Ich weiß dass es technisch wirklich schlecht ist, aber ich habe den rest
> eben schon Programmiert am AtMega644 und würde deshalb gerne das ganze
> einfach per UART anschließen.

Du hast das sicher in C programmiert. Dann solltest Du das auch 
einigermaßen einfach portieren können.

> Wie schlecht ist es denn, wenn kein Handshake dabei ist ?

Ziemlich. Außerdem brauchst Du den UART für die initiale Konfiguration, 
wenn Du das Beispiel so 1:1 verwenden willst.

Außerdem weiß Deine Anwendung nicht, ob überhaupt eine Verbindung 
besteht. Du sendest und empfängst also praktisch blind.

> Das ganze wird doch dann per TCP Protokoll gesendet richtig?

Ja.

> Eventuell fehlt mir das Verständnis für TCP/IP aber ist das ganze steht
> doch als Ad-Hoc Netzwerk zur Verfügung. Angenommen ich verbinde mich
> dann darauf mit einem PC, so habe ich dann die IP von meinem Gerät, wie
> kann ich nun die Daten abgreifen die per TCP kommen ? Ich meine jetzt
> zb. ob die wenn ich ein Programm wie Putty starte und das richtige
> Protokoll auswähle einfach so reinpurzeln oder wie das genau
> funktioniert?

Bei TCP muss irgendeine Seite Server und irgendeine Seite Client sein. 
Der Client verbindet sich zum Server, und dann können Daten übertragen 
werden, bis die Verbindung beendet wird. Putty wäre ein möglicher Telnet 
bzw SSH Client.

Bei UDP gibts keine Verbindung. Da kannst Du einfach so senden, und wenn 
einer zuhört, dann empfängt er das auch. Wenn nicht, dann geht das Paket 
verloren.

Dann ist noch die Frage der IP-Adressen. Wie werden die zugeordnet? Wie 
finden sich die beiden Teilnehmer? Da weiß ich nicht, was auf Deinem 
Smartphone konfigurationstechnisch geht.

Möglicherweise wirst Du beides brauchen - UDP Broadcasts zum Finden des 
Gerätes und TCP für die eigentliche Datenübertragung.

Da Du ohnehin auf dem PIC entwickeln werden wirst (die Beispiele sind 
Beispiele, die musst Du noch an Deine eigenen Wünsche anpassen), und 
zwar nicht zu knapp, kannst Du auch gleich das gesamte Projekt dadrauf 
machen.

fchk

von Florian (Gast)


Lesenswert?

Hallo!

ja vermutlich wäre es einfacher alles auf dem PIC zu machen. Kann ich 
mir ja noch überlegen.

Ich brauche nicht zu wissen ob eine Verbindung besteht, und empfangen 
brauche ich auch nichts, rein theoretisch reicht es, einfach die ganze 
Zeit die Daten rauszusenden, wenn jemand "zuhört" schön, wenn nicht, 
auch egal.

Also am liebsten wäre mit, dass die PIC/Wlan Kombi als Server dient. Ich 
schalte das Smartphone ein, suche nach Wlan, finde es und verbinde mich, 
IP Adressenvergabe wäre natürlich am schönsen per DHCP, damit sollte der 
Default Gateway auch schon feststehen ( PIC/Wlan Kombi )

So bräuchte ich nicht zuvor UDP verwenden und danach erst auf TCP 
umsteigen oder ?

Lg
Florian

von Frank K. (fchk)


Lesenswert?

Florian schrieb:

> Also am liebsten wäre mit, dass die PIC/Wlan Kombi als Server dient. Ich
> schalte das Smartphone ein, suche nach Wlan, finde es und verbinde mich,
> IP Adressenvergabe wäre natürlich am schönsen per DHCP, damit sollte der
> Default Gateway auch schon feststehen ( PIC/Wlan Kombi )

Ich glaube, einen DHCP-Server und einen DNS-Server in dem Paket gesehen 
zu haben. Ich habe ihn aber noch nicht ausprobiert. Ich denke, Du wirst 
ihn anpassen müssen.

fchk

von Florian (Gast)


Lesenswert?

Hallo Frank!

Ok dann verstehe ich das soweit.

Eine Frage bleibt da noch offen, undzwar, wenn das Servermäßig alles 
klappt und ich eine Verbindung zum PC habe, wie kann ich die Daten dann 
bekommen ?

Lg
Manuel

von Frank K. (fchk)


Lesenswert?

Florian schrieb:

> Eine Frage bleibt da noch offen, undzwar, wenn das Servermäßig alles
> klappt und ich eine Verbindung zum PC habe, wie kann ich die Daten dann
> bekommen ?

Winsock2 heißt das Stichwort bei der PC-Programmierung.

fchk

von linuxguy (Gast)


Lesenswert?

Also, WLAN ist nicht so einfach wie Bluetooth, weil Bluetooth für Ad-hoc 
Kommunikation ausgelegt ist, während WLAN normalerweise im 
Infrastructure-mode (Accesspoint/Client Modus) gefahren wird.
Es gibt zwar einen Ad-hoc Modus, der wird aber extrem selten benutzt. 
Das Einrichten ist am PC schon eine Frickelei, ich bin skeptisch ob das 
mit allen Handys geht.
Wenn nicht braucht man also entweder einen Accesspoint in der Nähe über 
den beide kommunizieren können, oder Telefon oder Wifi-Modul müssen 
Accesspoint spielen. Und da geht der Spass dann weiter: Erstmal prüfen 
welche Handys das alle können, bzw. ob die Module das können.

von Florian (Gast)


Lesenswert?

Hallo!

Ja ich habe auch schon meine Probleme mit Ad-Hoc verbindungen gehabt.
Ideal wäre natürlich wenn das Wlan Modul als Access Point arbeitet, und 
ich per Handy wie auf einen normalen Wlan AP zugreifen kann.

Ob und wie das geht muss ich mir noch genauer ansehen.

Danke
Lg
Florian

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.