Inhaltsverzeichnis:
- Schritt 1: Einrichten von Arduino und RFID RC-522 (physikalische Verbindung)
- Schritt 2: Arduino-Code.,
- Schritt 3: MySQL einrichten
- Schritt 4: Einrichten der Verarbeitungs-IDE
- Schritt 5: Ausführen des Programms
- Schritt 6: Fazit
Video: Einfache Supermarkt-App mit RFID RC-522 und Arduino Mega - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:18
Es ist gut, Sie hier in meinem anderen Tutorial wiederzusehen. Hier werde ich Ihnen helfen, eine einfache Supermarktanwendung mit RFID RC-522 und Arduino mit Verarbeitung zu erstellen, um eine einfache GUI zu erstellen.
Hinweis: Führen Sie den seriellen Arduino-Monitor nicht aus, während Sie Verarbeitungscode ausführen, da ein Portkonflikt auftritt, da beide denselben Port verwenden müssen
Du brauchst:
- Arduino Mega oder Arduino Uno (ich habe Mega verwendet)
- RFID-RC522
- 7 männliche zu weibliche Überbrückungsdrähte
- Einige Ausweise (optional)
- RFID-Bibliothek (Muss, Link unten)
- Wamp-Server
- Verarbeitung von IDE 2.2.1 (verwenden Sie nicht mehr als das)
- BezierSQLib-0.2.0-Bibliothek zur Verarbeitung (Download-Link unten)
Laden Sie dann die unten stehende RFID-Bibliothek herunter und fügen Sie sie Ihrer Arduino-IDE hinzu, indem Sie auf Sketch-> Include Library-> Add. Zip Library im Dateimenü klicken
Schritt 1: Einrichten von Arduino und RFID RC-522 (physikalische Verbindung)
Verbinden Sie das Arduino einfach mit RFID-RC522 wie im obigen Bild gezeigt. Achtung: nur 3,3 V liefern, sonst brennt das Modul durch
Pin Out für Uno/Nano und Mega
RC522 MODUL 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
Schritt 2: Arduino-Code.,
Kopieren Sie den folgenden Code und laden Sie ihn dann auf Ihren Arduino hoch
/*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 */ /* Beinhaltet die Standard Arduino SPI Bibliothek */ #include /* Füge die RFID-Bibliothek ein */ #include
/* Definiere das DIO, das für die SDA (SS) und RST (Reset) Pins verwendet wird. */
#define SDA_DIO 9 #define RESET_DIO 8
/* Erstellen Sie eine Instanz der RFID-Bibliothek */
RFID RC522 (SDA_DIO, RESET_DIO); int-Leser=0;
Void-Setup ()
{ Serial.begin (9600); /* SPI-Schnittstelle aktivieren */ SPI.begin(); /* RFID-Leser initialisieren */ RC522.init(); }
Leere Schleife ()
{ /* Temporärer Schleifenzähler */ Byte i;
/* Wurde eine Karte erkannt? */
if (RC522.isCard()) { /* Wenn ja, dann erhalte die Seriennummer */ RC522.readCardSerial();
/* Seriennummer an den UART ausgeben */ for(i = 0; i <= 2; i++) { Serial.print(RC522.serNum, DEC); //Serial.print (RC522.serNum, HEX); } Serial.print (, "); Serial.print (Leser ++); Serial.println(); } Verzögerung (1000); }
Schritt 3: MySQL einrichten
- Installieren Sie den Wamp-Server für MySQL und konfigurieren Sie ihn zum Speichern von Daten (
- Führen Sie den Wamp-Server aus, öffnen Sie die MySQL-Konsole
- Datenbank auswählen
- Dann erstellen Sie die Tabelle für Ihre Daten
Tabelle erstellen rfid(ID int(8), Token int(1), Name varchar(20), Betrag int(4));
Sehen Sie sich nun diesen Link an, um zu erfahren, wie Sie Ihren RFID-Tag-Wert erhalten, und verwenden Sie dann den folgenden Code, um Daten einzufügen. Vergessen Sie nicht, den ID-Wert durch Ihren RFID-Tag-Wert zu ersetzen
in rfid-Werte einfügen (3756178, 1, 'Bleistift', 20);
Verwenden Sie den Token-Wert als 1, damit sich der Tag-Wert nach dem ersten Lesen automatisch auf 2 ändert. Verwenden Sie keine 0 für den Token-Wert, wenn Sie eine Karte lesen, die nicht in die DB eingesteckt ist, weist sie 0 zu und zeigt sie als Unbekannte Karte an..
Schritt 4: Einrichten der Verarbeitungs-IDE
- Laden Sie die Verarbeitungs-IDE 2.2.1 herunter und installieren Sie sie
- Extrahieren Sie die oben angegebene ZIP nach MyDocuments/Processing/Libraries
- Öffnen Sie nun die Verarbeitungs-IDE und überprüfen Sie, ob die Bibliothek richtig installiert ist oder nicht wie im obigen Bild
- Dann kopiere den untenstehenden Code in die Verarbeitung und benenne ihn selbst
de.bezier.data.sql.* importieren;Verarbeitung.serial importieren.*; //java.math. BigInteger importieren;
// erstellt 2005-05-10 von fjenett
// aktualisierte fjenett 20080605
MySQL-Datenbankverbindung;
Zeichenfolge s=" "; int-Gewicht = 700; int Wwidth=1200; lange ID; int-Token; int Betrag; int Gesamt=0;
String a={"NULL", "NULL"};
int end = 10; // die Zahl 10 ist ASCII für Zeilenvorschub (Ende von serial.println), später werden wir danach suchen, um einzelne Nachrichten aufzubrechen String serial; // einen neuen String namens 'serial' deklarieren. Ein String ist eine Folge von Zeichen (Datentyp bekannt als "char") Serieller Port; String curr, prev, Name; PFont f;
Void-Setup ()
{ // Größe (Bbreite, Gewicht); Größe (700, 500); f=createFont("Arial", 24, true); // In diesem Beispiel wird davon ausgegangen, dass Sie den // mysql-Server lokal ausführen (auf "localhost"). // // ersetze --username--, --password-- durch deinen mysql-account. // String user = "root"; String pass = ""; // Name der zu verwendenden Datenbank // String database = "IOT_Database"; // Name der zu erstellenden Tabelle String table = ""; // Verbindung zur Datenbank des Servers "localhost" dbconnection = new MySQL(this, "localhost", database, user, pass); port = new Serial (dies, Serial.list () [0], 9600); // Initialisieren des Objekts durch Zuweisen eines Ports und einer Baudrate (muss mit der von Arduino übereinstimmen) port.clear(); // Funktion aus der seriellen Bibliothek, die die erste Lesung auswirft, falls wir mitten in einer Zeichenfolge von Arduino begonnen haben serial = port.readStringUntil (end); // Funktion, die den String vom seriellen Port bis zu einem println liest und dann String unserer String-Variablen (genannt 'serial') zuweist serial = null; aufrechtzuerhalten. Void Draw () { Hintergrund (255); textFont(f, 24); füllen(0); text("Gesamtbetrag Rs:", 400, 400); Text(Gesamt, 585, 400); Daten(); while (port.available () > 0) {//Solange Daten von der seriellen Schnittstelle kommen, lesen und speichern Sie sie serial = port.readStringUntil (end); } if (seriell != null) { prev=curr; curr=a[1]; a = split(seriell, ', '); // ein neues Array (genannt 'a'), das Werte in separaten Zellen speichert (getrennt durch Kommas, die in Ihrem Arduino-Programm angegeben sind) if((curr).equals(prev)) { // } else { //println("curr ", curr); //println("Vorher", Vorher); Funktion(); } } }
Leere Funktion ()
{ if (dbconnection.connect()) { // jetzt wieder auslesen // dbconnection.query("SELECT * from rfid where ID="+a[0]+""); while (dbconnection.next()) { ID = dbconnection.getInt("ID"); Token = dbconnection.getInt("Token"); Betrag = dbconnection.getInt("Betrag"); } if(token==0) { println("Ok"); textFont(f, 54); füllen (255, 0, 0, 160); text("Unbekanntes Element erkannt", 50, 300); Verzögerung (2000); aufrechtzuerhalten. Sonst if (token = = 1) { Gesamt = Gesamt + Betrag; dbconnection.query("update rfid set token=2 where ID="+a[0]+""); println("OK"); textFont(f, 24); füllen (255, 0, 0, 160); //text("Element hinzugefügt", 10, 30); Verzögerung (1000); } else if(token==2) { Total=Total-Amount; dbconnection.query("update rfid set token=1 where ID="+a[0]+""); println("OK"); textFont(f, 24); füllen (255, 0, 0, 160); //text("Gegenstand entfernt", 10, 30); Verzögerung (1000); } else {} dbconnection.close(); } else { // Verbindung fehlgeschlagen! } }
Leere Daten()
{ int-Position = 100; if (dbconnection.connect()) { dbconnection.query("SELECT * from rfid where token=2"); while (dbconnection.next()) { Name = dbconnection.getString("Name"); Betrag = dbconnection.getInt("Betrag"); textFont(f, 24); füllen (0, 0, 255, 160); text(Name, 10, Position); füllen (0, 0, 0, 160); text(Betrag, 215, Position); Position=Position+30; } } dbconnection.close(); }
Schritt 5: Ausführen des Programms
Führen Sie das Programm aus, indem Sie auf die Schaltfläche Ausführen klicken. Schließen Sie das Popup-Fenster nicht.
Schritt 6: Fazit
Ich möchte Ihnen danken, dass Sie mein Tutorial gelesen haben. Ich würde mich freuen, wenn Sie es nützlich finden und ein Like (Favorit) fallen lassen oder mich etwas fragen, da es mich motiviert, diese instructables zu tun. Fühlen Sie sich frei, alle Fragen zu stellen, die Sie wissen müssen…
Fröhliches Programmieren von Arduino…
Empfohlen:
So erstellen Sie eine einfache Website mit Notepad – wikiHow
Wie erstelle ich eine einfache Website mit Notepad: Hat sich jemand gefragt, wie ich aus einem einfachen Schreibprogramm eine Website erstelle? Website nur mit Notizblock
So erstellen Sie Ihre erste einfache Software mit Python – wikiHow
So erstellen Sie Ihre erste einfache Software mit Python: Hallo, willkommen zu diesem Instructables. Hier werde ich erzählen, wie Sie Ihre eigene Software erstellen. Ja, wenn Sie eine Idee haben… aber wissen, wie Sie neue Dinge umsetzen können oder daran interessiert sind, Neues zu schaffen, dann ist es das Richtige für Sie
So erstellen Sie eine einfache Webseite mit Klammern für Anfänger – wikiHow
So erstellen Sie eine einfache Webseite mit Klammern für Anfänger: EinführungDie folgenden Anweisungen bieten eine Schritt-für-Schritt-Anleitung zum Erstellen einer Webseite mit Klammern. Brackets ist ein Quellcode-Editor mit Schwerpunkt auf Webentwicklung. Es wurde von Adobe Systems erstellt und ist eine kostenlose Open-Source-Software, die
So erstellen Sie eine schlanke und einfache Website mit Bootstrap 4: 7 Schritte
So erstellen Sie eine schlanke und einfache Website mit Bootstrap 4: Der Zweck dieses Instructable ist es, denjenigen, die mit der Programmierung - HTML oder anders - vertraut sind, eine einfache Einführung in die Erstellung eines Online-Portfolios mit Bootstrap 4 zu geben. Ich werde Sie durch die Ersteinrichtung führen der Website, wie man ein paar erstellt
Einfache Anleitung zum Meistern von AutoCAD MEP (Ducting): 27 Schritte (mit Bildern)
Einfache Anleitung zum Meistern von AutoCAD MEP (Ducting): AutoCAD MEP scheint sich nicht viel von AutoCAD zu unterscheiden, aber wenn es um das Zeichnen von Mechanik, Elektrik & Klempnerdienste (MEP) können Sie definitiv viel Zeit und Mühe sparen - vorausgesetzt, Sie sind mit den Grundlagen gut ausgestattet