Comment relier une base de données MYSQL avec une carte ESP32?

Bonjour tous le monde, j'ai écris le programme qui affiche l'ID du tag sur le moniteur série du mon IDE arduino, d'autre côté je veux connecter l'arduino à mon base de données Mysql (phpMyadmin) de tel sorte que l'ID du tag affiché sur le moniteur série sera automatiquement inséré dans mon tableau de ma base de donées.

il y a des trucs qui existent (je n'ai jamais essayé) - par exemple

sinon souvent on passe par HTTP et un service intermédiaire sur le serveur qui effectuera les requêtes en local (écrit en PHP ou Python ou autre)

peux-tu me donner le code arduino?

Il y a des exemples dans la bibliothèque

Je veux écrire le sketch qui lit l'ID du tag et l'envoi directement à la base de données. j'ai essayé plusieurs fois. pouvez-vous m'envoyer le code complet?

Non

Ce forum n'est pas un endroit où l'on vient demander aux autres de pondre du code pour eux. C'est un endroit où l'on se fait aider... Mais le code c'est à vous de l'écrire et de soumettre des questions précises si vous vous heurtez à un souci.

Je te dis que je fais plusieurs essais et je besoin d’un code prêt. Voici le code que j’écris

#include <WiFi.h>
#include <SPI.h>
#include <MFRC522.h>
#include <HTTPClient.h>  // Inclure la bibliothèque pour envoyer des requêtes HTTP

// Remplacez par vos informations Wi-Fi
const char* ssid = "topnet";      // Le nom de votre réseau Wi-Fi
const char* password = ""; // Le mot de passe de votre réseau Wi-Fi

// URL du script PHP sur votre serveur pour insérer dans MySQL
const char* serverUrl = "http://192.168.1.**/rfid_insert.php";  // Remplacez avec l'URL de votre script PHP

// Pins de connexion pour le RC522
#define SS_PIN 5   // Pin de sélection du slave (chip select)
#define RST_PIN 0   // Pin de réinitialisation (reset)

// Objet ESP32_MFRC522 pour communiquer avec le capteur RC522
MFRC522 mfrc522(SS_PIN, RST_PIN); 
MFRC522::MIFARE_Key key;
int readsuccess;
String c="";
byte readcard[4];
char str[32] = "";
String StrUID;

void setup() {
  // Initialisation de la communication série
  Serial.begin(115200);

  // Connexion au Wi-Fi
  WiFi.begin(ssid, password);

  // Attente de la connexion
  Serial.print("Connexion au réseau Wi-Fi");
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.print(".");
  }

  // Afficher l'adresse IP obtenue
  Serial.println();
  Serial.println("Connecté au réseau Wi-Fi !");
  Serial.print("Adresse IP : ");
  Serial.println(WiFi.localIP());

  // Initialisation du module RC522
  SPI.begin(); // Démarrer la communication SPI
  mfrc522.PCD_Init(); // Initialiser le capteur RC522
  for (byte i = 0; i < 6; i++) {
    key.keyByte[i] = 0xFF;
  }

  Serial.println(F("Ce code scanne les NUID MIFARE classiques."));
  Serial.print(F("Utilisation de la clé suivante :"));
  Serial.println("Prêt à lire les cartes RFID");
}

void loop() {
  readsuccess = getid();
  // Vérifiez si une nouvelle carte RFID a été lue
  if(readsuccess != 0){
    Serial.println(readsuccess);
    for (int i = 0; i < 4; i++) {
      c += String(readcard[i], HEX);   
    }
    
    Serial.println(c);
    
    // Envoi des données à l'API via HTTP
    sendDataToServer(c);
  }
  c = "";
}

int getid() {  
  if(!mfrc522.PICC_IsNewCardPresent()) {
    return 0;
  }
  if(!mfrc522.PICC_ReadCardSerial()) {
    return 0;
  }
  
  Serial.print("L'UID DE LA CARTE SCANNÉE EST : ");
  
  for(int i = 0; i < 4; i++) {
    readcard[i] = mfrc522.uid.uidByte[i]; // Stocke l'UID de la carte dans readcard
    array_to_string(readcard, 4, str);
    StrUID = str;
  }
  mfrc522.PICC_HaltA();
  return 1;
}

void array_to_string(byte array[], unsigned int len, char buffer[]) {
  for (unsigned int i = 0; i < len; i++) {
    byte nib1 = (array[i] >> 4) & 0x0F;
    byte nib2 = (array[i] >> 0) & 0x0F;
    buffer[i*2+0] = nib1  < 0xA ? '0' + nib1  : 'A' + nib1  - 0xA;
    buffer[i*2+1] = nib2  < 0xA ? '0' + nib2  : 'A' + nib2  - 0xA;
  }
  buffer[len*2] = '\0';
}

// Fonction pour envoyer les données à l'API
void sendDataToServer(String uid) {
  if (WiFi.status() == WL_CONNECTED) {
    HTTPClient http;

    // Construire l'URL complète pour la requête POST
    String postData = "uid=" + uid;  // Paramètre pour l'UID
    
    // Démarrer la requête HTTP
    http.begin(serverUrl);
    http.addHeader("Content-Type", "application/x-www-form-urlencoded");  // En-tête pour indiquer les données en POST
    
    // Envoyer la requête POST avec l'UID
    int httpResponseCode = http.POST(postData);

    // Vérifier la réponse du serveur
    if (httpResponseCode > 0) {
      Serial.println("Données envoyées avec succès !");
      Serial.println("Code de réponse HTTP : " + String(httpResponseCode));
    } else {
      Serial.println("Erreur lors de l'envoi des données");
      Serial.println("Code de réponse HTTP : " + String(httpResponseCode));
    }

    // Terminer la requête HTTP
    http.end();
  } else {
    Serial.println("Erreur de connexion Wi-Fi");
  }
}`Texte préformaté`

Merci d'éditer votre post en utilisant le :pencil2: dans la barre d'outil juste sous votre post et rajoutez les balises de de code (c'est difficilement lisible tel quel) :

  • sélectionner la partie du texte qui correspond au code
  • appuyez sur l'icône <code/> dans la barre d'outils pour indiquer que c'est du code

(Assurez vous aussi d'indenter le code correctement dans l'IDE avant de le copier pour le coller ici. Cela se fait en pressant ctrlT sur PC ou cmdT sur un Mac)

il serait bon de (re)lire les recommandations listées dans "Les bonnes pratiques du Forum Francophone”

C’est bon

Merci

C’est un code que vous avez trouvé sur internet je suppose

Vous comprenez ce que ça fait ?

Et vous avez quoi comme code PHP

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.