Lecteur / scanner de code QR ESP32-CAM (Arduino IDE)

Lecteur / scanner de code QR ESP32-CAM (Arduino IDE)

Apprenez à créer un lecteur / scanner de code QR avec la carte ESP32-CAM programmée avec Arduino IDE. L’ESP32-CAM utilise constamment son appareil photo pour rechercher de nouveaux codes QR à l’aide de la bibliothèque ESP32QRCODEREReader et une version modifiée de la bibliothèque Quirc. Lorsqu’il détecte un code QR valide, il imprime les données de code QR dans le moniteur série.

ESP32-CAM QR Code Reader Scanner Arduino IDE

Aperçu du projet

Voici un aperçu rapide du fonctionnement du projet.

Présentation du projet de scanner de code QR ESP32-CAM
  • L’ESP32-cam scanne constamment de nouveaux codes QR
  • Lorsqu’il détecte un code QR valide, il imprime ses données dans le moniteur série Arduino IDE

Ce projet peut être utilisé pour un système de fréquentation des billets, pour le suivi des produits, afin d’agir comme un système d’accès en vérifiant les codes QR pour déverrouiller les portes ou les casiers, et de nombreuses autres applications.

Pièces requises

Nous utiliserons la carte ESP32-CAM étiquetée comme module AI-Thinker, mais d’autres modules devraient également fonctionner en effectuant la bonne affectation de broches dans le code. Un autre exemple est la carte CAM Freenove ESP32-Wrover.

La carte ESP32-CAM est un appareil à 9 $ (ou moins) qui combine une puce ESP32-S, une caméra OV2640, une fente de carte microSD et plusieurs broches GPIO.

La carte ESP32-CAM est un appareil de 9 $ avec une caméra OV2640, une fente de carte microSD et plusieurs broches GPIO

Pour suivre ce tutoriel, vous avez besoin des composants suivants:

Vous pouvez utiliser les liens précédents ou aller directement à makeradvisor.com/tools pour trouver toutes les pièces de vos projets au meilleur prix!

Lecteur scanner de code QR ESP32 CAM Arduino IDE

Pour une introduction à l’ESP32-cam, vous pouvez suivre les prochains tutoriels:

Préparation de l’IDE Arduino

Nous allons programmer la carte ESP32 à l’aide d’Arduino IDE. Vous avez donc besoin de l’ide Arduino installée ainsi que du module complémentaire ESP32. Vous pouvez suivre le prochain tutoriel pour installer le module complémentaire ESP32, si vous ne l’avez pas déjà fait:

Installation de l’ESP32QrcodeReader

Pour ce tutoriel, nous utiliserons la bibliothèque ESP32QRCODEREReader par Alvarowolfx, ce qui facilite la lecture des codes QR avec la carte ESP32-CAM.

Ensuite, dans l’ide Arduino, allez dans Sketch> Inclure la bibliothèque> Ajouter une bibliothèque .zip et installer la bibliothèque que vous venez de télécharger dans le lien précédent.

Arduino Installer la bibliothèque Sketch Inclure la bibliothèque Ajouter la bibliothèque zip

Code – lecteur / scanner de code QR ESP32-CAM

Copiez le code du scanner de code QR sur votre IDE Arduino.

/*********
  Rui Santos & Sara Santos - Raspberryme.com
  Complete project details at https://Raspberryme.com/esp32-cam-qr-code-reader-scanner-arduino/
*********/

#include 
#include 

// FOR THIS PROJECT, YOUR ESP32-CAM NEEDS TO HAVE PSRAM.
// Some of the compatible boards: CAMERA_MODEL_AI_THINKER | CAMERA_MODEL_WROVER_KIT | CAMERA_MODEL_ESP_EYE
// CAMERA_MODEL_M5STACK_PSRAM | CAMERA_MODEL_M5STACK_V2_PSRAM | CAMERA_MODEL_M5STACK_WIDE  
ESP32QRCodeReader reader(CAMERA_MODEL_AI_THINKER);

