文章目录提示:此文章配合淘宝商家DNLN模块例程使用更佳
- 一、前期准备
- 二、修改zigbee配置
- 三、使用zigbee沟通上位机与单片机
- 1.发送信息给上位机
- 1.1 main函数
- 1.2 单片机和上位机通信
- 2.上位机控制单片机
- 总结
提示:以下是本篇文章正文内容,下面案例可供参考
首先拿到两个zigbee(以下叫做 DNLN模块)
要找一个usb转ttl的串口1,与zigbee连线,(3.3 连 Vcc,gnd连gnd,Rxd连tx,txd连rx),串口1直接连接电脑,安装驱动
对于单片机,要将 B10连接RX ,B11连接Tx(zigbee模块修改后才连上)
二、修改zigbee配置打开UartAssist(串口助手),用命令改写以下信息(地址,信通,网络id和波特率,波特率一般不用改,我们使用115200可以配套商家的例程使用)
这些信息怎么改呢,要把信通和网络改为相同,这样zigbe模块可以通讯
地址可以用来区分不同的zigbee模块,给他们编号。
(以下例子,连接电脑的zigbee叫做11 ,连接单片机的叫做12 )
修改方式
当修改完zigbee之后,就可以打开商家的例程,但是这个这个例程太不给力,直接运行不不了的
最好自己重新创建一个文件,然后把库拖进去,为了方便,可以使用我重新创建的工程
三、使用zigbee沟通上位机与单片机 1.发送信息给上位机 1.1 main函数main中有哪些函数 ,还有他们的功能
void recievePkg(sPkg*pkg);(抓到一个包后的处理)
void loopReceive(void);(不断抓包)
void loopAll(void);(单片机一个周期中胡执行的动作)
void initAll(void);(指代初始化所有的负载)
1.2 单片机和上位机通信
在最开始 , 单片机的zigbee模块(后称为模块 1)会创建一个新的数据包(储存着要给电脑发送的数据)
newPkg(1) THPkg = {5,0x90,0x32,0x11,0x00,0x32};
这是一个结构体,意思是,单片机端口90 向电脑11号zigbee模块32号端口发送数据
0032。
端口号,模块地址以及数据都可以修改
newPkg定义满足 zigbee 包的格式
#define newPkg(num) \
struct \
{ \
u8 length; \ 包长度
u8 src_port; \源端口号
u8 dis_port; \目的端口号
u8 remote_addrH;\目的地址
u8 remote_addrL;\
u8 data[num]; \
}
然后我们使用loopall完成一次对电脑的信息发送
THPkg.dis_port = 0xa0; (向电脑端口a0发送数据,原来是32)
THPkg.data[0]=30;(数据是 30 )
sendPkg((sPkg*)(&THPkg));(发送数据命令)
如果电脑有接入zigbee模块,此时串口助手 UartAssist 会收到 FE a0 90 12 00 30 FF
此时就完成了一次单片机发送数据到电脑
2.上位机控制单片机如果我们要让电脑控制单片机
找到 recievePkg(sPkg* pkg)函数中的switch部分(如下)
意思是,如果单片机的 b0 端口收到消息,将灯关闭,其中控制可以任意更改
case 0xb0:
if(pkg->data[0] == 0x01)//若端口b0收到消息
{
close();//把灯关闭,可以修改
}
总结
提示:这里对文章进行总结:
此处只是简单介绍如何使用zigbee并且看到现象
至于原理,我还搞明白
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)