Show Posts
Pages: [1]
1  Using Arduino / Networking, Protocols, and Devices / Wifi Sparkfun RN-XV problem on: March 28, 2013, 06:09:43 am
Hi,

I come here to explain my problem using the wifi shield from Sparkfun : Roving Network RN-XV.

So I have the following set : arduino uno + wifi prototype shield + Wifi Roving Network RN-XV.

After lot of tests, I found that the library provided by SParkfun doesn't work for wifi deconnection and reconnection automatically. So I used the following librairy:  https://github.com/harlequin-tech/WiFlyHQ.

I use this system to post data on a personnal webserver. Everything works great during 15 to 45 min, once this time is spent the program blocks. In order to make it works again, I have to remove the power supply from the arduino (a simple push on the reset button doesn't work). That's why, I think it needs to empty the capacities. It is not a problem of memory leak on the Arduino, I already check that, maybe a problem of memory leak on the Wifi chip.

Below is my code :
Code:
#include <SPI.h>
#include <WiFlyHQ.h>

#include "Credentials.h" // Contains connection informations (ssid, passphrase)

WiFly wifly;

/************ variables ******************/
unsigned long timet  = 0 ;
unsigned long time;
unsigned long period;
const char *data = "data to send to the webserver";


void setup() {
    Serial.begin(9600);
 

    while (!Serial) {
        // wait for serial port to connect
    }

    wifly.begin(&Serial, NULL);   
}

void loop()
{
    time = millis(); //Returns the number of milliseconds since the Arduino
    //board began running the current program. This number will overflow
    //(go back to zero), after approximately 50 days
    period = time - timet;

    if (period>10000){

        // if the wifi is associated we try to send data
        if (wifly.join(ssid, passphrase) && !wifly.isConnected())
        {

            // If the connection to the server is Ok then we send the data
            if(wifly.open("data.egreen.fr", 80))
            {

                //Send data to the server
                wifly.println( F("POST http://data.egreen.fr/energy/create HTTP/1.1") );
                wifly.println( F("Host: data.egreen.fr") );
                wifly.println( F("User-Agent: Arduino/1.0"));
                wifly.println( F("Content-Type: application/x-www-form-urlencoded") );
                //wifly.println( F("Connection: close") );
                wifly.print( F("Content-Length: "));
                wifly.println(strlen(data));
                wifly.println();
                wifly.println(data);

                // Close the connection and desassociate the wifi
                wifly.close();
                wifly.leave();

                // reset period, set timet to the current millis() and reset wh   
                period = 0;
                timet=millis();
            }
        }
    }
}

/**
 * Return quantity of free ram
 */
int freeRam() {
    extern int __heap_start, *__brkval;
    int v;
    return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval);
}


Any help would be apreciate  smiley

THanks by advance,

Pezioz
2  International / Français / Re: Problème récupération téléinfo on: December 11, 2012, 08:33:10 am
Juste une petite question, qu'est ce que vous appelé une résistance de butée? C'est une résistance mise en série ou parallèle du potentiomètre?

Toujours un grand merci à vous tous!
3  International / Français / Re: Problème récupération téléinfo on: December 11, 2012, 08:18:15 am
Rebonjour à tous,

Je vous joins avec ce message le schema éléctrique mis à jour.

Pour essayer avec différentes valeurs de résistance je ferais ça ce soir.

En tout cas merci beaucoup de votre aide à tous!!

Pezioz
4  International / Français / Re: Problème récupération téléinfo on: December 11, 2012, 03:38:53 am
Bonjour à tous,

Alors je reviens vers vous pour vous epliquer ce que j'ai fais hier soir.

