Partage
  • Partager sur Facebook
  • Partager sur Twitter

Besoin d'aide(s) pour une connection arduino/BdD

    8 avril 2017 à 13:24:56

    Bonjour à tous,

    Je créer ce sujet car je n'ai pas trouvé de réponses à mon problème sur le forum...

    Rapidement, je travail sur mon projet de terminale STI2D SIN qui consiste à récupérer des données de différents capteurs grâce à une carte Arduino MEGA et d'envoyer ces données dans une Base de Données mysql (que je gère avec PHPMyAdmin) pour ensuite les afficher sur un site.

    Les programmes des capteurs sont fait, le site est aussi fait, et la base de données est prête à faire son boulot. Mais mon problème se situe dans la communication entre la carte Arduino et la BdD... J'ai essayé différents programmes trouvé sur le net mais sa ne fonctionne pas... Il est très probable que je ne sache pas bien m'y prendre car je suis un parfait débutant en Arduino (d'où ce post :) ) et je vous pose donc la question ^^ comment arriver à relier la carte arduino à ma base de données ?

    Ceci est le code qui j'ai pour l'instant dans ma carte Arduino

    #include <SPI.h>
    #include <Ethernet.h>
    byte mac[] = { 0x90, 0xA2, 0xDA, 0x10, 0x57, 0xAD };
    IPAddress server(x,x,x,x);
    IPAddress ip(150,10,10,153);
    int temp_int=22;
    int temp_ext=0;
    int lum=0;
    
    EthernetClient client;
     
    void setup() {
       Serial.begin(9600);
     
       if (Ethernet.begin(mac) == 0) {
        Ethernet.begin(mac, ip);
    }
     
    delay(2000);
            
        if (client.connect(server, 80)) {
          client.print( "GET /add.php?");
          client.print("temperature interieure=");
          client.print( temp_int );
          client.print("&&");
          client.print("temperature exterieure=");
          client.print( temp_ext );
          client.print("&&");
          client.print("luminosite=");
          client.print( lum ); 
          client.println( " HTTP/1.1");
          client.println( "Host: x.x.x.x" );
          client.println( "Content-Type: application/x-www-form-urlencoded" );
          client.println( "Connection: close" );
          client.println();
          client.println();
          client.stop();
        }
        delay( 5000 );
    }
       
     
    void loop() {
      
      }

    Merci d'avance pour vos réponses !

    -
    Edité par Netsch 8 avril 2017 à 15:21:36

    • Partager sur Facebook
    • Partager sur Twitter
      8 avril 2017 à 22:29:45

      Je suppose que tu as bien remplacé les x,x,x,x du serveur (aux 2 endroits du code) par l'adresse IP du serveur gérant la page add.php.

      Ce que tu devrais faire, c'est afficher la réponse du serveur sur arduino pour en savoir d'avantage :

      void setup() {
      
      	Serial.begin(9600);
      
      	if (Ethernet.begin(mac) == 0) {
      		Ethernet.begin(mac, ip);
      	}
      
      	delay(2000);
      
      	if (client.connect(server, 80)) {
      		
      		Serial.println("Connect: OK");
      		
      		client.print( "GET /add.php?");
      		client.print("temperature interieure=");
      		client.print( temp_int );
      		client.print("&&");
      		client.print("temperature exterieure=");
      		client.print( temp_ext );
      		client.print("&&");
      		client.print("luminosite=");
      		client.print( lum );
      		client.println( " HTTP/1.1");
      		client.println( "Host: x.x.x.x" );
      		client.println( "Content-Type: application/x-www-form-urlencoded" );
      		client.println( "Connection: close" );
      		client.println();
      		client.println();
      		
      		Serial.println("Reponse:");
      		
      		for (;;) {
      			if ( client.available() ) {
      				Serial.write(client.read());
      			} else {
      				if ( !client.connected() ) {
      					break;
      				}
      			}
      		
      		}
      		
      		Serial.println("[FIN!]");
      		
      		client.stop();
      		
      	} else {
      		Serial.println("Connect: ERREUR");
      	}
      	
      	delay( 5000 );
      	
      }



      • Partager sur Facebook
      • Partager sur Twitter
        9 avril 2017 à 10:10:30

        Merci pour ta réponse ! Oui j'ai juste caché l'ip de mon serveur pour ce post ^^

        Je vais passer pour un benêt mais comment fait-on pour afficher la réponse du serveur ? je suppose que c'est avec le moniteur serie mais je ne sais pas du tout m'en servir...

        Merci d'avance

        • Partager sur Facebook
        • Partager sur Twitter
          9 avril 2017 à 11:46:57

          Je t'ai donné le code pour ça...

          Il te suffit juste d'ouvrir la console arduino avant de téléverser.

          • Partager sur Facebook
          • Partager sur Twitter
            9 avril 2017 à 11:53:27

            Quand je l'ouvre rien ne s'affiche...
            • Partager sur Facebook
            • Partager sur Twitter
              9 avril 2017 à 12:30:54

              Ce n'est pas normal.

              Es-tu certain d'avoir sélectionné le bon port et la bonne vitesse de communication (9600).

              Essayes ce code qui lui doit forcément afficher quelque chose :

              void setup() {
               
                  Serial.begin(9600);
              
                  for ( int i = 0 ; i < 20000 ; i++ ) {
              
                     Serial.print("Hello: ");
                     Serial.print(i);
                     Serial.println();
              
                  }
              
              }
              
              void loop() {
              
              }
              

              Si tu vois des hello, alors tu pourrais essayer aussi ce code :

              void setup() {
               
                  Serial.begin(9600);
              
                  delay(1000);
              
                  Serial.println("Tentative d'initialisation DHCP");
               
                  if ( Ethernet.begin(mac) == 0 ) {
              
                      Serial.println("ECHEC...");
              
                      Serial.println("Tentative d'initialisation IP fixe");
              
                          if ( Ethernet.begin(mac, ip) == 0 ) {
              
                              Serial.println("ECHEC...");
              
                          } else {
              
                              Serial.println("OK!");
              
                          }
              
                  } else {
              
                      Serial.println("OK!");
              
                  }
              
                  [...]
              
              }




              • Partager sur Facebook
              • Partager sur Twitter
                9 avril 2017 à 19:29:07

                Merci encore pour ta réponse, et désolé de cette réponse tardive de ma part...

                J'ai testé ton premier code et tout s'affiche correctement, j'ai donc naturellement essayé ton deuxième code mais je me trouve face à une erreur  "void value not ignored as it ought to be" à la ligne 15 de ton programme. Malheureusement je n'ai pas compris comment résoudre cette erreur.

                J'ai cependant j'ai compris qu'elle venait du "ip" que tu as mis dans le Ethernet.begin, et si j'enlève ce "ip" la console m'affiche juste "tentative d'initialisation DHCP".

                As tu une idée de l'origine de cette erreur ?

                Merci !

                • Partager sur Facebook
                • Partager sur Twitter
                  9 avril 2017 à 19:37:22

                  Il semblerait que la fonction d'init sans DHCP ne peut pas échoué donc elle retourne void.

                  Le code devrait être :

                  void setup() {
                    
                      Serial.begin(9600);
                   
                      delay(1000);
                   
                      Serial.println("Tentative d'initialisation DHCP");
                    
                      if ( Ethernet.begin(mac) == 0 ) {
                   
                          Serial.println("ECHEC...");
                   
                          Serial.println("Tentative d'initialisation IP fixe");
                   
                          Ethernet.begin(mac, ip);
                   
                          Serial.println("OK!");
                   
                      } else {
                   
                          Serial.println("OK!");
                   
                      }
                   
                      [...]
                   
                  }
                  

                  Mais si ton code ne t'affiche rien d'autre que tentative... c'est qu'il reste bloqué dans la fonction begin d'initialisation.

                  Ton shield ethernet est probablement mal branché, ou défectueux.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    9 avril 2017 à 20:20:35

                    Ok, je verrai ça en détail demain et je te dirais si c'est bien de mon Shield que le problème viens car actuellement je n'y ai plus accès.

                    Merci encore de ton aide ^^ 

                    • Partager sur Facebook
                    • Partager sur Twitter
                      10 avril 2017 à 20:32:28

                      Ok du coup je reviens après quelques tests et je t'avoue que je n'y comprend rien...

                      J'ai réessayé d'envoyer des données (venant d'un capteur d'humidité) avec mon premier programme, en faisant comme ceci :

                      #include <SPI.h>
                      #include <Ethernet.h>
                      byte mac[] = { 0x90, 0xA2, 0xDA, 0x10, 0x57, 0xAD };
                      IPAddress server(x,x,x,x);
                      IPAddress ip(150,10,10,153);
                      int temp_int=22;
                      int temp_ext=0;
                      int lum=0;
                      int pinHumedad = 7;
                      int humValor; 
                      
                      EthernetClient client;
                      
                      void setup() {
                         Serial.begin(9600);
                       
                         if (Ethernet.begin(mac) == 0) {
                          Ethernet.begin(mac, ip);
                      }
                       
                      delay(2000);
                              
                          if (client.connect(server, 80)) {
                            
                            Serial.println("Connect: OK");
                            
                            client.print( "GET /test/data.php?");
                            client.print("temperature interieure=");
                            client.print( temp_int );
                            client.print("&&");
                            client.print("temperature exterieure=");
                            client.print( temp_ext );
                            client.print("&&");
                            client.print("luminosite=");
                            client.print( lum ); 
                            client.print("&&");
                            client.print("humidite=");
                            client.print( humValor );
                            client.println( " HTTP/1.1");
                            client.println( "Host: x.x.x.x" );
                            client.println( "Content-Type: application/x-www-form-urlencoded" );
                            client.println( "Connection: close" );
                            client.println();
                            client.println();
                            
                            Serial.println("Reponse:");
                               
                              for (;;) {
                                  if ( client.available() ) {
                                      Serial.write(client.read());
                                  } else {
                                      if ( !client.connected() ) {
                                          break;
                                      }
                                  }
                               
                              }
                               
                              Serial.println("[FIN!]");
                              
                            client.stop();
                            
                          } else {
                              Serial.println("Connect: ERREUR");
                          }
                          
                          delay( 5000 );
                      }
                         
                       
                      void loop() {
                          humValor =  ((analogRead(pinHumedad)*(5.0/3.3))/10.24);
                        Serial.print("Humedad relativa (%)=");
                        Serial.println(humValor);
                        delay (1000);
                        }

                      et normalement, ces données devrait être envoyées sur ma base de donnée via ce code

                      <?php
                         	$pdo = new PDO('mysql:dbname=name;host=localhost', 'root', 'password');
                      	$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                      	$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
                      
                      $pdo= "INSERT INTO test (id, heure, temp_int, temp_ext, lum, pluie, humValor) values ('".$_POST["temp_int"]."','".$_POST["temp_ext"]."', '".$_POST["lum"]."', '".$_POST["humValor"]."')";
                      
                      
                      ?>

                      Mais voilà rien ne s'affiche sur ma base de donées... Donc si jamais quelqu'un peux m'aider à trouver une solution, je suis pas contre parce que là je galère vraiment ^^

                      Merci d'avance pour vos réponses !


                      -
                      Edité par Netsch 10 avril 2017 à 21:33:47

                      • Partager sur Facebook
                      • Partager sur Twitter
                        11 avril 2017 à 8:11:57

                        C'est bien gentil de dire "j'ai fais des tests, ça marche pas, je comprends pas, aidez moi" mais si tu ne nous donnes pas un minimum d'explication sur les tests que tu as fais et les résultats obtenu, ça va être très compliqué de t'aider...

                        Donc au risque te paraitre un peu lourd : Que vois tu d'afficher dans la console avec ce code ???

                        #include <SPI.h>
                        #include <Ethernet.h>
                        byte mac[] = { 0x90, 0xA2, 0xDA, 0x10, 0x57, 0xAD };
                        IPAddress server(x,x,x,x);
                        IPAddress ip(150,10,10,153);
                        int temp_int=22;
                        int temp_ext=0;
                        int lum=0;
                        int pinHumedad = 7;
                        int humValor;
                         
                        EthernetClient client;
                         
                        void setup() {
                            
                            Serial.begin(9600);
                          
                            delay(1000);
                        
                            Serial.println("Hello!");
                        
                            delay(1000);
                          
                            Serial.println("Tentative d'initialisation DHCP");
                           
                            if ( Ethernet.begin(mac) == 0 ) {
                          
                                Serial.println("ECHEC...");
                          
                                Serial.println("Tentative d'initialisation IP fixe");
                          
                                Ethernet.begin(mac, ip);
                          
                                Serial.println("OK!");
                          
                            } else {
                          
                                Serial.println("OK!");
                          
                            }
                          
                            delay(2000);
                                 
                            if (client.connect(server, 80)) {
                               
                              Serial.println("Connect: OK");
                               
                              client.print( "GET /test/data.php?");
                              client.print("temperature interieure=");
                              client.print( temp_int );
                              client.print("&&");
                              client.print("temperature exterieure=");
                              client.print( temp_ext );
                              client.print("&&");
                              client.print("luminosite=");
                              client.print( lum );
                              client.print("&&");
                              client.print("humidite=");
                              client.print( humValor );
                              client.println( " HTTP/1.1");
                              client.println( "Host: x.x.x.x" );
                              client.println( "Content-Type: application/x-www-form-urlencoded" );
                              client.println( "Connection: close" );
                              client.println();
                              client.println();
                               
                              Serial.println("Reponse:");
                                  
                                for (;;) {
                                    if ( client.available() ) {
                                        Serial.write(client.read());
                                    } else {
                                        if ( !client.connected() ) {
                                            break;
                                        }
                                    }
                                  
                                }
                                  
                                Serial.println("[FIN!]");
                                 
                              client.stop();
                               
                            } else {
                                Serial.println("Connect: ERREUR");
                            }
                             
                            delay( 5000 );
                        }
                            
                          
                        void loop() {
                            humValor =  ((analogRead(pinHumedad)*(5.0/3.3))/10.24);
                          Serial.print("Humedad relativa (%)=");
                          Serial.println(humValor);
                          delay (1000);
                          }



                        • Partager sur Facebook
                        • Partager sur Twitter
                          11 avril 2017 à 19:39:30

                          Oui désolé ^^ Donc pour être clair, je ne vois rien dans ma console avec ce code chargé sur ma carte arduino. Mais je pense que le problème pourrai venir du branchement, on est d'accord que le câble ethernet du shield ethernet doit être branché sur ma FreeBox et non sur mon pc ou autre ?

                          Durant mes recherches j'ai également pensé à une alternative. Comme ma carte arduino ne doit pas nécessairement être éloigné de ma carte Raspberry (soit mon serveur), je pourrai solutionner ce problème en reliant les deux carte par un cable USB et donc dire au-revoir à mon shield ethernet, qu'en penses tu ? Est-ce plus simple d'après toi ?

                          Merci

                          • Partager sur Facebook
                          • Partager sur Twitter
                            11 avril 2017 à 22:48:43

                            On est bien d'accord que le calbe ethernet doit être relié à la freebox.

                            Mais si le code n'affiche rien, c'est que tu as un problème sur la console ou ton arduino car les premières lignes sont :

                            void setup() {
                                 
                                Serial.begin(9600);
                               
                                delay(1000);
                             
                                Serial.println("Hello!");

                            Ce qui devrait au moins afficher "hello!".

                            Si tu ne vois pas ce "hello!", ce que ta console ne marche pas (paramètre incorrect par exemple) et donc que tu ne verras pas les autres messages.

                            --------------------

                            Utiliser l'USB n'est pas forcément beaucoup plus simple, c'est juste une autre façon de faire.

                            En branchant ton arduino sur la RPi, celle-ci devrait créer un fichier ttyUSB dans /etc

                            Ce fichier est un fichier système virtuel qui va permettre de dialoguer avec l'arduino.

                            Une fois que ton programme sur la RPi aura ouvert ce fichier, tout ce qu'il écrira dessus sera envoyé à l'arudino qui pourra le réccupérer avec Serial.read.

                            Et inversement, tout ce qu'envoie l'arduino avec Serial.print pourra être reçu par la RPi en lisant le fichier.

                            • Partager sur Facebook
                            • Partager sur Twitter
                              12 avril 2017 à 17:30:41

                              Ok merci, donc je vais réessayer tout ça la tête reposé parce que je pense que le fait que je ne vois rien viens d'un problème de branchements. Pour ce qui est de la liaison série, merci de l'aide, je vais essayer d'approfondir le sujet et voir si ça peut fonctionner dans mon cas. Je te dirais tout ça dès que j'ai accès à mon matériel ^^

                              Merci encore pour ton aide !

                              • Partager sur Facebook
                              • Partager sur Twitter
                                22 avril 2017 à 11:16:56

                                Salut, je reviens après une longue absence et je m'en excuse... (plus d'internet toussatoussa)

                                Donc, pour faire le point : j'ai repris ce code

                                #include <SPI.h>
                                #include <Ethernet.h>
                                byte mac[] = { 0x90, 0xA2, 0xDA, 0x10, 0x57, 0xAD };
                                IPAddress server(x,x,x,x);
                                IPAddress ip(150,10,10,153);
                                int temp_int=22;
                                int temp_ext=0;
                                int lum=0;
                                int pinHumedad = 7;
                                int humValor;
                                  
                                EthernetClient client;
                                  
                                void setup() {
                                     
                                    Serial.begin(9600);
                                   
                                    delay(1000);
                                 
                                    Serial.println("Hello!");
                                 
                                    delay(1000);
                                   
                                    Serial.println("Tentative d'initialisation DHCP");
                                    
                                    if ( Ethernet.begin(mac) == 0 ) {
                                   
                                        Serial.println("ECHEC...");
                                   
                                        Serial.println("Tentative d'initialisation IP fixe");
                                   
                                        Ethernet.begin(mac, ip);
                                   
                                        Serial.println("OK!");
                                   
                                    } else {
                                   
                                        Serial.println("OK!");
                                   
                                    }
                                   
                                    delay(2000);
                                          
                                    if (client.connect(server, 80)) {
                                        
                                      Serial.println("Connect: OK");
                                        
                                      client.print( "GET /test/data.php?");
                                      client.print("temperature interieure=");
                                      client.print( temp_int );
                                      client.print("&&");
                                      client.print("temperature exterieure=");
                                      client.print( temp_ext );
                                      client.print("&&");
                                      client.print("luminosite=");
                                      client.print( lum );
                                      client.print("&&");
                                      client.print("humidite=");
                                      client.print( humValor );
                                      client.println( " HTTP/1.1");
                                      client.println( "Host: x.x.x.x" );
                                      client.println( "Content-Type: application/x-www-form-urlencoded" );
                                      client.println( "Connection: close" );
                                      client.println();
                                      client.println();
                                        
                                      Serial.println("Reponse:");
                                           
                                        for (;;) {
                                            if ( client.available() ) {
                                                Serial.write(client.read());
                                            } else {
                                                if ( !client.connected() ) {
                                                    break;
                                                }
                                            }
                                           
                                        }
                                           
                                        Serial.println("[FIN!]");
                                          
                                      client.stop();
                                        
                                    } else {
                                        Serial.println("Connect: ERREUR");
                                    }
                                      
                                    delay( 5000 );
                                }
                                     
                                   
                                void loop() {
                                    humValor =  ((analogRead(pinHumedad)*(5.0/3.3))/10.24);
                                  Serial.print("Humedad relativa (%)=");
                                  Serial.println(humValor);
                                  delay (1000);
                                  }

                                et même en me branchant bien sur ma freebox, le programme s'arête à la ligne :

                                 Serial.println("Tentative d'initialisation DHCP");

                                Donc je comprend pas trop ce qui cloche car visiblement, mon moniteur fonctionne (puisqu'il affiche le Hello! )...

                                Voilà, je continue de chercher mais avec tous ça... je suis un peu perdu...

                                Merci d'avance !

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  22 avril 2017 à 21:00:23

                                  Je t'ai donné une explication un peu plus haut :

                                  lorrio a écrit:

                                  Mais si ton code ne t'affiche rien d'autre que tentative... c'est qu'il reste bloqué dans la fonction begin d'initialisation.

                                  Ton shield ethernet est probablement mal branché, ou défectueux.



                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    22 avril 2017 à 21:40:19

                                    Mal branché.... je vois vraiment pas comment mal le brancher... il est sur mon arduino MEGA et est relié aux ports ethernet disposés à l'arrière de ma freebox... Donc le problème serait qu'il soit défectueux ? peut-être, mais je n'ai aucun moyen d'en être sûr...

                                    Peut-être que le problème vient de l'adressage ? l'adresse mac du code correspond à l'adresse disposée sous la carte, mais l'adresse IP de la carte, c'est moi qui l'ai inventé, alors peut être que ça sa cloche.. mais je vois pas trop pourquoi ^^

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      22 avril 2017 à 22:49:56

                                      En DHCP, c'est la box qui va attribuer une adresse IP donc celle que tu as déclaré ne sert à rien.

                                      Par contre, si tu n'utilises pas l'initialisation par DHCP et que tu mets une adresse IP en dehors de la plage d'IP local de la box, ça ne marchera pas.

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        22 avril 2017 à 23:08:55

                                        Oui mais là en l'occurrence on passe bien par un DHCP ? Donc ce n'est pas de là que viens le problème ?
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          23 avril 2017 à 13:43:32

                                          Effectivement, la fonction begin sans adresse IP passe par DHCP.

                                          Mais même en passant par la fonction begin avec une IP incorrect, ton programme ne devrait pas se bloquer.

                                          SI il se bloque, c'est qu'il doit attendre une réponse du shield qui n'arrive pas.

                                          Soit à cause d'une erreur de câblage, soit à cause d'un problème sur le shield, ou encore une mauvaise lib mais je n'y crois pas trop.

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            23 avril 2017 à 14:15:04

                                            Oui... moi non plus...

                                            A la limite, peut-être pourrais-je me tourner vers la liaison série plutôt que d'essayer de faire fonctionner un shield potentiellement défectueux ? Dans ce cas, l'envoie de données venant de l'arduino se fait grâce à la fonction serialprint si j'ai bien compris ? et sur la raspberry, cette donnée est stockée dans un fichier type .txt ?

                                            Merci d'avance pour les réponses ^^

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              23 avril 2017 à 18:45:44

                                              La liaison série sur arduino correspond à tout ce qui touche au Serial : Serial.begin, Serial.print, Serial.read...

                                              Quand à la RPi, tu y a accès à l'aide d'un fichier système qui sera automatiquement créé quand tu brancheras l'arduino.

                                              Ce fichier système devrait très probablement se nommer /dev/ttyUSB0.

                                              Mais ce n'est pas un fichier texte mais un fichier système, les informations ne sont pas stocké dessus.

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                23 avril 2017 à 22:45:39

                                                ok, oui je me suis renseigné là dessus mais je ne comprend pas bien comment utiliser ce fichier système.

                                                Pour reprendre mon problème, l'idée serait ici d'envoyer par Serial.print la donnée en question à la RPi et ensuite de stocker cette donnée dans une base de donnée (base de donnée qui est installée sur la RPi d'ailleurs).

                                                Donc sais-tu si la RPi peut faire ce genre de travail ? et si oui, passe-t-elle par des requêtes HTTP ou d'autre truc ?

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  24 avril 2017 à 8:22:21

                                                  Il va te falloir développer un programme (en C, en C++, en python, autre... peu importe) qui ouvre ce fichier et le lit.

                                                  Chaque caractère que ton arduino envoie avec Serial.print sera reçu par la RPi et donc lu par ton programme.

                                                  Une fois que ton programme a reçu les données complète, alors il devra les insérer la base de données.

                                                  Pour cela, il peut :

                                                  - soit les insérer lui même en faisant lui même des requêtes SQL

                                                  - soit les insérer indirectement en appelant une PHP local de la RPi (et ce sera alors ce script PHP local que tu auras développé qui se chargera d'insérer les données)

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    24 avril 2017 à 9:38:03

                                                    Ça parait tellement simple quand tu le dis :lol:

                                                    Bon, c'est bien ce que j'avais compris, il va falloir envoyer les données de l'arduino par un Serial.print, et ensuite faire en sorte que la RPi les lises et les transferts à la BdD.*

                                                    Seulement pour cela et étant un débutant en la matière, j'ai pas beaucoup trouvé de tuto sur le net, je pense que ces deux là peuvent m'être utile mais je n'ai pas réussi à les faire fonctionner entièrement :

                                                    http://electroniqueamateur.blogspot.fr/2014/05/communication-par-usb-entre-raspberry.html

                                                    http://alexandre.alapetite.fr/doc-alex/raspberrypi-nodejs-arduino/

                                                    De plus, je n'ai rien trouvé sur l'insertion des ces données dans une base de donnée....

                                                    Alors si tu as des liens, sources ou autres je suis preneur ^^

                                                    Merci !

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      25 avril 2017 à 11:08:54

                                                      Si personne ne répond, c'est que personne n'a de lien ou tutoriel à te proposer.

                                                      Mais d'un autre coté, est-ce vraiment nécessaire de trouver un tuto pour ça ?

                                                      Sortir l'artillerie lourde avec npm et nodejs juste pour lire le Serial, ça me parait bien compliqué...

                                                      D'autant plus qu'il te faudra encore du PHP pour insérer ce que nodeJS reçoit dans la base de données.

                                                      A ta place, je ferait tout dans un script PHP appelé en mode console.

                                                      Dans ce script, tu fais une boucle infinie qui lit le Serial /dev/ttyUSB et insère une donnée dans ta BDD dès que celle-ci est complète.

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        26 avril 2017 à 9:50:03

                                                        Salut et merci de ta réponse.

                                                        C'est une bonne idée mais qu'entends-tu par "script PHP appelé en mode console" ?

                                                        J'ai rapidement regardé sur le net, et j'ai trouvé quelques infos sur la lecture du serial avec php, mais je ne comprend pas bien ce que tu entends par "mode console" ^^

                                                        Merci d'avance !

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          26 avril 2017 à 10:03:24

                                                          Généralement, le langage PHP sert à la création de site WEB.

                                                          Donc le script est automatiquement appelée par le serveur WEB quand un navigateur internet demande une page WEB.

                                                          Dans ton cas, ce serait assez pénible de devoir ouvrir une page WEB sur ton navigateur pour lancer ton script afin que celui-ci lise le Serial de l'arduino.

                                                          Du coup, il faudrait le lancer manuellement depuis une console, d'où le fait que je te parle de "mode console".

                                                          Concrètement, ce n'est pas bien compliqué, il te suffit d'ouvrir un terminal sur ta Rpi et taper :

                                                          php tonscript.php



                                                          -
                                                          Edité par lorrio 26 avril 2017 à 10:03:51

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            26 avril 2017 à 17:50:47

                                                            Ok, mais étant donné que tout sera sur un site web ça va être hyper contraignant de devoir aller sur la console et taper tout ça...

                                                            Le but du site est bien de simplifier l'utilisation à l'utilisateur. Donc je suppose que c'est possible de faire ça par une page web ?

                                                            • Partager sur Facebook
                                                            • Partager sur Twitter

                                                            Besoin d'aide(s) pour une connection arduino/BdD

                                                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                            • Editeur
                                                            • Markdown