基于ESP8266-01s 增加对于FZ35恒流电子负载WiFi接口

举报
tsinghuazhuoqing 发表于 2021/12/26 01:02:03 2021/12/26
【摘要】   §01 电子负载WiFi接口 一、为什么对FZ35增加WiFi接口? 在 FZ35恒流电子负载检测测试 对于一款 恒流电子负载 对于一款进行了测试,并且对于它的串...

 

§01 子负载WiFi接口


一、为什么对FZ35增加WiFi接口?

FZ35恒流电子负载检测测试 对于一款 恒流电子负载 对于一款进行了测试,并且对于它的串口功能进行了测试。

▲ XY-FZ35

▲ XY-FZ35

但是在测试中,使用了一款 基于CH340C制作的MicroUSB转串口 的测试板,通过USB来控制模块的设定电流值。但这种有线的设置,会在将来测试一些大功率,或者具有强干扰的情况对于计算机产生干扰。

借助于 ESP8266-01s 小型模块,实现WiFi 到UART的直通串口设置,便可以方便的使用WiFi,通过UDP编程,在实验室环境下完成对于电子负载的控制。

二、制作步骤

完成以上制作,需要逐步确认以下内容:

  • 通过MciroPython编程,使得ESP8266能够自动在实验室环境下接入局部WiFi,并且实现WiFi-UART直通的功能;
  • 制作与FZ35连接的小型电路板,提供电源(+5V,+3.3V)以及连接接口,这部分可以通过 快速电路板制作 的方式完成。

 

§02 ESP直通串口


一、ESP外部接口

根据 修改ESP8266-01S MicroPython下载固件,看是否能够烧录程序 中对于ESP8266-01S的定义,其中提到了本位于PIN6(RST)在其上标志位PIO6。关于这部分可以进行测试一下。

▲ ESP-01模块及其外部引脚定义

▲ ESP-01模块及其外部引脚定义

二、直通程序

将下面的程序存为ESP8266-01s 器件内部的程序boot.py,它上电之后便可以自动运行该程序。

#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST1.PY                     -- by Dr. ZhuoQing 2021-04-26
#
# Note:
#============================================================

from machine                import Pin,freq
import time
from machine                import UART
import network
import usocket
import uos

pin = Pin(2, Pin.IN, Pin.PULL_UP)

#------------------------------------------------------------
wlan = network.WLAN(network.STA_IF) # create station interface
wlan.active(True)                   # activate the interface
wlan.connect('TENDA626A', 'gniqouhz')
print(wlan.ifconfig())

#------------------------------------------------------------
us = usocket.socket(usocket.AF_INET, usocket.SOCK_DGRAM)
sockaddr = usocket.getaddrinfo('0.0.0.0', 8003)[0][-1]
sendaddr = usocket.getaddrinfo('192.168.0.109', 4455)[0][-1]

us.bind(sockaddr)
us.sendto('lalala~\r\n', sendaddr)

#------------------------------------------------------------
uart = UART(0, baudrate=9600)

#------------------------------------------------------------
while True:
    data,addr = us.recvfrom(1024)

    if len(data) > 2:
        if data[-2:] == b'\r\n':
            data = data[:-2]

    uart.write(data)

    if pin.value() == 0:
        break

#------------------------------------------------------------

uart = UART(0,baudrate=115200)
uos.dupterm(uart, 1)
print("End of the user.")

#------------------------------------------------------------

#------------------------------------------------------------
#        END OF FILE : TEST1.PY
#============================================================

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58

使用STM32BOOTLOADER,进行发送命令,便可以通过ESP8266的串口输出了。

网络配置参数:
IP:192.168.0.125
Port:8003

▲ STM32 BOOTLOADER

▲ STM32 BOOTLOADER

三、确定IP地址

上面的ESP的IP地址“192.168.0.125”是由 实验室中Tenda无线路由器 动态分配的。 确定这个IP地址,可以由Tenda路由器设置信息查看。

由Tenda路由器直连计算机通过 “192.168.0.1”访问:

DHCP服务器中的 DHCP客户列表查看 主机及其IP地址。实际上刚刚上电的ESP模块可以通过 租约时间最短的 对应的IP地址来查看。

▲ 图2.1 通过Tenda配置网页查看分配的IP地址

▲ 图2.1 通过Tenda配置网页查看分配的IP地址

 

