zigbee串口通信
- 格式:doc
- 大小:171.50 KB
- 文档页数:4
版本:V1.15zigbee-mk-2000模块串口通信协议(共12页)编制:梁工文档修改记录1 概述Zigbee模块,型号zigbee-mk-2000是基于TI cc2530 芯片的无线通信模块。
模块大小仅有1.65cm*2.57cm大小。
模块支持AES 128bit加密,zigbee的十六个无线频道自动选择空闲加入。
支持关闭,打开设备加网。
2DBI天线情况下,通信距离在海边环境下高达1.5公里,家庭环境下,轻松穿透两堵墙稳定通信。
在不小于50个模块的MASH网络中稳定进行数据通信。
数据通讯速率高达250kbps。
支持多点对多点通信。
是组建无线传感器网络的理想模块。
模块已经量产,在新三板上市智能家居企业小批量使用。
开发团队有10年zigbee工作经验,zigbee产品在电力,家居中使用。
专业公司的PCB做板。
上市企业贴片。
TI原厂技术支持。
核心器件来自原厂供应商,全部使用村田电容,爱普生晶振。
2 硬件接口上位机与无线模块之间采用串行口通信方式,上位机把发送数据命令通过串口发送给无线模块(zigbee模块,以下简称模块),而模块根据上位机的命令进行相应的操作。
采用三线方式,即RX,TX,GND,由于系统共地,所以实际只用RX(接收),TX(发送)两线,TTL电平.通讯速率38400 BPS,异步方式。
3 收发数据0xFFFF为广播地址。
所有数据能够收到!地址(2Byte) 为zigbee要发送到目标的短地址。
数据接收数据帧格式((串口接收)数据加密版本,V1.40前版本数据收发负载最长为74个字节。
单包大于74字节不能发送成功。
数据加密版本,V1.40版本后最长负载支持80字节。
数据不加密版本,最长单包负载支持98字节。
例子一:模块数据广播发送数据例子:FA FF FF 4A 22 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 15 F5另一个模块接收到广播数据:(不同源地址,FD 4A会变化)FA E1 FD 4A 22 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 15 F5例子二:数据单播发送给0x0000 协调器:FA 00 00 4A 22 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 15 F5协调器模块接收到数据:(不同源地址,FD 4A会变化)FA E1 FD 4A 22 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 15 F54:控制命令命令发送数据帧格式(串口发出)命令索引定义4.0上电/重启包模块->上位机注:版本信息VERL VERH11 47 (代码版本)| |--- | |----加密1加密, 1 内部晶振32k0不加密0 内部外部晶振32k4.1获取设备类型注:FC 11 01 00 F5 协调器FC 11 01 01 F5 路由器4.2设置设备类型注:FC 11 01 00 F5 协调器FC 11 01 01 F5 路由器4.3获取网络号发送:上位机->模块panl : 网络地址低位pan2: 网络地址高位4.4设置网络号4.5获取设备短地址应答:模块-> 上位机4.6设备短地址返回4.7发送:上位机->模块4.8应答:模块-> 上位机注: 此命令要在没有形成网络前(作为未加网的路由器),进行设置。
基于CC2530的ZigBee无线串口通信设计作者:李艳丽吴莉来源:《电子技术与软件工程》2015年第12期摘要分析了基于ZigBee协议的无线传感器网络的关键技术和特点。
在ZigBee技术和无线数据传输的实现方法的基础上,搭建了基于CC2530单片机系统的汇聚网关及节点,最终实现设备终端与PC机之间的数据通信。
【关键词】ZigBee CC2530 串口通信1 ZigBee技术ZigBee技术它是一种短距离、低数据速率、低功耗、低成本的双向无线通信技术。
ZigBee技术适用于短距离的无线控制系统,为自动控制和远程控制领域的技术发展提供了有效的协议标准。
主要应用领域有农作物生长及环境监控、物流管理及应用、医疗监控设施、交通管理和监督以及军事侦察等。
1.1 ZigBee技术的无线传输的优势ZigBee、蓝牙以及IEEE802.11B标准都是工作在2.4G频段的无线通信标准,表1中标明了三种标准的特点及应用范围。
蓝牙技术的数据传输速率较低,传输距离最短,因此,可以应用于如手机与手机之间少量数据的传输。
其缺点是系统的抗干扰能力不强和高成本的制造费用。
IEEE802.11B最高数据传输速率最高,数据传输距离,支持无线上网笔记本、电脑、手机等使用WiFi功能实现上网。
ZigBee协议是一种短距离无线传感器网络与控制协议,主要优势在于传输控制信息时,数据量相对来说较小,特别适用于电池供电的系统。
1.2 ZigBee技术的特点ZigBee技术具有如下优点:(1)可靠性高。
(2)成本低、功耗小。
(3)高安全性。
2 硬件设计2.1 CC2530的内部结构CC2530单片机是一款支持IEEE 802.15.4协议并且能够兼容51内核的无线射频单片机。
[3]它是TI公司推出的第二代ZigBee平台和SoC解决方案。
内部集成了高性能的RF收发器、工业标准的8051内核、256K的ROM和8K的RAM。
能够支持5种工作模式,满足了对系统的低功耗要求;例如在接收模式时电流损耗为24mA,发送模式时为29mA。
2019——2020学年第二学期
专业
班级
学号
姓名
日期
实验
题目
收发字符串
实验
目的
熟悉并掌握CC2530芯片串口发送和接收数据的操作,为今后的综合实验打"下基础。
实验内容与步骤实验内容:
,使串口将接收的数据再发送。
实验步骤
1)打开鼎轩VSN实验箱,检查实验箱设备,确保实验箱设备完整、连接无误后,连接电源线,打开电源开关;
2)用烧录线连接汇聚网关上的烧录接口与电脑UsB接口;
3)双击打开目录(/cc2530-simple-demo/ USART-send-receive)下的工程图标USART-SR. eww打开工程;
4)点击1AR中的图标按钮编译程序;
5)完成编译后若没有错误信息,将实验箱节点编程开关上汇聚网关开关拨上去,点击调试并下载按钮将程序下载到汇聚网关上;
6)用串口线连接汇聚网关上的数据输出口和PC机USB接口, 打开串口助手,正确选择串口号(视具体电脑而定) 、波特率(9600) ,其他配置如下图都不更改。
7)在串口助手上字符串输入框内,输入需要传输的内容,点击发送按钮,可以看到字符串经串口传送给汇聚网关,然后又由串口打印输出,输出内容如下图:
.8)修改实验代码,实现输入字符1,红灯亮,输入字符2,红灯灭。
实验内容与步骤。
实验四Zigbee⽆线通信及RS232串⼝通信实验实验四 Zigbee⽆线通信及RS232串⼝通信实验实验预习要求1、了解Zigbee⽆线通信原理。
2、学习RS232串⼝和定时器编程⽅法。
⼀、实验⽬的1、了解Zigbee驱动函数的功能。
2、了解MSP430F6638中USCI_Ax模块的UART模块的使⽤。
3、掌握MSP430F6638的串⼝通信和定时器的使⽤。
⼆、实验器材PC机、两个CC2520模块、两台MSP430F6638实验箱、USB数据线、杜邦线三、实验内容1、验证性实验利⽤两个Zigbee模块通信,⼀个模块作发射,⼀个作接收。
发射模块所在实验箱按下按键控制接收模块所在实验箱上LED1的亮灭,从⽽实现⽆线点灯的功能。
2、设计性实验利⽤MSP430F6638单⽚机的USCI_Ax模块进⾏RS232串⼝通信,实现PC机和单⽚机的双向通信,要求如下:(1)单⽚机发送数字0到9⾄ PC机,从数字5开始发送,每隔1s发送⼀个数。
若单⽚机开发板上按下⼀按键(例如S3),则数字加1后进⾏发送,加到9以后,⼜从0开始,若没有按键按下,则继续发送当前的数字。
在PC机上⽤串⼝调试助⼿软件查看PC机接收的数据是否正确。
(2)PC机向单⽚机发送点灯的命令。
如果单⽚机接收到PC机发送的数字1,则点亮单⽚机开发板上的LED1;接收到PC机发送的数字2,则点亮单⽚机开发板上的LED2,……,直到LED5点亮。
四、实验原理1、验证性实验Zigbee是基于IEEE802.15.4标准的低功耗个域⽹协议。
根据这个协议规定的技术是⼀种短距离、低功耗的⽆线通信技术。
这⼀名称来源于蜜蜂的⼋字舞,由于蜜蜂(bee)是靠飞翔和“嗡嗡”(zig)地抖动翅膀的“舞蹈”来与同伴传递花粉所在⽅位信息,也就是说蜜蜂依靠这样的⽅式构成了群体中的通信⽹络。
其特点是近距离、低复杂度、⾃组织、低功耗、低数据速率、低成本。
主要适合⽤于⾃动控制和远程控制领域,可以嵌⼊各种设备。
Zigbee 之旅(五):几个重要的CC2430基础实验——串口通信作者:秋水寒 文章来源:秋水寒 点击数: 1060 更新时间:2011-4-19一、承上启下在无线传感网络中,CC2430需要将采集到的数据发送给上位机(即PC )处理,同时上位机需要向CC2430发送控制信息。
这一切都离不开两者之间的信息传递。
这一节,我们就来学习如何实现PC 机与CC2430之间的串口通信。
CC2430包括2个串行通信接口 USART0 与 USART1,每个串口包括两个模式:UART (异步)模式、SPI (同步)模式,本节仅涉及UART 模式)。
二、串口通信实验(1)实验简介实现开发板与PC 机的通信:PC 向CC2430发送某一字符串,CC2430收到后返回此此字符串给PC 。
(2)实验准备开始编写代码之前,需要搭建好硬件设施:正确连线 + 安装USB 转串的驱动。
硬件连线需要两条:CC2430开发板的JTAG 口 → 调试器 → PC 的USB 口(用于程序的调试、下载)CC2430开发板的串口 → PC 的USB 口(用于PC 与CC2430的数据通信)然后需要安装USB 转串口的驱动(下载地址)为了向串口发送数据,还需要一个串口调试工具(下载地址)。
(3)程序流程图#include <ioCC2430.h>unsigned char recv_buf[300] = {0};unsigned char recv_count = 0;/*系统时钟初始化-------------------------------------------------------*/void xtal_init(void){SLEEP &= ~0x04;//都上电while(!(SLEEP & 0x40));//晶体振荡器开启且稳定CLKCON &= ~0x47;//选择32MHz 晶体振荡器SLEEP |= 0x04;}/*UART0通信初始化-------------------------------------------------------*/void Uart0Init(unsigned char StopBits,unsigned char Parity){PERCFG&= ~0x01;//选择UART0为可选位置一,即RXD接P0.2,TXD接P0.3 P0SEL |=0x0C;//初始化UART0端口,设置P0.2与P0.3为外部设备IO口U0CSR = 0xC0;//设置为UART模式,并使能接收器U0GCR = 216;U0BAUD = 11;//设置UART0波特率为115200bps,至于为何是216和11,可查阅CC2430中文手册U0UCR |= StopBits|Parity;//设置停止位与奇偶校验}/*UART0发送数据-------------------------------------------------------*/void Uart0Send(unsigned char data){while(U0CSR&0x01);//等待UART空闲时发送数据U0DBUF = data;}/*UART0发送字符串-------------------------------------------------------*/void Uart0SendString(unsigned char *s){while(*s != 0)//依次发送字符串s中的每个字符Uart0Send(*s++);}/*UART0接受数据-------------------------------------------------------*/unsigned char Uart0Receive(void){unsigned char data;while(!(U0CSR&0x04)); //查询是否收到数据,否则继续等待data=U0DBUF;//提取接收到的数据return data;}/*主函数-------------------------------------------------------*/void main(void){unsigned char i,b;xtal_init();Uart0Init(0x00,0x00);//初始化UART0,设置1个停止位,无奇偶校验Uart0SendString("Please Input string ended with '@'!\r\n");recv_count = 0;while(1){while(1){b = Uart0Receive();UARTif(b=='@')break;//若接收到'@',则跳出循环,输出字符串recv_buf[recv_count] = b;//若不是'@',则继续向字符数组recv_buf[]添加字符recv_count++;}for(i=0; i<recv_count; i++)//输出字符串Uart0Send(recv_buf[i]);Uart0SendString("\n");recv_count =0;//重置}}。
Zigbee 之旅(五):几个重要的CC2430基础实验——串口通信
作者:秋水寒 文章来源:秋水寒 点击数: 1060 更新时间:2011-4-19
一、承上启下
在无线传感网络中,CC2430需要将采集到的数据发送给上位机
(即PC )处理,同时上位机需要向CC2430发送控制信息。
这一切都离不
开两者之间的信息传递。
这一节,我们就来学习如何实现PC 机与CC243
0之间的串口通信。
CC2430包括2个串行通信接口 USART0 与 USART1,每个串
口包括两个模式:UART (异步)模式、SPI (同步)模式,本节仅涉及U
ART 模式)。
二、串口通信实验
(1)实验简介
实现开发板与PC 机的通信:PC 向CC2430发送某一字符串,CC2430收到后返回此此字符串给PC 。
(2)实验准备
开始编写代码之前,需要搭建好硬件设施:正确连线 + 安装USB 转串的驱动。
硬件连线需要两条:
CC2430开发板的JTAG 口 → 调试器 → PC 的USB 口(用于程序的调试、下载)
CC2430开发板的串口 → PC 的USB 口(用于PC 与CC2430的数据通信)
然后需要安装USB 转串口的驱动(下载地址)
为了向串口发送数据,还需要一个串口调试工具(下载地址)。
(3)程序流程图
#include <ioCC2430.h>
unsigned char recv_buf[300] = {0};
unsigned char recv_count = 0;
/*系统时钟初始化
-------------------------------------------------------*/
void xtal_init(void)
{
SLEEP &= ~0x04;//都上电
while(!(SLEEP & 0x40));//晶体振荡器开启且稳定
CLKCON &= ~0x47;//选择32MHz 晶体振荡器
SLEEP |= 0x04;
}
/*UART0通信初始化
-------------------------------------------------------*/
void Uart0Init(unsigned char StopBits,unsigned char Parity)
{
PERCFG&= ~0x01;//选择UART0为可选位置一,即RXD接P0.2,TXD接P0.3 P0SEL |=0x0C;//初始化UART0端口,设置P0.2与P0.3为外部设备IO口U0CSR = 0xC0;//设置为UART模式,并使能接收器
U0GCR = 216;
U0BAUD = 11;//设置UART0波特率为115200bps,至于为何是216和11,可查阅CC2430中文手册
U0UCR |= StopBits|Parity;//设置停止位与奇偶校验
}
/*UART0发送数据
-------------------------------------------------------*/
void Uart0Send(unsigned char data)
{
while(U0CSR&0x01);//等待UART空闲时发送数据
U0DBUF = data;
}
/*UART0发送字符串
-------------------------------------------------------*/
void Uart0SendString(unsigned char *s)
{
while(*s != 0)//依次发送字符串s中的每个字符
Uart0Send(*s++);
}
/*UART0接受数据
-------------------------------------------------------*/
unsigned char Uart0Receive(void)
{
unsigned char data;
while(!(U0CSR&0x04)); //查询是否收到数据,否则继续等待
data=U0DBUF;//提取接收到的数据
return data;
}
/*主函数
-------------------------------------------------------*/
void main(void)
{
unsigned char i,b;
xtal_init();
Uart0Init(0x00,0x00);//初始化UART0,设置1个停止位,无奇偶校验
Uart0SendString("Please Input string ended with '@'!\r\n");
recv_count = 0;
while(1)
{
while(1)
{
b = Uart0Receive();UART
if(b=='@')break;//若接收到'@',则跳出循环,输出字符串
recv_buf[recv_count] = b;//若不是'@',则继续向字符数组recv_buf[]添加字符
recv_count++;
}
for(i=0; i<recv_count; i++)//输出字符串
Uart0Send(recv_buf[i]);
Uart0SendString("\n");
recv_count =0;//重置
}
}。