Inhoudsopgave:

Eenvoudige supermarkt-app met RFID RC-522 en Arduino Mega - Ajarnpa
Eenvoudige supermarkt-app met RFID RC-522 en Arduino Mega - Ajarnpa

Video: Eenvoudige supermarkt-app met RFID RC-522 en Arduino Mega - Ajarnpa

Video: Eenvoudige supermarkt-app met RFID RC-522 en Arduino Mega - Ajarnpa
Video: RFID in de mode - Voor een betrouwbaar voorraadbeheer 2024, November
Anonim
Eenvoudige supermarkt-app met RFID RC-522 en Arduino Mega
Eenvoudige supermarkt-app met RFID RC-522 en Arduino Mega

Het is goed om jullie hier weer te zien in mijn andere tutorial, hier ga ik je helpen om een eenvoudige supermarkt-applicatie te maken met RFID RC-522 en Arduino met Processing om een eenvoudige GUI te maken.

Opmerking: voer geen Arduino seriële monitor uit terwijl de verwerkingscode wordt uitgevoerd, omdat er poortconflicten zullen optreden omdat beide dezelfde poort moeten gebruiken

Jij hebt nodig:

  1. Arduino Mega of Arduino Uno (ik gebruikte Mega)
  2. RFID-RC522
  3. 7 mannelijke naar vrouwelijke jumperdraden
  4. Sommige ID-kaarten (optioneel)
  5. RFID-bibliotheek (must, link hieronder)
  6. Wamp-server
  7. IDE 2.2.1 verwerken (gebruik niet meer dan dat)
  8. BezierSQLib-0.2.0-bibliotheek voor verwerking (downloadlink hieronder)

Download vervolgens de onderstaande RFID-bibliotheek en voeg deze toe aan uw Arduino IDE door te klikken op Sketch->Include Library-> Add. Zip Library in file menu

Stap 1: Arduino en RFID RC-522 instellen (fysieke verbinding)

Arduino en RFID RC-522 instellen (fysieke verbinding)
Arduino en RFID RC-522 instellen (fysieke verbinding)

sluit de arduino eenvoudig aan met RFID-RC522 zoals weergegeven in de bovenstaande afbeelding. Waarschuwing: voer slechts 3,3 V aan, anders zal de module doorbranden

Pin Out voor Uno/Nano en 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

Stap 2: Arduino-code.,

Kopieer de onderstaande code en upload deze vervolgens naar uw 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 */ /* Inclusief de standaard Arduino SPI-bibliotheek */ #include /* Voeg de RFID-bibliotheek toe */ #include

/* Definieer de DIO die wordt gebruikt voor de SDA (SS) en RST (reset) pinnen. */

#define SDA_DIO 9 #define RESET_DIO 8

/* Maak een instantie van de RFID-bibliotheek */

RFID RC522 (SDA_DIO, RESET_DIO); int-lezer = 0;

ongeldige setup()

{ Serieel.begin (9600); /* Schakel de SPI-interface in */ SPI.begin(); /* Initialiseer de RFID-lezer */ RC522.init(); }

lege lus()

{ /* Tijdelijke lusteller */ byte i;

/* Is er een kaart gedetecteerd? */

if (RC522.isCard()) { /* Zo ja, vraag dan het serienummer aan */ RC522.readCardSerial();

/* Voer het serienummer uit naar de UART */ for(i = 0; i <= 2; i++) { Serial.print(RC522.serNum, DEC); //Serial.print(RC522.serNum, HEX); } Serieel.print(", "); Serial.print(reader++); Serieel.println(); } vertraging (1000); }

Stap 3: MySQL instellen

MySQL instellen
MySQL instellen
  1. Installeer Wamp-server voor MySQL en configureer deze om gegevens op te slaan (
  2. Voer wamp-server uit open MySQL-console
  3. selecteer database
  4. Maak vervolgens de tabel voor uw gegevens

maak tabel rfid(ID int(8), token int(1), naam varchar(20), bedrag int(4));

Bekijk nu deze link om te leren hoe u uw RFID-tagwaarde kunt krijgen en gebruik vervolgens de onderstaande code om gegevens in te voegen. vergeet niet de ID-waarde te vervangen door uw RFID-tagwaarde

invoegen in rfid-waarden (3756178, 1, 'Potlood', 20);

gebruik tokenwaarde als 1 zodat na het lezen van de tagwaarde voor de eerste keer deze automatisch verandert in 2, gebruik geen 0 voor tokenwaarde bij het lezen van een kaart die niet in DB is geplaatst, deze zal 0 toewijzen en deze vervolgens weergeven als onbekende kaart..

Stap 4: Verwerkings-IDE instellen

Verwerkings-IDE instellen
Verwerkings-IDE instellen
  1. Download en installeer de verwerkings-IDE 2.2.1
  2. Pak de hierboven gegeven ZIP uit naar MyDocuments/Processing/Bibliotheken
  3. Open nu de verwerkings-IDE en controleer of de bibliotheek correct is geïnstalleerd of niet zoals in de bovenstaande afbeelding
  4. Kopieer vervolgens de onderstaande code naar verwerking en noem deze zelf

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

// gemaakt 2005-05-10 door fjenett

// bijgewerkt fjenett 20080605

MySQL db-verbinding;

Tekenreeks s=" "; int Gewicht = 700; int Breedte=1200; lang identiteitsbewijs; int-token; int Bedrag; int Totaal=0;

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

int einde = 10; // het nummer 10 is ASCII voor linefeed (einde van serial.println), later zullen we dit zoeken om individuele berichten op te splitsen. String serial; // declareer een nieuwe string met de naam 'serial'. Een string is een reeks karakters (datatype bekend als "char") Seriële poort; Tekenreeks curr, vorige, Naam; PFont f;

ongeldige setup()

{ // maat (breedte, gewicht); maat (700, 500); f=createFont("Arial", 24, true); // dit voorbeeld gaat ervan uit dat u de // mysql-server lokaal uitvoert (op "localhost"). // // vervang --gebruikersnaam--, --wachtwoord-- door uw mysql-account. // String gebruiker = "root"; String pass = ""; // naam van de te gebruiken database // String database = "IOT_Database"; // naam van de tabel die zal worden gemaakt String table = ""; // verbind met de database van de server "localhost" dbconnection = new MySQL (this, "localhost", database, user, pass); poort = nieuw Serieel(this, Serial.list()[0], 9600); // initialiseren van het object door een poort en baudrate toe te wijzen (moet overeenkomen met die van Arduino) port.clear(); // functie van seriële bibliotheek die de eerste meting weggooit, voor het geval we in het midden van een string van Arduino begonnen te lezen serial = port.readStringUntil(end); // functie die de string van de seriële poort tot een println leest en vervolgens een string toewijst aan onze stringvariabele ('serial' genaamd) serial = null; } void draw() { background(255); tekstlettertype(f, 24); vul(0); text("Totaal bedrag Rs:", 400, 400); tekst(Totaal, 585, 400); gegevens(); while (port.available() > 0) { // zolang er gegevens uit de seriële poort komen, lees deze en sla ze op serial = port.readStringUntil(end); } if (serieel != null) { prev=curr; curr=a[1]; a = split (serieel, ', '); // een nieuwe array (genaamd 'a') die waarden opslaat in afzonderlijke cellen (gescheiden door komma's gespecificeerd in uw Arduino-programma) if((curr).equals(prev)) { // } else { //println("curr ", ker); //println("Vorige", vorige); functie(); } } }

ongeldige functie()

{ if (dbconnection.connect()) { // lees het nu terug // dbconnection.query("SELECT * from rfid where ID="+a[0]+""); while (dbconnection.next()) { ID = dbconnection.getInt("ID"); token = dbconnection.getInt("token"); Bedrag = dbconnection.getInt("Bedrag"); } if(token==0) { println("Ok"); tekstlettertype(f, 54); vullen (255, 0, 0, 160); text("Onbekend item gedetecteerd", 50, 300); vertraging (2000); } else if(token==1) { Totaal=Totaal+Bedrag; dbconnection.query("update rfid set token=2 waar ID="+a[0]+""); println("Ok"); tekstlettertype(f, 24); vullen (255, 0, 0, 160); //text ("Item toegevoegd", 10, 30); vertraging (1000); } else if(token==2) { Totaal=Totaalbedrag; dbconnection.query("update rfid set token=1 waar ID="+a[0]+""); println("Ok"); tekstlettertype(f, 24); vullen (255, 0, 0, 160); //text ("Item verwijderd", 10, 30); vertraging (1000); } else { } dbconnection.close(); } else { // verbinding mislukt! } }

ongeldige gegevens()

{ int-positie = 100; if (dbconnection.connect()) { dbconnection.query("SELECT * from rfid waar token=2"); while (dbconnection.next()) { Naam = dbconnection.getString("Naam"); Bedrag = dbconnection.getInt("Bedrag"); tekstlettertype(f, 24); vul (0, 0, 255, 160); tekst (Naam, 10, positie); vul (0, 0, 0, 160); tekst (Bedrag, 215, positie); positie=positie+30; } } dbverbinding.close(); }

Stap 5: Het programma uitvoeren

Het programma uitvoeren
Het programma uitvoeren
Het programma uitvoeren
Het programma uitvoeren
Het programma uitvoeren
Het programma uitvoeren
Het programma uitvoeren
Het programma uitvoeren

Voer het programma uit door op de knop Uitvoeren te klikken. Sluit het pop-upvenster niet. Sluiten stopt de uitvoering en ondervraag om opgeslagen gegevens in MySQL te bekijken…

Stap 6: Conclusie

Ik wil je bedanken voor het lezen van mijn tutorial. Ik zou het op prijs stellen als je het nuttig vindt en een like (favoriet) laat vallen of me iets vraagt, omdat het me gemotiveerd houdt om deze instructables te doen. voel je vrij om al je vragen te stellen die je wilt weten…

Gelukkig coderen Arduino…

Aanbevolen: