【试用测评】FireBeetle ESP32-E扩展板——人体红外

2021-08-134764
AI 快速预览详细 收起
本文介绍了如何使用FireBeetle ESP32-E扩展板和人体红外传感器实现人体感应灯和音乐播放项目。通过简单的硬件连接和uPyCraft程序,用户可以轻松搭建这些实用项目。文中详细描述了引脚连接方式,并提供了具体的代码示例。此外,还展示了带功放喇叭模块的连接方法,使项目更加丰富。

【试用测评】FireBeetle ESP32-E扩展板——人体红外图1

人体红外


【试用测评】FireBeetle ESP32-E扩展板——人体红外图2

红外热释电运动传感器能检测运动的人或动物身上发出的红外线,输出开关信号,可以应用于各种需要检测运动人体的场合。传统的热释电红外传感器需要人体热释电红外探头、专用芯片和复杂的外围电路来实现,体积略大,电路复杂,可靠性略低。我们新推出的这款红外热释电运动传感器,专为Arduino设计,采用数字一体化集****体热释电红外探头,具有体积小、可靠性高、功耗低、外围电路简单等特点。


【引脚】


LED接扩展板D11,人体红外接扩展板D2。
【试用测评】FireBeetle ESP32-E扩展板——人体红外图3

【试用测评】FireBeetle ESP32-E扩展板——人体红外图4

【人体感应灯】
uPyCraft 程序
  1. #硬件平台:FireBeetle-ESP32
  2. #实验效果:按钮按下led灯点亮,按钮松开led灯熄灭。
  3. #硬件连接:本实验需要在IO27外接一个按钮模块,IO25外接一个LED模块。
  4. #下面的信息显示,对于当前版本,digitalRead是可用的。
  5. # button:IO2  IO4  IO5  IO10  IO12~19  IO23  IO25~27  IO34~36  IO39
  6. # led:   IO0  IO4  IO10 IO12~19  IO21~23  IO25~27
  7. from machine import Pin
  8. import time
  9. button = Pin(25, Pin.IN)    #将IO25/D2引脚定义为输入
  10. led = Pin(16, Pin.OUT)      #将IO16/D11引脚定义为输出
  11. while True:
  12.   led.value(button.value()) #获取按钮状态并赋给led引脚
  13.   print(button.value())
  14.   time.sleep(0.1)
复制代码
【试用测评】FireBeetle ESP32-E扩展板——人体红外图5
演示视频:





【人体感应音乐】

【试用测评】FireBeetle ESP32-E扩展板——人体红外图6
增加“带功放喇叭模块”,接在扩展板D10引脚。
【试用测评】FireBeetle ESP32-E扩展板——人体红外图7
带功放喇叭模块,基于高保真8002功放芯片制作,在输出音乐的同时,能够确保输出音频不失真。支持音量调节功能,可通过电位器调解输出音量大小。支持宽电压输入,模块可以工作在2~5.5V电压环境下,兼容3.3V和5V Arduino主控器。


uPyCraft程序代码:
  1. #硬件平台:FireBeetle-ESP32
  2. #实验效果:按钮按下led灯点亮,按钮松开led灯熄灭。
  3. #硬件连接:本实验需要在IO27外接一个按钮模块,IO25外接一个LED模块。
  4. #下面的信息显示,对于当前版本,digitalRead是可用的。
  5. # button:IO2  IO4  IO5  IO10  IO12~19  IO23  IO25~27  IO34~36  IO39
  6. # led:   IO0  IO4  IO10 IO12~19  IO21~23  IO25~27
  7. from machine import DAC, Pin, PWM
  8. import math
  9. import time
  10. button = Pin(26, Pin.IN)    #将IO26/D3引脚定义为输入
  11. led = Pin(16, Pin.OUT)      #将IO16/D11引脚定义为输出
  12. #创建音乐旋律列表
  13. melody = [
  14. 330, 330, 330, 262, 330, 392, 196, 262, 196, 165, 220, 247, 233, 220, 196, 330, 392,
  15. 440, 349, 392, 330, 262, 294, 247, 262, 196, 165, 220, 247, 233, 220, 196, 330, 392,
  16. 440, 349, 392, 330, 262, 294, 247, 392, 370, 330, 311, 330, 208, 220, 262, 220, 262,
  17. 294, 392, 370, 330, 311, 330, 523, 523, 523, 392, 370, 330, 311, 330, 208, 220, 262,
  18. 220, 262, 294, 311, 294, 262, 262, 262, 262, 262, 294, 330, 262, 220, 196, 262, 262,
  19. 262, 262, 294, 330, 262, 262, 262, 262, 294, 330, 262, 220, 196]
  20. #创建音调持续时间列表
  21. noteDurations = [
  22. 8,4,4,8,4,2,2,
  23. 3,3,3,4,4,8,4,8,8,8,4,8,4,3,8,8,3,
  24. 3,3,3,4,4,8,4,8,8,8,4,8,4,3,8,8,2,
  25. 8,8,8,4,4,8,8,4,8,8,3,8,8,8,4,4,4,8,2,
  26. 8,8,8,4,4,8,8,4,8,8,3,3,3,1,
  27. 8,4,4,8,4,8,4,8,2,8,4,4,8,4,1,
  28. 8,4,4,8,4,8,4,8,2
  29. ]
  30. def mario(melody,noteDurations):
  31.     music=PWM(Pin(17))    # 支持PWM的引脚 Pin(0)、Pin(2)、Pin(4)、Pin(5)、Pin(10)、Pin(12~19)、Pin(21)、Pin(22)、Pin(23)、Pin(25~27)      
  32.     music.duty(512)             #占空比   0 ≤ duty ≤ 0x03FF (十进制:0 ≤ duty ≤ 1023)
  33.     for i in range(len(melody)):              #计算melody列表元素的数量并执行循环
  34.          noteDuration = 800/noteDurations[i]
  35.          music.freq(melody[i]*2)  #频率
  36.          time.sleep_ms(int(noteDuration * 1.30)) #为每个音调设定时间
  37.     music.duty(0)  #占空比   
  38.     music.deinit()
  39. while True:
  40.   val=button.value()#获取按钮状态
  41.   if val:
  42.      led.value(1) #赋给led引脚
  43.      mario(melody,noteDurations)
  44.   else:
  45.     led.value(0) #赋给led引脚
  46.   time.sleep(0.1)
复制代码
演示视频:





创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(2)
aaron
aaron
厉害,希望也可以做出这么好玩的东西~
aaron
aaron
希望像你学习
- 没有更多了 -

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

相关推荐