ESP8266开发板-Micropython-串口控制继电器

硬件篇

1 开发板

2 接口说明
物力接口 继电器定义
GPIO14 继电器1#
GPIO15 继电器2#
GPIO5 继电器3#
GPIO4 继电器4#

软件篇

1 编写ESP8266开发板-Micropython 代码

#-*- conding:utf-8 -*-
#-------------------------- 继电器控制板-代码 ---------------------------
#
#   控制板:     pyWIFI-ESP8266 + 继电器板
#   代码:       MicroPython
#   通讯方式:   串口
#   Author:     liu-XiaoShu
#   Date:       2020-10-15
#   说明:       通过串口命令控制ESP8266的GPIO电平输出,从而控制继电器
#               RelayControl.py
#---------------------------------------------------------------------------
import time
import uos
from machine import UART, Pinclass Esp8266RelayControl:def __init__(self):self.system_infor = "="*100 + \"\t\nWelcome to ESP8266 relay control board ..." +\"\t\nAuthor:    liu-XiaoShu" + \"\t\nDate:      2020-10-15" + \"\t\nVersion:   V1.1" + \"\t\nfunction:  Relay control board\n" + "~"*100print(self.system_infor)self.cmd_infor = "Relay control cmd: \n\t1. setpower [<off/on>] [relay ID]\n\t2. getpower [<relay ID>]" + \"\nex:\n\tsetpower on 1\n\tgetpower 1\n\n" + \"instructions:\n" + \"\t 1. The LED flashes to indicate that it is starting\n" + \"\t 2. After the LED flashing, press the key to enter the debugging mode within 4" + \" seconds, otherwise enter the serial port control mode\n" + \"\t 3. LED is always on, enter debugging mode, LED is off and enter serial port control mode\n" + \"\t 4. RST key, reset the program, restart\n" + \"\t 5. At present, it supports 4 relay switching\n"print(self.cmd_infor+ "="*100)self.system_infor = ""self.cmd_infor = ""self.relay_state_dict = {"1":"power off", "2":"power off", "3":"power off", "4":"power off"}#pin GPIO引脚配置self.relay_pin_dict = {"4":4, "3":5, "2":15, "1":14}self.power_led_pin = 2self.key_pin = 0#选择REPL/UART模式超时,超时未选择就默认UART 方便使用脚本self.set_REPL_UART_model_timeout = 4self.KEY=Pin(self.key_pin, Pin.IN, Pin.PULL_UP)def REPL_UART_separation(self):"""功能:   分离REPL和串口,因串口占用使用串口需要分离, 后续使用REPL 可以使用webREPL参数:   无返回值: BOOL True/False"""try:uos.dupterm(None, 1)print("REPL UART separation success ...")return Trueexcept:print("REPL UART failed to separation ...")return Falsedef REPL_UART_connect(self):"""功能:   连接REPL和串口参数:   无返回值: BOOL True/False"""try:uart = UART(0, 115200)uos.dupterm(uart, 1)print("REPL UART connect success ...")return Trueexcept:print("REPL UART connect failed ...")return Falsedef power_on_lamp_effect(self):"""功能:   系统开机灯效参数:   无返回值: 无"""#构建led对象,GPIO2,输出power_led=Pin(self.power_led_pin, Pin.OUT)for index in range(4):power_led.value(0) #点亮LEDtime.sleep_ms((index+1)*70)power_led.value(1) #熄灭LEDtime.sleep_ms((index+1)*50)power_led.value(0) #点亮LEDdef start_relay_control(self, receiveCmd):"""功能:   解析命令,操作GPIO控制继电器参数:  receiveCmd: 接收到的命令返回值: str 命令执行结果"""relayID = receiveCmd.split(" ")[-1]print("[relayID]: " + relayID)control = receiveCmd.split(" " + relayID)[0]print("[relay Cmd]: " + control)if relayID not in self.relay_pin_dict:return "relay ID error"if control == "setpower on":relay = Pin(self.relay_pin_dict[relayID])relay.value(1) #GPIO拉高self.relay_state_dict[relayID] = "power on"return "success"elif control == "setpower off":relay = Pin(self.relay_pin_dict[relayID])relay.value(0) #GPIO拉低self.relay_state_dict[relayID] = "power off"return "success"elif control == "getpower":return str(relayID) + " " + str(self.relay_state_dict[relayID])else:return "relay control cmd error"def start_uart_model(self):"""功能:   串口模式,通过串口脚本发送命令方式控制参数:   无返回值: 无"""#uart 模式 led 灭power_led=Pin(self.power_led_pin, Pin.OUT)power_led.value(1)self.REPL_UART_separation()uart = UART(0, baudrate=115200)uart.write("Welcome to use UART model ...")while True:result = ""if uart.any():data = ""data = uart.readline()data = data.decode().split("\n")[0]#print(data)result = self.start_relay_control(data)uart.write(result)else:time.sleep(0.5)#解决板子突然重启问题def start_repl_model(self):"""功能:   REPL模式,通过minicom敲命令方式控制参数:   无返回值: 无"""print("Welcome to use REPL model ...")#EPRL 模式 led 亮power_led=Pin(self.power_led_pin, Pin.OUT)power_led.value(0)while True:result = ""cmd = input("cmd >>:")result = self.start_relay_control(cmd)print(result)def start_run(self):"""功能:   系统入口参数:   无返回值: 无"""#初始化引脚输出for key in self.relay_pin_dict:Pin(self.relay_pin_dict[key], Pin.OUT)#开机灯效self.power_on_lamp_effect()timeout_count = 0print("Please select work mode ....")while timeout_count < self.set_REPL_UART_model_timeout:print("Timeout: " + str(timeout_count) + "s")if self.KEY.value()==0:   #按键被按下time.sleep_ms(10) #消除抖动if self.KEY.value()==0: #确认按键被按下#进入调试/REPL模式self.start_repl_model()while not self.KEY.value():passtimeout_count += 1time.sleep(1)#进入串口模式,方便脚本控制self.start_uart_model()if __name__=="__main__":ERC = Esp8266RelayControl()ERC.start_run()
2 代码文件名设置为 main.py 使其上电自运行
3 烧入代码
sudo ampy --port /dev/ttyUSB0 put main.py
4 上电启动,可以通过串口发送指令,控制板子输出对应电平,从而控制继电器等
6 运行查看
Started webrepl in normal mode
====================================================================================================
Welcome to ESP8266 relay control board ...
Author:    liu-XiaoShu
Date:      2021-03-19
Version:   V1.1
function:  Relay control board
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Relay control cmd: 1. setpower [<off/on>] [relay ID]2. getpower [<relay ID>]
ex:setpower on 1getpower 1instructions:1. The LED flashes to indicate that it is starting2. After the LED flashing, press the key to enter the debugging mode within 4 seconds, otherwise enter the serial port control mode3. LED is always on, enter debugging mode, LED is off and enter serial port control mode4. RST key, reset the program, restart5. At present, it supports 4 relay switching
====================================================================================================
Please select work mode ....
Timeout: 0s
Timeout: 1s
Timeout: 2s
Timeout: 3s
Welcome to use REPL model ...
cmd >>:set power on 1
[relayID]: 1
[relay Cmd]: set power on
relay control cmd error
cmd >>:setpower on 1
[relayID]: 1
[relay Cmd]: setpower on
success
cmd >>:getpower 1
[relayID]: 1
[relay Cmd]: getpower
1 power on
cmd >>:setpower off 1
[relayID]: 1
[relay Cmd]: setpower off
success
cmd >>:getpower 1
[relayID]: 1
[relay Cmd]: getpower
1 power off
cmd >>:

