• 智慧家——全家具功能


    包含


    材料及接线

    MR开发板
    在这里插入图片描述
    1.54LCD屏幕
    在这里插入图片描述

    欢迎回家接线

    超声波测距
    在这里插入图片描述
    三色RGB
    在这里插入图片描述

    开发板超声波测距
    trigA6
    echoA4
    5vVCC
    GNDGND
    开发板RGB
    GNDGND
    BC0

    火灾报警

    火焰传感器模块
    在这里插入图片描述
    有源蜂鸣器
    在这里插入图片描述
    接线说明

    开发板火焰传感器
    DOB1
    5vVCC
    GNDGND
    开发板蜂鸣器
    DOB0
    5vVCC
    GNDGND

    外出指数提醒

    PM2.5 5003 G5
    在这里插入图片描述
    PM2.5 转接板
    咳咳,还是用转接板方便一些。
    在这里插入图片描述
    三色RGB
    在这里插入图片描述
    接线

    开发板PM2.5
    A3(RX)TX
    5vVCC
    GNDGND
    开发板RGB
    GNDGND
    RC7
    GC6

    聪明的灯光+贴心的窗帘

    光敏电阻传感器
    在这里插入图片描述

    8MM发光LED模块
    在这里插入图片描述
    12V直流电机

    在这里插入图片描述

    接线

    开发板光敏电阻
    5VVCC
    GNDGND
    A0DO
    开发板8MMLED
    5VVCC
    GNDGND
    A1OUT
    引脚说明
    C8只有为高电平时,马达才会转
    B8PWM控制A电机
    B12A0 #本次使用了A电机,可以自己按需调试。
    B13A1
    B9PWM控制B电机
    B14B0
    B15B1

    示例程序

    from pyb import UART,Pin,delay,Timer
    import time
    from HCSR04 import HCSR04
    from machine import Pin
    import lcd
    # 屏幕
    lcd = lcd.LCD()
    #PM2.5
    u2 = UART(2, baudrate=9600,bits=8, parity=None, stop=1,  timeout=100) #初始化串口
    # 3色 红绿 +PM2.5 蓝色+超声波
    p_Rout = Pin("C7",Pin.OUT_PP)  # 红色
    p_Gout = Pin("C6",Pin.OUT_PP)  # 绿色
    p_Bout = Pin("C0",Pin.OUT_PP)  # 蓝色
    # 火焰
    fire=Pin('B1',Pin.IN) 
    # 蜂鸣器
    beep=Pin('B0',Pin.OUT_PP)
    #  ——————电机——————
    cs = Pin('C8',Pin.OUT_PP)    #C8设置为输出引脚输出高电平
    cs(1)
    ch1 =None  
    ch2 =None
    trig = Pin("A6",Pin.OUT)
    echo = Pin("A4",Pin.IN)
    HC=HCSR04(trig,echo)
    #A电机正反转 s---
    p2 = Pin('B8')
    tim2 = Timer(10, freq=120)
    ch2 = tim2.channel(1, Timer.PWM, pin=p2)
    A0 = Pin('B12',Pin.OUT_PP)
    A1 = Pin('B13',Pin.OUT_PP)
    def z(speed):  #正转
    	ch2.pulse_width_percent(speed)
    	A0(1)
    	A1(0)
    def f(speed):    #反转
    	ch2.pulse_width_percent(speed)
    	A0(0)
    	A1(1)
    #——————电机 end
    #光敏
    Do = Pin("A0",Pin.IN)  
    # 8MM 线性变亮                               
    p1 = Pin('A1')             
    tim1 = Timer(2, freq=100)
    ch1 = tim1.channel(2, Timer.PWM, pin=p1)
    
    while True:    
    	time.sleep(1) 
    	# ----PM2.5----- 
    	if u2.any():        
    		upp=u2.read()   # 读数即可       
    		PM2_5= upp[6]*256+upp[7]      # 6,7位计算pm2.5  
    		PM10 = upp[8]*256+upp[9]      # 8,9位计算PM10
    		#print("PM2.5为:",int(PM2_5),"um")        #单位是 微克/立方米
    		#print("PM10为:",int(PM10),"um")			#单位是 微克/立方米
    		if PM2_5 >= 50:        # PM2.5为80um以上的时候亮红灯 别出门啦!
    			p_Rout(1)
    			p_Gout(0)
    			p_Bout(0)
    		else:
    			p_Rout(0)
    			p_Gout(1)
    			p_Bout(0)
    	# ---— 超声波-----
    	Distance = HC.getDm() #测量距离
    	print(Distance)
    	if Distance <10:
    		p_Rout(0)
    		p_Gout(0)
    		p_Bout(1)
    	else:
    		p_Bout(0)
    	# 屏幕显示PM2.5
    	lcd.chars('PM2_5:'+str(PM2_5)+"       ",40, 90)#空格以防超出显示限制补位使用
    	# 光感 + 电机+ 发光模块
    	if Do.value()==0:    #yougguang
    			ch1.pulse_width_percent(0)  # 灯不亮
    			f(30)            # 电机反转 这里应该判断状态 我没写,注意一下
    	else:
    		for i in range(100):
    			ch1.pulse_width_percent(i)  #灯线性亮
    			delay(50)
    		z(10)                       # 电机正转(关窗帘)
    	# 火焰报警
    	if fire.value()==1:
    		beep(1) #高电平触发,检测火焰,报警
    	else:
    		beep(0)
    	from pyb import Pin,delay
    
    fire=Pin('B0',Pin.IN) 
    beep=Pin('B1',Pin.OUT_PP)
    
    while True:
    	delay(1000)
    	print(fire.value())
    
    	if fire.value()==1:
    		beep(1) #高电平触发,检测火焰,报警
    	else:
    		beep(0)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102

    全代码请自行下载:智能家居竞赛基础功能

  • 相关阅读:
    Stata制作限制立方样条(RCS)(2)
    终于有人把Java程序员必学知识点整理出来了,令人有如醍醐灌顶
    PHP导入上千万CSV数据处理
    redis修改默认存储数据目录
    Java 如何清除Map集合中指定元素呢?
    【RuoYi移动端】uni-app中通过vuex的store来实现全局变量的修改和读取
    所见即所得的动画效果:Animate.css
    linux内核编程入门之proc文件读写
    windows解决ModuleNotFoundError: No module named ‘cython_bbox‘问题,亲测可用
    Kickstarter众筹是什么流程
  • 原文地址:https://blog.csdn.net/weixin_45020839/article/details/125420562