步驟1:設置Arduino和RFID RC-522(物理連接)
只需將arduino與RFID連接-RC522,如上圖所示。
警告:僅提供3.3V電壓,否則模塊將燒壞
為Uno/Nano和Mega插腳 strong》
RC522 MODULE Uno/Nano MEGA
SDA 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/A N/A
GND GND GND
RST D9 D8
3.3V 3.3V 3.3V
*/
/* Include the standard Arduino SPI library */
#include
/* Include the RFID library */
#include
/* Define the DIO used for the SDA (SS) and RST (reset) pins. */
#define SDA_DIO 9
#define RESET_DIO 8
/* Create an instance of the RFID library */
RFID RC522(SDA_DIO, RESET_DIO);
int reader=0;
void setup()
{
Serial.begin(9600);
/* Enable the SPI interface */
SPI.begin();
/* Initialise the RFID reader */
RC522.init();
}
void loop()
{
/* Temporary loop counter */
byte i;
/* Has a card been detected? */
if (RC522.isCard())
{
/* If so then get its serial number */
RC522.readCardSerial();
/* Output the serial number to the UART */
for(i = 0; i 《= 2; i++)
{
Serial.print(RC522.serNum[i],DEC);
//Serial.print(RC522.serNum[i],HEX);
}
Serial.print(“,”);
Serial.print(reader++);
Serial.println();
}
delay(1000);
}
步驟3:設置MySQL
為MySQL安裝Wamp服務器并將其配置為存儲數據(
運行wamp服務器打開MySQL控制臺
選擇數據庫
然后為您的數據創建表
create table rfid(ID int(8),token int(1),Name varchar(20),Amount int(4));
現在查看此鏈接以了解如何獲取您的RFID標簽值,然后使用以下代碼插入數據。不要忘記將ID值替換為您的RFID標簽值
insert into rfid values(3756178,1,‘Pencil’,20);
使用令牌值作為 1 ,以便在首次讀取標簽值后,它將自動更改為 2 讀取未插入數據庫的卡時,不要使用 0 作為令牌值,它將分配0,然后將其顯示為“未知卡”。
步驟4:設置處理IDE
下載并安裝處理IDE 2.2.1
將上述給定的ZIP提取到MyDocuments/Processing/Libraries
現在打開處理的IDE,并檢查庫是否正確安裝(如上圖所示)
然后復制以下代碼進行處理并自行命名
import de.bezier.data.sql.*;
import processing.serial.*;
//import java.math.BigInteger;
// created 2005-05-10 by fjenett
// updated fjenett 20080605
MySQL dbconnection;
String s=“ ”;
int Wheight=700;
int Wwidth=1200;
long ID;
int token;
int Amount;
int Total=0;
String[] a={“NULL”,“NULL”};
int end = 10; // the number 10 is ASCII for linefeed (end of serial.println), later we will look for this to break up individual messages
String serial; // declare a new string called ‘serial’ 。 A string is a sequence of characters (data type know as “char”)
Serial port;
String curr,prev,Name;
PFont f;
void setup()
{
//size( Wwidth,Wheight );
size(700,500);
f=createFont(“Arial”,24,true);
// this example assumes that you are running the
// mysql server locally (on “localhost”)。
//
// replace --username--, --password-- with your mysql-account.
//
String user = “root”;
String pass = “”;
// name of the database to use
//
String database = “IOT_Database”;
// name of the table that will be created
String table = “”;
// connect to database of server “localhost”
dbconnection = new MySQL( this, “localhost”, database, user, pass );
port = new Serial(this, Serial.list()[0], 9600); // initializing the object by assigning a port and baud rate (must match that of Arduino)
port.clear(); // function from serial library that throws out the first reading, in case we started reading in the middle of a string from Arduino
serial = port.readStringUntil(end); // function that reads the string from serial port until a println and then assigns string to our string variable (called ‘serial’)
serial = null;
}
void draw()
{
background(255);
textFont(f,24);
fill(0);
text(“Total Amount Rs:”,400,400);
text(Total,585,400);
data();
while (port.available() 》 0)
{
//as long as there is data coming from serial port, read it and store it
serial = port.readStringUntil(end);
}
if (serial != null)
{
prev=curr;
curr=a[1];
a = split(serial, ‘,’); //a new array (called ‘a’) that stores values into separate cells (separated by commas specified in your Arduino program)
if((curr).equals(prev))
{
//
}
else
{
//println(“curr”,curr);
//println(“Prev”,prev);
function();
}
}
}
void function()
{
if ( dbconnection.connect() )
{
// now read it back out
//
dbconnection.query( “SELECT * from rfid where ID=”+a[0]+“” );
while (dbconnection.next())
{
ID = dbconnection.getInt(“ID”);
token = dbconnection.getInt(“token”);
Amount = dbconnection.getInt(“Amount”);
}
if(token==0)
{
println(“Ok”);
textFont(f,54);
fill(255,0,0,160);
text(“Unknown Item Detected”,50,300);
delay(2000);
}
else if(token==1)
{
Total=Total+Amount;
dbconnection.query(“update rfid set token=2 where ID=”+a[0]+“” );
println(“Ok”);
textFont(f,24);
fill(255,0,0,160);
//text(“Item Added”,10,30);
delay(1000);
}
else if(token==2)
{
Total=Total-Amount;
dbconnection.query(“update rfid set token=1 where ID=”+a[0]+“” );
println(“Ok”);
textFont(f,24);
fill(255,0,0,160);
//text(“Item Removed”,10,30);
delay(1000);
}
else
{
}
dbconnection.close();
}
else
{
// connection failed !
}
}
void data()
{
int position=100;
if ( dbconnection.connect() )
{
dbconnection.query( “SELECT * from rfid where token=2”);
while (dbconnection.next())
{
Name = dbconnection.getString(“Name”);
Amount = dbconnection.getInt(“Amount”);
textFont(f,24);
fill(0,0,255,160);
text(Name,10,position);
fill(0,0,0,160);
text(Amount,215,position);
position=position+30;
}
}
dbconnection.close();
}
第5步:執行程序
通過單擊運行按鈕運行程序,請關閉彈出窗口,關閉窗口將停止執行,并在以下查詢中查看在MySQL中存儲的數據。..
責任編輯:wv
-
RFID
+關注
關注
387文章
6111瀏覽量
237439 -
應用程序
+關注
關注
37文章
3245瀏覽量
57615 -
Arduino
+關注
關注
187文章
6464瀏覽量
186684
發布評論請先 登錄
相關推薦
評論