yaboPP电子
项目

让你的开关声音激活

2015年12月21日通过蒂姆血性小子

在本文中,我们将构建一个声音激活开关,它可以通过双拍打开和关闭。

还记得一点点魔法?我们将重现这个装置:学习如何制造一个声音激活开关它可以通过双拍来打开和关闭。该电路的声音传感装置是驻极体传声器。连接到麦克风的前置放大器电路将来自麦克风的输入转换成模拟信号,发射台的内部ADC模块读取并处理它。当检测到双拍击声时,在继电器驱动电路上打开或关闭继电器。通过这种方式,任何连接到继电器上的装置的功率都可以被控制。例如,你可以在应用程序中看到一个风扇。

部分列表

  • 1 xLaunchPad原始
  • 1个驻极体麦克风
  • 2个2N3904 NPN BJT晶体管
  • 1 x SPDT 12V线圈继电器
  • 1 x 100R 1/ 4w电阻
  • 1 x 330R 1/ 4w电阻
  • 2 × 1K 1/4W电阻
  • 2 × 10K 1/4W电阻
  • 1 x 100K 1/ 4w电阻
  • 2个100nF电容
  • 1个1N4007二极管
  • 1 * 5mm绿色LED
  • 1 x 5mm黄色LED
  • 1 x SPST触控开关
  • 跳线
  • 电路试验板

电路

驻极体传声器是一种基于电容的传声器,它将声能转化为电能。它是一种低成本的麦克风,可以在每一个手机,笔记本电脑,相机等找到。电路的主要组成部分是驻极体传声器,用作声传感器。

驻极体传声器连接到围绕Q1晶体管建立的前置放大级,该级放大来自传声器的输入信号。放大后的信号应用于发射台的A0模拟输入。我们可以很容易地读取这个模拟输入,并通过使用下面的草图代码监视拍期间信号的行为。

void setup() {Serial.begin(9600);} void loop() {int sensorValue = analogRead(A0);//打印你读到的值:Serial.println(sensorValue);}

的串行监视器上Energia IDE,我们可以得到读数,并在Excel中创建图表。这里你可以看到在淋病测试期间的音频信号是什么样的:

你可以看到音频信号的直流偏移量大约是260个单位。拍子产生的峰值可以达到500个单位。发射台代码的主要目的是检测这些峰值,并在双拍被感知时激活继电器。

实际上,感觉到任何双拍是不够的,想要拍手术。两个拍子之间的间隙也很重要。在代码中应用一个超时过程,如果在500ms内没有另一个clap,则丢弃该clap。

轻触开关用于调整将被检测到的拍击动作的阈值水平。有三种不同的阈值水平,黄色LED亮度的变化取决于所选的水平。灵敏度越高,LED就越亮。

当软件检测到双拍时,它切换P1.1输出,驱动一个绿色LED和一个继电器通过继电器驱动器。绿色指示灯指示输出状态。由于发射台的输出引脚额定电流限制在6mA,不能驱动继电器线圈,所以需要基于Q2晶体管的继电器驱动电路。在线圈端子之间放置一个1N4007二极管以防止反电动势。

该软件

应用程序的软件是在Energia IDE中构建的,如下所示。Energia草图包括对每个步骤的说明。

正如你在视频中看到的,电路不会对单个拍击做出反应,当只感觉到双拍击时就切换输出。

unsigned long int时间戳;int敏感性= 350;void setup(){//设置引脚模式pinMode (P1_2、输出);pinMode (P1_3 INPUT_PULLUP);digitalWrite (P1_1、低);analogWrite (P1_2, 150);} void loop(){//检测第一个拍响if (analogRead(A0) >灵敏度){delay(100);时间戳=米尔斯();do{//检测第二拍音if (analogRead(A0) >灵敏度){digitalWrite(P1_1, !digitalRead(P1_1)); delay(100); break; // Second clap is detected, break the while loop } } //Discard the first clap if the second clap is not received in 500ms while(millis() < (timestamp + 500)); } // If the sensitivity buton is pressed, change the sensitivity level if (!digitalRead(P1_3)) { if (sensitivity == 400) { sensitivity = 350; analogWrite(P1_2, 150); } else if (sensitivity == 350) { sensitivity = 300; analogWrite(P1_2, 250); } else if (sensitivity == 300) { sensitivity = 400; analogWrite(P1_2, 50); } delay(500); } }

clap-activated-switch.zip

自己尝试一下这个项目吧!BOM。

5个评论
  • P
    pcarew 2016年1月8日

    前置放大器Q1是一个CE放大器,所以我期望看到的图形颠倒!即当没有拍击时,通过R5的Q1输出高,并应用于P1.0。当拍击发生时,晶体管打开,使P1.0输入降低。

    我错过了什么?

    喜欢的。 回复
    • 希思阿布 2016年1月8日
      放大器可以做一些解释,但可能超出了本文的范围。在我看来,R4是偏置Q1中程,因此260偏置ADC信号。我想,驻极体实际上有一个嵌入的场效应晶体管。这就解释了R2,它形成了一个开路漏极电路。所以当驻极体被激发时,yabosports官网它的输出被拉低,Q1关闭,P1.0被R1拉高。
      喜欢的。 回复
  • 年代
    sense2k 2016年1月17日

    你好
    我想试试这个,但我从来没有做过类似的事情——没有电子/电路的经验。谁能告诉我风扇的规格是什么?
    什么限制了可以使用的负载?

    喜欢的。 回复