0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样制作一个简单的Arduino报警系统

454398 来源:网络整理 作者:网络整理 2019-12-02 16:27 次阅读

检测运动,然后以高音调的警报声和闪烁的灯光吓跑入侵者。听起来有趣吗?当然可以。这是今天的Arduino项目的目标,适合初学者。在进行过程中,我们将完全从头开始进行测试,以便您可以希望了解所有过程,而不仅仅是安装我已经完成的工作。

免责声明:这实际上不会保护您的房屋。

可能会给您妹妹一个令人讨厌的冲击。

您需要:

Arduino

超声波“ ping”传感器,我使用的是HC-SR04,PIR会更好,但价格昂贵。可以将ping传感器秘密地放置在门口中,并且仍然可以执行相同的基本工作,并且只需$ 5

压电蜂鸣器

LED条形灯,其接线与我们以前使用的相同在这个项目中。

在连接该项目时,不要每次都删除所有内容-继续在最后一个块上进行构建。到“编码警报系统”部分时,您应该已经将所有零碎的东西连接起来,看起来像这样:

怎样制作一个简单的Arduino报警系统

闪烁的灯光

使用该项目的接线图连接您的LED灯带;不要更改引脚,因为我们需要PWM输出。使用此代码快速测试您的接线。如果一切顺利,您应该具有以下条件:

距离传感器

在SR04模块上,您会找到4个引脚。 VCC 和 GND 分别连接至+ 5V电源轨和地。 TRIG 是用于发送声纳信号的引脚,将其置于引脚6上; ECHO 用于回读信号(并由此计算距离)-将其放在7上。

事情非常简单,我们可以使用一个名为NewPing的库。下载并放置在Arduino的 Library 文件夹中,然后重新启动IDE,然后继续。使用此代码进行测试;打开串行监视器,并确保速度设置为115200波特。运气好的话,您应该会看到一些距离测量值以很高的速度发送回给您。您可能会发现1或2厘米的差异,但这很好。尝试将手放在传感器的前面,上下移动以观察变化的读数。

代码应该很容易理解。开始时有一些相关引脚的声明,包括最大距离-这可能取决于您使用的确切传感器,但是只要您能够准确获得小于1米的读数,就可以了。

在此测试应用程序的循环中,我们使用 ping()函数发出声纳ping,以毫秒为单位取回该值花费了多长时间的值返回。为此,我们使用以 US_ROUNDTRIP_CM 常量构建的NewPing库,该库定义移动一厘米需要多少微秒。两次ping之间还存在50毫秒的延迟,以避免传感器过载。

压电式警报

压电晶体传感器是一种简单且便宜的蜂鸣器,我们可以使用PWM引脚3发出不同的音调。将一根导线连接到引脚3,将一根导线连接到接地导轨–没关系。

使用此代码进行测试。

杀死相当讨厌且响亮的警报的唯一方法是拔插头。该代码解释起来有些复杂,但是它涉及使用正弦波来产生独特的声音。调整数字以使用不同的音调。

编码警报系统

现在我们已经拥有了拼图的所有内容,让我们将它们组合在一起。

继续制作一个新的草图,称为警报。首先将到目前为止在测试示例中使用的所有变量和引脚定义进行组合。

#include

// Select which PWM-capable pins are to be used.

#define RED_PIN 10

#define GREEN_PIN 11

#define BLUE_PIN 9

#define TRIGGER_PIN 6 // Arduino pin tied to trigger pin on the ultrasonic sensor.

#define ECHO_PIN 7 // Arduino pin tied to echo pin on the ultrasonic sensor.

#define MAX_DISTANCE 100 // Maximum distance we want to ping for (in centimeters)。

#define ALARM 3

float sinVal;

int toneVal;

首先编写基本的 setup()功能–我们现在只处理灯光。我在主循环开始前添加了5秒的延迟,以便在需要时给我们一些时间。

void setup(){

//set pinModes for RGB strip

pinMode(RED_PIN,OUTPUT);

pinMode(BLUE_PIN,OUTPUT);

pinMode(GREEN_PIN,OUTPUT);

//reset lights

analogWrite(RED_PIN,0);

analogWrite(BLUE_PIN,0);

analogWrite(RED_PIN,0);

delay(5000);

}

让我们使用一个帮助函数

//helper function enabling us to send a colour in one command

void color (unsigned char red, unsigned char green, unsigned char blue) // the color generating function