void onQrCodeTask(void *pvParameters) {
  struct QRCodeData qrCodeData;

  while (true) {
    if (reader.receiveQrCode(&qrCodeData, 100)) {
      Serial.println("Scanned new QRCode");
      if (qrCodeData.valid) {
        Serial.print("Valid payload: ");
        Serial.println((const char *)qrCodeData.payload);
      }
      else {
        Serial.print("Invalid payload: ");
        Serial.println((const char *)qrCodeData.payload);
      }
    }
    vTaskDelay(100 / portTICK_PERIOD_MS);
  }
}

void setup() {
  Serial.begin(115200);
  Serial.println();

  reader.setup();
  Serial.println("Setup QRCode Reader");

  reader.beginOnCore(1);
  Serial.println("Begin on Core 1");

  xTaskCreate(onQrCodeTask, "onQrCode", 4 * 1024, NULL, 4, NULL);
}

void loop() {
  delay(100);
}

Afficher le code brut

Comment fonctionne le code

Le code commence par inclure les bibliothèques nécessaires pour effectuer la numérisation du code QR avec la carte ESP32-CAM:

#include 
#include 

Ensuite, créez un objet appelé Reader pour le scanner de code QR, pour ce guide que nous utilisons le modèle AI-Thinker ESP32-CAM.

// FOR THIS PROJECT, YOUR ESP32-CAM NEEDS TO HAVE PSRAM.
// Some of the compatible boards: CAMERA_MODEL_AI_THINKER | CAMERA_MODEL_WROVER_KIT | CAMERA_MODEL_ESP_EYE
// CAMERA_MODEL_M5STACK_PSRAM | CAMERA_MODEL_M5STACK_V2_PSRAM | CAMERA_MODEL_M5STACK_WIDE

ESP32QRCodeReader reader(CAMERA_MODEL_AI_THINKER);

Remarque: Votre conseil a besoin d’avoir du PSRAM. Ce code a été testé et il devrait être compatible avec ces versions de la carte ESP32-CAM:

  • Caméra_model_ai_thinker
  • Caméra_model_wrover_kit
  • Caméra_model_esp_eye
  • Caméra_model_m5stack_psram
  • Caméra_model_m5stack_v2_psram
  • Caméra_model_m5stack_wide

installation()

Dans la fonction SETUP () Commencez par initialiser une communication série à 115200 Baud à des fins de débogage.

