Go Down

Topic: Feeling interest for a WiFi shield (Read 77695 times) previous topic - next topic


It still doesn't work with my Zyxel ap (G1000v2).


May 31, 2009, 03:04 am Last Edit: May 31, 2009, 03:12 am by John_Ryan Reason: 1
Have you tried disconnecting every device from the network and then seeing if the shield will connect to the G1000?

You mentioned it works fine on the NWA-3500, are there any obvious differences in environment or operating specifications of the G1000?


There was a firmware update for the G1000 in November 2007. Here's the page, the update is available at the bottom.


You could try that if you haven't already.


Awesome  - Can't wait to try out the client example.


Is this the best place to trap alternative page requests in webserver.c

Code: [Select]

     // determine the requested resource
     // in this case, we check if the request was for the '/' root page
     // AKA index.html
     if(s->inputbuf[0] != ISO_slash) {
           // request for unknown webpage, close and exit

For example. I'd like to send this request to the server

So where the code above is checking for index.html, I want it to interpret the URL as a command, like slave_02-turn_led_6_on.html would tell i2c slave #2 to turn LED 6 on etc etc


I'm trying to setup the client server example.
I found the link below for converting your twitter string to base 64.  

In the setup we are supposed to Delete the 'applet' directory.  Can anyone tell me what I'm supposed to delete here?  All I have in the example folder is webclient.c or webclient.pde, which is the example.  I tried deleting .c , but of course  received errors.  Also when I compile the sketch I notice it is 16k! Probably because I did not delete the applet.
What do I delete?




Yes, that would be a good place to check for alternate resource requests. The check you mentioned looks for the '/'. I think there is another check for a space character following the slash which indicates that the requested resource was index.html. You could also use that check to determine resource type. For example, the LED turn on resource you mentioned.



You might not have the applet directory if it is the first time you are building the sketch. It gets generated when you upload the sketch to the Arduino the first time. You will also have to change the #defines in apps-conf.h file.

We have seen ~10k for the webserver and webclient application on the 168 using the arduino-0013 on windows and the Linux version. What is your setup?



Does inputbuf (in webserver.c) store the entire URL request? eg. "slave_02-turn_led_6_on.html"

If so, how do I get the contents of inputbuf back to the main WebServer sketch so I can handle the request in the same loop as WiFi.run();  

I'd rather not start "hacking" webserver.c - if you know what I mean.


I'm using a Mac with a Diecimila and this when I get after compiling the sketch.

Binary sketch size: 16352 bytes (of a 14336 byte maximum)


Yes, inputbuf should have the resource string in it. I would recommend doing all your data processing in the handle_connection() function in webserver.c. That would be the cleanest way. Getting the data into the sketch might be a little messy. To do that,

Add the following line to WiShield.h,
Code: [Select]
#include "uip.h"
#include "webserver.h"

In the sketch,
Code: [Select]

void loop()
   struct webserver_state *s = &(uip_conn->appstate);
   unsigned char i;


   for (i = 0; i < 10; i++) {

You might also want to change the length of inputbuf in webserver.h to match your requirement.


That does not look good. Are you using the sample sketches in the WiShield library? Have you modified them to include some of your code? Which version of the arduino IDE (0013, 0014, 0015) are you using?

You cannot have webclient and webserver at the same time. You will have to select one or the other by uncommenting the appropriate define in apps-conf.h



Is it possible to switch between client/server mode in a sketch?

It would be a major draw-back to only be able to function as server or client in a single sketch. One of the points of receiving commands via URL is to act out commands and send a response to another server if it's needed. That would require both modes, but not at the same time.



I made the changes you suggested and once I accessed the web server URL, the serial monitor started displaying lines of nonsense over and over, and - the web server stopped responding.

The characters it output (shown below) are not complete, the forum software appears to be re-translating it.

I've removed the changes you suggested to get the server working again.



Jun 02, 2009, 09:53 am Last Edit: Jun 02, 2009, 10:46 pm by John_Ryan Reason: 1
I've just received an update from Brad (thank you) which mentions that client/server modes can't be run together, or even switched between.  

That's unfortunate for all the work that's been put into getting the project this far, so I really hope it's just a temporary drawback?

Every application I have in mind for the shield needs the ability to "switch" between server/client modes. It's important for me that if an action is being requested via a URL string, then hardware activity is fed-back to another server, especially in the event the request fails to execute... for one reason or another.

So I'm wondering (Brad/Ben) if this is an issue that can or will be resolved, or are the shields capabilities at the limit?

Can this problem be overcome by adding a dedicated 328 to the shield (next time you do a production run) just to handle the stack and libraries, and then have the shield connect to A4 and A5 of the board which handles user-specific client/server applications over i2c?

Adding a dedicated micro to the shield for a few extra dollars seems like a cheap solution (to me) for the problems it would solve.

What are your thoughts?


Have you guys seen this?


Sounds like you might have 60-70 buyers wanting WiFi modules for Arduino to "tweet" at the push of a button = )



I hadn't upgraded in a while.  I was using version 12 of Arduino.
Version 15 did the trick.

Binary sketch size: 11114 bytes (of a 14336 byte maximum)

Go Up