怎么实现基于MFRC522的区块链RFID扫描仪设计

描述

通过将扫描的标签数据发送到全球、分散和分布式的云平台,将您的RFID跟踪应用程序和想法提升到一个新的水平。

该项目使用树莓派作为物联网设备,使用EOS区块链作为全球分布式平台。

物联网设备扫描钥匙卡、密钥卡、补丁、标签等中的RFID芯片。标签可用于唯一识别它们所附着的物品,以便在供应链、制造、资产跟踪和访问中提供位置和时间证明控制应用程序。提供了构建这个开源扫描器和访问区块链上扫描的标签数据所需的一切,包括node.js软件、预部署的智能合约/dApp、区块链帐户和私钥。一个简单的Web应用程序可用于实时演示区块链上真实物联网数据的端到端扫描、交易和检索。

扫描仪设备在应用程序开始时通过粗略的IP地理定位查找获取其在地球上的当前位置。该位置被地理散列并与扫描的标签数据组合成数据记录。已扫描标签的位置以及标签数据可在rfid-htmlWeb应用程序的地图上查看。

EOS被选中用于该项目,因为它提供了以下关键功能:

EOS提供快速的交易时间:扫描的标签通常会在2秒内出现在链上。

EOS没有交易费用。区块链资源是一次性购买的。然后,物联网设备可以在分配的资源内进行交易,而不会产生额外费用。

EOS交易是有效打包的二进制结构,可最大限度地减少带宽需求。

EOS使用与比特币和以太坊等其他区块链相同的全球公认和强化的安全标准。

简而言之,您将MFRC522RFID芯片/天线板和蜂鸣器连接到Pi的扩展接头,将我们的设备软件存储库下载到Pi上的目录,运行“npminstall”,然后运行“sudonoderfid-scanner-eos-”rpi.js`。将标签放置在距离天线2厘米的范围内,并查看网页以查看扫描的标签UID以秒为单位出现。

EOSJungle2.0测试网托管dApp和设备帐户。

硬件设置

该项目假设您已经启动并运行了RaspberryPi。

你需要:

Rpi2或3(本项目中使用3+)

MFRC522RFID扫描仪。

有源蜂鸣器。

一些电线,也许还有一些焊接技巧。

它可能看起来像这样:

RFID

连接:

RFID

软件设置

最新的Raspbian操作系统(项目于2019年4月进行了发布下载)

最近的Node.js。Raspbian自带的版本(8.11.1)可以工作。

NPM包管理器。安装它然后更新它:

sudoapt-getinstallnpm

sudonpmi-gnpm

Git(已安装)

设置

将此存储库克隆到您的Pi上:

$gitclonehttps://github.com/EOSIoT/rfid-scanner-node.git

$cdrfid-scanner-node

安装项目依赖:

$npminstall

软件应该就是这样。用于签署交易到EOS区块链dApp的私钥已经编码在软件中。不过,不要认为您可以破解IoT设备帐户。通过EOS灵活的权限管理系统,为提交RFID数据的任务创建了自定义权限。

使用

以超级用户权限运行应用程序。记下唯一的设备ID,以在演示Web应用程序中引用扫描仪的数据。在下面的示例中,设备ID是942140182。写下来,因为您需要它来过滤Web应用程序中的扫描仪数据。

如果应用程序设置正确,您将看到初始区块链信息请求的结果,显示与指定EOSAPI端点的通信正在工作。

例子:

pi@raspberrypi:~/rfid-scanner-node$sudonoderfid_scanner_eos_rpi.js

[2019-05-11T19:32:07.168Z]DeviceID:942140182(0x3827eb16)

[2019-05-11T19:32:07.177Z]Blockchain:

[2019-05-11T19:32:07.220Z]scanning.。。

[2019-05-11T19:32:07.221Z]Pleaseputchiporkeycardintheantennainductivezone!

[2019-05-11T19:32:07.221Z]PressCtrl-Ctostop.

[2019-05-11T19:32:07.402Z]{server_version:‘448287d5’,

chain_id:‘aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906’,

head_block_num:57633625,

last_irreversible_block_num:57633298,

last_irreversible_block_id:‘036f6a124baa3eae12b40fdff2fe53f7796663f79b17559636a750bd1a25fbdc’,

head_block_id:‘036f6b590d4b20385337d91dc688c46ac92d49bc75a6e0414f48da935c00d94b’,

head_block_time:‘2019-05-11T19:32:07.000’,

head_block_producer:‘eos42freedom’,

virtual_block_cpu_limit:200000000,

virtual_block_net_limit:1048576000,

block_cpu_limit:181613,

block_net_limit:1044592,

server_version_string:‘v1.7.3’}

[2019-05-11T19:32:07.746Z]NoCard

[2019-05-11T19:32:08.266Z]NoCard

[2019-05-11T19:32:08.787Z]NoCard

[2019-05-11T19:32:26.074Z]Carddetected,CardType:undefined

[2019-05-11T19:32:26.075Z]CardreadUID(5):992f65c

[2019-05-11T19:32:26.083Z]CardMemoryCapacity:8

[2019-05-11T19:32:26.096Z]Block:8Data:0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

[2019-05-11T19:32:28.864Z]NoCard

{transaction_id:‘e8672e52f521c003b6d9b767acc1ce2f8f967ae336a3cfd294fb2b8d89ab9d03’,

processed:

{id:‘e8672e52f521c003b6d9b767acc1ce2f8f967ae336a3cfd294fb2b8d89ab9d03’,

block_num:57633669,

block_time:‘2019-05-11T19:32:29.000’,

producer_block_id:null,

receipt:{status:‘executed’,cpu_usage_us:345,net_usage_words:15},

elapsed:345,

net_usage:120,

scheduled:false,

action_traces:[[Object]],

except:null}}

[2019-05-11T19:32:29.382Z]NoCard

要扫描卡片或标签,请将其放置在mfrc522读卡器顶部(天线)附近(2厘米以内)。您会听到确认扫描的蜂鸣器发出哔声。然后将标签的UID和RPiIoT设备上的当前时间捆绑到一个事务中并发送到EOS区块链,在那里它很快被吸收到一个块中。

RFID扫描仪软件有一个私钥,可以代表eosiot11node账户提交标签数据。标签的UID数据被放入eosiot12rfid帐户下的智能合约(dApp)托管的数据库中。

dApp目前托管在Jungle2.0测试网上,直到主网解决CPU紧缩问题。

RFID扫描仪生成的数据可通过简单的RESTAPI调用或javascript库访问。我编写了一个简单的Web应用程序,您可以使用它来近乎实时地查看扫描的标签数据出现在EOS区块链上。继续输入您在上面看到的设备ID,以查看测试项目时发布的数据。

rfid-htmlWeb应用程序的屏幕截图:

RFID

结论

借助开源软件脚本和安装程序以及现有的区块链基础设施,您可以快速部署RFID扫描仪原型,以测试您关于如何将区块链用于下一个项目的假设和想法。

我为这个项目创建的区块链帐户(eosiot11node)显然在每个使用该软件的物联网设备之间共享。分配给它的带宽和CPU数量有限,如果有足够的用户,将达到每日限制。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分