Πίνακας περιεχομένων:

Απλή εφαρμογή σούπερ μάρκετ με χρήση RFID RC-522 και Arduino Mega: 6 βήματα
Απλή εφαρμογή σούπερ μάρκετ με χρήση RFID RC-522 και Arduino Mega: 6 βήματα

Βίντεο: Απλή εφαρμογή σούπερ μάρκετ με χρήση RFID RC-522 και Arduino Mega: 6 βήματα

Βίντεο: Απλή εφαρμογή σούπερ μάρκετ με χρήση RFID RC-522 και Arduino Mega: 6 βήματα
Βίντεο: Πώς θα φτιάξετε μόνοι σας μια απλή εφαρμογή Εσόδων-Εξόδων με το Excel! 2024, Ιούλιος
Anonim
Απλή εφαρμογή σούπερ μάρκετ χρησιμοποιώντας RFID RC-522 και Arduino Mega
Απλή εφαρμογή σούπερ μάρκετ χρησιμοποιώντας RFID RC-522 και Arduino Mega

Χαίρομαι που σας βλέπω ξανά εδώ στο άλλο μου σεμινάριο, εδώ θα σας βοηθήσω να δημιουργήσετε μια απλή εφαρμογή σούπερ μάρκετ χρησιμοποιώντας RFID RC-522 και Arduino με επεξεργασία για να δημιουργήσετε απλό GUI.

Σημείωση: μην εκτελείτε σειριακή οθόνη Arduino κατά την εκτέλεση κώδικα επεξεργασίας, επειδή θα προκύψει διένεξη θύρας, καθώς και οι δύο πρέπει να χρησιμοποιούν την ίδια θύρα

Χρειάζεσαι:

  1. Arduino Mega ή Arduino Uno (χρησιμοποίησα Mega)
  2. RFID-RC522
  3. 7 καλώδια από jumper αρσενικά προς θηλυκά
  4. Ορισμένα δελτία ταυτότητας (προαιρετικά)
  5. Βιβλιοθήκη RFID (πρέπει, παρακάτω σύνδεσμος)
  6. Διακομιστής Wamp
  7. Επεξεργασία IDE 2.2.1 (μην χρησιμοποιείτε μεγαλύτερο από αυτό)
  8. Βιβλιοθήκη BezierSQLib-0.2.0 για επεξεργασία (σύνδεσμος λήψης παρακάτω)

Στη συνέχεια, κατεβάστε την παρακάτω βιβλιοθήκη RFID και προσθέστε την στο Arduino IDE κάνοντας κλικ στην επιλογή Sketch-> Include Library-> Add. Zip Library στο μενού αρχείων

Βήμα 1: Ρύθμιση Arduino και RFID RC-522 (Φυσική σύνδεση)

Ρύθμιση Arduino και RFID RC-522 (Φυσική σύνδεση)
Ρύθμιση Arduino και RFID RC-522 (Φυσική σύνδεση)

απλά συνδέστε το arduino με το RFID-RC522 όπως φαίνεται στην παραπάνω εικόνα. Προσοχή: τροφοδοτήστε μόνο 3,3V διαφορετικά η μονάδα θα καεί

Pin Out για Uno/Nano και Mega

RC522 MODULE 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

Βήμα 2: Κωδικός Arduino.,

Αντιγράψτε τον παρακάτω κώδικα και, στη συνέχεια, ανεβάστε τον στο Arduino σας

/*PINOUT: RC522 MODULE 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*//*Συμπεριλάβετε την τυπική βιβλιοθήκη Arduino SPI */ #include/ *Συμπεριλάβετε τη βιβλιοθήκη RFID */ #include

/* Ορίστε το DIO που χρησιμοποιείται για τις καρφίτσες SDA (SS) και RST (επαναφορά). */

#define SDA_DIO 9 #define RESET_DIO 8

/ * Δημιουργήστε ένα παράδειγμα της βιβλιοθήκης RFID */

RFID RC522 (SDA_DIO, RESET_DIO); int αναγνώστης = 0;

void setup ()

{Serial.begin (9600); / * Ενεργοποιήστε τη διεπαφή SPI */ SPI.begin (); / * Αρχικοποιήστε τον αναγνώστη RFID */ RC522.init (); }

κενός βρόχος ()

{ / * Προσωρινός μετρητής βρόχου * / byte i;

/* Εντοπίστηκε κάρτα; */

if (RC522.isCard ()) { / * Εάν ναι, τότε λάβετε τον σειριακό αριθμό του * / RC522.readCardSerial ();

/ * Εξάγετε τον σειριακό αριθμό στο UART */ για (i = 0; i <= 2; i ++) {Serial.print (RC522.serNum , DEC); //Serial.print(RC522.serNum , HEX); } Serial.print (","); Serial.print (αναγνώστη ++); Serial.println (); } καθυστέρηση (1000); }

Βήμα 3: Ρύθμιση της MySQL

Ρύθμιση MySQL
Ρύθμιση MySQL
  1. Εγκαταστήστε τον διακομιστή Wamp για MySQL και ρυθμίστε τον ώστε να αποθηκεύει δεδομένα (
  2. Εκτελέστε την κονσόλα wamp serveropen MySQL
  3. επιλέξτε βάση δεδομένων
  4. Στη συνέχεια, δημιουργήστε τον πίνακα για τα δεδομένα σας

Δημιουργία πίνακα rfid (ID int (8), διακριτικό int (1), Όνομα varchar (20), Ποσό int (4)).

Τώρα δείτε αυτόν τον σύνδεσμο για να μάθετε πώς μπορείτε να λάβετε την τιμή της ετικέτας RFID και, στη συνέχεια, χρησιμοποιήστε τον παρακάτω κώδικα για να εισαγάγετε δεδομένα. Μην ξεχάσετε να αντικαταστήσετε την τιμή ταυτότητας με την τιμή της ετικέτας RFID

εισαγωγή σε τιμές rfid (3756178, 1, «Μολύβι», 20).

χρησιμοποιήστε την τιμή διακριτικού ως 1, έτσι ώστε μετά την πρώτη ανάγνωση της τιμής ετικέτας να αλλάξει αυτόματα σε 2, μην χρησιμοποιήσετε το 0 για τιμή συμβολικού κατά την ανάγνωση της κάρτας που δεν έχει εισαχθεί στο DB, θα εκχωρήσει 0 και στη συνέχεια θα εμφανιστεί ως Άγνωστη κάρτα. Το

Βήμα 4: Ρύθμιση επεξεργασίας IDE

Ρύθμιση επεξεργασίας IDE
Ρύθμιση επεξεργασίας IDE
  1. Κατεβάστε και εγκαταστήστε το Processing IDE 2.2.1
  2. Εξαγάγετε το παραπάνω δεδομένο ZIP στο MyDocuments/Processing/Libraries
  3. Τώρα ανοίξτε το IDE επεξεργασίας και ελέγξτε ότι η βιβλιοθήκη έχει εγκατασταθεί σωστά ή όχι όπως στην παραπάνω εικόνα
  4. Στη συνέχεια, αντιγράψτε τον παρακάτω κώδικα στην επεξεργασία και ονομάστε τον δικό σας

import de.bezier.data.sql.*; import processing.serial.*; // εισαγωγή java.math. BigInteger;

// δημιουργήθηκε 2005-05-10 από τον fjenett

// ενημερωμένο fjenett 20080605

MySQL dbconnection?

Χορδή s = ""; int Βάρος = 700; int Πλάτος = 1200; μεγάλη ταυτότητα? int διακριτικό? int Ποσό; int Σύνολο = 0;

String a = {"NULL", "NULL"};

int τέλος = 10; // ο αριθμός 10 είναι ASCII για linefeed (τέλος του serial.println), αργότερα θα το αναζητήσουμε για να διαλύσουμε μεμονωμένα μηνύματα String serial. // δηλώστε μια νέα συμβολοσειρά που ονομάζεται "σειριακή". Μια συμβολοσειρά είναι μια ακολουθία χαρακτήρων (τύπος δεδομένων γνωστός ως "char") Σειριακή θύρα. Curr curr, prev, Name; PFont f;

void setup ()

{// μέγεθος (Πλάτος, Βάρος); μέγεθος (700, 500). f = createFont ("Arial", 24, true); // αυτό το παράδειγμα υποθέτει ότι εκτελείτε τον διακομιστή // mysql τοπικά (στο "localhost"). // // αντικαταστήστε --username--, --password-- με τον λογαριασμό σας mysql. // String user = "root"; String pass = ""; // όνομα της βάσης δεδομένων που θα χρησιμοποιηθεί // String database = "IOT_Database"; // όνομα πίνακα που θα δημιουργηθεί String table = ""; // σύνδεση με βάση δεδομένων του διακομιστή "localhost" dbconnection = new MySQL (αυτό, "localhost", βάση δεδομένων, χρήστης, πάσο); θύρα = νέο Σειριακό (αυτό, Serial.list () [0], 9600); // εκκίνηση του αντικειμένου με εκχώρηση θύρας και ρυθμού baud (πρέπει να ταιριάζει με αυτό του Arduino) θύρα. Clear (); // συνάρτηση από σειριακή βιβλιοθήκη που ρίχνει την πρώτη ανάγνωση, σε περίπτωση που ξεκινήσαμε να διαβάζουμε στη μέση μιας συμβολοσειράς από το Arduino serial = port.readStringUntil (τέλος); // συνάρτηση που διαβάζει τη συμβολοσειρά από σειριακή θύρα μέχρι println και στη συνέχεια εκχωρεί συμβολοσειρά στη μεταβλητή συμβολοσειράς μας (που ονομάζεται «σειριακή») σειριακή = null; } void draw () {background (255); textFont (f, 24); συμπληρώστε (0)? κείμενο ("Συνολικό ποσό Rs:", 400, 400); κείμενο (Σύνολο, 585, 400); δεδομένα(); while (port.available ()> 0) {// εφόσον υπάρχουν δεδομένα που προέρχονται από σειριακή θύρα, διαβάστε το και αποθηκεύστε το σειριακό = port.readStringUntil (τέλος); } if (σειριακό! = null) {prev = curr; curr = a [1]; a = split (σειριακό, ','); // ένας νέος πίνακας (που ονομάζεται "α") που αποθηκεύει τιμές σε ξεχωριστά κελιά (χωρίζονται με κόμματα που καθορίζονται στο πρόγραμμα Arduino σας) εάν ((curr). ισούται (προηγούμενο)) {//} else {// println ("curr ", curr); // println ("Προηγούμενο", προηγούμενο); λειτουργία(); }}}

κενή συνάρτηση ()

{if (dbconnection.connect ()) {// τώρα διαβάστε το ξανά // dbconnection.query ("SELECT * from rfid where ID ="+a [0]+""); while (dbconnection.next ()) {ID = dbconnection.getInt ("ID"); token = dbconnection.getInt ("token"); Ποσό = dbconnection.getInt ("Ποσό"); } if (διακριτικό == 0) {println ("Ok"); textFont (f, 54); γέμισμα (255, 0, 0, 160). κείμενο ("Άγνωστο στοιχείο εντοπίστηκε", 50, 300). καθυστέρηση (2000). } else if (διακριτικό == 1) {Σύνολο = Σύνολο+Ποσό; dbconnection.query ("update rfid set token = 2 where ID ="+a [0]+""); println ("Ok"); textFont (f, 24); γέμισμα (255, 0, 0, 160). // κείμενο ("Στοιχείο προστέθηκε", 10, 30); καθυστέρηση (1000)? } else if (διακριτικό == 2) {Σύνολο = Συνολικό ποσό; dbconnection.query ("update rfid set token = 1 where ID ="+a [0]+""); println ("Ok"); textFont (f, 24); γέμισμα (255, 0, 0, 160); // κείμενο ("Το στοιχείο αφαιρέθηκε", 10, 30); καθυστέρηση (1000)? } else {} dbconnection.close (); } else {// η σύνδεση απέτυχε! }}

άκυρα δεδομένα ()

{int position = 100; if (dbconnection.connect ()) {dbconnection.query ("SELECT * from rfid where token = 2"); while (dbconnection.next ()) {Name = dbconnection.getString ("Όνομα"); Ποσό = dbconnection.getInt ("Ποσό"); textFont (f, 24); γέμισμα (0, 0, 255, 160). κείμενο (Όνομα, 10, θέση). γέμισμα (0, 0, 0, 160); κείμενο (Ποσό, 215, θέση). θέση = θέση+30; }} dbconnection.close (); }

Βήμα 5: Εκτέλεση του προγράμματος

Εκτέλεση του Προγράμματος
Εκτέλεση του Προγράμματος
Εκτέλεση του Προγράμματος
Εκτέλεση του Προγράμματος
Εκτέλεση του Προγράμματος
Εκτέλεση του Προγράμματος
Εκτέλεση του Προγράμματος
Εκτέλεση του Προγράμματος

Εκτελέστε το πρόγραμμα κάνοντας κλικ στο κουμπί εκτέλεσης μην κλείσετε το αναδυόμενο παράθυρο κλείνοντας θα σταματήσει η εκτέλεση και κάτω από το ερώτημα για να δείτε αποθηκευμένα δεδομένα στο MySQL…

Βήμα 6: Συμπέρασμα

Θα ήθελα να σας ευχαριστήσω που διαβάσατε το σεμινάριο μου. Θα το εκτιμούσα αν το βρήκατε χρήσιμο και μου δώσετε ένα like (αγαπημένο) ή με ρωτήσετε οτιδήποτε, καθώς αυτό μου δίνει κίνητρο να κάνω αυτές τις οδηγίες. μη διστάσετε να κάνετε οποιεσδήποτε ερωτήσεις πρέπει να γνωρίζετε…

Happy Coding Arduino…

Συνιστάται: