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
    +关注

    关注

    190

    文章

    6527

    浏览量

    197541
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    MC14600:低功耗CMOS报警IC的技术解析

    MC14600:低功耗CMOS报警IC的技术解析 在电子设计领域,报警系统的设计直是重要的
    的头像 发表于 04-09 10:00 166次阅读

    小项目看懂 STM32 全部外设

    遍,你就能真正理解它们之间的关系。今天我们就用简单又完整的案例:“温度检测+OLED显示+串口输出+按键控制+蜂鸣器报警”,
    的头像 发表于 01-09 19:04 999次阅读
    <b class='flag-5'>一</b><b class='flag-5'>个</b>小项目看懂 STM32 全部外设

    系统调用和API有什么区别呢?

    是怎么控制游戏中的人物前进或者后退你根本不需要关心;图形界面就是计算机给我们提供的“API”,我们只需要简单的ctrl+c即可copy份文件,至于到底是怎样拷贝的我们无需关心。 同样,你的代码有
    发表于 12-03 06:52

    校园报警

    报警
    jf_55301954
    发布于 :2025年11月06日 16:46:52

    4g报警器能不能改成反电鱼报警

    4G报警器通过震动脱落磁铁来感应报警能不能改成感应电流报警应用场景-鱼塘水库 江河湖泊新能源监控实时感应报警对于电路完全小白求大佬指点下需
    发表于 10-31 23:35

    布线复杂、干扰误报?隔离485总线与云平台,重塑报警系统稳定性

    器的基本工作流程是:感应/触发 → 处理 → 播报,当与之相连的传感器或控制系统检测到异常情况(如烟雾、温度超标、设备故障、非法入侵)时,会向报警器发送电信号。
    的头像 发表于 10-30 16:51 661次阅读

    报警芯片怎样选择?报警器用的什么芯片?报警芯片的主要类型?常见报警芯片推荐?防盗器芯片有哪些?

    选择报警芯片时,需要根据具体的应用场景、功能需求、成本预算和性能要求进行综合评估。以下是选择报警芯片时需要考虑的几个关键因素,帮助你做出更合适的选择:
    的头像 发表于 09-22 18:55 685次阅读
    <b class='flag-5'>报警</b>芯片<b class='flag-5'>怎样</b>选择?<b class='flag-5'>报警</b>器用的什么芯片?<b class='flag-5'>报警</b>芯片的主要类型?常见<b class='flag-5'>报警</b>芯片推荐?防盗器芯片有哪些?

    防水淹厂房监测报警系统的设计原则

    成都国科自动化GKFC3100系列防水淹厂房监测报警系统,采用三种不同原理的液位信号器,每种液位信号器根据实际要求配置多个信号,反馈不同液位的信号,性能可靠,可有效防止报警信号误动作或不动作的情况
    的头像 发表于 09-17 16:02 726次阅读
    防水淹厂房监测<b class='flag-5'>报警</b><b class='flag-5'>系统</b>的设计原则

    DIY 流体模拟吊坠():理论与第一个吊坠的制作

    件能够实时运行 FLIP 流体模拟的手工珠宝。外壳镀金,显示屏由片表镜保护。 观看以下视频,您可以了解整个设计与制作过程: 简介 我直想实现
    的头像 发表于 09-07 17:49 3097次阅读
    DIY 流体模拟吊坠(<b class='flag-5'>一</b>):理论与第<b class='flag-5'>一个</b>吊坠的<b class='flag-5'>制作</b>

    如何用Arduino Nano/UNO R3开发板给另一个Arduino IDE不能下载的Arduino Nano/UNO R3开发板重新烧录引导程序bootlaoder

    本文介绍了如何用能够Arduino IDE下载的Arduino Nano/UNO R3开发板给另一个Arduino IDE不能下载的Arduino
    的头像 发表于 08-08 20:16 4018次阅读
    如何用<b class='flag-5'>Arduino</b> Nano/UNO R3开发板给另<b class='flag-5'>一个</b><b class='flag-5'>Arduino</b> IDE不能下载的<b class='flag-5'>Arduino</b> Nano/UNO R3开发板重新烧录引导程序bootlaoder

    如何使用WaveDac8设置简单的数据采集系统,以生成不同持续时间的脉冲?

    我目前正在尝试使用 WaveDac8 设置简单的数据采集系统,以生成不同持续时间的脉冲,并应用于 RC 简单电路。我成功生成了 250
    发表于 07-25 07:55

    简单的串联电池组充放电实验

    文章介绍了电池充放电中的数据采集并简单阶段了电池容量
    的头像 发表于 07-03 14:41 1914次阅读
    <b class='flag-5'>一</b><b class='flag-5'>个</b><b class='flag-5'>简单</b>的串联电池组充放电实验

    声光报警器电源线接线时如何确保安全

    声光报警器工作原理是通过电子电路来实现的。 当报警器被触发时,电路会使蜂鸣器发出声音,
    的头像 发表于 06-30 14:29 2265次阅读

    免费分享Arduino入门+进阶(全套例程+书籍)

    Arduino款开源电子原型平台,由硬件(单片机开发板)和软件(编程环境)组成,旨在让非专业用户也能轻松入门电子制作和编程。它的核心思想是简化硬件开发,通过直观的编程和模块化设计,让用户快速实现
    的头像 发表于 05-22 11:40 1350次阅读
    免费分享<b class='flag-5'>Arduino</b>入门+进阶(全套例程+书籍)

    《ESP32S3 Arduino开发指南》第二章 Arduino基础知识

    完成电子产品的制作。这就给开源硬件的推广和普及设定了很高的门槛,电子爱好者需要花很多时间和精力才能开始开发和
    发表于 05-13 09:28