Ich programmiere in C (aber nicht Arduino). Hab mir einmal eine Aquarien-Steuerung gebastelt da werde ich es mal zum testen einbauen. Zeit abrufen, Daten loggen usw.. da kann man alle Funktionen ganz gut testen![]()
Ich programmiere in C (aber nicht Arduino). Hab mir einmal eine Aquarien-Steuerung gebastelt da werde ich es mal zum testen einbauen. Zeit abrufen, Daten loggen usw.. da kann man alle Funktionen ganz gut testen![]()
Hallo Christian!
Zu deiner frage Arduino hab das hier gefunden: http://sourceforge.net/projects/arduinowifly/files/
Eine Fertige lib. Kannst ja mal durchsehen was man da alles machen kann.
Ich selbst hab mir einen Ringbuffer besorgt und das Modul mal angesteuert. Klappt ganz gut. Jetzt muss ich mal einen Levelshifter bauen und dann auf meinen Mega2560 hängen.
mfg daniel
Hi Christian,
ich habe mir auch so ein Wlan Modul zugelegt und dank deiner ausführlichen Beschreibungen es auch erfolgreich ins Wlan gebracht.
Mit µC Programmierung kenn ich mich noch so einigermaßen aus, aber auf dem PC wirds schon sehr eng. Hab mit ach und krach ein Programm in VB geschrieben, das Daten per Bluetooth raus schickt.
Mich würde brennend dein Programm interressieren, welches du im ersten Beitrag erwähnt hast, mit dem du deine Daten überträgst. Gibt es ne Chance das du das Projekt zur Verfügung stellst ??
Viele Grüße
Philipp
Kann ich verstehen. War n geiles Spiel
Danke dir aber schonmal für die Rückmeldung!![]()
Hallo Philipp,
es gibt prinzipiell 2 Möglichkeiten
1. über den webbrowser vom PC. Hat den Nachteil, dass man die Daten am PC nicht leicht weiterverarbeiten kann und das Programm hängt gelegentlich, wenn aus irgendwelchen Gründung die Verbindung abbricht. Außerdem braucht man ein längeres Programm im Microcontroller.
2. Besser finde ich es deshalb mit vb.net ein Programm zuschreiben das per UDP-Protokoll die Daten austauscht. Da steht die Verbindung immer. Beispielprogramm (ginge sicher auch anders):
WindowsForm Anwendung erstellen, einen Button, 2 Textfelder und einen Timer hinzufügen und folgenden Quellcode einfügen:
Die Einstellungen vom WiFly sind:Code:Imports System.Runtime.InteropServices.MarshalImports System.Drawing, System.Drawing.Imaging Imports System.Net, System.IO Imports System.Net.Sockets Public Class Form1 Inherits System.Windows.Forms.Form Dim sendbef As Integer, bytes(200) As Byte, udpclient1 As UdpClient, IPPort1 As IPEndPoint Public Sub New() InitializeComponent() udpclient1 = New System.Net.Sockets.UdpClient(23) IPPort1 = New IPEndPoint(IPAddress.Parse("192.168.1.25"), 80) Timer1.Interval = 100 : Timer1.Enabled = True End Sub Private Sub Timer1_Tick1(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick Do While udpclient1.Available > 0 Dim receiveBytes As [Byte]() = udpclient1.Receive(IPPort1) textbox1.text = System.Text.Encoding.UTF8.GetString(receiveBytes) Loop If sendbef = 1 Then sendbef = 0 bytes = System.Text.Encoding.ASCII.GetBytes(TextBox2.Text + Chr(13)) udpclient1.Send(bytes, bytes.Length, IPPort1) End If End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click sendbef = 1 End Sub Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing udpclient1.Close() Timer1.Enabled = False End End Sub End Class
<2.32> get ip
IF=UP
DHCP=OFF
IP=192.168.1.25:80
NM=255.255.255.0
GW=192.168.1.1
HOST=IPRechner:23
PROTO=UDP,TCP,
MTU=1524
FLAGS=0x7
TCPMODE=0x0
BACKUP=0.0.0.0
Im Mikrocontroller zum senden z.B.
Print Hex(sharp2); 'z.B. um werte als Hexadezimalzahlen zu übertragen
Print Message; 'z.B. string übertragen
Print Chr(13); 'gesendet wird erst bei Abschluss mit cr
zum empfangen z.B.
If Ischarwaiting() = 1 Then Inputhex Kurssoll 'falls Wert als HEX übertragen
Sollte so klappen.
Viele Grüße
Christian
Geändert von Christian H (26.05.2013 um 11:44 Uhr)
Hi Christian,
viieeeelen vielen Dank für deinen Code.
Ich konnte ihn halb erfolgreich bei mir umsetzen.
Mit deinem Code habe ich es geschafft eine Zeichenkette an den µC zu übertragen. Die umgekehrte Richtung funktioniert nur leider nicht. (Ich habe per RS232 Verbindung kontrolliert das alles funktionieren müsste)
Mein Problem ist, ich kann nicht mal eine Frage oder so stellen, da ich deinen Code zwar umsetzen konnte, aber leider nur seeehr wenig daran verstehe.
Du hast nicht zufällig ne Glaskugel, mit der du mal gucken kannst, was da nicht läuft ?
Oder vlt nen heißen Tipp, was ich mal kontrollieren könnte ??
Viele Grüße
Philipp
Hallo flipp86,
IP-Adressen und Port auf beiden Seiten richtig ?
im Microcontroller das Chr(13) zu Schluß (oder alternativ Print ohne ";"
baud-Rate wird wohl für Controler und WiFly gleich sein, da es ja in eine Richtung funktioniert.
Versuch mal textbox1.text = textbox1.text + System.Text.Encoding.UTF8.GetString(receiveBytes)
vielleicht überschreibt er ja einen Text gleich wieder mit nichts
sollte eigentlich klappen. Hast Du das Programm TeraTerm Pro ? Funktioniert´s denn damit?
Christian
ganz und gar nicht sicher
könnte auch gut damit zusammenhängen.
udpclient1 = New System.Net.Sockets.UdpClient(23)
hab in der Zeile zwei verschiedene Werte angegeben und beide male klappte das senden und nicht das empfangen. Insofern wird wohl mein Hoste Gate falsch sein.
Mal sehen wo ich das rausfinde. Programmier über einen Mac wo Windows virtuell drauf läuft
Lesezeichen