基于ESP8266-01s 增加对于FZ35恒流电子负载WiFi接口
§01 电子负载WiFi接口
一、为什么对FZ35增加WiFi接口?
在 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模块及其外部引脚定义
二、直通程序
将下面的程序存为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
三、确定IP地址
上面的ESP的IP地址“192.168.0.125”是由 实验室中Tenda无线路由器 动态分配的。 确定这个IP地址,可以由Tenda路由器设置信息查看。
由Tenda路由器直连计算机通过 “192.168.0.1”访问:
在 DHCP服务器中的 DHCP客户列表查看 主机及其IP地址。实际上刚刚上电的ESP模块可以通过 租约时间最短的 对应的IP地址来查看。
▲ 图2.1 通过Tenda配置网页查看分配的IP地址
§03 FZ35接口板
一、电路板设计1
▲ 接口板SCH
▲ 快速制版测试的电路板
二、功能测试1
1、加电静态特性
▲ 安装有ESP8266-01S的FZ35
2、通过程序改变电流设置
▲ 接收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实际输出电流
#!/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
■ 相关文献链接:
- FZ35恒流电子负载检测测试
- 利用CH340C制作MicroPython ESP8266,ESP32的下载器-改进型
- 修改ESP8266-01S MicroPython下载固件,看是否能够烧录程序
- 一分钟制版法
※ 实验附件 ※
文章来源: zhuoqing.blog.csdn.net,作者:卓晴,版权归原作者所有,如需转载,请联系作者。
原文链接:zhuoqing.blog.csdn.net/article/details/116156202
- 点赞
- 收藏
- 关注作者
评论(0)