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

    文章

    6502

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

    本文介绍了如何用能够Arduino IDE下载的Arduino Nano/UNO R3开发板给另一个Arduino IDE不能下载的Arduino
    的头像 发表于 08-08 20:16 ?1662次阅读
    如何用<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

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

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

    开源项目!Open Echo:开源的声纳项目

    Arduino 兼容的回声测深仪用于另一个水深 GPS 记录设备项目。可读取 Arduino 的回声测深仪很难买到,所以我想,为什么不自己制作呢?基本工作原理很
    发表于 03-20 13:37

    开源项目!教你如何制作开源教育机械臂

    前言 我们的计划始于2016年,当时有简单的问题:我们如何让机器人和编程对每个人都可用? 是学习电子和编程的最佳工具之,但使用带有有线组件的试验板对初学者来说可能具有挑战性。为了
    发表于 03-10 11:22

    防水淹厂房监测报警系统

    套完善的系统是十分必要的。二、系统介绍水淹厂房监测报警系统为了保证水电站生产、调度稳定运行,通过防水淹厂房视频监控
    的头像 发表于 02-11 15:15 ?467次阅读
    防水淹厂房监测<b class='flag-5'>报警</b><b class='flag-5'>系统</b>

    开源项目!手把手教你制作互动式LED墙壁时钟!

    在这篇教程中,将教你使用Arduino创建互动式LED墙壁时钟。这个项目结合了创意和技术,设计出功能性强且视觉效果惊人的时钟,它配
    发表于 02-08 17:47

    离身报警器的设计

    随着全球旅游的火热,出去看看大好河山的人越来越多。为了使旅行顺畅保证行囊的安全是十分不要的。虽然目前此类产品很多,大多数都是以蓝牙或WIFI与手机捆绑使用,使用起来比较麻烦,特别对于老年人来说有很大的挑战。所以利用简单的电
    发表于 02-07 14:01 ?0次下载

    HAL库在Arduino平台上的使用

    HAL库在Arduino平台上的使用 Arduino平台是开源的电子原型平台,它包括硬件(基于微控制器的电路板)和软件(Arduino
    的头像 发表于 12-02 14:04 ?1860次阅读

    开源项目!基于 Arduino 的 MIDI 架子鼓

    起探索如何也能拥有套适合你办公桌的架子鼓! 电子元件 Arduino Leonardo (或其他带有 ATmega32U4 芯片的 Arduino 型号) 7 压电传感器 (直径
    发表于 11-25 12:00

    基于Arduino的串口通信项目

    Arduino Mega等。 USB数据线 :用于将Arduino开发板连接到计算机。 串口设备 :可以是另一个Arduino开发板、传感器模块、执行器等,只要它支持串口通信。 连接
    的头像 发表于 11-22 09:24 ?2426次阅读

    STM32项目实战:基于STM32U5的火灾报警系统(LVGL),附项目教程/源码

    小编来分享《火灾报警系统》的项目案例,硬件平台是STM32U5开发板+资源扩展板+显示触摸屏+仿真器,项目的演示界面如下图所示。火灾报警
    的头像 发表于 11-13 14:18 ?2057次阅读
    STM32项目实战:基于STM32U5的火灾<b class='flag-5'>报警</b><b class='flag-5'>系统</b>(LVGL),附项目教程/源码

    用NE555制作点焊机

    用NE555制作点焊机,电路简单,容易制作。需要12v的铅酸蓄电池。实际焊接效果很好。
    发表于 11-08 15:05 ?33次下载

    为THS3001构建简单的SPICE模型

    电子发烧友网站提供《为THS3001构建简单的SPICE模型.pdf》资料免费下载
    发表于 10-29 10:11 ?1次下载
    为THS3001构建<b class='flag-5'>一</b><b class='flag-5'>个</b><b class='flag-5'>简单</b>的SPICE模型

    LoRa无线报警安防建设系统

    及就医人员安全,必须有套完善的医疗安防系统。 ? 适用于重大紧急事件的LoRa无线报警安防建设已成为构建安全就医环境,保障医生和人民群众安全的
    发表于 09-25 17:08

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

    电子发烧友网站提供《如何设计简单且高度集成的电池测试系统.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>