{

analogWrite(RED_PIN, red);

analogWrite(BLUE_PIN, blue);

analogWrite(GREEN_PIN, green);

}

最后,我们的循环现在将由红色和黄色之间的简单彩色闪光组成(或者,无论您希望发出什么警报,只需更改RGB值即可。

void loop(){

color(255,0,0); //red

delay(100);

color(255,255,0); //yellow

delay(100);

}

上传并测试以确保您处在正确的轨道上。

现在,让我们集成距离传感器,以便仅在有物体进入(例如50厘米)(刚好小于门框的宽度)时才触发那些灯。我们已经定义了正确的引脚并导入了库,因此在您的 setup()函数之前,添加以下行以对其进行实例化:

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.

在此之下,添加一个变量以存储是否触发警报,当然默认为false。

boolean triggered = false;

在 setup()函数,以便我们可以监视串行输出和调试。

Serial.begin(115200); // Open serial monitor at 115200 baud to see ping results.

接下来,让我们将当前循环重命名为 alarm() –如果警报已触发,将调用此名称。

void alarm(){

color(255,0,0); //red

delay(100);

color(255,255,0); //yelow

delay(100);

}

现在创建一个新的 loop()函数,一个

void loop(){

if(triggered == true){

alarm();

}

else{

delay(50);// Wait 50ms between pings (about 20 pings/sec)。 29ms should be the shortest delay between pings.

unsigned int uS = sonar.ping(); // Send ping, get ping time in microseconds (uS)。

unsigned int distance = uS / US_ROUNDTRIP_CM;

Serial.println(distance);

if(distance 《 100){

triggered = true;

}

}

}

在其中,我们获取一个新的ping命令,读取结果,并在出现警报的情况下触发警报。 p》

首先检查是否已触发警报,如果已触发,则关闭警报功能(此时仅闪烁指示灯)。

如果未触发但是,仍要从传感器获取当前读数。

如果传感器的读数小于100厘米,则说明光束已被填充(显然,如果触发时间过早,请调整此值)。

在添加烦人的压电蜂鸣器之前,请立即试用。

工作吗?大。现在让我们重新添加蜂鸣器。将 pinMode 添加到 setup()例程中。

pinMode(ALARM, OUTPUT);

然后将压电蜂鸣器循环添加到alarm()函数:

for (int x=0; x《180; x++) {

// convert degrees to radians then obtain sin value

sinVal = (sin(x*(3.1412/180)));

// generate a frequency from the sin value

toneVal = 2000+(int(sinVal*1000));

tone(ALARM, toneVal);

}

如果此时尝试进行编译,则会遇到错误-我故意将其保留,以便您可以看到一些常见的错误问题。在这种情况下,NewPing库和标准音调库都使用相同的中断-它们基本上是冲突的,因此您无法做很多修复。哦,亲爱的。

不过不用担心。这是一个常见问题,已经有人解决了,请下载此NewTone并将其添加到Arduino Libraries文件夹中。调整程序的开头以包括以下内容:

#include

,并调整以下行:

tone(ALARM, toneVal);

NewTone(ALARM, toneVal);

就是这样。将警报设置在卧室的门口,以防下一个不幸的窃贼。

或者是一只狗,看起来好像完全没被警报吓到。

遇到麻烦了代码?这是完整的应用程序。如果您遇到随机错误,请尝试将其粘贴在下面,我会帮忙看看。

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Arduino
    +关注

    关注

    187

    文章

    6461

    浏览量

    186555
收藏 人收藏

    评论

    相关推荐

    如何设计简单且高度集成的电池测试系统

    电子发烧友网站提供《如何设计简单且高度集成的电池测试系统.pdf》资料免费下载
    发表于 09-18 14:53 0次下载
    如何设计<b class='flag-5'>一</b><b class='flag-5'>个</b><b class='flag-5'>简单</b>且高度集成的电池测试<b class='flag-5'>系统</b>

    求助,在esp-idf中使用arduino作为组件后怎样使用arduino的库?

    在esp-idf中使用arduino作为组件后怎样使用arduino的库,例如我此时需要使用arduino的第三方库blinker,怎样使用
    发表于 06-12 07:21

    简单电源恢复报警电路说明

    最受欢迎的定时器IC NE555再次证明,其应用仅限于用户的独创性。这里显示的简单电源恢复报警电路很简单,其中 IC1以种特殊的模式接线。
    的头像 发表于 05-05 11:04 454次阅读
    <b class='flag-5'>简单</b>电源恢复<b class='flag-5'>报警</b>电路说明

    如何用Arduino制作简易自动喂鱼器

    如果你家里养有鱼,并想找到种自动化喂食的方法,这个项目可能会对你有所启发。 在这个教程中,作者将展示如何制作自己的基于Arduino的自动喂鱼器,让小鱼不在饿肚子。 自动喂鱼器的工作原理非常
    发表于 03-28 11:25

    如何制作自己的Arduino电容计

    在这个项目中,您将学习如何制作自己的Arduino电容计(测量电容器的值,范围从pF到1000的uF)。般来说,电子爱好者喜欢设计自己的小工具而不是购买。在这个项目中,我们使用两种电容测量方法,即
    的头像 发表于 02-25 15:10 1439次阅读
    如何<b class='flag-5'>制作</b>自己的<b class='flag-5'>Arduino</b>电容计

    简单温度报警电路分析

    下面所示的是简单温度报警电路被配置为在热敏电阻跟踪的温度下降或升高超过定水平时发出警报(声音或通过闭合继电器触点)。
    的头像 发表于 02-25 14:40 846次阅读
    <b class='flag-5'>一</b><b class='flag-5'>个</b><b class='flag-5'>简单</b>温度<b class='flag-5'>报警</b>电路分析

    简单的摩托车防盗安全报警电路分享

    这篇文章解释了简单的摩托车防盗安全报警电路,使用倾斜开关和 TTP223 触摸开关。
    的头像 发表于 02-25 11:31 3374次阅读
    <b class='flag-5'>简单</b>的摩托车防盗安全<b class='flag-5'>报警</b>电路分享

    如何使用Arduino制作智能垃圾箱

    在这个项目中,我将向您展示如何使用Arduino制作智能垃圾箱,当您带着垃圾接近时,垃圾箱的盖子会自动打开。
    的头像 发表于 02-11 12:22 2814次阅读
    如何使用<b class='flag-5'>Arduino</b><b class='flag-5'>制作</b>智能垃圾箱

    使用Arduino Nano制作4×4×4 LED立方体

    在这个项目中,我们将使用 Arduino Nano 制作很酷的 4×4×4 LED立方体。LED 立方体,也称为 LED矩阵,可以照亮您的房间、学习空间或创客区域,使其看起来非常酷
    的头像 发表于 02-11 12:07 3015次阅读
    使用<b class='flag-5'>Arduino</b> Nano<b class='flag-5'>制作</b><b class='flag-5'>一</b><b class='flag-5'>个</b>4×4×4 LED立方体

    构建基于Arduino的空气质量监测系统

    呼吸清洁、健康的空气对我们的健康至关重要,但在许多环境中,空气质量仍然是问题。在本文中,我们将深入探讨如何创建基于Arduino的空
    的头像 发表于 02-11 12:03 3952次阅读
    构建<b class='flag-5'>一</b><b class='flag-5'>个</b>基于<b class='flag-5'>Arduino</b>的空气质量监测<b class='flag-5'>系统</b>

    如何将HC-SR04连接到Arduino并编写简单的程序来测量距离

    种流行的Arduino超声波传感器是HC-SR04。它广泛用于非接触式距离测量,通常用于机器人和自动化项目。本指南将向您展示如何将HC-SR04连接到Arduino并编写
    的头像 发表于 02-11 10:17 2159次阅读
    如何将HC-SR04连接到<b class='flag-5'>Arduino</b>并编写<b class='flag-5'>一</b><b class='flag-5'>个</b><b class='flag-5'>简单</b>的程序来测量距离

    基于51单片机的红外报警器的设计与制作

    电子发烧友网站提供《基于51单片机的红外报警器的设计与制作.rar》资料免费下载
    发表于 01-12 09:18 23次下载

    Arduino制作循迹小车教程

    Arduino制作循迹小车完全教程
    发表于 01-05 11:09 4次下载

    基于51单片机的红外报警器的设计与制作

    电子发烧友网站提供《基于51单片机的红外报警器的设计与制作.rar》资料免费下载
    发表于 01-03 11:32 11次下载

    汽车蓄电池报警器的制作与调试

    汽车蓄电池报警器的制作与调试  
    发表于 12-07 10:32 1次下载