arduino uno et MYSQL

Les cartes Arduino, les platines

arduino uno et MYSQL

Message non lude gaelbaert » Mer 29 Jan 2014 15:35

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");
}
 
gaelbaert
 
Messages: 5
Inscription: Mer 29 Jan 2014 14:57

Re: arduino uno et MYSQL

Message non lude Bemolu » Sam 1 Fév 2014 09:31

Bonjour
Je ne vois pas de
Code: Tout sélectionner
my_conn.cmd_query( xxx )

dans ton code. Est-ce normal?
Cordialement.
Bemolu
 
Messages: 63
Inscription: Mer 8 Fév 2012 21:19

Re: arduino uno et MYSQL

Message non lude gaelbaert » Sam 1 Fév 2014 10:38

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.
gaelbaert
 
Messages: 5
Inscription: Mer 29 Jan 2014 14:57

Re: arduino uno et MYSQL

Message non lude Bemolu » Sam 1 Fév 2014 15:02

Essaie de rajouter un
Code: Tout sélectionner
my_conn.show_results();

après la requête.
Cordialement
Bemolu
 
Messages: 63
Inscription: Mer 8 Fév 2012 21:19

Re: arduino uno et MYSQL

Message non lude gaelbaert » Lun 3 Fév 2014 17:10

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?
gaelbaert
 
Messages: 5
Inscription: Mer 29 Jan 2014 14:57

Re: arduino uno et MYSQL

Message non lude Bemolu » Mar 4 Fév 2014 21:51

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?
Bemolu
 
Messages: 63
Inscription: Mer 8 Fév 2012 21:19

Re: arduino uno et MYSQL

Message non lude gaelbaert » Mar 4 Fév 2014 22:43

Je ne pourrais le dire, car j'ai plus aucune information d'afficher sur mon moniteur serie
gaelbaert
 
Messages: 5
Inscription: Mer 29 Jan 2014 14:57


Retourner vers Arduino

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités