天天看點

基于HaaS100搭建雲端一體RFID讀卡器1. 案例簡介2. 基礎知識3. 物料清單4. 案例實作5. 總結開發者支援

1. 案例簡介

無線射頻識别即射頻識别技術(Radio Frequency Identification,RFID)是自動識别技術的一種,通過無線射頻方式進行非接觸雙向資料通信,利用無線射頻方式對電子标簽或射頻卡進行讀寫,進而達到識别目标和資料交換的目的。

RFID技術具有抗幹擾性強以及無需人工識别的特點,是以常常被應用在一些需要采集資訊的領域上,例如物流,倉儲,防僞,身份識别等領域。

接下來我們學習下怎麼基于HaaS100 搭建RFID讀卡器,讀取卡片資訊,并且上傳到阿裡雲IOT平台上。

基于HaaS100搭建雲端一體RFID讀卡器1. 案例簡介2. 基礎知識3. 物料清單4. 案例實作5. 總結開發者支援

實驗效果展示:

基于HaaS100搭建雲端一體RFID讀卡器1. 案例簡介2. 基礎知識3. 物料清單4. 案例實作5. 總結開發者支援

2. 基礎知識

RFID射頻識别系統的工作原理:

電子标簽進入天線磁場後,若接收到讀寫器發出的特殊射頻信号,就能憑借感應電流所獲得的能量發送出存儲在晶片中的産品資訊(無源标簽),或者主動發送某一頻率的信号(有源标簽),讀寫器讀取資訊并解碼後,送至中央資訊系統進行有關資料處理。

典型的RFID系統主要由應用系統軟體,RFID讀寫器,電子标簽3部分構成。

基于HaaS100搭建雲端一體RFID讀卡器1. 案例簡介2. 基礎知識3. 物料清單4. 案例實作5. 總結開發者支援

3. 物料清單

3.1 HaaS100 硬體

HaaS100 硬體簡介
基于HaaS100搭建雲端一體RFID讀卡器1. 案例簡介2. 基礎知識3. 物料清單4. 案例實作5. 總結開發者支援

3.2 RFID讀寫器

基于HaaS100搭建雲端一體RFID讀卡器1. 案例簡介2. 基礎知識3. 物料清單4. 案例實作5. 總結開發者支援

TX522 是一款基于13.56MHz頻率的Mifare卡讀寫子產品,可以支援多種類型卡,TX522 Mifare卡讀寫子產品具有天線一體化,識别距離達到80mm。可以通過UART接口跟HaaS100進行通信。

刷卡:

當檢測到 RFID卡片靠近的時候;紅色訓示燈閃爍,并通過序列槽發送出卡片序列号相關的指令.

指令協定說明

資料通信以一幀為機關進行,格式如下:

資料通信幀結構:

第1位元組:起始符;

第2位元組:包号,預設:0x00;

第3位元組:指令—上位機發送給IC卡讀寫器;

第4位元組:此幀有效資料的長度。從緊接着的第1個位元組開始,到倒數第3個位元組結束,為有效位元組。

第5位元組 到 倒數第3位元組: 有效資料。

倒數第2位元組:校驗和;

倒數第1位元組:結束符;

刷卡。子產品上的訓示燈會亮,并且通過序列槽主動發送卡片序列号給上位機,此時上位機就會接收到卡片序列号的相關指令。指令:20 00 01 08 04 00 00 00 A6 40 FE E4 0E 03。

20:起始符

00:包号

01:指令位元組,子產品主動輸出卡片序列号時,該位元組為0x00;其他指令為指令字

08:表示後面8個位元組為有效資料位

04 00:表示卡片屬性為S50卡

00 00:此2個位元組無實際意義。

A6 40 FE E4 :表示卡片序列号。刷不同卡片,此4個位元組會變。

0E:校驗和。從包号(SEQNR)開始到資料(DATA)的最後一位元組異或,然後再取反 得到。

03:幀結束符。

卡片序列号是我們關注的重要資訊,我們通過序列槽讀取卡片序列号資訊後将其發送給阿裡雲IOT平台。

4. 案例實作

4.1 硬體連接配接

RFID子產品通過UART接口跟HaaS100進行通信。

這個是HaaS100 硬體接口定義:

基于HaaS100搭建雲端一體RFID讀卡器1. 案例簡介2. 基礎知識3. 物料清單4. 案例實作5. 總結開發者支援

紅框部分是序列槽2的引腳。

将RFID子產品電源線,地線,序列槽RX,序列槽TX 4根線接到HaaS闆子序列槽2上。

HaaS闆引腳編号 HaaS闆引腳說明 RFID子產品
5 5V VCC
3 GND
10 UART2_RXD TX
12 UART2_TXD RX
基于HaaS100搭建雲端一體RFID讀卡器1. 案例簡介2. 基礎知識3. 物料清單4. 案例實作5. 總結開發者支援

4.2 接入阿裡雲IOT平台

首先登陸

阿裡雲IOT平台

選擇産品标簽頁,點選建立産品按鈕,建立産品,填寫産品資訊。

基于HaaS100搭建雲端一體RFID讀卡器1. 案例簡介2. 基礎知識3. 物料清單4. 案例實作5. 總結開發者支援

選擇添加功能

基于HaaS100搭建雲端一體RFID讀卡器1. 案例簡介2. 基礎知識3. 物料清單4. 案例實作5. 總結開發者支援

點選編輯草稿按鈕,編輯自定義功能,記錄下辨別符資訊後面代碼中會用到。

基于HaaS100搭建雲端一體RFID讀卡器1. 案例簡介2. 基礎知識3. 物料清單4. 案例實作5. 總結開發者支援

編輯完成後點選左下角釋出上線。

