zigbee DL-20无线串口收发模块使用(双车通讯,电赛模块推荐)

前言

(1)通常有时候,我们可能会需要让两个MCU进行通讯。而zigbee是最适合两个MCU短距离通讯的模块。他使用极其简单,非常适合两款MCU之间的进行数据交互。
(2)在各类比赛中,经常出现需要两个MCU通讯,比如电赛的双车通讯。所以我在此做一个记录。
(3)为了防止一些小白搞骚操作,这里郑重提示一下:只有一个zigbee是无法实现两款MCU之间的通讯的!!!

zigbee模块图片

在这里插入图片描述
在这里插入图片描述

使用介绍

(1)这款模块,让他VCC接+5V,GND接GND,即可正常工作。
(2)但是这个模块刚买过来的时候,需要进行配置,按照如下步骤来。

第一个zigbee配置顺序

第一步,进入配置模式

(1)不要通电,按住下面这个唯一的按键.
(2)按住按键之后,再进行通电。
(3)然后松手进入配置模式。

在这里插入图片描述

第二步,设置波特率

(1)进入配置模式之后,我们现在可以设置波特率了。
(2)短按那个唯一的按键,即可设置波特率。波特率配置表如下。

在这里插入图片描述

(3)我将其配置为14400作为讲解。

在这里插入图片描述

第三步,设置频道

(1)配置完波特率之后,长按那个唯一的按键。直到四个LED循环闪烁,然后松手。
(2)zigbee DL-20无线串口收发模块的频道有2^4=16个。这个频道的作用,就是让两个zigbee DL-20无线串口收发模块能够对接通讯。
(3)短按那个唯一的按键,设置频段。
(4)注意:这个两个模块的频道必须一致!否则无法通讯,波特率可以不一样。
(5)我这里设置为四个LED都闪烁的频段。

在这里插入图片描述

第四步,设置模式

(1)频段设置完成之后,长按唯一的按键,直到四个LED循环闪烁,进入模式设置。
(2)如果想让两个模块单独通讯,那么就让一个设置A端,一个模块为B端。这样才能进行有效通讯。
(3)广播模式不用管。

在这里插入图片描述

(4)我这里先将模块设置为A 端。即两个红色的LED亮。

在这里插入图片描述

第五步,确认设置

(1)如果前面有一步设置配置出现问题,我们可以直接断电,重新按第一步来执行。
(2)如果配置没有问题,长按按键,直到四个LED循环闪烁。按键松开,LED常亮2S。配置完成。

第二个zigbee配置

第一步,进入配置模式

(1)不要通电,按住下面这个唯一的按键.
(2)按住按键之后,再进行通电。
(3)然后松手进入配置模式。

在这里插入图片描述

第二步,设置波特率

(1)进入配置模式之后,我们现在可以设置波特率了。短按唯一的按键设置波特率。
(1)两个zigbee波特率可以不一样,但是为了方便记忆,我们还是将两个zigbee模块都设置为14400。

在这里插入图片描述

第三步,设置频道

(1)配置完波特率之后,长按那个唯一的按键。直到四个LED循环闪烁,然后松手。
(2)注意,两个模块的频道要一致,所以这里也需要设置为4个LED全亮。

在这里插入图片描述

第四步,设置模式

(1)频段设置完成之后,长按唯一的按键,直到四个LED循环闪烁,进入模式设置。
(2)如果想让两个模块单独通讯,那么就让一个设置A端,一个模块为B端。这样才能进行有效通讯。
(3)因为第一个模块设置的是A端,所以这个就需要设置为B端。

在这里插入图片描述

第五步,确认设置

(1)如果前面有一步设置配置出现问题,我们可以直接断电,重新按第一步来执行。
(2)如果配置没有问题,长按按键,直到四个LED循环闪烁。按键松开,LED常亮2S。配置完成。

测试两个模块通讯

(1)准备两个USB转TTL模块。
(2)将任意一个模块与USB转TTL模块的VCC接+5V,GND接GND,TX接RX,RX接TX。
(3)另外一个模块的VCC接USB转TTL模块+5V,GND接GND。然后让这个模块的RX和TX连接在一起。
(4)将两个USB转TTL插上电脑,让电脑端的串口工具连接到步骤(2)的模块上。发送字符’a’,如果串口工具能够接收到字符’a’。就说明配对完成。

