三、Zigbee知识点
1.物联网的定义
物联网是通过使用射频识(RadioFrequency Identification,RFID)、传感器、红外感应器、全球定位系统、激光扫描器等信息采集设备,按约定的协议,把任何物品与互联网连接起来,进行信息交换和通讯,以实现智能化识别、定位、跟踪、监控和管理的一种网络。
2.物联网的特征
全面感知
可靠传递
智能处理
3.传感器的功能
物理世界的“感觉器官”
从狭义角度来看,传感器是一种将测量信号转换成电信号的变换器
从广义角度来看,传感器是指在电子检测控制设备输入部分中起检测信号作用的器件
4.无线传感器网络
(1)WSN对物联网的支撑作用
出无线传感器网络技术是传统传感技术和网络通讯技术的融合,通过将无线网络节点附加采集各种物理量的传感器而成为兼有感知能力和通讯能力的智能节点,是物联网的核心支撑技术之一。
是物联网网络感知层和传输网络层的主要实现技术。
(2)WSN拓扑结构
通常将网络中的主机、终端和其他通信控制与处理设备抽象为结点;将通信线路抽象为线路,而将结点和线路连接而成的几何图形称为网络的拓扑结构。
常用的拓扑结构有平面网络结构、分级网络结构、混合网络结构和Mesh网络结构。
(3)WSN通用协议结构
通信协议层可以划分为物理层、链路层、网络层、传输层和应用层五层,而网络管理面则可以划分为能耗管理面、移动性管理面以及任务管理面。
5.Zigbee
(1)定义
ZigBee是一种短距离、低功耗的无线网络
技术,主要由ZigBee联盟制定,其底层是采
用IEEE 802.15.4标准规范的MAC与PHY层。
(2)特点
①数据传输速率低
②功耗低
③成本低
④网络容量大
⑤时延短
⑥网络的自组织、自愈能力强、通信可靠
⑦数据安全
⑧工作频段灵活
(3)设备类型
网络协调器:每各ZigBee网络必须有一个初始化网络信息。
全功能设备(FFD):可以担任网络协调者,形成网络,让其它的FFD或是精简功能装置(RFD)连结,FFD具备控制器的功能,可提供信息双向传输。
精简功能设备(RFD):只能传送信息给FFD或从FFD接收信息。
附带有限的功能来控制成本和复杂性
在网络中通常用作终端设备。
(4)Zigbee网络中的节点
①终端节点:分为采集节点和控制节点,采集节点实现对数据信息的采集、存储、处理和传输功能,控制节点接收上层节点发送的控制指令,驱动执行机构进行实现操作。终端节点可以直接与协调器节点相连,也可以通过路由器节点与协调器节点相连。
②路由器节点:
负责转发数据资料包,进行数据的路由路径寻找和路由维护,允许节点加入网格并辅助其子节点通信。 路由器节点是终端节点和协调器节点的中继,它为终端节点和协调器节点之间的通信进行接力。
③协调器节点:
协调器是网络各节点信息的汇聚点,是网络的核心节点,负责组建、维护和管理无线传感器网络,并通过串口实现各节点与PC机(正常接入因特网)的数据传递。协调器有最强的通信能力、处理能力。
(5)MAC层中实现其本身作用的载体——帧
帧结构
整个MAC帧的长度,在不考虑装载的货物,也就是具体数据的情况下,本身的大小视PAN标识符,目的地址等的变化,有25字节,9字节,5字节三种。
MAC从结构上,由帧头,载荷,帧尾构成。
帧就是一个协议具体实现自己作用的载体。
四、串口通信
①#include
#define uint unsigned int
#define uchar unsigned char
void ck_init()//串口初始化子函数
{
TMOD&=0x0f;//0000 1111.将定时器1设定为工作在方式1,8位自动重装模式下。对定时器0不影响
TMOD|=0X20;//0010 0000
TH1=0XFD;
TL1=0XFD;//设置波特率为9600
TR1=1;//开动定时器1
SM1=1;
SM0=0;//将串口设置为8位数据,10位长度
REN=1;//让串口SBUF*2进入工作状态
ES=1;//开串口中断
EA=1;//开总中断。串口获得完整权限开始工作
}
void ckfs()//串口发送函数
{
ES=0;
SBUF=0XAA;//这是我们要发送的东西
while(!TI); //没发完的时候,while(!0)=while(1);,就会卡在这
TI=0;//手动清零TI标志位,为下一次传输做好准备
ES=1;
}
int main()//MCU的CPU就承担MCU“发送-输出”这个动作
{
ck_init();//调用串口初始化子函数
ckfs();//调用发送函数
while(1);//只发一次
}
void ck_zd() interrupt 4 //串口硬件默认自动服务于MCU“接收”这个动作
{
}
②/*
2.在上一个例子的基础上,MCU先从PC接收0XFFCC,MCU再发回PC,且只发一次
*/
#include
#define uint unsigned int
#define uchar unsigned char
int str;//全局变量str
uchar flag=0;//接收完毕标志位
void ck_init()//串口初始化子函数
{
TMOD&=0x0f;//0000 1111.将定时器1设定为工作在方式1,8位自动重装模式下。对定时器0不影响
TMOD|=0X20;//0010 0000
TH1=0XFD;
TL1=0XFD;//设置波特率为9600
TR1=1;//开动定时器1
SM1=1;
SM0=0;//将串口设置为8位数据,10位长度
REN=1;//让串口SBUF*2进入工作状态
ES=1;//开串口中断
EA=1;//开总中断。串口获得完整权限开始工作
}
void ckfs()//串口发送函数
{
ES=0;
SBUF=str;//这是我们要发送的东西
while(!TI); //没发完的时候,while(!0)=while(1);,就会卡在这
TI=0;//手动清零TI标志位,为下一次传输做好准备
ES=1;
}
int main()//MCU的CPU就承担MCU“发送-输出”这个动作
{
ck_init();//调用串口初始化子函数
while(1)
{
if(flag==1)
{
flag=0;
ckfs();//调用发送函数
}
}
}
void ck_zd() interrupt 4 //串口硬件默认自动服务于MCU“接收”这个动作
{
str=SBUF;//接收寄存器中的内容给了str
RI=0;
flag=1;
}
| 留言与评论(共有 0 条评论) “” |