使用传感器、Wi-Fi、ThingSpeak 和云端自动化,构建一个智能 Arduino 报警系统,并通过电子邮件接收警报
引言
在这个项目中,你将学习如何使用Arduino构建一个智能报警系统。当有人靠近传感器时,系统会触发警报,并向用户发送电子邮件通知。
这是一个适合初学者的物联网项目,将传感器、云服务和无线通信技术结合在一起,构建出一套实用的安全系统。
项目
要构建此项目,你需要:
•Arduino UNO
•I/O 扩展板
•超声波传感器
•红色LED
•蓝色LED
•I2C LCD 模块
•Wi-Fi物联网模块
•以及几根跳线
首先将I/O扩展板连接到Arduino板上,这样可以大大简化并使布线更加整洁。
接下来,将红色LED连接到数字端口2,蓝色LED连接到数字端口3。
现在连接Wi-Fi物联网模块,将D/T引脚连接到数字端口4,将C/R引脚连接到数字端口5。
之后,连接超声波传感器。三极管引脚连接到数字引脚8,而回波引脚连接到数字引脚9。
最后,连接I2C LCD模块。将SCL引脚连接到A5,将SDA引脚连接到A4。
如果需要额外帮助连接元件,请务必按照本项目提供的电路图(见下文)进行操作。
另外,请在启动系统前将Wi-Fi模块设置为UART模式。
赞助商
在继续之前,我想感谢今天的赞助商:DFRobot。
如果你还不了解他们,DFRobot 是面向学生、创客和工程师的开源硬件领先供应商之一。
本项目由他们提供了MindPlus Arduino编程套件。该套件专为初学者设计,包含多个组件,帮助新手迈出进入Arduino生态系统的第一步。
使用这样的套件可以显著提升学习体验,因为它将多个项目所需的所有必要硬件都集成在一个套装中。
再次感谢DFRobot对本项目的支持。
云
为了使报警系统正常工作,我们需要配置Arduino在报警触发时向云端发送数据。
此云数据将触发一个脚本,用于向用户发送电子邮件通知。
对于这个项目,我们将使用 ThingSpeak,因为它易于使用,即使对免费账户也提供了许多实用功能。
首先创建一个 ThingSpeak 账户并登录。
创建频道
第一步是创建一个通道。通道用于接收和存储来自Arduino板的数据。
前往:
频道 → 我的频道 → 新建频道
给频道起个名字,比如“智能警报”。
然后创建一个名为“触发”的字段。
然后向下滚动,点击“保存频道”。
创建 MATLAB 脚本
现在频道已经准备就绪,我们需要一个脚本来分析传入的数据并发送电子邮件通知。
前往:
应用 → MATLAB 分析 → 新建
在模板下,选择:“从私有频道获取数据”,然后点击“创建”。
将出现一个包含 MATLAB 代码的新页面。我们不会使用此默认代码,因此您可以安全地将其删除。
本项目的正确代码可在本系列的 GitHub 仓库中找到。
复制名为 smart-alarm-matlab.m 的文件内容
然后将代码粘贴到 MATLAB 编辑器中。
在脚本开头,您会看到三个需要替换为自身信息的变量:
•频道ID
•alertApiKey
•readApiKey
查找所需密钥
要查找频道ID,请打开您之前创建的频道。频道ID会显示在页面顶部。
要查找读取API密钥,请打开“API密钥”选项卡并复制相应的密钥。
最后,要找到警报 API 密钥,请点击右上角的头像,打开“我的个人资料”。
在页面底部,您会找到 Alerts API 密钥。
一旦获得这三个值,就将它们粘贴到 MATLAB 脚本中。
创建时间控制规则
在给Arduino板供电之前,我们还需要配置一个最后的设置。
很遗憾,免费的 ThingSpeak 账户无法持续运行 MATLAB 脚本。
为了解决这一限制,我们将创建一个时间控制规则,定期运行脚本并检查是否有更新。
前往:
应用 → 时间控制 → 新建时间控制
给它取一个名字,例如:“智能闹钟时间控制”。
然后配置以下设置:
•类型:重复
•单位:分钟
•间隔:5分钟
在“操作”下,选择:MATLAB 分析。
然后选择你之前创建的 MATLAB 脚本。
最后,点击“节省时间控制”。
脚本现在将每5分钟运行一次,检查是否触发了警报。
由于我们使用的是免费账户,因此不会立即发送电子邮件通知。如果您需要实时监控,可以考虑升级到付费的 ThingSpeak 计划。
上传Arduino代码
现在返回 GitHub 仓库,复制名为 smart-alarm-system.ino 的 Arduino 蓝牙板程序。
将草图粘贴到Arduino IDE中。
上传代码前,请确保安装以下库:DFRobot_RGBLCD1602。
您还必须将以下变量替换为您的个人信息:
SSID
•密码
•apiKey
apiKey 是 ThingSpeak 写入 API 密钥,您也可以在频道的 API 密钥部分找到它。
更新凭证后,将代码上传到Arduino板。
结果
系统上电后,Arduino 首先初始化 Wi-Fi 模块,并尝试连接到互联网。
连接后,系统开始监控超声波传感器。
每当有人靠近传感器时,警报就会被触发。
LCD显示屏会显示警告信息,同时LED灯交替闪烁。
同时,Arduino 将数据上传到 ThingSpeak。
几分钟后,用户收到一封电子邮件通知,告知警报已被触发。
真的很酷,对吧?
代码
现在让我们来了解Arduino程序是如何工作的。
程序开始时,会创建多个变量和对象,包括Wi-Fi凭据和LCD配置。
在 setup() 函数内部,Arduino 会初始化与串口监视器、LCD 模块和 Wi-Fi 模块的通信。
系统会等待互联网连接成功建立后,才会继续执行。
主逻辑在 loop() 函数内部运行。
当超声波传感器持续测量距离时,Arduino 也会在内部记录时间。
如果一分钟内未检测到附近任何物体,板子会向 ThingSpeak 发送 0 的值。
但如果有人进入检测区域——即距离传感器10厘米或更近——警报就会被触发,Arduino会将值1发送到云端。
在此系统中:
•1 表示“触发警报”
•0 表示“警报未触发”
在 ThingSpeak 内部,MATLAB 脚本会分析过去 5 分钟内上传的所有数据。
如果脚本发现至少有一个值等于1(值 > 0),则认为警报已触发,并向用户发送电子邮件通知。
如果未找到值1,则不发送邮件。
此验证流程极为重要,因为它可以防止不必要的邮件被反复发送。
ThingSpeak 还包含反垃圾邮件保护功能,短时间内发送过多邮件可能会触发垃圾邮件过滤器。
本文编译自hackster.io





