Arduino硬件之NCF技术(近场通信技术)
Arduino硬件之NCF技术(近场通信技术)
版权转载:https://blog.csdn.net/import_sadaharu/article/details/52437488
Android硬件之NFC技术
NFC(Near Field Communication,近场通信),是一种数据传输技术。但是,与Wi-Fi、蓝牙、红外线等技术最主要的差异就是有效距离,NFC的有效距离很短,一般不超过10厘米。
Android 2.3.1( API Level = 9 ) 开始支持NFC技术,但Android 2.x 和 3.x 对NFC的支持非常有限。而从Android 4.0 ( API Level = 14 )开始,Google 开始向NFC发力,NFC技术在Android中得到了更进一步的支持。尤其是4.1,可以利用NFC技术传递较大的数据(NFC会利用蓝牙结合进行大数据量的传输)
NFC的工作模式:
- 读卡器模式(Reader / Writer Mode)
 - 仿真卡模式(Card Emulation Mode)
 - 点对点模式(P2P Mode)
 
读卡器模式:
读卡器模式本质上就是通过NFC设备(比如支持NFC的Android手机)从带有NFC芯片的标签,贴纸,明信片,报纸,名片等媒介读取信息,或者将数据写到这些媒介中。贴有NFC贴纸的产品在市面上很常见。
仿真卡模式:
仿真卡模式就是将支持NFC的手机或者其他电子设备当成借记卡、信用卡、公交卡、门禁卡等IC卡使用。基本原理就是将相应IC卡中的信息(支付凭证)封装成数据包存储在支持NFC的手机中。在使用时,还需要一个NFC射频器(相当于刷传统IC卡使用的刷卡器)。将手机靠近NFC射频器,手机就会接收到NFC射频器发过来的信号,在通过一些列验证后,将IC卡的相应信息传入NFC射频器,最后这些IC卡数据会传入NFC射频器连接的电脑,并进行相应的处理。
点对点(P2P)模式:
该模式与蓝牙、红外线差不多,可以用于不同NFC设备之间进行数据交换,只是NFC的点对点模式有效距离更短(不能超过10厘米),而且传输建立速度要比红外线和蓝牙技术快很多。
点对点模式的典型应用是两部支持NFC的手机或平板电脑实现数据的点对点传输,例如,下载音乐、交换图片、同步设备地址薄。因此,通过NFC,多个设备如数字相机,PDA,计算机,手机之间,都可以快速链接并交换资料或者服务。
NFC、蓝牙和红外线的比较
| 
 NFC  | 
 蓝牙  | 
 红外  | 
|
| 
 网络类型  | 
 点对点  | 
 单点对多点  | 
 点对点  | 
| 
 使用距离  | 
 ≤0.1m  | 
 ≤10m  | 
 ≤1m  | 
| 
 传输速度  | 
 106、212、424、868、721、115Kbps  | 
 2.1 Mbps  | 
 ~1.0 Mbps  | 
| 
 建立时间  | 
 < 0.1s  | 
 6s  | 
 0.5s  | 
| 
 安全性  | 
 具备, 硬件实现  | 
 具备,软件实现  | 
 不具备, 使用IRFM 时除外  | 
| 
 通信模式  | 
 主动-主动/被动  | 
 主动-主动  | 
 主动-主动  | 
| 
 成本  | 
 低  | 
 中  | 
 低  | 
NFC标签
不同的NFC标签之间差异很大,有的比较简单,只支持简单的读写操作,有的会将标签设计成只读变成类似光盘一样。有的比较复杂,比如有的可以通过硬件加密限制你的访问区域。
Android SDK API 主要支持NFC论坛标准,这种标准被称为NFC数据交换格式,简称NDEF(NFC Data Exchange Format )。
NFC的三重过滤机制
在一个NFC设备读取NFC标签或另一个NFC设备中的数据之前会在0.1秒之内建立NFC连接,然后数据会自动从被读的一端流向取数据的一端。数据接收端会根据具体的数据格式和标签类型调用相应的Activity(这种行为也称为Tag Dispatch)。这些Activity都需要定义Intent Filter。这些Intent Filter中就会指定不同的过滤机制,分为3个级别。因此,也称为NFC的三重过滤机制。
三重过滤机制:
- NDEF_DISCOVERED:只过滤固定格式的NDEF数据。例如,纯文本、指定协议(http、ftp、smb等)的URI等。
 