单片机程序设计

这个单片机程序就非常简单了,只需要单片机A发送数据,单片机B就能够收到了。

<think>好的,用户想了解DL20无线串口模块的代码。首先,我需要确认DL20模块的具体型号和用途,因为不同的无线模块可能有不同的通信协议和接口。DL20可能是一个常见的串口无线模块,比如基于蓝牙、Wi-Fi或LoRa的模块。 接下来,用户可能需要知道如何编写代码来控制这个模块,包括初始化设置、数据发送和接收等步骤。由于模块通常通过AT指令进行配置,我应该先介绍基本的AT指令用法,然后提供示例代码结构。 需要考虑到用户可能的开发环境,比如Arduino、STM32或者Python,但用户没有明确说明,所以保持通用性比较重要。可能需要分几个部分来讲解:硬件连接、AT指令配置、发送和接收数据的代码示例。 另外,用户可能对错误处理和应用场景感兴趣,比如数据校验、超时处理以及模块的实际应用例子。这部分可以增强回答的实用性。 要确保遵循系统级指令,所有行内公式用$...$,独立公式用$$...$$,但在这个问题中可能涉及数学公式较少,主要关注代码和配置指令。同时保持结构清晰,用中文逐步解释,确保用户能理解每个步骤。 最后,检查是否需要补充模块的典型应用和常见问题,帮助用户更好地应用代码解决实际问题。可能需要提醒用户查阅具体的数据手册,因为不同厂家的DL20模块可能有细微差别。</think>DL20无线串口模块是一款基于无线通信技术的串口透传模块,常用于工业控制、物联网设备间的数据传输。其代码开发主要围绕串口配置、无线参数设置和数据收发逻辑展开。以下从硬件接口、代码结构和典型应用三个层面进行说明: 一、硬件接口配置 1. 串口参数设置(波特率需与模块匹配): ```c // Arduino示例 Serial.begin(115200); // 匹配DL20默认波特率 ``` 2. 硬件流控制(可选): $$RTS/CTS \in \{0,1\} \quad \text{(通过AT指令使能)}$$ 二、核心代码结构 1. AT指令配置模式(需拉低SET引脚): ```c digitalWrite(SET_PIN, LOW); // 进入配置模式 delay(100); Serial.println("AT+BAUD=115200"); // 设置波特率 Serial.println("AT+CH=5"); // 设置信道 digitalWrite(SET_PIN, HIGH); // 返回透传模式 ``` 2. 数据透传模式示例: ```python # Python伪代码 ser = serial.Serial("/dev/ttyUSB0", 115200) while True: if ser.in_waiting: data = ser.read_all() # 接收无线数据 process_data(data) if need_send: ser.write(b"SensorData:25.6") # 发送数据 ``` 三、典型应用场景代码 1. 工业传感器数据采集: ```c // STM32 HAL库示例 void send_sensor_data(float temp) { char buffer[32]; sprintf(buffer, "TEMP:%.2f", temp); HAL_UART_Transmit(&huart2, (uint8_t*)buffer, strlen(buffer), 1000); } ``` 2. 无线中继控制: ```arduino void loop() { if(Serial.available()){ String cmd = Serial.readStringUntil('\n'); if(cmd == "RELAY_ON"){ digitalWrite(RELAY_PIN, HIGH); } } } ``` 注意事项: 1. 数据校验建议使用$CRC16\_MODBUS$算法 2. 通信超时应设置$Timeout \geq 3 \times T_{packet}$ 3. 信道冲突避免:$$CH = (BaseChannel + DeviceID)\ mod\ 16$$ 建议开发步骤: 1. 先用USB转TTL工具测试AT指令 2. 实现基础收发后再增加协议封装 3. 实际部署时注意天线安装位置和方向 不同厂家的DL20模块可能存在指令集差异,具体开发需参考对应版本的《AT指令手册》。工业场景建议增加数据重传机制和信号强度检测(通过AT+RSSI?查询)。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风正豪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值