我是靠谱客的博主 愉快哈密瓜,最近开发中收集的这篇文章主要介绍利用ESP32构造一个ZIGBEE的网络发送转接 §01 ZIGBEE网关 ※ 总  结 ※ ,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

简 介: 利用 ESP32的联网功能,构建了一个 WiFi UDP 转 Zigbee的串口模块。这个模块仅仅是将 UDP的指令发送到Zigbee的网络中,便替代了原来的功能。注意,ESP32的网络地址为: 192.168.0.114。如何能够获得 ESP32的IP地址呢? 可以介入 192.168.0.1 WiFi网关,在DHCP服务器的客户列表中检查到 Espressif的IP地址。

关键词 ESP32Zigbee

ZIGBEE网关
目 录
Contents
背景介绍
制作模块
软件编程
总 结

 

§01 ZIGBEE网关


一、背景介绍

  在 实验室中的第三只手:滑轨参数以及控制接口 给出了实验室中的滑轨平台控制参数。这些平台都是通过连接在 “COM2” 上的 zigbee 通讯模块相互连接的。由于现在平台所使用到的串口设置遇到问题,因此计划使用ESP32作为网桥,作为UDP转成COM口的转换网桥,这样可以使得原来实验室的设备能够继续使用。

二、制作模块

1、ESP32模块

  ESP32模块使用了基于ESP32的智能车竞赛裁判系统 ,这是由龙邱公司生产出售的。 可以通过其中的TXD2,RXD2完成向ZIGBEE 发送信息。

▲ , ESP32裁判系统中的串口

▲ , ESP32裁判系统中的串口

2、ZIGBEE模块

  下图给出了ZIGBEE的接口,通过四芯的扁平电缆与ESP32裁判系统模块相连。

▲ 图1.2.2 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波形

▲ 图1.3.1 发送0x55数据TX波形

2、发送ZIGBEE命令

  将ESP32连接到 ZIGBEE模块。

▲ 图1.3.2 连接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 50r')

    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.116
  • 端口号:4567

  如何能够获得 ESP32的IP地址呢? 可以介入 192.168.0.1 WiFi网关,在DHCP服务器的客户列表中检查到 Espressif的IP地址。

▲ 图2.1 ESPressif IP地址

▲ 图2.1 ESPressif IP地址

▲ 图2.2 静态设置的地址

▲ 图2.2 静态设置的地址

可以使用 DHCP服务器中增加静态分配 IP 地址,这样就可以固化ESP32 接入的 IP 地址了。

▲ 图2.3 利用 HDCP 服务器进行静态IP分配

▲ 图2.3 利用 HDCP 服务器进行静态IP分配


■ 相关文献链接:

  • 实验室中的第三只手:滑轨参数以及控制接口
  • 基于ESP32的智能车竞赛裁判系统
  • 第十七届智能车竞赛比赛系统软件修改-多车组时间延迟
  • ESP32模块的MicroPython的基本实验

● 相关图表链接:

  • , ESP32裁判系统中的串口
  • 图1.2.2 ZIGBEE接口与ESP32之间的接口
  • 图1.3.1 发送0x55数据TX波形
  • 图1.3.2 连接ZIGBEE模块
  • 图2.1 ESPressif IP地址

最后

以上就是愉快哈密瓜为你收集整理的利用ESP32构造一个ZIGBEE的网络发送转接 §01 ZIGBEE网关 ※ 总  结 ※ 的全部内容,希望文章能够帮你解决利用ESP32构造一个ZIGBEE的网络发送转接 §01 ZIGBEE网关 ※ 总  结 ※ 所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部