鱼缸时间继电器 (鱼缸继电器)

鱼缸排插继电器,鱼缸延时继电器

上一期聊了如何通过树莓派控制继电器开关水泵,一方面成本有点高, 二是通过有线连继电器可能不方便, 本次就是解决这两个问题,通过手机或电脑无线控制继电器开关水泵. 上 图是原理图, 下图是我的采购清单(超低成本).

鱼缸排插继电器,鱼缸延时继电器

上图中第一个是无线模块esp8266+相应的继电器. 无线模块用来连路由器及继电器.继电器在上篇说过,不再赘述. 上图中第二个是无 线模块烧写器. 也就是把无线模块连接烧写模块, 再把烧写模块连到电脑上烧写程序.

不要被上边的描述唬住,其实很简单,过程图如下:

鱼缸排插继电器,鱼缸延时继电器

采购元件

参考第2张图,总价不超20元

  1. esp8266-01s
  2. esp-01s继电器
  3. ch340C烧录器

连接电脑

把esp8266-01s插入 到ch340c,并把ch340c插入到电脑 ,如下

鱼缸排插继电器,鱼缸延时继电器

烧写程序

敲黑板,这是本文的重点.

  1. 安装thonny

*载下**地址:https://thonny.org/

根据自己的操作系统*载下**后, 直接安装就行.

  1. *载下**并烧写固件

*载下**地址: https://micropython.org/resources/firmware/esp8266-1m-20220618-v1.19.1.bin

这个固件你可以理解为esp8266-01的操作系统. 可以用thonny来安装

鱼缸排插继电器,鱼缸延时继电器

鱼缸排插继电器,鱼缸延时继电器

Port如果不知道,可以先把ch340c拔下来,看好列表里的项, 再插上, 看多出来的就是了. 最后点install or update MicroPython

鱼缸排插继电器,鱼缸延时继电器

firmware选刚才*载下**的固件的位置, 点install等待完成即可

  1. 烧写自己的控制代码

在thonny中新建文件,保存到设备上即可.注意文件命名为main.py, 代码如下:

需要修改SSID为你的路由器名,及路由PWD改为你的路由器密码

import utime

import socket

from machine import Pin

from re import search

#开继电器 http://ip/relay?code=111&status=0

#关继电器 http://ip/relay?code=111&status=1

#关LED灯 http://ip/light?code=111&status=1

SSID="qingty9"

PWD="xxx;"

SECURE_CODE="t111w"

PORT=80

HEAD200='HTTP/1.1 200 OK\r\nServer: twEsp8266\r\n'

HEAD200+='Content-Type: text/html;charset=UTF-8\r\nConnection: close\r\n\r\n'

#conntect to wifi

def doconnect():

import network

wlan=network.WLAN(network.STA_IF)

wlan.active(True)

if not wlan.isconnected():

print('connecting to network...')

wlan.connect(SSID,PWD)

start = utime.time()

while not wlan.isconnected():

utime.sleep(1)

if utime.time()-start>5:

print('connect time out !')

break

if wlan.isconnected():

print('network config:',wlan.ifconfig())

return wlan

#parse params to map

def parm_parse(qs):

parameters = {}

ampersandSplit = qs.split("&")

for element in ampersandSplit:

equalSplit = element.split("=")

parameters[equalSplit[0]] = equalSplit[1]

return parameters

wlan=doconnect()

webserver=socket.socket()

webserver.bind(('0.0.0.0',PORT))

webserver.listen(1)

relay=Pin(0,Pin.OUT)

led=Pin(2,Pin.OUT)

while True:

conn,addr = webserver.accept()

request=conn.recv(1024)

if len(request)>0:

request=request.decode()

result=search("(.*?) (.*?) HTTP/1.1",request)

url=result.group(2)

if url=='/favicon.ico':

pass

else:

print(url)

uri=url.split('?')[0]

param=parm_parse(url.split('?')[1])

if 'code' in param and param['code']==SECURE_CODE:

if uri=='/light':

if 'status' in param and param['status']=='0':

led.value(0) #或led.off()

else:

led.value(1)

conn.send(HEAD200+uri+'操作成功!')

elif uri=='/relay':

if 'status' in param and param['status']=='0':

relay.value(0)

else:

relay.value(1)

conn.send(HEAD200+uri+'操作成功!')

else:

conn.send(HEAD200+'未识别的指令!')

else:

conn.send(HEAD200+'安全码错误!')

else:

print('no request')

conn.close()

四.独立运行

烧写好程序后,就可以脱离电脑,单独供电,放在它需要它的地方了.比如控制 水泵的开关. 把esp8266从ch340ch上拔下来,插到配套的继电器上,

具体接线,找一个不用的USB充电线剪开,为继电器和无线模块供电,一定要区分正负极,可参考<<如何区分手机充电线的正负极>> (或者用几节5号电池可以供电,方便随处移动)

鱼缸排插继电器,鱼缸延时继电器

接好通电后,可用手机或电脑访问局域网地址http://ip/relay?code=t111w&status=0 修改status为0或1来开关水泵了

那么问题来了,如果不在家如何控制它远程开关呢. 下期见!

-----------------end-----------------

欢迎各位补充指正! 如有疑问请留言!

原创不易,感谢各位 关注、点赞、评论、转发 !