- TECH_DISCOVERED:当ACTION_NDEF_DISCOVERED指定的过滤机制无法匹配Tag时,就会使用这种过滤机制进行匹配。这种过滤机制并不是通过Tag中的数据格式进行匹配的,而是根据Tag支持的数据存储格式进行匹配。因此这种过滤机制的范围更广。
 
- TAG_DISCOVERED:如果将NFC的过滤机制看成是if……else if……else语句的话,那么这种过滤机制相当于最后的else语句。前面两种过滤机制都失败了,系统就会利用这种过滤机制来处理。这种过滤机制用来处理未识别的Tag(数据格式不对,而且Tag支持的格式也不匹配)。
 
Android系统会一次匹配上述三种过滤机制,如果通过三重过滤机制仍然无法匹配Tag,就什么也不做。通常在成功匹配Tag后,Android设备会发出比较清脆的声音,而未成功匹配Tag,就会发出比较沉闷的声音。
注意事项:
- 设置权限
 
<uses-permission android:name="android.permission.NFC">
- 限制安卓版本
 
<uses-sdk android:minSdkVersion="14">
- 限制安装的设备的硬件
 
<uses-feature android:name="android.hardware.nfc"
android:required="true" />
- Android Beam技术
 
对于在Android 4.1以后,NFC传递数据较大时,可以使用Android Beam 技术,此技术会通过NFC启用蓝牙,会利用蓝牙结合进行大数据量的传输。(此时的蓝牙无需匹配,直接在内层就被调用了)
用于描述NDEF格式数据的两个重要的类
NdefMessage:描述NDEF格式的信息
NdefRecord:描述NDEF信息的一个信息段
这两个类是Android NFC技术的核心类,无论读写NDEF格式的NFC标签,还是通过Android Beam技术传递Ndef格式的数据,都需要这两个类。
向NFC标签写入数据的步骤
- 获取Tag对象
 
Tag detectedTag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
- 判断NFC标签的数据类型(通过Ndef.get方法)
 
Ndef ndef = Ndef.get(tag);
- 写入数据
 
ndef.writeNdefMessage(ndefMessage);
例子:通过NFC自动启动Android应用程序
程序地址:https://github.com/sadaharusong/AutoNFC/
此例子,先获取本机中安装的所有程序,然后选择之后,需要将对应的NFC标签或者贴纸靠近手机,然后就会自动启动。
NDEF的规范
需要与NFC标签传递数据时,需要一定的格式,也就是NDEF的各种格式规范:
在网址:http://www.nfc-forum.org/specs/spec_dashboard 中。
其中,这些规范十分常用:
Android Beam
Android Beam的基本理念就是两部NFC设备靠近时,通过触摸一部NFC设备的屏幕,将数据推向另外一部NFC设备。PS:在传递过程中需保持较近的距离。
Arduino硬件之NCF技术(近场通信技术)的更多相关文章
- NFC:Arduino、Android与PhoneGap近场通信
		
NFC:Arduino.Android与PhoneGap近场通信(第一本全面讲解NFC应用开发的技术著作移动智能设备近距离通信编程实战入门) [美]Tom Igoe(汤姆.伊戈),Don Colema ...
 - 单片机联网需求攀升 WIZnet全硬件TCP/IP技术崛起
		
--新华龙电子为韩国WIZnet公司网络芯片授权代理商,具有20多年的专业团队IC应用开发实力-- 如今不管是在企业还是小区.街道,甚至是居民室内,以太网接口无处不在.有鉴于此,电子设备必将向更加智能 ...
 - CPU硬件辅助虚拟化技术
		
