Table des matières:

Application de supermarché simple utilisant RFID RC-522 et Arduino Mega : 6 étapes
Application de supermarché simple utilisant RFID RC-522 et Arduino Mega : 6 étapes

Vidéo: Application de supermarché simple utilisant RFID RC-522 et Arduino Mega : 6 étapes

Vidéo: Application de supermarché simple utilisant RFID RC-522 et Arduino Mega : 6 étapes
Vidéo: ESP32 - Lecteur RFID Grove Seeedstudio 125 kHz UART, Pratique, Théorie : Rétromodulation/backscatter 2024, Juillet
Anonim
Application de supermarché simple utilisant RFID RC-522 et Arduino Mega
Application de supermarché simple utilisant RFID RC-522 et Arduino Mega

C'est bon de vous revoir ici sur mon autre tutoriel, ici je vais vous aider à créer une application de supermarché simple en utilisant RFID RC-522 et Arduino avec traitement pour créer une interface graphique simple.

Remarque: n'exécutez pas le moniteur série Arduino pendant l'exécution du code de traitement car un conflit de port se produira car les deux doivent utiliser le même port

Vous avez besoin:

  1. Arduino Mega ou Arduino Uno (j'ai utilisé Mega)
  2. RFID-RC522
  3. 7 fils de liaison mâle à femelle
  4. Certaines cartes d'identité (facultatif)
  5. Bibliothèque RFID (doit, lien ci-dessous)
  6. Serveur Wamp
  7. Traitement IDE 2.2.1 (n'utilisez pas plus que cela)
  8. Bibliothèque BezierSQLib-0.2.0 pour le traitement (Lien de téléchargement ci-dessous)

Ensuite, téléchargez la bibliothèque RFID ci-dessous et ajoutez-la à votre IDE Arduino en cliquant sur Sketch-> Inclure la bibliothèque-> Ajouter la bibliothèque. Zip dans le menu Fichier

Étape 1: Configuration d'Arduino et RFID RC-522 (Connexion physique)

Configuration d'Arduino et RFID RC-522 (Connexion physique)
Configuration d'Arduino et RFID RC-522 (Connexion physique)

connectez simplement l'arduino avec RFID-RC522 comme indiqué dans l'image ci-dessus. Attention: n'alimentez que 3,3 V sinon le module s'éteindra

Brochage pour Uno/Nano et Mega

MODULE RC522 Uno/Nano MEGASDA D10 D9 SCK D13 D52 MOSI D11 D51 MISO D12 D50 IRQ N/A N/A GND GND GND RST D9 D8 3.3V 3.3V 3.3V

Étape 2: Code Arduino.,

Copiez le code ci-dessous puis téléchargez-le sur votre Arduino

/*PINOUT: MODULE RC522 Uno/Nano MEGA SDA D10 D9 SCK D13 D52 MOSI D11 D51 MISO D12 D50 IRQ N/AN/A GND GND GND RST D9 D8 3.3V 3.3V 3.3V */ /* Inclut la bibliothèque standard Arduino SPI */ #include /* Inclut la bibliothèque RFID */ #include

/* Définit la DIO utilisée pour les broches SDA (SS) et RST (reset). */

#définir SDA_DIO 9 #définir RESET_DIO 8

/* Créer une instance de la bibliothèque RFID */

RFID RC522 (SDA_DIO, RESET_DIO); lecteur int=0;

void setup()

{ Serial.begin(9600); /* Activer l'interface SPI */ SPI.begin(); /* Initialiser le lecteur RFID */ RC522.init(); }

boucle vide()

{ /* Compteur de boucle temporaire */ byte i;

/* Une carte a-t-elle été détectée ? */

if (RC522.isCard()) { /* Si c'est le cas, obtenez son numéro de série */ RC522.readCardSerial();

/* Sortir le numéro de série vers l'UART */ for(i = 0; i <= 2; i++) { Serial.print(RC522.serNum, DEC); //Serial.print(RC522.serNum, HEX); } Serial.print(", "); Serial.print(reader++); Serial.println(); } retard(1000); }

Étape 3: Configuration de MySQL

Configuration de MySQL
Configuration de MySQL
  1. Installez le serveur Wamp pour MySQL et configurez-le pour stocker des données (
  2. Exécutez wamp serveropen MySQL console
  3. sélectionner la base de données
  4. Créez ensuite le tableau pour vos données

créer une table rfid(ID int(8), jeton int(1), Nom varchar(20), Montant int(4));

Maintenant, consultez ce lien pour savoir comment obtenir la valeur de votre étiquette RFID, puis utilisez le code ci-dessous pour insérer des données. N'oubliez pas de remplacer la valeur d'identification par la valeur de votre étiquette RFID

insérer dans les valeurs rfid (3756178, 1, 'Crayon', 20);

utilisez la valeur du jeton comme 1 pour qu'après avoir lu la valeur de la balise pour la première fois, elle passe automatiquement à 2, n'utilisez pas 0 pour la valeur du jeton lors de la lecture d'une carte qui n'est pas insérée dans la base de données, elle attribuera 0 puis l'affichera comme carte inconnue..

Étape 4: Configuration de l'IDE de traitement

Configuration de l'IDE de traitement
Configuration de l'IDE de traitement
  1. Téléchargez et installez l'IDE de traitement 2.2.1
  2. Extrayez le ZIP donné ci-dessus dans MyDocuments/Processing/Libraries
  3. Ouvrez maintenant l'IDE de traitement et vérifiez que la bibliothèque est installée correctement ou non comme dans l'image ci-dessus
  4. Copiez ensuite le code ci-dessous dans le traitement et nommez-le vous-même

import de.bezier.data.sql.*;import processing.serial.*; //importer java.math. BigInteger;

// créé le 2005-05-10 par fjenett

// mise à jour fjenett 20080605

connexion à la base de données MySQL;

Chaîne s=" "; entier Poids=700; int Largeur=1200; identification longue; jeton entier; int Montant; int Total=0;

Chaîne a={"NULL", "NULL"};

fin int = 10; // le nombre 10 est ASCII pour le saut de ligne (fin de serial.println), plus tard nous chercherons cela pour séparer les messages individuels String serial; // déclare une nouvelle chaîne appelée 'serial'. Une chaîne est une séquence de caractères (le type de données est connu sous le nom de « char ») Port série; Chaîne curr, prev, Name; PFont f;

void setup()

{ // taille (largeur, poids); taille (700, 500); f=createFont("Arial", 24, true); // cet exemple suppose que vous exécutez le // serveur mysql localement (sur "localhost"). // // remplacez --username--, --password-- par votre compte mysql. // Chaîne user = "root"; Passe de chaîne = ""; // nom de la base de données à utiliser // String database = "IOT_Database"; // nom de la table qui sera créée String table = ""; // connexion à la base de données du serveur "localhost" dbconnection = new MySQL(this, "localhost", database, user, pass); port = new Serial(this, Serial.list()[0], 9600); // initialiser l'objet en attribuant un port et un débit en bauds (doit correspondre à celui d'Arduino) port.clear(); // fonction de la bibliothèque série qui rejette la première lecture, au cas où nous aurions commencé à lire au milieu d'une chaîne d'Arduino serial = port.readStringUntil(end); // fonction qui lit la chaîne du port série jusqu'à un println, puis attribue une chaîne à notre variable de chaîne (appelée 'série') serial = null; } void draw() { background(255); texteFont(f, 24); remplir(0); text("Montant total Rs:", 400, 400); texte (Total, 585, 400); Les données(); while (port.available() > 0) { //tant qu'il y a des données provenant du port série, lisez-les et stockez-les serial = port.readStringUntil(end); } if (série != null) { prev=curr; cours=a[1]; a = split(série, ', '); // un nouveau tableau (appelé 'a') qui stocke les valeurs dans des cellules séparées (séparées par des virgules spécifiées dans votre programme Arduino) if((curr).equals(prev)) { // } else { //println("curr ", cours); //println("Précédent", préc); fonction(); } } }

fonction vide()

{ if (dbconnection.connect()) { // maintenant le relire // dbconnection.query("SELECT * from rfid where ID="+a[0]+""); while (dbconnection.next()) { ID = dbconnection.getInt("ID"); jeton = dbconnection.getInt("jeton"); Montant = dbconnection.getInt("Montant"); } if(jeton==0) { println("Ok"); texteFont(f, 54); remplir (255, 0, 0, 160); text("Élément inconnu détecté", 50, 300); retard (2000); } else if(token==1) { Total=Total+Montant; dbconnection.query("mettre à jour le jeton rfid défini=2 où ID="+a[0]+""); println("D'accord"); texteFont(f, 24); remplir (255, 0, 0, 160); //text("Élément ajouté", 10, 30); retard(1000); } else if(token==2) { Total=Montant total; dbconnection.query("mettre à jour le jeton rfid défini=1 où ID="+a[0]+""); println("D'accord"); texteFont(f, 24); remplir (255, 0, 0, 160); //text("Élément supprimé", 10, 30); retard(1000); } else { } dbconnection.close(); } else { // la connexion a échoué ! } }

données vides()

{ position int=100; if (dbconnection.connect()) { dbconnection.query("SELECT * from rfid where token=2"); while (dbconnection.next()) { Nom = dbconnection.getString("Nom"); Montant = dbconnection.getInt("Montant"); texteFont(f, 24); remplir (0, 0, 255, 160); texte(Nom, 10, poste); remplir (0, 0, 0, 160); texte(Montant, 215, position); position=position+30; } } dbconnexion.close(); }

Étape 5: Exécuter le programme

Exécution du programme
Exécution du programme
Exécution du programme
Exécution du programme
Exécution du programme
Exécution du programme
Exécution du programme
Exécution du programme

Exécutez le programme en cliquant sur le bouton Exécuter ne fermez pas la fermeture de la fenêtre contextuelle arrêtera l'exécution et ci-dessous la requête pour afficher les données stockées dans MySQL…

Étape 6: Conclusion

Je tiens à vous remercier d'avoir lu mon tutoriel. J'apprécierais que vous le trouviez utile et que vous laissiez un like (favori) ou que vous me demandiez n'importe quoi car cela me motive à faire ces instructables. n'hésitez pas à poser toutes les questions que vous avez besoin de savoir…

Bon codage Arduino…

Conseillé: