Sommario:
- Passaggio 1: configurazione di Arduino e RFID RC-522 (connessione fisica)
- Passaggio 2: codice Arduino.,
- Passaggio 3: configurazione di MySQL
- Passaggio 4: configurazione dell'IDE di elaborazione
- Passaggio 5: esecuzione del programma
- Passaggio 6: conclusione
Video: Semplice app per supermercati che utilizza RFID RC-522 e Arduino Mega: 6 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
È bello rivedervi ragazzi qui nel mio altro tutorial, qui vi aiuterò a creare una semplice applicazione da supermercato usando RFID RC-522 e Arduino con Processing per creare una semplice GUI.
Nota: non eseguire il monitor seriale Arduino durante l'esecuzione del codice di elaborazione perché si verificherà un conflitto di porte poiché entrambi devono utilizzare la stessa porta
Hai bisogno:
- Arduino Mega o Arduino Uno (ho usato Mega)
- RFID-RC522
- 7 ponticelli maschio-femmina
- Alcune carte d'identità (opzionali)
- Libreria RFID (obbligatorio, link sotto)
- Wamp server
- Elaborazione IDE 2.2.1 (non usare maggiore di quello)
- Libreria BezierSQLib-0.2.0 per l'elaborazione (link per il download di seguito)
Quindi scarica la libreria RFID sottostante e aggiungila al tuo IDE Arduino facendo clic su Schizzo-> Includi libreria-> Aggiungi libreria. Zip nel menu file
Passaggio 1: configurazione di Arduino e RFID RC-522 (connessione fisica)
è sufficiente collegare l'arduino con RFID-RC522 come mostrato nell'immagine sopra. Attenzione: fornire solo 3,3 V altrimenti il modulo si brucerà
Pin Out per Uno/Nano e Mega
MODULO 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
Passaggio 2: codice Arduino.,
Copia il codice sottostante e caricalo sul tuo 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 */ /* Include la libreria standard Arduino SPI */ #include /* Include la libreria RFID */ #include
/* Definisce il DIO utilizzato per i pin SDA (SS) e RST (reset). */
#define SDA_DIO 9 #define RESET_DIO 8
/* Crea un'istanza della libreria RFID */
RFID RC522(SDA_DIO, RESET_DIO); int lettore=0;
configurazione nulla()
{ Serial.begin(9600); /* Abilita l'interfaccia SPI */ SPI.begin(); /* Inizializza il lettore RFID */ RC522.init(); }
ciclo vuoto()
{ /* Contatore loop temporaneo */ byte i;
/* È stata rilevata una carta? */
if (RC522.isCard()) { /* In caso affermativo, ottenere il numero di serie */ RC522.readCardSerial();
/* Invia il numero di serie all'UART */ for(i = 0; i <= 2; i++) { Serial.print(RC522.serNum, DEC); //Serial.print(RC522.serNum, HEX); } Serial.print(", "); Serial.print(reader++); Serial.println(); } ritardo(1000); }
Passaggio 3: configurazione di MySQL
- Installa il server Wamp per MySQL e configuralo per archiviare i dati (
- Esegui il server wampapri la console MySQL
- seleziona database
- Quindi crea la tabella per i tuoi dati
crea tabella rfid(ID int(8), token int(1), Nome varchar(20), Amount int(4));
Ora visualizza questo collegamento per sapere come ottenere il valore del tag RFID, quindi utilizza il codice seguente per inserire i dati. Non dimenticare di sostituire il valore ID con il valore del tag RFID
inserire in valori rfid (3756178, 1, 'Matita', 20);
utilizzare il valore del token come 1 in modo che dopo aver letto il valore del tag per la prima volta cambierà automaticamente in 2, non utilizzare 0 per il valore del token durante la lettura della carta che non è inserita nel DB assegnerà 0 quindi lo visualizzerà come Carta sconosciuta..
Passaggio 4: configurazione dell'IDE di elaborazione
- Scarica e installa l'IDE di elaborazione 2.2.1
- Estrai lo ZIP sopra indicato in MyDocuments/Processing/Libraries
- Ora apri l'IDE di elaborazione e controlla che la libreria sia installata correttamente o meno come nell'immagine sopra
- Quindi copia il codice sottostante per l'elaborazione e assegnagli un nome personale
import de.bezier.data.sql.*;import processing.serial.*; //import java.math. BigInteger;
// creato il 2005-05-10 da fjenett
// aggiornato fjenett 20080605
connessione db MySQL;
Stringa s=" "; int Peso=700; int Larghezza=1200; ID lungo; token int; int Importo; int Totale=0;
String a={"NULL", "NULL"};
int fine = 10; // il numero 10 è ASCII per linefeed (fine di serial.println), in seguito lo cercheremo per suddividere i singoli messaggi String serial; // dichiara una nuova stringa chiamata 'serial'. Una stringa è una sequenza di caratteri (il tipo di dati è noto come "char") Porta seriale; Stringa curr, prev, Nome; Carattere f;
configurazione nulla()
{ // dimensione (larghezza, peso); dimensione (700, 500); f=createFont("Arial", 24, true); // questo esempio presuppone che tu stia eseguendo il // server mysql localmente (su "localhost"). // // sostituisci --username--, --password-- con il tuo account mysql. // String utente = "radice"; Stringa pass = ""; // nome del database da utilizzare // String database = "IOT_Database"; // nome della tabella che verrà creata String table = ""; // connettersi al database del server "localhost" dbconnection = new MySQL(this, "localhost", database, user, pass); port = new Serial(this, Serial.list()[0], 9600); // inizializza l'oggetto assegnando una porta e un baud rate (deve corrispondere a quello di Arduino) port.clear(); // funzione da libreria seriale che butta fuori la prima lettura, nel caso iniziassimo a leggere nel mezzo di una stringa da Arduino serial = port.readStringUntil(end); // funzione che legge la stringa dalla porta seriale fino a println e quindi assegna la stringa alla nostra variabile stringa (chiamata 'serial') serial = null; } void draw() { background(255); textFont(f, 24); riempire (0); text("Importo totale Rs:", 400, 400); testo(Totale, 585, 400); dati(); while (port.available() > 0) { //fintanto che ci sono dati provenienti dalla porta seriale, leggili e memorizzali serial = port.readStringUntil(end); } if (serial != null) { prev=curr; curr=a[1]; a = split(seriale, ', '); //un nuovo array (chiamato 'a') che memorizza i valori in celle separate (separate da virgole specificate nel tuo programma Arduino) if((curr).equals(prev)) { // } else { //println("curr ", corrente); //println("Precedente", precedente); funzione(); } } }
funzione nulla()
{ if (dbconnection.connect()) { // ora rileggilo // dbconnection.query("SELECT * from rfid where ID="+a[0]+""); while (dbconnection.next()) { ID = dbconnection.getInt("ID"); token = dbconnection.getInt("token"); Importo = dbconnection.getInt("Importo"); } if(token==0) { println("Ok"); textFont(f, 54); riempimento(255, 0, 0, 160); text("Elemento sconosciuto rilevato", 50, 300); ritardo (2000); } else if(token==1) { Totale=Totale+Importo; dbconnection.query("aggiorna rfid set token=2 dove ID="+a[0]+""); println("Ok"); textFont(f, 24); riempimento(255, 0, 0, 160); //text("Oggetto aggiunto", 10, 30); ritardo(1000); } else if(token==2) { Total=Total-Amount; dbconnection.query("aggiorna rfid set token=1 dove ID="+a[0]+""); println("Ok"); textFont(f, 24); riempimento(255, 0, 0, 160); //text("Elemento rimosso", 10, 30); ritardo(1000); } else { } dbconnection.close(); } else { // connessione non riuscita! } }
dati nulli()
{ int posizione=100; if (dbconnection.connect()) { dbconnection.query("SELECT * from rfid dove token=2"); while (dbconnection.next()) { Nome = dbconnection.getString("Nome"); Importo = dbconnection.getInt("Importo"); textFont(f, 24); riempimento(0, 0, 255, 160); text(Nome, 10, posizione); riempimento(0, 0, 0, 160); testo(importo, 215, posizione); posizione=posizione+30; } } dbconnection.close(); }
Passaggio 5: esecuzione del programma
Esegui il programma facendo clic sul pulsante Esegui non chiudere la finestra popup la chiusura interromperà l'esecuzione e sotto la query per visualizzare i dati memorizzati in MySQL …
Passaggio 6: conclusione
Vorrei ringraziarti per aver letto il mio tutorial. Apprezzerei se lo trovassi utile e lasciassi un mi piace (preferito) o mi chiedessi qualcosa in quanto mi tiene motivato a fare queste istruzioni. sentiti libero di fare tutte le domande che hai bisogno di sapere…
Buona codifica Arduino…
Consigliato:
Monitor ECG/ECG continuo semplice e portatile che utilizza ATMega328 (Arduino Uno Chip) + AD8232: 3 passaggi
Monitor ECG/ECG continuo semplice e portatile che utilizza ATMega328 (Arduino Uno Chip) + AD8232: questa pagina di istruzioni ti mostrerà come realizzare un semplice monitor ECG/ECG portatile a 3 derivazioni. Il monitor utilizza una scheda breakout AD8232 per misurare il segnale ECG e salvarlo su una scheda microSD per analisi successive. Alimentazione principale necessaria: 5V ricaricabile
Saldatrice a punti semplice che utilizza la batteria dell'auto per la costruzione di un pacco batteria agli ioni di litio: 6 passaggi
Saldatrice a punti semplice con batteria per auto per costruire pacchi batteria agli ioni di litio: ecco come ho realizzato una saldatrice a punti con batteria per auto che è utile per costruire pacchi batteria agli ioni di litio (Li-ion). Sono riuscito a costruire il pacchetto 3S10P e molte saldature con questa saldatrice a punti. Questo spot Welder istruibile include, Functional Block Dia
Robot in movimento automatico semplice che utilizza Arduino e IC L293d: 6 passaggi
Robot in movimento automatico semplice che utilizza Arduino e IC L293d: questo è un robot di base gestito da un arduino e ciò che fa è che si aggira e segue un percorso circolare per codice predefinito, ma è possibile modificare il codice per cambiare facilmente il percorso. È un progetto semplice che chiunque può costruire..Quindi If You Ev
Semplice trainer wireless Taranis X9D+ che utilizza l'ingresso del ricevitore SBUS: 9 passaggi
Semplice trainer wireless Taranis X9D+ che utilizza l'ingresso del ricevitore SBUS: L'obiettivo di questo progetto è collegare un trasmettitore FrSky X-Lite a un trasmettitore FrSky X9D+ in una configurazione TRAINER utilizzando un ricevitore SBUS economico (12$). Collegando i due insieme in questo modo, è possibile che un pilota istruttore utilizzi il
Misuratore di giri semplice che utilizza moduli economici: 8 passaggi
Misuratore di giri semplice che utilizza moduli economici: questo è un progetto molto interessante e impiega molto meno sforzo, rende un misuratore di giri molto semplice (round per secondo nel mio caso)