5.28 综合案例2.0-简易起夜灯

最新案例教程点击下方链接跳转,CSDN已停止更新

点击跳转HaaS506官方最新案例







简介

案例为了解决晚上起床找不到灯的问题。当你从床上起来时,雷达感应传感器检测到你的活动后自动打开电灯。省去了寻找电灯开关的麻烦。

准备

本案例需要的硬件

器材数量
HaaS506 - M601/M3201
5.8G雷达感应传感器模块1
220v电灯泡1
高电平触发继电器1
杜邦线若干

硬件连接图

在这里插入图片描述

功能实现

1.继电器使用说明

  • GPIO18引脚低电平电压0V,拉高后电压为3.2V。继电器正极连接电压为3.3V。所以继电器设置为低电平或高电平触发均可。
  • SI引脚控制左边继电器通断,S2控制右边继电器。
    请添加图片描述

2. 5.8G雷达感应传感器模块说明

在这里插入图片描述

PIN功能备注
VCC供电2.7-4.8V
GND接地-
OUT信号输出输出高低电平(0/2.2V)
P2GPIO2接收增益档位选择(悬空/拉低选择)
P3GPIO3延时时间档为选择(悬空/拉低)

在这里插入图片描述
在这里插入图片描述

3.简易代码

main.py

from driver import GPIO
import utime as time
from bodyDetect import BD
import _thread

#初始化时间
begin_time = 0
now_time = time.time()
value1 = 0

# 初始化人体传感器
radar=GPIO()
radar.open('radar')
def bd_thread():
    global value
    while True:
        bd = BD(radar)
        value = bd.irDetect()
        time.sleep_ms(1)


def detection():
    global value,now_time,begin_time
    now_time = time.time()
    if value == 1:
        begin_time = time.time()
        if p18.read() !=1:
            p18.write(1)
    if value == 0:
        if (now_time - begin_time >10):
            if p18.read() != 0:
                p18.write(0)



if __name__ == '__main__':
    p18=GPIO()
    p18.open('p18')
    p18.write(0)
    _thread.start_new_thread(bd_thread, ())
    while True:
        time.sleep_ms(1)
        detection()     #控制开关等
        #传感器状态改变是打印log
        if value1 != value:
            print('change:',value)
            value1 = value

bodyDetect.py

from driver import GPIO

class BD(object):

    def __init__(self, gpioObj):
        self.gpioObj = None
        if not isinstance(gpioObj, GPIO):
            raise ValueError("parameter is not a GPIO object")

        self.gpioObj = gpioObj

    def irDetect(self):
        if self.gpioObj is None:
            raise ValueError("invalid GPIO object")

        value = self.gpioObj.read()
        return value

board.json

{
  "name": "haas506",
  "version": "2.0.0",
  "io": {
    "p18": {
      "type": "GPIO",
      "port": 18,
      "dir": "output",
      "pull": "pullup"
      },
    "radar":{
      "type":"GPIO",
      "port": 3,
      "dir": "input",
      "pull":"pullup"
    }          
  },
  "debugLevel": "ERROR",
  "repl": "enable",
  "replPort": 0
}

3.1测试log

每次人体运动状态改变时会打印一次change,有人体活动为1,没有活动物体时为0。持续10s没有检测到人体活动,电灯自动关闭。


[17:21:36.804]收←◆\0
[17:21:38.808]收←◆POWERONREASON:0x0003,parse:,powerkey,pinReset.

[17:21:40.646]收←◆change: 1

[17:21:42.686]收←◆change: 0

[17:21:43.987]收←◆change: 1

[17:21:46.026]收←◆change: 0

[17:21:50.706]收←◆change: 1

[17:21:52.746]收←◆change: 0

[17:21:54.767]收←◆change: 1



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值