MENU

使用Python和树莓派控制跨阵M2继电器通断

概述

最近想用树莓派实现语音控制电路通断的功能,于是在某宝买了个跨阵M2的板子想做语音控制(ESP8266+继电器)
m2.png
但是实际上手开始做了才发现限制太多。其中比较主要的一个原因是这个板子的语音控制指的是接入天猫精灵非语音识别模块(毕竟语音识别模块成本比较高)

买回来以后吃灰了好几天,今天拿起来简单研究了一下,它的实现原理应该也是用ESP8266做控制,使用IO发送信号到板子,进而控制继电器通断
既然ESP发IO信号可以控制,树莓派理论上来说也可以用GPIO控制继电器咯

设备列表

  1. 跨阵M2:SRD-05VDC-SL-C & ESP8266
  2. Respberry Pi 3B+

思路分析

把esp8266拆下来,一共8个口,找一下8266的引脚定义
8266.png
通过跨阵IoT的Web平台,发现其实使用的是IO2做控制的
3040.png
根据引脚定义不难看出,GND、VCC主要作用是给ESP供电,GPIO2做控制

那么事情就好办多了,GPIO2用杜邦公母线接树莓派的任一GPIO口,改变高低电平不就可以了吗

动手实验

可以使用

gpio readall

看一下具体要用哪个接口
readall.png
我选择的是BCM18,物理接口12
因为手头没有公母线,所以用两条线拼了一下,黄色为杜邦线母头,黑色为杜邦线公头。
别问为什么不用同样颜色的线,我也想用
jiexian.png

接下来进RPi的shell,写个py文件

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT)

while True:
    GPIO.output(18, GPIO.HIGH)
    time.sleep(1)
    GPIO.output(18, GPIO.LOW)
    time.sleep(1)

功能是每隔1秒改变一次继电器的状态
test.py.png
【ESC】-【:wq】保存

python test.py

看看继电器有没有反应

为了方便使用,用Python写一个简单的脚本
完整代码如下

import RPi.GPIO as GPIO
import time
import sys

pin = 18

# Ignore warnings
GPIO.setwarnings(False)

GPIO.setmode(GPIO.BCM)
GPIO.setup(pin, GPIO.OUT)

status = GPIO.input(pin)
#print(sys.argv)
#print('on' in sys.argv)
func = sys.argv

if 'on' in func:
    GPIO.output(pin, GPIO.HIGH)
    print('OPENED')
elif 'off' in func:
    GPIO.output(pin, GPIO.LOW)
    print('CLOSED')
else:
    GPIO.output(pin, not status)
    chs = 'GPIO.HIGH' if GPIO.input(pin) == GPIO.HIGH else 'GPIO.LOW'
    print('CHANGED TO ' + chs)

使用方法

开启:

python test.py on

关闭:

python test.py off

切换当前状态(如果为开启则关闭,如果为关闭则开启):

python test.py

更方便地执行

在py文件首行加入

#!/usr/bin/python

接下来在shell执行

chmod +x test.py

使用

./test.py

就可以切换了

效果演示

run.png

完整演示

手头没有灯泡,下次一定

总结

总觉得买错了,下一步语音控制估计要用软件实现了。我直接买个继电器不好吗


文章标题:使用Python和树莓派控制跨阵M2继电器通断
如果文中内容侵犯了您的权益,请及时与博主取得联系进行删除!
本站文章未经许可禁止转载,本文地址:https://blog.wanvale.com/archives/217/

Archives QR Code Tip
QR Code for this page
Tipping QR Code