[ESP32/ESP8266专题笔记-5] ESP8266开发板-Micropython-串口控制继电器相关推荐

  1. [ESP32/ESP8266专题笔记-6] ESP8266开发板-Micropython-WS2812灯的控制

    WS2812全彩LED简介 所谓基于WS2812B的LED灯珠,就是将一个控制芯片封装进全彩LED灯珠中,配合单独的通信协议可以实现对单个灯的全彩控制 WS2812 全彩LED灯珠封装实物图 WS28 ...

  2. RGMII_PHY测试笔记1 基于开发板MiS603-X25

    RGMII_PHY测试笔记1 基于开发板MiS603-X25 作者:汤金元 日期:20150817 公司:南京米联电子科技有限公司 博客:http://blog.chinaaet.com/detail ...

  3. DevEBox STM32F4x1开发板 设置MicroPython STM32F401CC/TM32F411CE STM32F4x1 核心板 开发板 MicroPython

    ▌01 STM32F4x1开发板 STM32F401CC/TM32F411CE STM32F4x1 核心板 开发板 MicroPython .下面测试一下这款基于STM32F401的模块是否可以下载M ...

  4. 安卓开发板之串口通信,通过modbus Rtu协议控制下位机

    安卓开发板之串口通信,通过modbus Rtu协议控制下位机 1.环境准备 2.编写串口操作核心类 3.编写测试类 前言:因为公司最近有个人脸识别门禁的项目,这个项目主要业务是实现远程人脸注册,管理员 ...

  5. Android开发串口通信之开发板的串口通信

    本人最近刚开始学习android,学习大概将近一个月.学着学着突然想做个小东西出来.因为android前面的学习主要是UI 界面的学习,就想着做一个通信的串口 来实现app与外部的数据传输.通过界面的 ...

  6. 【转载】嵌入式开发板通过串口与PC互相传送文件

    嵌入式开发板通过串口与PC互相传送文件 2017年03月24日 15:55:17 缘客_ql 阅读数:6961 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn ...

  7. 使用微软新必应(New Bing)AI机器人生成树莓派Pico W开发板MicroPython应用程序

    微软新必应是一款由人工智能驱动的AI搜索引擎(基于Chat GPT4.0的先进自然语言生成模型),它能与用户进行流畅.自然.有趣的对话,并提供可靠.及时的搜索结果,以及回答用户的各种问题.我们可以使用 ...

  8. 迅为linux下串口,迅为iMX6UL开发板多路串口开发平台接口详解

    原标题:迅为iMX6UL开发板多路串口开发平台接口详解 iMX6UL开发板 核心板参数 尺寸:38mm*42mm CPU:iMX6UL 主频528MHz ARM Cortex-A7架构 单核 内存:5 ...

  9. Android开发板之串口开发

    Android开发板之串口开发 简介 首先描述一下我的应用项目,它是一个简单的智能盒子,主要内容:是通过Android开发板上的串口进行数据的读取操作,一块android开发板外接一个Arduino, ...

  10. 树莓派Pico迷你开发板MicroPython多线程编程实践

    内容目录: 一.多线程基本知识 二.MicroPython/Python低层多线程API介绍 三.树莓派Pico 开发板MicroPython多线程编程实践举例 3.1 Pico RP2040 MCU ...

