Page 1 sur 1

arduino uno et MYSQL

Message non luPosté: Mer 29 Jan 2014 15:35
de gaelbaert
Bonjours a tous,

Je possède un arduino Uno ainsi que un shield ethernet, mon but serait de convertir un valeur analogique reçu et la transmettre sur une base de donnée MYSQL. L'arduino fonctionnera aussi dans une autre parti du systeme mais le codage de celui-ci ne me pose pas de probleme

Lire et convertir la valeur ne me pose pas de problème. Mon souci et dans l'envoie de donnée dans la base MYSQL. J'avais trouver un exemple et réussi à faire un programme fonctionnant, le souci c'est que celui-ci ce déconnecte souvent < 10 min et la déconnexion s'effectue aléatoirement. J'ai effectue quelque recherche et d’après mes maigre connaissance en programmation je dirait que le problème viens du souci que je ne lui ordonne pas de vidéo le "BUFFER" qui est crée dans la librairie mysql.h. Je pensé procéder à une déconnexion puis reconnexion tous les cycle effectuer afin de procéder à vidage du buffer ( si celui-ci ce vide a la déconnexion j'en suis pas sur). A priori il n'y a pas de commande prévu pour une déconnexion d'une base MYSQL. A titre d'information je ne passe pas par une page php afin de pousser les donnée sur le serveur.

Si encore il effectuer une déconnexion mais continue sa boucle et exécuter les autres taches demander puis se reconnecter ceci pourrait me convenir car si je perd quelque information venant du capteur ceci n'est pas très grave. Mais le gros problème ces que celui-ci arrête complément toute ces actions puis recommande le "loop" ce qui ne me conviens pas vu que j'ai une autre parti de programme qui doit tourner, la lecture et l'envoie est simplement un sous programme d'un parti de mon système.
Voici mon code, si dessous. Si vous savez quand effectuer le vidage du BUFFER ou comment ce déconnecter je suis preneur.
Code: Tout sélectionner
#include <mysql.h>
#include <SPI.h>
#include <Ethernet.h>
#include <Deuligne.h>
#include <Wire.h>

int data = 7; // sorti digital data pour commande vco broche 7
int Fsync1 = 6; // sorti digital syncro vco 1 broche 6
int Fsync2 = 8; // sorti digital syncro vco 2 broche 8
int sck = 5; // sorti digital horloge vco broche 5
unsigned char j;
Deuligne lcd;
const int valeurAna =3;
int valeurLue =0;
int valeur = 0;
char buffer[5];
int q = 0;
int i = 0;
byte mac[] = { 0x00 , 0x00, 0x00, 0x00, 0x00, 0x01 }; //definition adresse mac
byte ip[] = {172, 16, 241, 200}; //definition de son adresse
byte serveur_addr[] = {172,16,241,1}; //definition adresse base MYSQL
char user[] = "arduino";
char password[] = "1234";
char INSERT_SQL[] = "INSERT INTO vlf.signal_level VALUES (000,NULL)";
Connector my_conn;
boolean test;



void setup()
{
  pinMode(data,OUTPUT);
  pinMode(Fsync1,OUTPUT);
  pinMode(Fsync2,OUTPUT);
  pinMode(sck,OUTPUT);
 
  digitalWrite(data,LOW);
  digitalWrite(Fsync1,LOW);
  digitalWrite(Fsync2,LOW);
  digitalWrite(sck,HIGH);
 
 
  Ethernet.begin(mac, ip); //initialisation mac et ip
  Serial.begin (115200);
  delay (1000);
  Serial.println("Connection");
  my_conn.mysql_connect (serveur_addr,3306,user,password);
  lcd.init();
}
void loop ()
{
    q=0;
    i=0;
   
  station1();
   while (q < 20)
    {
      Serial.println(q);
      lirevaleur1();
      valeurenvoie();
      q=q++;
      delay(1000);

    }
    station2();     

    while (i < 20)
    {
      Serial.println (i);
      //meme boucle que au dessus mais stockage sur une autre base
      i=i++;
      delay (1000);
    }

   
 
}

