我是靠谱客的博主 风趣大神,这篇文章主要介绍zigbee快速上手一、前期准备二、修改zigbee配置三、使用zigbee沟通上位机与单片机总结,现在分享给大家,希望可以做个参考。

提示:此文章配合淘宝商家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中有哪些函数 ,还有他们的功能

复制代码
1
2
3
4
5
void recievePkg(sPkg*pkg);(抓到一个包后的处理) void loopReceive(void);(不断抓包) void loopAll(void);(单片机一个周期中胡执行的动作) void initAll(void);(指代初始化所有的负载)

1.2 单片机和上位机通信

在最开始 , 单片机的zigbee模块(后称为模块 1)会创建一个新的数据包(储存着要给电脑发送的数据)

复制代码
1
2
newPkg(1) THPkg = {5,0x90,0x32,0x11,0x00,0x32};

这是一个结构体,意思是,单片机端口90 向电脑11号zigbee模块32号端口发送数据
0032。端口号,模块地址以及数据都可以修改

newPkg定义满足 zigbee 包的格式

复制代码
1
2
3
4
5
6
7
8
9
10
11
#define newPkg(num) struct { u8 length; 包长度 u8 src_port; 源端口号 u8 dis_port; 目的端口号 u8 remote_addrH;目的地址 u8 remote_addrL; u8 data[num]; }

然后我们使用loopall完成一次对电脑的信息发送

复制代码
1
2
3
4
5
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 端口收到消息,将灯关闭,其中控制可以任意更改

复制代码
1
2
3
4
5
6
7
8
case 0xb0: if(pkg->data[0] == 0x01)//若端口b0收到消息 { close();//把灯关闭,可以修改 }

总结

提示:这里对文章进行总结:
此处只是简单介绍如何使用zigbee并且看到现象
至于原理,我还搞明白

最后

以上就是风趣大神最近收集整理的关于zigbee快速上手一、前期准备二、修改zigbee配置三、使用zigbee沟通上位机与单片机总结的全部内容,更多相关zigbee快速上手一、前期准备二、修改zigbee配置三、使用zigbee沟通上位机与单片机总结内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(75)

评论列表共有 0 条评论

立即
投稿
返回
顶部