最新文章

  1. 终于把论文Check完了
  2. openssl生成rsa密钥对和密钥格式转换
  3. C语言再学习 -- 内存管理
  4. 2018【比特杯】编程大赛
  5. 你犯了没?电脑最忌讳的18个小动作之三
  6. phpcms 首页调用不同栏目的指定文章id 的content等内容 - 方法篇
  7. 清空select下拉框的方法
  8. redis 正则匹配value_Java-19-Redis
  9. 字节流和字符流的读写
  10. Http请求URL长度限制
  11. 大数据平台解决方案(PPT)
  12. 洛谷 P2440 木材加工
  13. 总结下几个有漏洞第三方插件
  14. java中实现定时任务每天规定时间执行任务一次
  15. 人见人爱A+B(C++)
  16. pacemaker+corosync的一些总结
  17. HDU2604Queuing
  18. 关于idea中的springboot项目配置maven仓库和插件下载加速
  19. 陈都灵现身海南国际电影节,新片《关索岭》票房有望超《阿凡达》
  20. 服务器计费系统,《仙境传说》两服务器计费系统升级

热门文章

  1. 开根号的笔算算法图解_怎么用笔算开根号?
  2. 十九种Elasticsearch字符串搜索方式终极介绍
  3. Python爬虫——多线程爬取阳光问政
  4. uniapp——获取退出登录
  5. 饿了么接入之饿了么首次下单测试
  6. 计算机毕业设计——简单的网页设计HTML+CSS+JavaScript
  7. ThinkPad T440屏幕关闭之后硬盘狂响的解决方案
  8. Easy ip 简单配置实验
  9. 浅层砂过滤器(浅层介质过滤器)介绍及现场案例反馈图(多图)
  10. 电脑登录微信,手机退出微信,电脑端微信仍然在线(IOS)