void emet(unsigned int valeur,unsigned char voie)

{
   if (voie==0)  digitalWrite(Fsync1,LOW);
   else
   digitalWrite(Fsync2,LOW);
 
   for (j=0;j<16;j++)
 
  {
    if((valeur&0x8000)==0x8000) digitalWrite(data,HIGH);
    else digitalWrite(data,LOW);
    digitalWrite(sck,LOW);
    digitalWrite(sck,HIGH);
    valeur=valeur<<1;
  }
  digitalWrite(Fsync1,HIGH);
  digitalWrite(Fsync2,HIGH);
  Serial.println("emet"+voie);
 
}

void lirevaleur1()

{
    valeurLue=analogRead(valeurAna);
    valeur = map(valeurLue,0,1023,0,255);
    itoa(valeur,buffer,10);
    if (valeur>99)
      {
        INSERT_SQL[37]=buffer[0];
        INSERT_SQL[38]=buffer[1];
        INSERT_SQL[39]=buffer[2];
     
      }
      else if (valeur>9)
      {
        INSERT_SQL[37]='0';
        INSERT_SQL[38]=buffer[0];
        INSERT_SQL[39]=buffer[1];
     
      }
        else
       {
        INSERT_SQL[37]='0';
        INSERT_SQL[38]='0';
        INSERT_SQL[39]=buffer[0];
         }
   
       
     
   
    Serial.println (INSERT_SQL);
}

void station1()
{
 
    emet(0x2000,1);
    emet(0x7BE7,1);
    emet(0x4027,1);
    lcd.setCursor(4,0);
    lcd.print("Station 1");
    delay(1000);
}
void station2()
{
 
    emet(0x2000,1);
    emet(0x7BE7,1);
    emet(0x4027,1);
    lcd.setCursor(4,0);
    lcd.print("Station 2");
    delay(1000);
}
 
void valeurenvoie()
{
   
  lcd.setCursor(2, 1);
  lcd.print("valeur stocker");
}
 

Re: arduino uno et MYSQL

Message non luPosté: Sam 1 Fév 2014 09:31
de Bemolu
Bonjour
Je ne vois pas de
Code: Tout sélectionner
my_conn.cmd_query( xxx )

dans ton code. Est-ce normal?
Cordialement.

Re: arduino uno et MYSQL

Message non luPosté: Sam 1 Fév 2014 10:38
de gaelbaert
Oui j'ai remarquer que le copier coller n'as pas tout prit en compte mais celui-ci fait bien parti de mon code, il viens se mettre a la fin de lirevaleur1()

J'ai fait un test en ralentissant mes donnée envoie j'arrive a maintenir une connexion pouvant aller juste 30 min, donc je pense bien que le problème viens d'un buffer.

Re: arduino uno et MYSQL

Message non luPosté: Sam 1 Fév 2014 15:02
de Bemolu
Essaie de rajouter un
Code: Tout sélectionner
my_conn.show_results();

après la requête.
Cordialement

Re: arduino uno et MYSQL

Message non luPosté: Lun 3 Fév 2014 17:10
de gaelbaert
J'ai rajouter la ligne de commande, mais celui-ci ne m'affiche strictement rien, il fait défilé des lignes blanches. Est-ce normal? Ou est-ce que j'ai loupé quelque chose?

Re: arduino uno et MYSQL

Message non luPosté: Mar 4 Fév 2014 21:51
de Bemolu
gaelbaert a écrit:J'ai rajouter la ligne de commande, mais celui-ci ne m'affiche strictement rien, il fait défilé des lignes blanches. Est-ce normal? Ou est-ce que j'ai loupé quelque chose?

Mais surtout: est-ce que ça déconnecte toujours?

Re: arduino uno et MYSQL

Message non luPosté: Mar 4 Fév 2014 22:43
de gaelbaert
Je ne pourrais le dire, car j'ai plus aucune information d'afficher sur mon moniteur serie