Arduino connexion base de données Mysql

Résolu
Greg156 Messages postés 2 Date d'inscription samedi 6 mai 2023 Statut Membre Dernière intervention 29 mai 2023 - Modifié le 29 juin 2023 à 16:03
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 - 29 mai 2023 à 16:23

 Bonjour,

J'ai réussi à coder un capteur de température sur Arduino, Le problème c'est que j'arrive pas à envoyer les données dans la base de données,

J'aimerais avoir de l'aide là-dessus, ça fait un moment que je galère.

Voici mon code capteur 

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

void loop() {
  float voltage = analogRead(A0);
  float temperature = (5.0 * voltage * 100.0) / 1024.0;
  Serial.print("La temperature est de : ");
  Serial.print(temperature);
  Serial.print("°C"); 
  Serial.println();
  delay(1000);
}

voici ma base de données 
 

... et voici le code pour envoyer les données que j'ai écrit :

#include <SPI.h>
#include <Ethernet.h>
#include <MySQL_Connection.h>
#include <MySQL_Cursor.h>

byte mac[] = { }; // Adresse MAC Ethernet
IPAddress serverIP(128, 0, 0, 1); // Adresse IP du serveur MySQL
EthernetClient client;
MySQL_Connection conn((Client *)&client);

const int temperaturePin = A0; // Broche analogique utilisée pour le capteur de température

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

  // Connexion à Internet via Ethernet
  Ethernet.begin(mac);
  delay(1000);

  // Connexion à la base de données MySQL
  Serial.println("Connexion à la base de données...");
  if (conn.connect(serverIP, 3306, "root", "", "temperature")) {
    Serial.println("Connexion réussie !");
  } else {
    Serial.println("Échec de la connexion...");
    while (1);
  }

  // Exécution des requêtes SQL
  executeQueries();
}

void loop() {
  // Lecture de la température
  float voltage = analogRead(temperaturePin);
  float temperature = (5.0 * voltage * 100.0) / 1024.0;

  Serial.print("La temperature est de : ");
  Serial.print(temperature);
  Serial.print("°C");
  Serial.println();
  delay(1000);
}

void executeQueries() {
  // Affichage des bases de données
  Serial.println("Bases de données :");
  MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);
  cur_mem->execute("SHOW DATABASES");
  row_values *row;

  do {
    row = cur_mem->get_next_row();
    if (row != NULL) {
      Serial.println(row->values[0]);
    }
  } while (row != NULL);
  delete cur_mem;

  // Affichage des étudiants
  Serial.println("Données des temperature :");
  cur_mem = new MySQL_Cursor(&conn);
  cur_mem->execute("SELECT * FROM temp");
  int num_fields = cur_mem -> get_columns();


  do {
    row = cur_mem->get_next_row();
    if (row != NULL) {
      for (int i = 0; i < num_fields; i++) {
        if (row->values[i] != NULL) {
          Serial.print(row->values[i]);
          Serial.print(" ");
        } else {
          Serial.println("NULL");
        }
      }
      Serial.println();
    }
  } while (row != NULL);
  delete cur_mem;

  // Fermeture de la connexion à la base de données
  conn.close();
}

et ça fait ça :

Merci 

A voir également:

1 réponse

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
29 mai 2023 à 14:43

Ce qui me semble suspect c'est ton :

PAddress serverIP(128, 0, 0, 1);

128.0.0.1 est très étrange comme IP.


1
Greg156 Messages postés 2 Date d'inscription samedi 6 mai 2023 Statut Membre Dernière intervention 29 mai 2023
29 mai 2023 à 15:35

cest l'adresse IP de mon localhost 
pourquoi je devrais mettre quoi a la place?

0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331 > Greg156 Messages postés 2 Date d'inscription samedi 6 mai 2023 Statut Membre Dernière intervention 29 mai 2023
29 mai 2023 à 16:23

Localhost c'est 127.0.0.1, pas 128.

Si ton serveur Mysql se trouve sur ton arduino, c'est la bonne IP, mais je pense plus que le serveur est sur une autre machine.

Dans ce cas, il faut mettre l'adresse de la machine qui a le serveur MySql et dire (dans la configuration) à MySql d'écouter sur toutes les interfaces (et pas seulement Localhost, qui est la configuration par défaut)
Dans in des fichiers de config : bind-address = 0.0.0.0

1