Arduino Uno met Wifi shield vs Delphi programma

Arduino specifieke Software
Berichten: 68
Geregistreerd: 10 Apr 2013, 11:51

Arduino Uno met Wifi shield vs Delphi programma

Berichtdoor Enschot » 10 Apr 2013, 12:00

Geacht forum,

Ik heb enige dagen geleden een arduino wifi shield gekocht voor mijn arduino Uno.
Nu wil ik dit gebruiken samen met een zelf geschreven delphi programma.
Ik ben op zoek geweest naar voorbeelden om dit voor elkaar te krijgen maar kan op het internet niets vinden.
Ik weet wel hoe ik kan communiceren via html en mijn arduino uno.
Wie kan mij helpen aan een voorbeeldje om mijn arduino uno via wifi te besturen met mijn delphi programma?

grtz
frans

Advertisement

Gebruikers-avatar
Berichten: 700
Geregistreerd: 05 Mrt 2012, 21:56
Woonplaats: Appingedam

Re: Arduino Uno met Wifi shield vs Delphi programma

Berichtdoor pjh » 11 Apr 2013, 07:42

Ik heb daar geen ervaring mee...

Berichten: 68
Geregistreerd: 10 Apr 2013, 11:51

Re: Arduino Uno met Wifi shield vs Delphi programma

Berichtdoor Enschot » 11 Apr 2013, 19:24

Ook een voorbeeld met een andere hoger programmeertaal zoals VB of C++ is welkom.
Dan kan ik het verder wel vertalen naar Delphi.

grtz frans

Berichten: 27
Geregistreerd: 23 Feb 2013, 12:07

Re: Arduino Uno met Wifi shield vs Delphi programma

Berichtdoor walker » 11 Apr 2013, 21:42

Hoi Frans,

Zelf heb ik geen ervaring met Delphi. Als je op de Arduino een webserver hebt draaien dan heb je misschien hier iets aan: http://www.delphisources.ru/pages/faq/m ... B0189.html.

Berichten: 68
Geregistreerd: 10 Apr 2013, 11:51

Re: Arduino Uno met Wifi shield vs Delphi programma

Berichtdoor Enschot » 14 Apr 2013, 10:46

Hallo,

Langzaam maar zeker kom ik tot een oplossing.
Ik heb in delphi een werkende server geschreven.
Maar in mijn arduino programma zit blijkbaar nog een fout, of ik snap de werking niet.

#include <SPI.h>
#include <WiFi.h>

char ssid[] = "Ziggo446F8_EXT"; // your network SSID (name)
char pass[] = "KCk7KuczEW76"; // your network password

int status = WL_IDLE_STATUS;
IPAddress server(192,168,178,11); // Google

// Initialize the client library
WiFiClient client;

void setup() {
Serial.begin(9600);
Serial.println("Attempting to connect to WPA network...");
Serial.print("SSID: ");
Serial.println(ssid);

status = WiFi.begin(ssid, pass);
if ( status != WL_CONNECTED) {
Serial.println("Couldn't get a wifi connection");
// don't do anything else:
while(true);
}
else {
Serial.println("Connected to wifi");
Serial.println("\nStarting connection...");
// if you get a connection, report back via serial:
if (client.connect(server, 51000)) {
Serial.println("connected");
// Make a HTTP request:
client.println("First line to server");
client.println();
}
}
}

void loop() {
client.println("test");
}

De regel "First line to server" wordt door mij delphi server netjes ontvangen, en vervolgens verwacht ik een oneindig aantal regels met "test" te zien.
Dit gebeurt echter niet.
Wat doe ik fout?

grtz frans

Berichten: 68
Geregistreerd: 10 Apr 2013, 11:51

Re: Arduino Uno met Wifi shield vs Delphi programma

Berichtdoor Enschot » 14 Apr 2013, 12:35

Om het verhaal compleet te maken heb ik hieronder mijn delphi server programma geplaatst.

unit TCPServerUnit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Sockets;

type
TForm1 = class(TForm)
Server: TTcpServer;
Log: TMemo;
procedure FormCreate(Sender: TObject);
procedure ServerAccept(Sender: TObject; ClientSocket: TCustomIpClient);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
Server.Active := false;
Server.LocalHost := '192.168.178.11';
Server.LocalPort := '51000';
Server.Active := true;
if Server.Active then
Form1.Caption := 'Server Connected';
end;

procedure TForm1.ServerAccept(Sender: TObject;
ClientSocket: TCustomIpClient);
var
s: string;
begin
log.Lines.Append( ClientSocket.LookupHostName( ClientSocket.RemoteHost ) );
s := ClientSocket.ReceiveLn;
while s <> '' do begin
log.Lines.Append( s );
s := ClientSocket.ReceiveLn;
end;
end;