§03 FZ35接口板


一、电路板设计1

▲ 接口板SCH

▲ 接口板SCH

▲ 快速制版测试的电路板

▲ 快速制版测试的电路板

二、功能测试1

1、加电静态特性

▲ 安装有ESP8266-01S的FZ35

▲ 安装有ESP8266-01S的FZ35

2、通过程序改变电流设置

▲ 接收WiFi命令后的设置电流命令

▲ 接收WiFi命令后的设置电流命令

3、测试程序

  • 下面是测试程序
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST2.PY                     -- by Dr. ZhuoQing 2021-04-26
#
# Note:
#============================================================

from headm import *
import socket
import socket
import socket

#------------------------------------------------------------
UDP_HOST  = '192.168.0.125'
UDP_PORT  = 8003
UDP_BUFSIZE = 0x1000
uport = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
uport.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, UDP_BUFSIZE)
uport.settimeout(0.2)

def uportsend(data):
    ADDR = (UDP_HOST, UDP_PORT)
    if type(data) != str:
        data = str(data)
    data = bytes(data, 'gbk')
    uport.sendto(data, ADDR)

def uportrecv():
    try:
        data, ADDR = uport.recvfrom(UDP_BUFSIZE)
    except socket.timeout:
        printf('Meter time out.')
        data = ''
    if len(data) > 0:
        return data.decode('utf-8')
    else: return ''

def uportval():
    uportsend('MEMOS')
    splitstr = uportrecv().split(' ')
    data = []
    for val in splitstr:
        if len(val) > 1:
            data.append(eval(val))
    return data

#------------------------------------------------------------
printf('\a')

for i in range(100):
    uportsend('1.%02dA'%i)
    time.sleep(.2)

#------------------------------------------------------------
#        END OF FILE : TEST2.PY
#============================================================

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57

 

验总结 ※


通过设置ESP8266-01s为WiFi-UART直通模块,使得FZ35模块可以通过无线WiFi进行设置。

基础的设置命令:

uportsend('1.00A')

  
 
  • 1

下图为WiFi设置的电流设置值,然后使用DH1766可编程直流电源输出直流电。他们之间的对应的关系。

▲ 电流设置与DH1766实际输出电流

▲ 电流设置与DH1766实际输出电流

#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST2.PY                     -- by Dr. ZhuoQing 2021-04-26
#
# Note:
#============================================================

from headm import *
import socket
import socket
import socket
from tsmodule.tsvisa        import *

#------------------------------------------------------------
UDP_HOST  = '192.168.0.125'
UDP_PORT  = 8003
UDP_BUFSIZE = 0x1000
uport = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
uport.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, UDP_BUFSIZE)
uport.settimeout(0.2)

def uportsend(data):
    ADDR = (UDP_HOST, UDP_PORT)
    if type(data) != str:
        data = str(data)
    data = bytes(data, 'gbk')
    uport.sendto(data, ADDR)

def uportrecv():
    try:
        data, ADDR = uport.recvfrom(UDP_BUFSIZE)
    except socket.timeout:
        printf('Meter time out.')
        data = ''
    if len(data) > 0:
        return data.decode('utf-8')
    else: return ''

def uportval():
    uportsend('MEMOS')
    splitstr = uportrecv().split(' ')
    data = []
    for val in splitstr:
        if len(val) > 1:
            data.append(eval(val))
    return data

#------------------------------------------------------------
printf('\a')

idim = []
iset = []

for i in range(100):
    uportsend('0.%02dA'%i)
    time.sleep(1)
    curr = dh1766curr()

    iset.append(i/100.0)
    idim.append(curr)

    printff(i, curr)

uportsend('0.00A')

plt.plot(iset, idim)
plt.xlabel("Set(A)")
plt.ylabel("Current(A)")
plt.grid(True)
plt.tight_layout()
plt.show()

#------------------------------------------------------------
#        END OF FILE : TEST2.PY
#============================================================

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76

 


■ 相关文献链接:

 

验附件 ※



  1. 接口板的AD工程文件:AD\Test\2021\FZ35 ↩︎ ↩︎

文章来源: zhuoqing.blog.csdn.net,作者:卓晴,版权归原作者所有,如需转载,请联系作者。

原文链接:zhuoqing.blog.csdn.net/article/details/116156202

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。