RDM8800是一款能讀寫(xiě)13.56Mhz NFC RFID卡的單片機(jī),串口直接輸出,體積小巧,性能穩(wěn)定。兼容arduino,我們可以像使用arduino一樣修改它的固件來(lái)實(shí)現(xiàn)我們想要的功能。
今天教小伙伴們使用RDM8800燒寫(xiě)程序來(lái)實(shí)現(xiàn)刷NFC卡,把卡號(hào)通過(guò)短信發(fā)送到手機(jī)上。這有什么實(shí)際意義嗎?比如上班打卡?一起來(lái)大開(kāi)腦洞吧!
本次教程需要用到的配件有:
首先下載RDM8800的硬件補(bǔ)丁包和庫(kù)文件:http://pan.baidu.com/s/1jG63c7k
下載完成后把每個(gè)壓縮包都解壓出來(lái),將Iteaduino_Lite文件夾放到你的Arduino IDE安裝目錄下的hardware 文件夾里面,把PN532_SPI文件夾放到你的Arduino IDE安裝目錄下的libraries 文件夾里面。
注意:新的硬件驅(qū)動(dòng)和庫(kù)文件需要在IDE下次運(yùn)行時(shí)生效,所以在操作上面這一步的時(shí)候請(qǐng)關(guān)閉arduino IDE軟件。
接下來(lái),我們需要給RDM8800燒寫(xiě)固件。按照下面的硬件連接圖來(lái)連接FOCA轉(zhuǎn)串板和RDM8800。注意:FOCA轉(zhuǎn)串板的開(kāi)關(guān)要打到5V。詳細(xì)引腳定義請(qǐng)查閱datasheet和原理圖。
使用USB mini接口的數(shù)據(jù)線將FOCA轉(zhuǎn)串板連接到電腦上,開(kāi)始燒寫(xiě)以下代碼:
#include
#include
#define delaytime 2000
#define timeout1 5000
#define timeout2 7000
char number[20] = "123456789";
byte comm_buf[20];
const int LED = 3;
#define PN532_CS 10
PN532 nfc(PN532_CS);
//#define
unsigned int frame_format;
unsigned char id_buffer[10];
uint32_t old_id;
unsigned long lasttime=0;
unsigned long prev_time=0;
unsigned char r_buffer[30];
void setup(void) {
}
void loop(void) {
}
void hex_to_dec(uint32_t value)
{
}
燒寫(xiě)的時(shí)候選擇“board板子類型:Iteaduino_Lite”,然后選擇相應(yīng)的串口。
點(diǎn)擊upload,提示燒寫(xiě)成功,RDM8800的固件就燒好了。
接下來(lái)是測(cè)試,拔掉電源線和所有杜邦線,按照下面的硬件連接圖來(lái)連接FOCA,RDM8800和SIM900模塊。
給SIM900模塊裝上SIM卡(僅支持聯(lián)通/移動(dòng)sim卡)和天線,把NFC的天線板連接到RDM8800的接口上,然后插上USB線供電。實(shí)物如下圖:
上電后,SIM900開(kāi)機(jī),看到NET LED燈開(kāi)始閃爍時(shí),等待10s。然后把NFC typeA卡放到RDM8800的天線板上,這時(shí)RDM8800會(huì)把讀到的卡號(hào)發(fā)送到對(duì)應(yīng)的手機(jī)上,例如: “card: 0046553491” 。輸出格式為“card: +卡號(hào)”。
卡一直放在天線板上只讀一次,只發(fā)一次短信,同一張卡需要隔2秒后才能刷第二次并發(fā)送短信,不同的卡號(hào)無(wú)需等待。
此處的FOCA僅是用于供電,你也可以使用5V/1A適配器或者電池供電。