Go Down

Topic: Problema con Wifi Shield TinySine (Read 472 times) previous topic - next topic

Hola a todos,

Tengo mi Arduino UNO R3 + WIFI SHIELD TinySine, he configurado el shield wifi con los comandos de consola siguiendo los pasos del manual y perfecto, ya me responde a los pings.

El problema es que no consigo utilizar el wifi shield desde el IDE, si pongo el cargo el ejemplo WifiWebClient de wifi.h me salta el error "WiFi shield not present", igual con la librería Wifly y no he encontrado ningún ejemplo con este shield TinySine en concreto.

Este shield tiene 3 interruptores:

  • MCU / PC

  • UART / Soft Serial

  • Normal / AP


No me queda claro, la función de estos interruptores por mucho que investigo, he probado todas las combinaciones y el resultado es el mismo.

¿Sabeis la función de estos interruptores o la forma de utilizar este shield desde el IDE para hacer mi script?

Saludos.

maxid

El manual es claro, si usas para enviar los comando el serial del arduino usas las posiciones de las llaves:
S1: Normal
S2: MCU
S3: UART

sigue el manual y has todo lo que dice primero y prebas desde arduino despues/
El que pregunta aprende, el que responde aprende a responder.

#2
Aug 12, 2014, 06:10 pm Last Edit: Aug 12, 2014, 06:12 pm by salvatron Reason: 1
Tras configurar correctamente mi wifi desde el Monitor Serial con los comandos del manual, ya tiene IP, responde a los pings...etc.

He puesto los interruptores como indicas:
S1: Normal
S2: MCU
S3: UART

Cargo cualquier ejemplo en el IDE y al cargar me da este error:

avrdude: stk500_getsync(): not in sync: resp=0x73

Este error siempre me lo da al poner el S2 a MCU, si lo pongo a PC ya carga bien.

Pero si cargo el ejemplo WifiWebClient de wifi.h me pone WiFi shield not present, y si cargo el ejemplo websocketclient de WiflyHQ.h salen caracteres raros sin sentido en el monitor serial.

No encuentro información pero ¿no podría ser que hay que poner algún jumper en el Arduino?


carmeloco

¿Caracteres extraños en el terminal serie? Tiene toda la pinta a que la velocidad del serial y la de la consola serie son distintas.

La librería WiflyHQ debería funcionar con cualquier shield? y wifi.h tambien? o son sólo para ciertos shields wifis?

#5
Aug 12, 2014, 06:56 pm Last Edit: Aug 12, 2014, 07:15 pm by salvatron Reason: 1
Por fín lo conseguí!  XD

He puesto los swich en NORMAL/PC/Soft Serial.

He encontrado el siguiente ejemplo de WiflyHQ, parece ser que en este shield el truco es poner SoftwareSerial wifiSerial(2,3); en lugar de SoftwareSerial wifiSerial(8,9);

Aparte he tenido que utilizar la versión 1.0.2 del IDE porque la última da un error, que parece ser un bug con los wifi shield segun he leido en foros.

Code: [Select]
/*
* WiFlyHQ Example httpclient.ino
*
* This sketch implements a simple Web client that connects to a
* web server, sends a GET, and then sends the result to the
* Serial monitor.
*
* This sketch is released to the public domain.
*
*/

#include <WiFlyHQ.h>

#include <SoftwareSerial.h>
SoftwareSerial wifiSerial(2,3);


WiFly wifly;

/* Change these to match your WiFi network */
const char mySSID[] = "miwifi";
const char myPassword[] = "mipassword";

const char site[] = "www.google.es";

void terminal();

void setup()
{
   char buf[32];

   Serial.begin(9600);
   Serial.println("Starting");
   Serial.print("Free memory: ");
   Serial.println(wifly.getFreeMemory(),DEC);

   wifiSerial.begin(9600);
   if (!wifly.begin(&wifiSerial, &Serial)) {
       Serial.println("Failed to start wifly");
terminal();
   }
   /* Join wifi network if not already associated */
   if (!wifly.isAssociated()) {
/* Setup the WiFly to connect to a wifi network */
Serial.println("Joining network");
wifly.setSSID(mySSID);
wifly.setPassphrase(myPassword);
wifly.enableDHCP();

if (wifly.join()) {
   Serial.println("Joined wifi network");
} else {
   Serial.println("Failed to join wifi network");
   terminal();
}
   } else {
       Serial.println("Already joined network");
   }
   Serial.print("MAC: ");
   Serial.println(wifly.getMAC(buf, sizeof(buf)));
   Serial.print("IP: ");
   Serial.println(wifly.getIP(buf, sizeof(buf)));
   Serial.print("Netmask: ");
   Serial.println(wifly.getNetmask(buf, sizeof(buf)));
   Serial.print("Gateway: ");
   Serial.println(wifly.getGateway(buf, sizeof(buf)));
   wifly.setDeviceID("Wifly-WebClient");
   Serial.print("DeviceID: ");
   Serial.println(wifly.getDeviceID(buf, sizeof(buf)));
   if (wifly.isConnected()) {
       Serial.println("Old connection active. Closing");
wifly.close();
   }
   if (wifly.open(site, 80)) {
       Serial.print("Connected to ");
Serial.println(site);
/* Send the request */
wifly.println("GET / HTTP/1.0");
wifly.println();
   } else {
       Serial.println("Failed to connect");
   }
}
void loop()
{
   if (wifly.available() > 0) {
char ch = wifly.read();
Serial.write(ch);
if (ch == '\n') {
   /* add a carriage return */
   Serial.write('\r');
}
   }
   if (Serial.available() > 0) {
wifly.write(Serial.read());
   }
}
/* Connect the WiFly serial to the serial monitor. */
void terminal()
{
   while (1) {
if (wifly.available() > 0) {
   Serial.write(wifly.read());
}
if (Serial.available() > 0) {
   wifly.write(Serial.read());
}
   }
}



maxid

Puede ser o no. si usas el serial para el wifi debes sacarlo para subir el sketch, porque estas lineas las usa para subir el programa.
El que pregunta aprende, el que responde aprende a responder.

Go Up