end.

Hopelijk kan iemand mij helpen zodat ik eindelijk kan beginnen met mijn arduino project.

grtz frans

Berichten: 27
Geregistreerd: 23 Feb 2013, 12:07

Re: Arduino Uno met Wifi shield vs Delphi programma

Berichtdoor walker » 14 Apr 2013, 14:25

Hoi Frans,

Ik heb geen Delphi daarom heb ik het Delphi programma met Lazarus proberen te compileren, maar daar mis ik de class TTcpServer. Met WiFi bij de Arduino heb ik ook geen ervaring. Maar wil je toch proberen te helpen.

In je Arduino code zou je kunnen proberen om, in de setup functie, na client.println("First line to server"); nog bijv. client.println("Second line to server"); toe te voegen en ook nog in de loop functie een delay toe te voegen bijv. eerst delay(100); dit om de WiFi wat tijd te geven om de data te af te handelen.
Als de "Second line to server" niet aan komt bij de server is het waarschijnlijk een handshake probleem.

Berichten: 85
Geregistreerd: 10 Jan 2013, 14:51
Woonplaats: Waddinxveen

Re: Arduino Uno met Wifi shield vs Delphi programma

Berichtdoor Karel » 14 Apr 2013, 15:02

Hier nog iemand zonder Wifi ervaring/kennis. Als je een bestand opent krijg je een handle retour die je vervolgens bij lees- en/of schrijfacties gebruikt. Is hier niet net zoiets aan de hand? Moet je bij iedere doorgang door de loop een client.connect doen, of kan je in volgende iteraties op een of andere manier refereren naar een bestaande verbinding en daar data naartoe sturen?
If you think education is expensive, try ignorance! (Derek Bok)

Berichten: 68
Geregistreerd: 10 Apr 2013, 11:51

Re: Arduino Uno met Wifi shield vs Delphi programma

Berichtdoor Enschot » 14 Apr 2013, 20:47

Hoi Walker,

ik heb de tweede test toegevoegd, en ook een delay(100).
Het resultaat is dat de tweede lijn ook altijd netjes wordt weergegeven.
De delay(100) geeft geen verbetering.
Soms werkt het wel en zie ik ook test in een oneindige loop langskomen, maar dat is slechts een op de 50 keer.
Misschien heeft het toch iets met mijn server te maken.

grtz frans

Berichten: 68
Geregistreerd: 10 Apr 2013, 11:51

Re: Arduino Uno met Wifi shield vs Delphi programma

Berichtdoor Enschot » 15 Apr 2013, 08:14

Hallo allemaal,

Er was inderdaad iets mis met mijn delphi sever.
Ik heb nu gebruik gemaakt van de gratis te downloaden socket workbench, en gebruik gemaakt van port 8888.
Hieronder het arduino programma wat ik hiervoor heb gebruikt.
Het werkt nu zoals ik het had bedacht.

#include <SPI.h>
#include <WiFi.h>

char ssid[] = "Ziggo446F8_EXT"; // your network SSID (name)
char pass[] = "KCk7KuczEW76"; // your network password

int status = WL_IDLE_STATUS;
IPAddress server(192,168,178,11); // Google

// Initialize the client library
WiFiClient client;

void setup() {
Serial.begin(9600);
Serial.println("Attempting to connect to WPA network...");
Serial.print("SSID: ");
Serial.println(ssid);

status = WiFi.begin(ssid, pass);
if ( status != WL_CONNECTED) {
Serial.println("Couldn't get a wifi connection");
// don't do anything else:
while(true);
}
else {
Serial.println("Connected to wifi");
Serial.println("\nStarting connection...");
// if you get a connection, report back via serial:
if (client.connect(server, 8888)) {
Serial.println("connected");
// Make a HTTP request:
client.println("First line to server");
client.println("Second line to server");
client.println();
}
}
}

void loop(){
probeer();
}

void probeer() {
delay(1000);
client.println("test");
}

Er is echter nog een ding wat ik niet begrijp.
Als ik de USB kabel uit mijn UNO trek, en de uno aansluit op een losse 9V voeding dan werkt het niet meer.
Dus blijkbaar maak ik toch op een of ander manier gebruik van deze USB connectie.
Ik ga er eigenlijk van uit dat ik via wifi verbinding maak via port 8888 met de socket workbench.
Wie kan mij dit uitleggen?

Sorry, het komt misschien allemaal een beetje stuntelig over, maar het is mijn eerste arduino programmatje. :?

grtz frans

Volgende

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: uoqumcva en 28 gasten