【ESP8266学习记录-2】使用MicroPython给我的鱼缸远程增氧-基于MQTT
我有一个小鱼缸,在鱼缸里面生活着快乐的十多条孔雀鱼。 很多时候我并不能及时的给鱼增氧,只能通过远程控制。 前后我想过很多方法,甚至有想通过NRF24L01模块进行远程控制…… 后来终于选定通过MQTT协议来进行控制。
1,准备 一个鱼缸,几条鱼,ESP8266模块(博主NodeMcu),一个LINUX 系统的VPS(百度云,腾讯云,阿里云等都可以),一个增氧泵,一个继电器 2,搭建MQTT服务器 博主采用Emq程序来搭建服务器(https://www.emqx.io/cn)
2.1,下载
EMQ X 消息服务器每个版本会发布 CentOS、Ubuntu、Debian、FreeBSD、macOS、Windows 、openSUSE 平台程序包与 Docker 镜像。
下载地址: https://www.emqx.io/downloads
2.2 ,安装
具体安装过程建议查阅EMQTT官方文档,博主更倾向于RPM方法,所以在此处只截屏介绍RPM安装方法。中文版文档地址为:https://developer.emqx.io/docs/broker/v3/cn
3,microPython MQTT 代码
#核心代码 from machine import Pin def callback_function(topic,msg):#条件判断后是否进行程序执行–在本程序中功能为:是否开启或者关闭增氧机
a=Pin(4,Pin.OUT)
if msg==b”on”:
a.value(1)
else:
a.value(0)
def mqtt_connect():
from umqtt.simple import MQTTClient as mqtt
c = mqtt(“”,server=”XXX.XXX.XXX.XXX”,port=1883,user=”Your user name”,password=”Your password”)
c.set_callback(callback_function)#执行的功能
c.connect()
c.subscrib(“fish”)#订阅什么主题
try:
while 1:
c.wait_msg()
finally:
c.disconnect()
4,硬件连接 连接方式与普通的继电器连接无异,+,-,in(连接在ESP8266的4号,因为我上面定义的从4号IO输出) 因为增氧泵功率过大,所以单纯一个ESP8266无法满足,所以只能通过继电器来控制增氧泵的通断。如果控制农用水泵,最好再增加一个接触器。 5,调试 电脑上使用MQTT.FX 工具,发布一个topic为on 的信息,增氧泵就会工作啦,发布其他任意信息增氧泵就会停止工作。 未来几周我会将远程控制的功能整合在Help-Hero公众号中……