基于HaaS100搭建雲端一體RFID讀卡器1. 案例簡介2. 基礎知識3. 物料清單4. 案例實作5. 總結開發者支援

開始添加裝置,選擇裝置标簽頁,點選添加裝置按鈕。

基于HaaS100搭建雲端一體RFID讀卡器1. 案例簡介2. 基礎知識3. 物料清單4. 案例實作5. 總結開發者支援

檢視裝置三元組資訊:

記錄下裝置的三元組資訊: product key/device name/device secret ,這些資訊後面要填寫到代碼中。

基于HaaS100搭建雲端一體RFID讀卡器1. 案例簡介2. 基礎知識3. 物料清單4. 案例實作5. 總結開發者支援

4.3 軟體實作

接下來我們開始編寫HaaS 上的軟體代碼,讀取序列槽資料,從中提取出卡片序列号,通過linkkit SDK接口将序列号發送給阿裡雲IOT平台。

4.3.1 軟體流程圖

RFID相關代碼在solutions/rfid_demo目錄下。

基于HaaS100搭建雲端一體RFID讀卡器1. 案例簡介2. 基礎知識3. 物料清單4. 案例實作5. 總結開發者支援

4.3.2 HaaS100 序列槽通信部分

UART序列槽操作代碼可以參考這個檔案:solutions/rfid_demo/rfid_app.c

UART序列槽操作相關代碼:

int rfid_uart_init(void)

{

int port_id = 2;

int ret = 0;

char dev_name[16] = {0};

snprintf(dev_name, sizeof(dev_name), "/dev/ttyUART%d", port_id);

fd = open(dev_name, 0);

if(ret != 0) {

printf("open uart error\r\n");

return ret;

}

ret = ioctl(fd, IOC_UART_SET_CFLAG, B9600 | CS8);

close(fd);

printf("ioctl uart error\r\n");

}

static void task_recvdata_entry(void *arg)

int i = 0;

int ret = 0;

char rfid_data_buf[50] = {0};

int rev_length = 0;

char params[30];

char rfid_deviceid[12];

while (1) {

ret = read(fd, rfid_data_buf, sizeof(rfid_data_buf));

if (ret > 0) {

printf("read length:%d\r\n", ret);

for (i = 0; i < ret; i++) {

printf("%02x ", rfid_data_buf[i]);

}

}

  • 1
  • 2
  • 4
  • 6
  • 7
  • 8
  • 9
  • 11
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

4.3.3 往阿裡雲IOT平台發送資料

我們使用send_property_post接口将讀取的卡片序列号DeviceID發送給阿裡雲IOT平台。

//card_id 這個字元串是之前在阿裡雲IOT平台添加自定義功能時的标志符。

//rfid_deviceid 裡存儲的是通過序列槽讀到的RFID序列号。

snprintf(params, sizeof(params), "{\"card_id\": \"%s\"}", rfid_deviceid);

send_property_post(params);

4.4 端雲聯調

4.4.1 下載下傳軟體版本

開發環境的搭建請參考

《aos-studio使用說明之搭建開發環境》

,其中詳細的介紹了AliOS Things 3.3的IDE內建開發環境的搭建流程。

RFID的代碼下載下傳請參考

《aos-studio使用說明之建立工程》

> 選擇解決方案: “rfid使用示例”或者“rfid demo”

> 選擇開發闆: Haas100 board configure

源碼下載下傳完成後将在阿裡雲IOT平台擷取的裝置資訊填寫到檔案solutions//rfid_demo/rfid_demo.c中。

char *product_key = "";

char *device_name = "";

char *device_secret = "";

– 編譯固件可參考

《aos-studio使用說明之編譯固件》

– 燒錄固件可參考

《aos-studio使用說明之燒錄固件》

4.4.2 裝置配網

HaaS啟動後通過序列槽指令行配網,輸入如下指令可完成配網:

netmgr -t wifi -c {ssid} {password}

ssid, password 替換成你自己的網絡熱點資訊。

4.4.3 示範效果圖檔

當有RFID卡片靠近讀卡器時,我們會在序列槽log裡看到RFID卡片資料資訊:

基于HaaS100搭建雲端一體RFID讀卡器1. 案例簡介2. 基礎知識3. 物料清單4. 案例實作5. 總結開發者支援

在IOT平台上可以看到卡片的序列号。

基于HaaS100搭建雲端一體RFID讀卡器1. 案例簡介2. 基礎知識3. 物料清單4. 案例實作5. 總結開發者支援

5. 總結

本文檔介紹了如何基于HaaS100 搭建RFID讀卡器,讀取卡片資訊,并且上傳到阿裡雲IOT平台上,其中涉及到了HaaS 序列槽操作和給阿裡雲IOT發送資料。

RFID子產品除了可以讀卡上的資料外還可以給卡寫入資料,還有更多的功能大家可以一起挖掘和探索。

HaaS除了序列槽外還可以通過i2c,spi 等接口連結外面的傳感器或者其他裝置。

通過本文檔介紹的這個流程,大家可以打造更多的應用場景,一起行動起來,打造一套屬于自己的智能裝置吧。

開發者支援

HaaS官方:

https://haas.iot.aliyun.com/

HaaS技術社群:

https://blog.csdn.net/HaaSTech

開發者釘釘群和公衆号見下圖,開發者釘釘群每天都有技術支援同學值班。

基于HaaS100搭建雲端一體RFID讀卡器1. 案例簡介2. 基礎知識3. 物料清單4. 案例實作5. 總結開發者支援
<link href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/markdown_views-d7a94ec6ab.css" rel="stylesheet">
            <link href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/style-49037e4d27.css" rel="stylesheet">
    </div>
</article>