基于物联网的智能购物车,使用RFID和NodeMCU
扫描二维码
随时随地手机看文章
我们都在购物中心等地方排队付款,这是非常累人的,在计费过程中浪费了很多时间。今天我们将构建一个带有自动计费系统的智能购物车,它不仅减少了等待时间,而且使整个过程非常顺利和容易。
在这里,我们使用RFID卡和RFID读卡器与NodeMCU一起构建智能购物车项目。购物车信息和总价值将显示在网页以及LCD上。每个RFID卡都与一个特定的产品相关联,购物车中安装了一个RFID读取器,读取价格和产品详细信息等产品详细信息并将其发送到NodeMCU ESP8266。然后,NodeMCU处理购物车中的可用物品和总价值,并将它们发送到ESP8266网络服务器,可以在世界任何地方的网络浏览器上进行监控。Web服务器用于使用Web浏览器控制或监控任何传感器值,我们以前使用Arduino, ESP8266, NodeMCU, ESP32,树莓派等创建了许多Web服务器。
所需的材料
•ESP8266 NodeMCU -1
•16*2字母数字液晶显示屏
•I2C模块用于16*2 LCD-1
•4针触觉开关-1
•EM18 RFID阅读器-1
EM18 RFID阅读器,它正在工作
RFID是射频识别的缩写。它指的是一种技术,将数字数据编码在RFID标签中,并由RFID读取器使用无线电波解码。RFID类似于条形码,其中来自标签的数据由RFID读取器设备解码。RFID技术用于各种应用,如库存管理,考勤系统,门锁系统,进入限制区域等。
EM18阅读器是一个非常流行的RFID模块,可以读取存储在RFID标签中的ID信息。RFID标签存储一个12位的唯一数字,当标签进入阅读器的范围时,可以由EM18阅读器模块解码。该模块有一个内置天线,工作频率为125千赫,需要5v直流电源为其供电。
它提供串行数据输出,范围为8-12cm。串行通信参数为8位数据位,1位停止位,波特率为9600。
EM18 RFID读写器特点:
•工作电压:+4.5V ~ +5.5V DC
•当前消费:50 ma
•工作频率:125千赫
•工作温度:0-80℃
•通信波特率:9600
•阅读距离:8-12厘米
•天线:内置
EM18 RFID阅读器输出:
EM18 RFID阅读器引脚说明:
VCC: 4.5- 5V直流电压输入
GND:接地引脚
蜂鸣器:蜂鸣器或LED引脚
TX:用于RS232(输出)的EM18的串行数据发射器引脚
SEL:使用RS232时必须为高电平(使用WEIGAND时为低电平)
数据0:权重数据0
数据1:WEIGAND数据
基于物联网的智能购物车电路图
基于RFID的智能购物车系统的完整电路图如下:
这就是整个设置在面包板上的样子:
用Arduino IDE编程NodeMCU
要使用Arduino IDE将代码上传到NodeMCU,请遵循以下步骤:
1. 打开Arduino IDE,然后进入File - >Preferences - >Settings。
2. 在“附加板管理器URL”字段中键入,然后单击“确定”。
3. 现在转到Tools > Board > Boards Manager。在“单板管理器”窗口中,在搜索框中输入ESP8266,选择最新版本的单板,单击“安装”。
4. 安装完成后,进入“Tools ->Board ->”,选择“NodeMCU 1.0(ESP-12E Module)”。现在您可以使用Arduino IDE对NodeMCU进行编程。
找出RFID标签的唯一12位代码
在为智能购物车项目编写NodeMCU之前,首先,我们需要找出12位RFID标签的唯一代码。如前所述,RFID标签包含一个12位的唯一代码,可以通过使用RFID读取器对其进行解码。当RFID卡在阅读器附近刷卡时,当阅读器连接到NodeMCU时,阅读器将通过输出串口给出唯一的代码。首先,按照电路图将NodeMCU连接到RFID读取器,然后将下面的代码上传到NodeMCU。
上传代码成功后,打开串口监视器,设置波特率为9600。然后在读卡器附近刷卡,您现在可以在串行监视器上看到12位数的代码,如下面的快照所示。对所有使用过的RFID标签执行此过程,并将其记录下来以备将来参考。
代码的解释
在成功完成硬件设置之后,现在是时候对NodeMCU进行编程了。这个基于RFID的智能小车项目的完整代码以及视频在本教程的末尾给出。下面给出了代码的逐步描述。
通过在代码中包含所有所需的库文件来启动代码,例如ESP8266WiFi.h用于ESP8266板,LiquidCrystal_I2C.h用于LCD, Wire.h用于SPI通信等。
然后使用名称服务器和默认端口号80创建ESP8266WebServer类对象。
现在,声明网络凭据——即SSID和密码。需要将NodeMCU连接到互联网。
对于16*2字母数字LCD使用I2C模块,请使用LiquidCrystal_I2C类进行配置。这里我们必须传递地址、行号和列号,在我们的示例中分别是0x27、16和2。
在setup()中,声明所有输入引脚和输出引脚。然后在LCD上打印欢迎信息,该信息将在项目初始化期间显示。
然后,将NodeMCU连接到互联网,调用WiFi。开始并传递网络SSID和密码作为参数。使用WiFi.status()检查网络连接是否成功,连接成功后,在LCD上打印带有IP地址的消息。
在下一步中,将创建如下所示的HTML页面,其中包含一个HTML表,用于显示购物车中的产品详细信息和账单信息。HTML页面存储在一个字符串变量中,以便在客户端请求时使用server.send()函数发送回。
在loop()中,使用digitalRead()读取连接按钮的数字引脚,并将其存储在整数变量中。这里我们使用一个按钮从购物车中删除产品。
现在在下面的代码中,RFID标签的唯一12位数字代码被解码并存储在数组中。然后,数组中的元素将与内存中的Stored Tag编号进行匹配,以获得产品详细信息。
这里,我们将接收到的数组与存储的标签代码进行比较,如果没有按下按钮并且代码匹配,则执行下面的条件并将产品添加到购物车中。同样的信息将显示在LCD上。下面的代码增加购物车中的产品编号,并将价格添加到购物车总价值中。
现在,当按下按钮时,将执行下面的条件,并将RFID标签代码与存储的阵列匹配。这意味着我们必须从购物车中删除此产品,并从购物车总价值中减去产品价格。
最后,产品的单项成本计算如下。这里选择了一些随机的成本值,您可以根据选择更改这些值。
最后,调用server.handleClient()来处理新请求并检查它们。
这就是使用射频识别技术的智能购物车是如何制造出来的,并且可以在世界上任何地方的网页上进行监控。
本文编译自iotdesignpro