Comme me l'a suggéré skywodd j'ai un peu modifié mon code pour prendre en compte les octets uniquement lorsque ceux ci sont disponible (c'est vrai ca sonne mieux avec available smiley-wink ):

Code:
while(cptSerial.available() < 1); // Bloque le programme en attendant un octet
Serial.write((byte) cptSerial.read() & 0x7F);

Et j'ai modifié mon schema elec en rajoutant une diode inverse en entrée de l'optocoupleur comme l'a suggéré al1fch. J'ai aussi bien verifié le branchement de l'optocoupleur en sortie.

Alors avec tout ça que se passe-t-il? => Rien smiley-sad ... je ne récupère aucun octets.
Ensuite j'ai essayé de modifier le UCSROC mais le problème est que je ne sais pas trop ce que je fais.

De plus je suis sur que ma teleinfo fonctionne, car avant j'avais un capteur commercial et il me récupérait bien ma teleinfo. Donc c'est forcement un problème soft ou hard. Pour le soft je me dis quand même que le programme est pas bien compliqué, et que ce même code fonctionne chez d'autres personnes (vu sur internet). Et le hard j'ai fais toutes les modifs que vous m'avez preconisées.

Aidez moi svp, là je sèche vraiment!

En ésperant qu'une idée de génie me traversera l'esprit aujourd'hui (laissez moi un peu révé smiley-wink ).

Bonne journée à vous en tout cas et encore merci de l'aide que vous m'apportez smiley

Pezioz
5  International / Français / Re: Problème récupération téléinfo on: December 10, 2012, 07:50:13 am
Rebonjour,

@fdufnews: Oui ma sortie téléinfo est activée sur mon compteur. L'optocoupleur utilisé est ls PC817 (datasheet : http://www.google.fr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CDwQFjAB&url=http%3A%2F%2Fwww.datasheetcatalog.org%2Fdatasheet%2FSharp%2FmXruvuu.pdf&ei=Z9fFULfXCK6P4gTMp4GgBQ&usg=AFQjCNGsD85IT74dLn8jahRAXGyqR7IqTg)

@al1fch: Pour le sens de branchement de l'optocoupleur je pourrais te le dire ce soir. Le modèle d'optocoupleur est celui que j'ai cité juste au dessus. Et pour le diode inverse je savais pas. En attendant que j'en commande un je peux continuer sans?

Merci beaucoup de votre aide ... ca fais du bien de se sentir moins seul smiley

Je vous tiens au jus ce soir!

6  International / Français / Re: Problème récupération téléinfo on: December 10, 2012, 04:06:33 am
Bonjour,

@barbudor: Alors non je n'ai pas les moyens de voir mon signal sur un oscilloscope. smiley-sad Et en ce qui concerne le terminal série, oui je l'ai bien réglé en 1200 bauds.

@skywodd: J'ai essayé avec cptSerial.available() < 1, mais ça me donne le même résultat.

Le schema de mon installation est attaché à mon post.

Donc comme vous pouvez le voir, par rapport à ce que j'avais dit, j'ai rajouter une résistance de tirage entre l'optocoupleur et a carte arduino.

C'est à devenir dingue, je n'arrive pas à récupérer ne trame cohérente.

Je vous remercie de votre aide.... j'ai peur de devenir chauve à force de m'arracher les cheveu smiley-wink
7  International / Français / Problème récupération téléinfo on: December 07, 2012, 11:47:12 am
Bonjour,

Je suis un petit bricoleur dans l'âme, et depuis quelques temps j'étais tenté par découvrir l'Arduino. Et je me suis donc dis autant faire un module qui me serait utile... ce module est la récupération de mes données de consommations électriques via Arduino.

Voila qui pose les bases smiley

Nous en arrivons maintenant au coeur du problème: la trame récupérée est illisible.

Voila le code :
Code:
#include <SoftwareSerial.h>

SoftwareSerial cptSerial(2,3);

void setup() {
 cptSerial.begin(1200);
  Serial.begin(1200);

  Serial.println("Go!!!!");
}
void loop()
{
  Serial.write((byte) cptSerial.read() & 0x7F);
}

Alors j'ai essayé avec et sans optocoupleur (avec une résistance de 330ohm entre la sortie tic et l'optocoupleur) et j'ai même essayé sur un autre ordinateur (le mien étant sous Linux avec Arduino 1.0.1 et l'autre sous windows avec Arduino 1.0.2). Une autre chose bizarre est qu'avec les 2 ordinateurs, je n'ai pas le même résultats (les caractères affiché ne sont pas les mêmes).

J'avoue que la je ne vois pas d'où ça vient.... donc si vous avez des idées ce serait avec grand plaisir que je les écouterai (enfin lirai) smiley

Pezioz
Pages: [1]