void setup() {
  Serial.begin(115200);
  Serial.println();

Le Reader.SetUp () démarre le matériel de la caméra à l’aide des paramètres par défaut de la bibliothèque pour la carte AI-Thinker ou une autre carte que vous avez choisi de définir.

reader.setup();
Serial.println("Setup QRCode Reader");

Le lecteur de l’appareil photo fonctionnera sur CPU Core 1 (la puce ESP32 a deux cœurs).

reader.beginOnCore(1);
Serial.println("Begin on Core 1");

Enfin, créez une tâche Freertos pour exécuter la fonction OnqrCodeTask. Cela nous permet de continuer à exécuter le scanner de code QR en arrière-plan.

xTaskCreate(onQrCodeTask, "onQrCode", 4 * 1024, NULL, 4, NULL);

onqrCodeTask ()

Dans la fonction onqrcodetask, il continue de scanner constamment pour de nouveaux codes QR avec le while (true) et lorsqu’il détecte un code QR valide, il imprime les données du moniteur série.

void onQrCodeTask(void *pvParameters) {
  struct QRCodeData qrCodeData;

  while (true) {
    if (reader.receiveQrCode(&qrCodeData, 100)) {
      Serial.println("Scanned new QRCode");
      if (qrCodeData.valid) {
        Serial.print("Valid payload: ");
        Serial.println((const char *)qrCodeData.payload);
      }
      else {
        Serial.print("Invalid payload: ");
        Serial.println((const char *)qrCodeData.payload);
      }
    }
    vTaskDelay(100 / portTICK_PERIOD_MS);
  }
}

Téléchargez le code sur ESP32-CAM AI-Thinker à l’aide du programmeur USB ESP32-CAM-MB

Pour télécharger du code sur la carte ESP32-CAM, joignez le programmeur Micro USB ESP32-CAM-MB à votre carte (vous pouvez apprendre comment cela fonctionne en lisant ce guide).

CAME PROGRAMMATEUR MICRO USB ESP32-CAM-MB

Ensuite, connectez la carte à votre ordinateur à l’aide d’un câble USB.

Après cela, dans votre IDE Arduino, accédez à Tools> Board et sélectionnez l’ESP32-CAM AI-Thinker. Ou recherchez cette planche sur la barre supérieure. Vous devez installer le module complémentaire ESP32. Sinon, cette planche n’apparaîtra pas dans le menu des planches.

Sélectionnez l'ESP32-CAM AI-Thinker dans Arduino IDE

Accédez à Tools> Port et sélectionnez le port COM à laquelle le CAM ESP32 est connecté.

Remarque: Si la carte n’apparaît pas, cela signifie que vous n’avez probablement pas les pilotes CH340C installés sur votre ordinateur. Accédez à Google et recherchez des «pilotes CH340C» suivis de votre système d’exploitation et installez les pilotes.

Enfin, cliquez sur le bouton Télécharger dans votre IDE Arduino.

Programme ESP32-CAM avec Arduino IDE

Et c’est tout! Votre code de scanner de code QR devrait être exécuté dans votre ESP32-cam.

Démonstration

Après avoir téléchargé le code, ouvrez le moniteur en série à un taux en bauds de 115200. Appuyez sur le bouton Réinitialiser ESP32-CAM. Il doit initialiser le scanner de code QR. Vérifiez la fenêtre Arduino IDE Serial Monitor pour voir si tout fonctionne comme prévu.

ESP32-CAM QR Code Scanner Reader Exemple Arduino IDE Démarrer OK

Poignez l’ESP32-cam vers un code QR, voici un exemple de code QR avec les données https://raspberryme.com/.

Exemple de code QR RandomnerdTutorial.com
ESP32-CAM CAME CAME QR CODE SCANNER LECTEUR

Les données de charge utile doivent être imprimées dans le moniteur série Arduino IDE:

ESP32-CAM QR Code Scanner Reader

Si dans le moniteur série Arduino IDE, vous continuez à recevoir ce message:

Invalid payload: ECC failure

Vous devrez peut-être utiliser un code QR plus petit, rendre la caméra plus stable et la pointer directement vers le code QR avec de meilleures conditions d’éclairage.

L’ESP32-CAM a certaines limites de résolution et lutte contre le mouvement, vous devez donc le viser régulièrement au code QR. De plus, la détection des codes QR peut être difficile dans de mauvaises conditions d’éclairage, qu’elle soit trop brillante ou trop sombre.

Dépannage et conseils

Comme nous l’avons mentionné plus tôt, ce scanner de code QR utilise beaucoup de mémoire, donc votre ESP32-cam doit avoir du PSRAM. Voici quelques conseils qui ont été testés et devraient fonctionner avec cet exemple:

  • Caméra_model_ai_thinker
  • Caméra_model_wrover_kit
  • Caméra_model_esp_eye
  • Caméra_model_m5stack_psram
  • Caméra_model_m5stack_v2_psram
  • Caméra_model_m5stack_wide

Si vous obtenez l’une des erreurs suivantes, lisez notre guide de dépannage ESP32-cam: problèmes les plus courants résolus

  • Échec de la connexion à ESP32: Tourné en attente d’en-tête de paquet
  • Camera init a échoué avec l’erreur 0x20001 ou similaire
  • Détecteur Brownout ou Erreur de méditation Guru
  • Sketch Trop Big Error – Mauvais Schéma de partition sélectionné
  • La carte à Comx n’est pas disponible – le port com non sélectionné
  • Erreur PSRAM: le service GPIO ISR n’est pas installé

Emballage

Nous espérons que vous avez trouvé ce tutoriel utile et que vous pouvez l’utiliser dans vos projets. Si vous n’avez pas de carte ESP32-cam, vous pouvez cliquer ici pour en obtenir un.

Comme mentionné précédemment, nous avons d’autres tutoriels avec l’ESP32-cam que vous pouvez aimer:

Merci d’avoir lu.

Revivez l’histoire de Raspberry Pi dans cette vidéo :

  • Eyoyo Lecteur Codes Barres 1D 2D, Handheld Wired USB Douchette Barre
  • Tera Lecteur de Codes-Barres sans Fil et Filaire avec Indicateur de Niveau de Batterie Scanner de Codes-Barres Imprimés Numériques 1D 2D QR Douchette Portable Plug and Play, Modèle D5100