目前主要有Intel的VT-x和AMD的AMD-V这两种技术.其核心思想都是通过引入新的指令和运行模式,使VMM和Guest OS分别运行在不同模式(ROOT模式和非ROOT模式)下,且Guest O ...
 - 用fritzing绘制arduino硬件连线图
		
在http://fritzing.org/home/ 点击下载最新版本. 解压之后直接可以使用. 打开Fritzing.exe 在点击面包板,在搜索界面输入想要找到的原件拖拽即可放在面包板所在的图上. ...
 - HDC2021技术分论坛:组件通信、硬件池化,这些创新技术你get了吗?
		
作者:ligang 华为分布式硬件技术专家,sunbinxin 华为应用框架技术专家 HarmonyOS是一款全新的分布式操作系统,为开发者提供了元能力框架.事件通知.分布式硬件等分布式技术,使能开发 ...
 - 为什么Arduino独占鳌头并站稳脚跟?
		
出处: http://bbs.dfrobot.com.cn/thread-793-1-1.html 为什么Arduino独占鳌头并站稳脚跟? 每个月,我都会在<Make>杂志上发表几篇社论 ...
 - ESP8266开发之旅 基础篇② 如何安装ESP8266的Arduino开发环境
		
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
 - ESP8266开发之旅 基础篇③ ESP8266与Arduino的开发说明
		
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
 - 控制Arduino的利器-Windows Remote Arduino
		
1. 概述 相信很多朋友已经在玩 Arduino了,而且一般都是使用官方的Arduino IDE来写程序控制Arduino硬件.为了能够实现更加方便的控制,微软在Windows IoT计划中推出了Wi ...
 
随机推荐
- springcloud(二)
			
springcloud路由网关 一.什么是网关 Zuul的主要功能是路由转发和过滤器.路由功能是微服务的一部分,比如/api/user转发到到user服务,/api/shop转发到到shop服务.zu ...
 - 【洛谷P4093】 [HEOI2016/TJOI2016]序列 CDQ分治+动态规划
			
你发现只会改变一个位置,所以可以直接进行dp 具体转移的话用 CDQ 分治转移就好了~ #include <bits/stdc++.h> #define N 100006 #define ...
 - The two of the oldest man need cheers
			
At a company dinner, the drinking rule was that two colleagues of similar age clinked glasses of win ...
 - windows 获取时间戳
			
Windows 批处理时间戳 1.时间戳格式: 取年份: echo %date:~,% 取月份: echo %date:~,% 取日期: echo %date:~,% 取星期: echo %date: ...
 - 一些常用的文本文件格式(TXT,JSON,CSV)以及如何从这些文件中读取和写入数据
			
TXT文件: txt是微软在操作系统上附带的一种文本格式,文件以.txt为后缀. 从txt文件中读取数据: with open ('xxx.txt') as file: data=file.readl ...
 - CDH 版本 6.0.1 升级到 6.2.0 当前最新版本(CentOS 7.x)
			
前文「CDH CM版本 6.0.1 升级到 CM 6.2.0 当前最新版本(CentOS 7.x)」 承接上文,当我们完成 CM 6.2.0 的升级之后,我们已经相当于完成了80% minor 的升级 ...
 - 【POJ1068】Parencodings
			
题目传送门 本题知识点:模拟 这是一道恐怖的括号题.题意稍微理解以下还是可以的. 我们针对样例来理解一下 S.P.W 到底是什么意思: S:( ( ( ( ) ( ) ( ) ) ) ) P: \(P ...
 - 定制比特币btc地址address
			
https://99bitcoins.com/how-to-get-a-custom-bitcoin-address/ https://en.bitcoin.it/wiki/Vanitygen htt ...
 - 安装docker (centos7.6)
			
Docker 更新yum包 sudo yum update 卸载旧版本sudo yum remove docker docker-common docker-selinux docker-engine ...
 - 转:sql 经典50题--可能是你见过的最全解析
			
题记:从知乎上看到的一篇文章,刚好最近工作中发现遇到的题目与这个几乎一样,可能就是从这里来的吧.^_^ 里面的答案没有细看,SQL求解重在思路,很多时候同一种结果可能有多种写法,比如题中的各科成绩取前 ...