板卡介绍
nRF7002-DK是一款用于开发nRF7002 Wi-Fi 6双频辅助IC的开发套件。它由nRF5340多协议SoC作为主处理器,配合nRF7002 Wi-Fi协同芯片组成。该开发板支持低功耗蓝牙和Wi-Fi应用的开发,并具备多项Wi-Fi 6功能,如OFDMA、波束成形和目标唤醒时间等。
nRF7002是Nordic的Wi-Fi产品系列中的首款器件,符合802.11ax标准,可提供双频段(2.4和5GHz)连接,支持Matter中使用的全部无线协议。它还具备先进的安全功能,以保护用户数据,并结合Nordic的超低功率技术,延长电池使用寿命。该芯片提供快速、可靠的连接,方便集成到各个应用中。
开发板上的nRF5340是支持低功耗蓝牙、蓝牙Mesh、NFC、Thread和Zigbee的双核蓝牙5.3 SoC。它具备蓝牙测向的所有到达角(AoA)和出发角(AoD)测量功能,同时支持低功耗蓝牙音频、2Mbps高吞吐量、广播扩展和长距离等功能。Mesh协议如蓝牙Mesh、Thread和Zigbee可以与低功耗蓝牙同时运行,使智能手机能够完成配网、入网、配置和控制Mesh节点。此外,开发板还支持NFC、ANT、802.15.4和2.4 GHz专有协议。
nRF7002-DK开发套件的特性包括Arduino连接器、两个可编程按钮、搭载nRF7002 Wi-Fi协同IC、作为主处理器的nRF5340 SoC等。它还具有电流测量引脚、2.4GHz、2.4/5 GHz和NFC天线等组件。此外,开发板搭载高性能的128MHz Arm Cortex-M33应用内核和超低功率的64MHz Arm Cortex-M33网络核心。
nRF7002-DK适用于多个应用场景,如LE Audio、智能家居产品、智能城市和智能农业、工业传感器、资产跟踪器、可穿戴设备和医疗以及电池供电的Wi-Fi产品等。
NFC原理介绍
NFC(Near Field Communication,近场通信)是一种无线通信技术,其工作原理基于电磁感应耦合,可以在两个设备之间进行短距离(通常在10厘米内)的无线通信。NFC技术最初是为了替代传统的IC卡和读写器而开发的,现在已经广泛应用于手机、平板电脑等移动设备上,以实现移动支付、电子票务、门禁等功能。
NFC的工作原理相对简单,当两个NFC设备靠近时,它们之间会建立一个共享的13.56 MHz的无线电场。这个电场通过感应耦合将能量从源设备传输到目标设备,然后源设备将数据信号编码到这个传输的能量中。目标设备通过解码这个能量信号来获取数据。由于NFC通信的距离很短,因此其安全性较高。
最新的“星闪”技术就是一种类似于NFC的无线通信技术。与NFC相比,“星闪”具有更高的传输速度、更远的传输距离以及更高的安全性。
首先,速度方面。“星闪”的传输速度远远高于NFC。这是因为光信号的传输速度比电磁信号要快得多。据报道,“星闪”的最快传输速度可达100 Gbps,而NFC的最大传输速度仅为424 kbps。
其次,距离方面。“星闪”可以在几公里的距离内进行通信,而NFC的最大通信距离通常在10厘米以内。虽然NFC在某些应用场景下已经足够使用,但“星闪”的更长距离可以更好地满足实际需要。
最后,安全性方面。“星闪”采用了高级加密技术,保证了通信的安全性。相比之下,NFC由于其通信距离短和速度慢,容易被恶意攻击者捕获数据。
综上所述,“星闪”技术在速度、距离和安全性上相比NFC具有显著优势。然而,也应当注意到,“星闪”技术目前还处于早期阶段,未来技术的成熟和普及还需时间。所以,NFC在某些特定领域如移动支付和身份认证等仍然是最为常用的技术。
项目要求
该项目要求使用nRF7002-DK开发套件中的NFC功能,模拟出一个自定义功能的卡片,并使用手机靠近来读取卡片信息。
实现思路
-
安装NFC天线:将nRF7002-DK开发板插上自带的NFC天线,确保没有插反。
-
编写NFC应用程序:使用Nordic的nRF5 SDK编写NFC相关的应用程序代码。这些代码将处理NFC通信、读取和解析来自手机的数据。
-
定义自定义功能:根据需求,定义一个自定义的功能并将其编码到NFC卡片中。
-
连接手机和开发板:将支持NFC的手机与nRF7002-DK进行连接。打开手机的NFC功能,并将手机靠近nRF7002-DK上的NFC模块。
-
触发应用程序:当手机靠近NFC模块时,应用程序开始与手机之间进行NFC通信。最后在手机上启动应用程序。
实现方法
- 编写NFC应用程序:使用Nordic的nRF5 SDK编写NFC相关的应用程序代码。
打开Nordic的nRF5 SDK可以自动生成初始化NFC相关的函数。
- 通过调用
dk_leds_init()
函数来初始化LED引脚。 - 然后,通过调用
nfc_t2t_setup(nfc_callback, NULL)
函数来设置NFC功能。这里使用了名为nfc_callback
的回调函数和NULL
作为参数。 - 接着,通过调用
msg_encode(ndef_msg_buf, &len)
函数对消息进行编码。这里将编码后的数据存储在ndef_msg_buf
中,并通过引用传递长度变量len
。 - 然后,通过调用
nfc_t2t_payload_set(ndef_msg_buf, len)
函数将创建的消息设置为NFC的有效载荷。这里使用了之前编码后的ndef_msg_buf
和长度变量len
。 - 接下来,通过调用
nfc_t2t_emulation_start()
函数启动NFC。
2. 定义自定义功能:根据需求,定义一个自定义的功能并将其编码到NFC卡片中。
/**
@brief 编码NDEF消息的函数。同时创建了第一个标签为打开应用,第二个标签为文字的NFC消息。
*/
static int nfc_msg_encode(uint8_t *buffer, uint32_t *len) {
int err;
NFC_NDEF_ANDROID_LAUNCHAPP_RECORD_DESC_DEF(app, "tv.danmaku.bili", 15);
/* 创建NFC NDEF消息描述 */
NFC_NDEF_MSG_DEF(nfc_msg, MAX_REC_COUNT);
/* 向NDEF消息中添加APP记录 */
err = nfc_ndef_msg_record_add(&NFC_NDEF_MSG(nfc_msg),
&NFC_NDEF_ANDROID_LAUNCHAPP_RECORD_DESC(app));
if (err < 0) {
return err;
}
NFC_NDEF_TEXT_RECORD_DESC_DEF(nfc_text_rec,
UTF_8,
en_code,
sizeof(en_code),
en_payload,
sizeof(en_payload));
/* 添加文字消息 */
if (nfc_ndef_msg_record_add(&NFC_NDEF_MSG(nfc_msg),
&NFC_NDEF_TEXT_RECORD_DESC(nfc_text_rec)) < 0)
{
return -1;
}
err = nfc_ndef_msg_encode(&NFC_NDEF_MSG(nfc_msg), buffer, len);
return err;
}
首先,通过调用NFC_NDEF_ANDROID_LAUNCHAPP_RECORD_DESC_DEF
函数定义了一个NFC NDEF记录描述符app
,其中包含要启动的应用程序的名称("tv.danmaku.bili")和记录数量(15)。
接下来,创建一个NFC NDEF消息描述符nfc_msg
,并设置其容量为MAX_REC_COUNT
,表示最多可以存储的记录数。
然后,通过调用nfc_ndef_msg_record_add
函数将文本记录添加到NDEF文本消息中。这里使用了之前定义的NFC_NDEF_ANDROID_LAUNCHAPP_RECORD_DESC(app)
作为参数,表示要添加的是一个Android启动应用程序的记录。
如果添加记录时出现错误(err < 0
),则打印错误信息并返回错误码。
最后,调用nfc_ndef_msg_encode
函数对NDEF消息进行编码,并将编码后的数据存储在buffer
中,同时更新len
的值。
如果编码过程中出现错误,同样会打印错误信息。
最终,函数返回编码过程中的错误码(err
),如果编码成功,则返回0;否则返回其他错误码。
- 连接手机和开发板:将支持NFC的手机与nRF7002-DK进行连接。打开手机的NFC功能,并将手机靠近nRF7002-DK上的NFC模块。
连接手机和开发板,并启动NFC功能的具体步骤可能因不同品牌和系统而有所差异。
-
华为(Huawei)手机:
- 打开手机的设置应用程序。
- 在设置菜单中,找到并点击“无线和网络”选项。
- 在无线和网络菜单中,找到并点击“NFC”选项。
- 确保NFC开关处于打开状态。
- 将手机靠近nRF7002-DK上的NFC模块。
-
小米(Xiaomi)手机:
- 打开手机的设置应用程序。
- 在设置菜单中,找到并点击“更多设置”选项。
- 在更多设置菜单中,找到并点击“NFC”选项。
- 确保NFC开关处于打开状态。
- 将手机靠近nRF7002-DK上的NFC模块。
-
苹果(Apple)iPhone:
- 打开手机上的“设置”应用程序。
- 在设置菜单中,找到并点击“无线局域网”或“Wi-Fi”选项。
- 在无线局域网或Wi-Fi菜单中,找到并点击“NFC”选项。
- 确保NFC开关处于打开状态。
- 将手机靠近nRF7002-DK上的NFC模块。
-
三星(Samsung)手机:
- 打开手机的设置应用程序。
- 在设置菜单中,找到并点击“连接”选项。
- 在连接菜单中,找到并点击“NFC”选项。
- 确保NFC开关处于打开状态。
- 将手机靠近nRF7002-DK上的NFC模块。
5. 触发应用程序:当手机靠近NFC模块时,应用程序开始与手机之间进行NFC通信。最后在手机上启动应用程序。
实物展示
遇到问题
- 手机与开发板距离过远:如果手机与nRF7002-DK的距离太远,可能会导致NFC信号弱或无法建立连接。请将手机靠近开发板,确保两者之间的距离足够近。
总结感想
非常感谢硬禾学堂举办的活动,通过完成这个项目,我对NFC技术的应用有了更深入的了解和实践经验。
在项目中,我学会了使用nRF7002芯片进行NFC通信的基本原理和方法。通过阅读文档和参考示例代码,我了解到NFC通信主要包括三个步骤:感应、数据交换和连接建立。在这个过程中,我学会了如何初始化NFC模块、检测感应信号、读取和写入数据以及建立连接。
此外,我还学习了如何使用一些常用的NFC标签和读写器进行测试和验证。通过将标签靠近nRF7002芯片,并使用特定的读写器进行数据读取和写入操作,我能够验证NFC通信的正确性和可靠性。这对于调试和优化系统非常有帮助。
总的来说,通过参与这个项目,我对nRF7002 的NFC应用有了更全面的认识和实践经历。我相信这些学到的知识和经验将对我的未来学习和工作产生积极的影响。再次感谢硬禾学堂提供这样一个宝贵的机会!