0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样使用RFID RC-522和Arduino创建一个简单的超市应用程序

454398 来源:网络整理 作者:网络整理 2019-11-25 15:59 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

步骤1:设置ArduinoRFID RC-522(物理连接)

怎样使用RFID RC-522和Arduino创建一个简单的超市应用程序

只需将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
    +关注

    关注

    392

    文章

    6768

    浏览量

    246921
  • 应用程序
    +关注

    关注

    38

    文章

    3342

    浏览量

    59994
  • Arduino
    +关注

    关注

    190

    文章

    6516

    浏览量

    196065
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    SI522与恩智浦 RC522 13.56MHZ的刷卡问题

    大家介绍款性价比极高、功耗极低、自动寻卡、定时唤醒的13.56mhz非接触式读卡芯片:SI522,希望给那些因为功耗下不来而烦恼的技术朋友们有所帮助! Si522
    发表于 12-01 10:16

    如何用Arduino Nano/UNO R3开发板给另一个Arduino IDE不能下载的Arduino Nano/UNO R3开发板重新烧录引导程序bootlaoder

    本文介绍了如何用能够Arduino IDE下载的Arduino Nano/UNO R3开发板给另一个Arduino IDE不能下载的Arduino
    的头像 发表于 08-08 20:16 3158次阅读
    如何用<b class='flag-5'>Arduino</b> Nano/UNO R3开发板给另<b class='flag-5'>一个</b><b class='flag-5'>Arduino</b> IDE不能下载的<b class='flag-5'>Arduino</b> Nano/UNO R3开发板重新烧录引导<b class='flag-5'>程序</b>bootlaoder

    阿里展厅同款无人超市技术解析:RFID与AI视觉如何颠覆零售?

    在阿里展厅的未来零售场景中,由深圳市远景达物联网技术有限公司打造的无人超市正以颠覆性姿态重构行业逻辑。这项融合RFID射频识别与AI视觉技术的创新方案,通过物联网、传感器融合和深度学习算法的协同运作
    的头像 发表于 07-03 13:50 608次阅读
    阿里展厅同款无人<b class='flag-5'>超市</b>技术解析:<b class='flag-5'>RFID</b>与AI视觉如何颠覆零售?

    单片机实例:RC522无线射频项目资料

    单片机实例:RC522无线射频项目资料,推荐下载!
    发表于 06-03 22:09

    ESP32驱动MFRC522 RFID模块读写IC卡数据

    本文将介绍ESP32开发板驱动MFRC522 RFID模块,读取RFID卡原始数据、获取RFID卡的UID,并将个人数据添加到RFID卡中。
    的头像 发表于 05-28 15:52 745次阅读
    ESP32驱动MFRC<b class='flag-5'>522</b> <b class='flag-5'>RFID</b>模块读写IC卡数据

    如何使用CYUSB3KIT-003使用GPIO访问SRAM的应用程序

    你好。我是CYUSB3的初学者。 我想创建使用 CYUSB3KIT-003 使用 GPIO 访问 SRAM 的应用程序。 目前我已经在我的电脑上安装了SDK,但是有什么参考资料吗?
    发表于 05-14 06:51

    《ESP32S3 Arduino开发指南》第二章 Arduino基础知识

    Arduino生态的建设。2.2 Arduino的由来Arduino种基于开源硬件和软件的电子原型平台,它由
    发表于 05-13 09:28

    SI522这款13.56MHz芯片能兼容这么多款同行芯片

    南京中科微这款SI522目前完全PinTOPin兼容的NXP:RC522、CV520复旦微:FM17520、FM17522/FM17550瑞盟:MS520、MS522国民技术:NZ3801
    发表于 02-27 10:22

    AWTK-WEB 快速入门(5) - C 语言 WebSocket 应用程序

    导读WebSocket可以实现双向通信,适合实时通信场景。本文介绍下使用C语言开发AWTK-WEB应用程序,并用WebSocket与服务器通讯。用AWTKDesigner新建
    的头像 发表于 02-19 11:49 913次阅读
    AWTK-WEB 快速入门(5) - C 语言 WebSocket <b class='flag-5'>应用程序</b>

    基于HPM_SDK_ENV开发应用程序的升级处理

    )以及工程创建工具等文件。用户基于HPM_SDK_ENV开发自己的应用程序时需要考虑如何维护板级配置文件和应用程序文件的问题。以下3种维护方式:用户将自己的板级配置文
    的头像 发表于 02-08 13:38 1459次阅读
    基于HPM_SDK_ENV开发<b class='flag-5'>应用程序</b>的升级处理

    hyper-v 备份,hyper-v怎样进行虚拟机的创建

    车:powershellEnable-WindowsOptionalFeature-Online-FeatureNameMicrosoft-Hyper-V-All系统提示重启时,选择“是”。    创建虚拟机,打开Hyper-V管理器,按“Win+Q”组合键,输入“Hyper-V管理器”,然后打开该
    的头像 发表于 02-05 14:54 817次阅读
    hyper-v 备份,hyper-v<b class='flag-5'>怎样</b>进行虚拟机的<b class='flag-5'>创建</b>

    AWTK-WEB 快速入门(4) - JS Http 应用程序

    导读XMLHttpRequest改变了Web应用程序与服务器交换数据的方式,fetch是其继任者。本文介绍下如何使用JS语言开发AWTK-WEB应用程序,并用fetch访问远程数据。用AWTKDesigner新建
    的头像 发表于 01-22 11:31 747次阅读
    AWTK-WEB 快速入门(4) - JS Http <b class='flag-5'>应用程序</b>

    ANACONDA——关于发布数据应用程序的新简单方法

    与 Anaconda 的云笔记本服务无缝集成,为用户提供了种轻松共享笔记本结果的方式,并让其他人也可以随意的访问它们。 下面我们来了解关于这项新功能的实际应用: 这项功能与 Panel 的多功能性相结合,将彻底改变您发布数据应用程序的方式。使用这个强大的工具,为共享和协
    的头像 发表于 01-17 11:39 659次阅读
    ANACONDA——关于发布数据<b class='flag-5'>应用程序</b>的新<b class='flag-5'>简单</b>方法

    RC522不定时检测不到信号

    这是插卡取电使用的RC522射频电路,过几天就死机了样,有没有大神给点意见 单片机用的是STC15W404AS
    发表于 01-14 13:42

    TMETRIC:简单步骤将工作区连接到时间跟踪应用程序

    将计时器按钮添加到组合门票 完成这三简单步骤以在 Assembla 中启用时间跟踪。设置时间不超过 3 分钟。 注册 TMetric 具有高级计费和报告功能的时间跟踪应用程序 安装浏览器扩展
    的头像 发表于 01-07 09:23 669次阅读
    TMETRIC:<b class='flag-5'>简单</b>步骤将工作区连接到时间跟踪<b class='flag-5'>应用程序</b>