HaaS506 - 简易声控灯
- 简介
- 准备
- 硬件连接图
- 功能实现
- 1.继电器使用说明
- 2.简易代码
- 3.测试代码
- 3.1测试log
简介
使用简单代码还原楼道声控灯,通过检测声音来开启电灯.
24行代码写一个声控灯,只有python能做到,其实还能精简,硬件源码都开放
准备
本案例需要的硬件
器材 | 数量 |
HaaS506 - M601/M320 | 1 |
声音检测模块 | 1 |
220v电灯泡 | 1 |
高电平触发继电器 | 1 |
杜邦线 | 若干 |
硬件连接图
功能实现
1.继电器使用说明
- GPIO18引脚低电平电压0V,拉高后电压为3.2V。继电器正极连接电压为3.3V。所以继电器设置为低电平或高电平触发均可。
- SI引脚控制左边继电器通断,S2控制右边继电器。
2.简易代码
main.py
from driver import ADC
from driver import GPIO
import utime as time
import _thread
voice=ADC()
voice.open('ADC1')
def voice_thread():
global value
while True:
value=voice.readVoltage()
time.sleep_ms(1)
if __name__ == '__main__':
p18=GPIO()
p18.open('p18')
p18.write(0)
_thread.start_new_thread(voice_thread, ())
while True:
time.sleep_ms(1)
if value > 720:
p18.write(1)
time.sleep(5)
p18.write(0)
board.json
{
"name": "haas506",
"version": "2.0.0",
"io": {
"p18": {
"type": "GPIO",
"port": 18,
"dir": "output",
"pull": "pullup"
},
"ADC0": {
"type": "ADC",
"port": 0,
"sampling": 12000000
},
"ADC1": {
"type": "ADC",
"port": 1,
"sampling": 12000000
}
},
"debugLevel": "ERROR",
"repl": "enable",
"replPort": 0
}
3.测试代码
增加记录最大值,及打印log功能。
main.py
from driver import ADC
from driver import GPIO
import utime as time
import _thread
voice=ADC()
voice.open('ADC1')
mx = 0
mx1 = 0
def voice_thread():
global value,mx,mx1
while True:
value=voice.readVoltage()
time.sleep_ms(1)
#记录并打印最大值
if value > mx:
mx = value
if mx !=mx1:
print(value)
mx1 = mx
if __name__ == '__main__':
p18=GPIO()
p18.open('p18')
p18.write(0)
_thread.start_new_thread(voice_thread, ())
while True:
time.sleep_ms(1)
if value > 720:
p18.write(1)
time.sleep(5)
p18.write(0)
#重置最大值
mx = 0
board.json
{
"name": "haas506",
"version": "2.0.0",
"io": {
"p18": {
"type": "GPIO",
"port": 18,
"dir": "output",
"pull": "pullup"
},
"ADC0": {
"type": "ADC",
"port": 0,
"sampling": 12000000
},
"ADC1": {
"type": "ADC",
"port": 1,
"sampling": 12000000
}
},
"debugLevel": "ERROR",
"repl": "enable",
"replPort": 0
}
3.1测试log
记录当前最大音量,等量之后重置数值。便于设置临界音量值。
[14:20:50.534]收←◆\0
[14:20:54.337]收←◆POWERONREASON:0x000b,parse:,powerkey,pinReset,charge.
[14:20:55.354]收←◆714
[14:20:55.454]收←◆716
[14:20:55.954]收←◆717
[14:20:57.855]收←◆719
[14:20:59.575]收←◆720
[14:21:00.795]收←◆722
[14:21:05.795]收←◆709
714
[14:21:05.835]收←◆716
[14:21:06.035]收←◆717
[14:21:06.235]收←◆719
[14:21:09.135]收←◆720
[14:21:16.375]收←◆731
[14:21:21.375]收←◆709
[14:21:21.395]收←◆712
714
[14:21:21.455]收←◆716
[14:21:21.495]收←◆717
[14:21:23.835]收←◆719
[14:21:27.575]收←◆723
[14:21:27.655]收←◆728
[14:21:32.577]收←◆709
712
[14:21:32.625]收←◆716
[14:21:32.674]收←◆717
[14:21:33.214]收←◆719
[14:21:44.534]收←◆720
[14:22:30.255]收←◆722
[14:22:35.255]收←◆711
716
[14:22:35.334]收←◆717
[14:22:35.574]收←◆719
[14:24:16.854]收←◆720