利用ESP32构造一个ZIGBEE的网络发送转接
Posted 卓晴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用ESP32构造一个ZIGBEE的网络发送转接相关的知识,希望对你有一定的参考价值。
简 介: 利用 ESP32的联网功能,构建了一个 WiFi UDP 转 Zigbee的串口模块。这个模块仅仅是将 UDP的指令发送到Zigbee的网络中,便替代了原来的功能。注意,ESP32的网络地址为: 192.168.0.114。如何能够获得 ESP32的IP地址呢? 可以介入 192.168.0.1 WiFi网关,在DHCP服务器的客户列表中检查到 Espressif的IP地址。
关键词
: ESP32,Zigbee
§01 ZIGBEE网关
一、背景介绍
在 实验室中的第三只手:滑轨参数以及控制接口 给出了实验室中的滑轨平台控制参数。这些平台都是通过连接在 “COM2” 上的 zigbee 通讯模块相互连接的。由于现在平台所使用到的串口设置遇到问题,因此计划使用ESP32作为网桥,作为UDP转成COM口的转换网桥,这样可以使得原来实验室的设备能够继续使用。
二、制作模块
1、ESP32模块
ESP32模块使用了基于ESP32的智能车竞赛裁判系统 ,这是由龙邱公司生产出售的。 可以通过其中的TXD2,RXD2完成向ZIGBEE 发送信息。
▲ , ESP32裁判系统中的串口
2、ZIGBEE模块
下图给出了ZIGBEE的接口,通过四芯的扁平电缆与ESP32裁判系统模块相连。
▲ 图1.2.2 ZIGBEE接口与ESP32之间的接口
三、软件编程
1、测试串口
参考在 第十七届智能车竞赛比赛系统软件修改-多车组时间延迟 博文中对于ESP32裁判系统软件修改中的代码,编写串口测试软件。代码如下:
from machine import Pin,UART
import time
import machine
machine.freq(240000000)
uart1 = UART(2, baudrate=115200, rx=16, tx=17, timeout=10)
bz1 = Pin(21, Pin.OUT)
bz1.off
while True:
uart1.write(bytes([0x55]))
time.sleep_ms(10)
测试 TX2 管脚的波形为为:
▲ 图1.3.1 发送0x55数据TX波形
2、发送ZIGBEE命令
将ESP32连接到 ZIGBEE模块。
▲ 图1.3.2 连接ZIGBEE模块
通过如下程序,每隔 500ms 发送一个relay click 指令,经过验证,动作正常。由此证明整个ZIGBEE发送过程是正常的。
from machine import Pin,UART
import time
import machine
machine.freq(240000000)
uart1 = UART(2, baudrate=115200, rx=16, tx=17, timeout=10)
bz1 = Pin(21, Pin.OUT)
bz1.off
while True:
uart1.write(b'solenoidrelay pulse 4 50\\r')
time.sleep_ms(500)
print("SEND.")
3、连接WiFi接口
根据 ESP32模块的MicroPython的基本实验 对于ESP32联网的一般实验,将ESP32接入实验室中的 WiFi 热点,并建立UDP接口连接。
如下是完整的 ESP32程序。使用 Thonny IDE 将 下面的程序写入ESP32内部FLASH,并启动。
from machine import Pin,UART
import machine,time, network, usocket
machine.freq(240000000)
uart1 = UART(2, baudrate=115200, rx=16, tx=17, timeout=10)
bz1 = Pin(21, Pin.OUT)
bz1.off()
wlan = network.WLAN(network.STA_IF)
wlan.active(False)
wlan.active(True)
time.sleep_ms(100)
wlan.connect('TENDA626A', 'gniqouhz')
bz1.on()
while not wlan.isconnected():
time.sleep_ms(100)
wlan.ifconfig()
bz1.off()
us = usocket.socket(usocket.AF_INET, usocket.SOCK_DGRAM)
sockaddr = usocket.getaddrinfo('0.0.0.0', 4567)[0][-1]
us.bind(sockaddr)
while True:
data,addr = us.recvfrom(1024)
if len(data) > 0:
bz1.on()
uart1.write(data)
bz1.off()
经过测试,发送一下指令,可以引起实验室中ZIGBEE中的继电器动作。
solenoidrelay pulse 4 50
这也就验证了这个WiFi 转 Zigbee的模块功能正常了。
※ 总 结 ※
利用 ESP32的联网功能,构建了一个 WiFi UDP 转 Zigbee的串口模块。这个模块仅仅是将 UDP的指令发送到Zigbee的网络中,便替代了原来的功能。
注意:
- ESP32的网络地址为: 192.168.0.114
- 端口号:4567
如何能够获得 ESP32的IP地址呢? 可以介入 192.168.0.1 WiFi网关,在DHCP服务器的客户列表中检查到 Espressif的IP地址。
▲ 图2.1 ESPressif IP地址
■ 相关文献链接:
● 相关图表链接:
以上是关于利用ESP32构造一个ZIGBEE的网络发送转接的主要内容,如果未能解决你的问题,请参考以下文章
启明云端分享|一款方便实用的且适用于ESP32/ESP8266的USB-TTL转接板开发工具推荐