顧名思義,這本書的主題是NFC(近距離無線通訊),NFC裝置貼近後,便能透過無線電波傳遞訊號交換資料,諸如無線支付、電子錢包、悠遊卡,無不與NFC(或RFID)有關。
書中範例包含各式各樣的技術,將會介紹各種規格的NFC標籤,採用PhoneGap,可在各種行動裝置上運行,但以Android為主,也會有Node.js的範例,另外,不僅會介紹微控制器開發板Arduino,也會介紹單板電腦Raspberry Pi與BeagleBone,內容非常豐富。
書名:初探 NFC:近距離無線通訊與Arduino、Android 和 PhoneGap
原書名:Beginning NFC: Near Field Communication with Arduino, Android, and PhoneGap
作者:Tom Igoe、Don Coleman、Brian Jepson
譯者:我
出版社:碁峰
出版日期:2014年10月16日
頁數:250
內容簡介
第一章:導論
概觀本書。
第二章:NFC 與RFID
藉由比較 NFC(Near Field Communication,近距離無線通訊)與 RFID(Radio
Frequency Identification,無線射頻辨識)之間的差異,引領你進入 NFC 的世界。簡言
之,NFC 將 RFID 包含在內,任何短距離 RFID 可辦到的事,NFC 也都做得到,而且功
能更強,在這一章裡,你將看到大部分的重要詞彙,看看 NFC 系統的架構,得知你將
需要使用哪些工具以及去哪取得。
第三章:學習PhoneGap 與PhoneGap-NFC 程式庫
開始介紹 PhoneGap 以及供 PhoneGap 使用的 NFC 附加元件。將會安裝各種所需
程式庫與工具,以之在 Android 平台上開發 PhoneGap 應用程式,建置且執行你的第一
組應用軟體,在這一章結束時,你就能從 Android 裝置讀取 NFC 標籤了。
第四章:介紹NDEF
深入概括介紹 NDEF(NFC Data Exchange Format,NFC 資料交換格式)。
學習它的階層架構,親眼看看如何實際撰寫應用程式、運用不同類型的 NDEF 記錄來完
成功能相同的基本任務,並且瞭解每一種記錄類型如何影響使用者與 Android 裝置之間
的互動操作。
第五章:聆聽NDEF 訊息
內容包含在 Android 上聆聽 NDEF 訊息,你將學習如何過濾不同類型的標籤與
訊息,如何在開發 NFC 應用軟體時,充分利用 Android 的標籤分派系統。
第六章:NFC 應用軟體開發實例
將在 Android 上打造一支完整的 NFC 應用軟體,功能包括使用者互動操作、音樂
播放、以及控制與網站相連接的燈泡,全部都以 NFC 標籤為媒介。本章目標在於告訴
你如何規畫應用軟體的互動設計以及資料格式,充分發揮 NFC 的能力。
第七章:Arduino 與NFC
帶領讀者進入另一套平台:Arduino 微控制器開發平台,你將學習如何使用
Arduino 的 NDEF 程式庫來讀取與寫入 NDEF 訊息,還會使用 Arduino 與 Node.js 來開
發另一支完整的應用程式。
第八章:點對點對等式傳輸
介紹如何在 Android 上運用 NFC 進行點對點對等式資料交換,你將學會透過對等
方式交換的記錄類型如何影響接收方的裝置,也會介紹如何以 NFC 進行協商把傳輸大
量資料的任務換手交給別的無線傳輸技術,諸如藍牙與 WiFi。
第九章:NFC 與嵌入式系統
將 以 Raspberry Pi 與 BeagleBone 為 範 例, 告 訴 你 在 嵌 入 式 Linux 平 台 上 關 於
NFC 發展的最新狀況,你將瞭解目前在嵌入式 Linux 世界裡可做到哪些事情,此章也
會以 Node.js 示範幾個例子;在這個領域裡,仍有許多地方尚待改進、補強,所以請注
意,此章可不適合害怕接觸技術的人,你必須熟悉 Linux 的命令列模式操作介面,才能
看懂此章大部分的內容;不過話說回來,其中也涵蓋了某些 NFC 最令人感到驚奇的可
能性,所以是個值得一探究竟的領域。
附錄A:NFC 規格碼
您是偶的偶像,您的書怎可不買!!!
ReplyDelete聽您的語氣,莫非你是...?
Delete我是您的 super fans
ReplyDelete感謝!
Delete請問
ReplyDelete若是要透過NFC 讓Android與Arduino的PN532交握
需要從哪方面先著手呢 ?
你問的太籠統了。
Delete這本書裡面有講。
你好~
Delete我目前的問題是
Arduino可以依照書上說的範例WrtieTag 透過PN532傳遞到空白的RFID卡
再用手機的NFC讀RFID卡,那手機會跑出我寫的TAG
我想問的是有沒有辦法不透過RFID,讓手機去直接讀Arduino PN532直接發的TAG呢 ?
你說的是peer-to-peer exchange,這本書第8章介紹的主題。
Delete我想問 手機nfc要傳輸給pn532是靠什麼訊號傳輸uid還是imie碼 我手機要當tag傳輸資料給pn532接收然後arduino做控制 這是哪方面的傳輸方式
ReplyDelete不太懂你說的問題。
Delete應該就是NFC的peer-to-peer exchange吧。
你好 我想問手機要對nfc開發板接arduino 那有什麼範例可以測試 這個nfc開發板是我們可以使用的
ReplyDelete該怎麼測試nfc開發板可以讀取到手機資料
> 手機要對nfc開發板接arduino
Delete不懂。
請問 這程式碼是在說什麼 為什麼我arduino連接pn532會顯示Didn't find PN53x board 是什麼原因
ReplyDelete#include
#define SCK 13
#define MOSI 11
#define SS 10
#define MISO 12
PN532 nfc(SCK, MISO, MOSI, SS);
void setup(void) {
Serial.begin(9600);
Serial.println("Hello!");
nfc.begin();
uint32_t versiondata = nfc.getFirmwareVersion();
if (! versiondata) {
Serial.print("Didn't find PN53x board");
while (1); // halt
}
// Got ok data, print it out!
Serial.print("Found chip PN5"); Serial.println((versiondata>>24) & 0xFF, HEX);
Serial.print("Firmware ver. "); Serial.print((versiondata>>16) & 0xFF, DEC);
Serial.print('.'); Serial.println((versiondata>>8) & 0xFF, DEC);
Serial.print("Supports "); Serial.println(versiondata & 0xFF, HEX);
// configure board to read RFID tags and cards
nfc.SAMConfig();
}
char DataOut[]="HELLO INITIATOR"; //16bytes
char DataIn[16];//Should be 16bytes
void loop(void) {
// Configure PN532 as Peer to Peer Target
if(nfc.configurePeerAsTarget()) //if connection is error-free
{
//trans-receive data
if(nfc.targetTxRx(DataOut,DataIn))
{
Serial.print("Data Received: ");
Serial.println(DataIn);
}
}
}
你用的程式庫跟板子,不是同一國的吧。
Delete我想問nfc手機程式透過pn532傳到arduino適用什麼指令
ReplyDelete像是透過tag是寫String const myUID = "56 60 CB 3B";
NfcTag tag = nfc.read(); // read the NFC tag
String scannedUID = tag.getUidString(); // get the NFC tag's UID
那想請問手機的程式指令要要怎麼寫
呃,您問的問題,不就是這本書的內容嗎?
Delete請查閱相關章節。
為什麼這個程式 用其他tag也可以控制繼電器 它們uid不同 為什麼還可以執行動作
ReplyDelete#include
#include "PN532_SPI.h"
#include "PN532.h"
#include "NfcAdapter.h"
String const myUID = "56 60 CB 3B";
const int relayPin = 9;
int relayState = 0;
PN532_SPI interface(SPI, 10);
NfcAdapter nfc = NfcAdapter(interface);
void setup(void) {
Serial.begin(115200);
nfc.begin();
pinMode(relayPin, OUTPUT);
}
void switchRelay()
{
if (relayState == 1)
relayState = 0; // 把繼電器狀態改為 ON
else
relayState = 1; // 把繼電器狀態改為 OFF
digitalWrite(relayPin, relayState); // 讓繼電器作動, 切換開關
Serial.print("Relay status: "); // 把繼電器的狀態印到 Serial Port
Serial.println(relayState);
}
void loop(void) {
if (nfc.tagPresent())
{
NfcTag tag = nfc.read(); // read the NFC tag
String scannedUID = tag.getUidString(); // get the NFC tag's UID
if( myUID.compareTo(scannedUID) == 0)
Serial.print("open door");
switchRelay();
delay(3000);
switchRelay();
}
}
看不出問題所在。
Delete用Serial.println把東西印出來吧,
查看myUID與scannedUID