远程住宅照明 - 第一部分:原型制作






4.84/5 (8投票s)
使用 Arduino 自动化住宅照明激活过程。
引言
随着物联网(Internet of Things)的出现所驱动的数字革命,越来越多能够自动化家庭活动的现代设备开始出现。家居自动化已经使用了几十年,并因使用技术来简化和自动化一些本应由居民或员工手动完成的动作而变得越来越受欢迎。自动化可以实现许多事情,例如家庭监控系统、自动灌溉系统,或者在本工作中,用于自动化家庭照明控制。
本工作的动机是为环境(住宅或小型商业场所)带来更多现代性和实用性,并在可持续性等特定情况下提供帮助,因为该项目可以通过自动化住宅照明系统来节省开支,避免不必要的长时间开灯,并且还可以帮助行动不便的用户,他们可能无法像普通人一样操作灯的开关。
目标与方法
本工作旨在准备一个带有 Arduino 板及其存在或运动传感器模块的设备,以便它能够检测何时是打开环境中灯光的合适时机,或为有困难的人们提供便利。所使用的方法基于实践方法,使用一个 Arduino 微控制器,配备存在传感器模块和蓝牙模块,用户可以通过任何拥有 Google 应用商店访问权限的手机控制家中的传感器操作。
该项目将在 Arduino IDE(集成开发环境)中开发,并为一个住宅区的家庭提供内部照明点的自动化服务。项目所需的材料包括:Arduino Uno、蓝牙模块 HC-05、9V 电源、PIR 存在传感器 HC-SR501、原型板、5V 继电器模块、灯泡、灯座、网线、USB 线缆和 1 米电线。
开发
项目规格
在项目开发过程中,本工作使用 C 编程语言创建代码,并将使用以下支持工具:
- Sublime Text:文本编辑器,用于在导出到 IDE 之前生成代码并提高输入代码的体验。
- Arduino Software:IDE 平台,用于编写代码并将其上传到 Arduino 板。
- Adobe Photoshop:图像编辑器。
- TinkerCad:在线电路仿真工具(模拟和数字)。
- Fritzing:用于电子硬件仿真和设计的工具。在初步开发阶段,进行了平台识别研究,以便在将电路应用到物理电路之前,先在 IDE 中对电路进行数字仿真。
这项分析确定了几种应用此类测试的好方法,例如 TinkerCad 平台,它完全在线且免费,您可以在其中实现电路和代码直接测试项目;以及 Fritzing,一个我们可以创建设计并导入用户通过 Fritzing 论坛创建的各种设备的软件,以集成到我们的数字电路中,从而为创建更完整的工作做出贡献。
这项分析有助于确定本工作中设计的电路能够让用户以很少的直接互动来控制环境中照明的所有基本要求。
在图 1 中,我们可以看到一个带有传感器、微控制器和由上述两项激活的灯泡设计的房屋平面图。这是一个虚构项目,用于更直观地展示我们如何设置一个全自动环境,或者像智能家居一样。在所有房间里,我们都有一个灯泡,我们在房子入口处有一个存在传感器,而蓝牙传感器只在房间里,因为它可以接收到整个房屋的命令。
结果
图 2 示出了完成的电路,包括 Arduino、用于电缆整理的原型板、右侧紧邻灯泡的继电器模块、位于所有模块上方的 PIR 存在传感器模块、蓝牙模块以及图像右侧代表电源的电池,在我们的情况下,它是一个常规插座。
在接下来的段落中,我们展示了完成的代码,用 C 语言编写。首先是与电路物理配置相匹配的配置,然后是根据存在传感器负责更改的变量来激活 LED 的检查和配置。通过检测到运动,以及蓝牙传感器检测到手机命令,然后将激活命令传递给微控制器,微控制器激活继电器将能量发送给灯泡,如果传感器停止检测到存在几秒钟,或者蓝牙传感器收到关闭命令,灯泡就会关闭。
int key = 5;
int val = 0;
int inputPin = 7;
int pirState = LOW;
int val = 0;
int RELE_PIN = 63;
void setup() {
Serial.begin(9600);
pinMode(key,0UTPUT);
digitalWrite (key, HIGH);
pinMode(RELE_PIN, OUTPUT);
pinMode (input Pin, INPUT);
}
void loop1(){
val=Serial.read();
if (val=='A'){
digitalWrite (key,LOW);
}
if (val=='D') {
digitalWrite (key, HIGH);
}
}
void loop2(){
val = digitalRead (inputPin);
if(val == HIGH){
digitalWrite(RELE_PIN, LOW);
delay(15000);
if(pirState == LOW){
Serial.println("Motion detected!");
pirState = HIGH;
}
}
else{
digitalWrite(RELE_PIN, HIGH);
delay(30);
if (pirState == HIGH) {
Serial.println("Motion ended!");
pirState = LOW;
}
}
}
此代码属于公共领域,是从 GitHub 存储库 Internet 上获得的,地址为 https://github.com/baraunav/ArduinoLightsWBluetoothAndPIR。
进行的测试表明,它完全能够处理通过存在传感器和微控制器接收的命令,将其转换为数字信号以激活其他电气设备。
为了使灯泡能够与连接到微控制器的存在传感器模块或蓝牙模块通信,除了已经在板上应用的配置和已组装好的电路之外,不需要进行任何其他强制性配置。
应用代码后,当通过传感器上的运动或蓝牙应用程序激活时,它会向继电器发送命令,继电器将信息转发给微控制器,微控制器最终激活相应的数字输出以激活灯泡,在这种情况下,如果周围环境没有检测到任何运动,或者直到应用程序发送“关闭”命令,灯泡将在 30 秒延迟后关闭。
问题与缺点
本项目面临的最大问题是使用在线工具的需求。由于我们正在经历的疫情,实验室的实际操作推迟了。同样,在当地商店购买和测试设备也受到了影响。因此,解决方案是探索 TinkerCad 和 Fritzing 平台,以便在获得预期设备后,原型版本能够轻松适应和实现。
结论
这项工作让我首次接触到从头开始设计一个带有传感器和不同模块的简单电路。互联网上有很多关于该主题的公开内容,这使我在短时间内学到了很多关于本文所涵盖的主题的知识。
该项目还应用了一些课程中学到的知识,例如算法导论(C 语言的使用)和数字系统(关于此类电路可用性的解释)。值得一提的是,这项工作为将来在此项目基础上进行改进提供了依据,例如创建一种使该电路更便携的方法,以便在商业化时将其应用于任何类型的环境。
参考文献
- Amaral, Guilherme da Silva 和 Ribeiro, Victor Emanuel。(2017)。“使用 Arduino 平台和移动设备进行家居自动化”。学士学位研究。
- Arduino (2005)。“用于开发人员和微控制器应用的 Arduino 网站”[在线]。网址:https://www.arduino.cc/en/Main/Software。访问日期:2020 年 3 月 25 日。
- Augusto, Roberto。(2014)。“使用 Arduino 和 Web 应用程序进行家居自动化”。学士学位研究。
- Baron, Mauricio。(2013)。“用于控制电器设备的 Android 应用程序开发”。学士学位研究。
- Eletrogate (2017)。“提供有关 Arduino 和传感器的教程的网站”[在线]。网址:“https://blog.eletrogate.com/”。访问日期:2020 年 3 月 15 日。
- Felipeflop (2015)。“提供 Arduino 教程和公开代码模块的网站”[在线]。网址:“https://www.filipeflop.com/”。访问日期:2020 年 3 月 12 日。
- Fritzing (2007)。“用于电子硬件开发和设计的网站”[在线]。网址:“https://fritzing.org/download/”。访问日期:2020 年 10 月 15 日。
- Moura, Sandro & Santos, Thadeu。(2016)。“使用 Arduino 和 Android OS 进行家居自动化”。学士学位研究。提供有关 Arduino 和传感器的教程的网站[在线]。网址:“https://blog.eletrogate.com/”。访问日期:2020 年 3 月 15 日。
- Tinkercad (2011)。“用于电子硬件设计的网站”[在线]。网址:“https://www.tinkercad.com”。访问日期:2020 年 4 月 11 日。
历史
- 2020 年 11 月 27 日 - 文档创建
- 2020 年 12 月 4 日 - 文本修订
- 2020 年 12 月 6 日 - 修订和验证
- 2020 年 12 月 8 日 - 文档提交