树莓派GPIO+继电器+Flask的简单应用

本文使用树莓派3b+

思路

1.Http接口

使用flask将继电器的吸合动作写成WebApi的形式,访问Api即完成对应的吸合/断开动作。

2.运行日志

每次api被请求后向数据库保存被请求的记录。
数据库的简单操作详情见:Python SqlAlchemy+pymysql + MariaDB简单使用

GPIO定义

树莓派的40Pin引脚如下

本文中 使用BOARD编码的16和12脚位。

在这里插入图片描述

双路继电器

连线如下:

在这里插入图片描述

python代码

from flask import Flask
import RPi.GPIO as GPIO
from models import session, RelayLog

app = Flask(__name__)


@app.route('/')
def hello_world():
    return 'Hello World!'
#初始化引脚,并指定BOARD编码方式
def gpio_init():
    GPIO.setmode(GPIO.BOARD)
    GPIO.setup(16, GPIO.OUT)
    GPIO.setup(12, GPIO.OUT)

@app.route('/ledon')
def led_on():
    gpio_init()
    GPIO.output(12, GPIO.HIGH)
        # 记录开灯
    session.add(RelayLog(device_name='led', device_cmd=1))
    # 提交到数据库
    session.commit()
    return 'led_on'

@app.route('/ledoff')
def led_off():
    gpio_init()
    GPIO.output(12, GPIO.LOW)
        # 记录关灯
    session.add(RelayLog(device_name='led', device_cmd=0))
    # 提交到数据库
    session.commit()
    return 'led_off'

@app.route('/fanon')
def fan_on():
    gpio_init()
    GPIO.output(16,GPIO.HIGH)
            # 记录开风扇
    session.add(RelayLog(device_name='fan', device_cmd=1))
    # 提交到数据库
    session.commit()
    return 'fan_on'

@app.route('/fanoff')
def fan_off():
    gpio_init()
    GPIO.output(16,GPIO.LOW)
            # 记录关风扇
    session.add(RelayLog(device_name='fan', device_cmd=0))
    # 提交到数据库
    session.commit()
    return 'fan_off'



if __name__ == '__main__':
    app.run()

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值