Arduino 教程:JARVIS v1 |如何制作家庭自动化
组件和用品
| × | 1 | ||||
| × | 4 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 10 |
必要的工具和机器
|
应用和在线服务
|
关于这个项目
我们为什么要建造这个?
作为一名钢铁侠粉丝,我真的受到了贾维斯的启发 一个语音控制的个人助理,我非常想建立一个家庭自动化系统。尽管有很多现有系统可用,但我决定使用 Arduino 构建自己的家庭自动化系统。
工作原理:
该项目旨在控制电气和电子设备,如灯、风扇、电视等。这是使用 Arduino 和安装在房子每个房间的继电器电路来完成的。数据将通过蓝牙模块发布到Arduino,可以进一步实现。
主要任务是获取数据并使用移动设备将其发布到 Arduino。之后可以根据数据进行控制来打开/关闭设备。
硬件构建
电路非常简单。该产品的总成本将低于 20 美元。
第 1 步:零件和材料
这个项目需要的组件是:
- 阿杜诺
- 继电器分线板
- 蓝牙模块 - HC-05
- 跳线
第 2 步:连接
以下连接是使用跳线电缆进行的。对于这个演示,我使用了四个继电器,这意味着可以使用 APP 控制四个设备。
*Arduino -> BT 模块*
- TX -> RX
- 接收 -> 发送
- VCC -> 3.3v
- GND -> GND
*Arduino -> 中继板*
- IN1 -> D2
- IN2 -> D3
- IN3 -> D4
- IN4 -> D5
- VCC -> VCC
- GND -> GND
第 3 步:代码
您可以在下面找到示例代码。
String voice;
int
led1 =2, //将 LED 1 连接到引脚 #2
led2 =3, //将 LED 2 连接到引脚 #3
led3 =4, //将 LED 3 连接到引脚 #4
led4 =5, //将 LED 4 连接到引脚 #5
led5 =6; //将 LED 5 连接到引脚 #6
//----------------------------------------调用函数------ -------------------------//
void allon(){
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
}
void alloff(){
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
}
//---------------------------- ------------------------------------------//
无效设置() {
Serial.begin(9600);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
}
//-------------------- -------------------------------------------------- -//
void loop() {
while (Serial.available()){ //检查是否有可用字节读取
delay(10); //添加延迟以使事情稳定
char c =Serial.read(); //进行串行读取
if (c =='#') {break;} //在word后检测到#时退出循环
voice +=c; //voice =voice + c
}
if (voice.length()> 0) {
Serial.println(voice);
//---- -------------------------------------------------- -----------------//
//----------控制多个引脚/ LEDs--------- //
if(voice =="*all on") {allon();} //关闭所有引脚(调用函数)
else if(voice =="*all off"){ alloff();} //开启所有引脚(调用函数)
//---------开启一对一-------- --//
else if(voice =="*TV on") {digitalWrite(led1, HIGH);}
else if(voice =="*fan on") {digitalWrite(led2, HIGH);}
else if(voice =="*computer on") {digitalWrite(led3, HIGH);}
else if(voice =="*卧室灯开") {digitalWrite(led4 , HIGH);}
else if(voice =="*bathroom lights on") {digitalWrite(led5, HIGH);}
//---------关闭一个-By-One----------//
else if(voice =="*TV off") {digitalWrite(led1, LOW);}
else if(voice =="*fan off") {digitalWrite(led2, LOW);}
else if(voice =="*compute r off") {digitalWrite(led3, LOW);}
else if(voice =="*卧室灯关了") {digitalWrite(led4, LOW);}
else if(voice ==" *浴室灯关了") {digitalWrite(led5, LOW);}
//---------------------------- ------------------------------------------//
语音="";}} //初始化后重置变量
第四步:申请
现在我们将使用现成的应用程序。在接下来的日子里,我会在处理完证书后发布一次申请。
Arduino BT 语音控制 由 SimpleLabsIN 创建:https://apkpure.com/bt-voice-control-for-arduino/robotspace.simplelabs.amr_voice/download?from=details
该项目的工作视频:
目前,该功能仅限于打开或关闭设备,但它可以在基本级别处理自然语言,允许用户将自然语言处理集成到其他项目中。
非常感谢 Hackster.io 允许我和这个伟大平台的所有用户参与。
感谢您开展这些鼓励年轻人和青少年创造和发明的活动。
如果它真的对你有帮助,请点赞,并关注我的频道以获得有趣的项目。 :)
如果您愿意,请分享此视频。
很高兴您订阅了:https://www.youtube.com/c/rahulkhanna24june?sub_confirmation=1
感谢阅读!
代码
- 示例代码
示例代码 Arduino
//Coded By:Angelo Casimiro (4/27/14)//Voice Activated Arduino (Bluetooth + Android)//随意修改但记得给creditString voice;intled1 =2, //连接LED 1 To Pin #2led2 =3, //将 LED 2 连接到 Pin #3led3 =4, //将 LED 3 连接到 Pin #4led4 =5, //将 LED 4 连接到 Pin #5led5 =6; //将 LED 5 连接到引脚 #6//---------------------------调用函数--------- ---------------------// void allon(){ digitalWrite(led1, HIGH);数字写入(led2,高);数字写入(led3,高);数字写入(led4,高); digitalWrite(led5, HIGH);}void alloff(){ digitalWrite(led1, LOW);数字写入(led2,低);数字写入(led3,低);数字写入(led4,低); digitalWrite(led5, LOW);}//---------------------------------------- -------------------------------// void setup() { Serial.begin(9600); pinMode(led1,输出); pinMode(led2,输出); pinMode(led3,输出); pinMode(led4,输出); pinMode(led5, OUTPUT);}//---------------------------------------- -------------------------------// void loop() { while (Serial.available()){ //检查如果有可用字节读取延迟(10); //添加延迟以使事情稳定 char c =Serial.read(); //进行串行读取 if (c =='#') {break;} //在单词 voice +=c 后检测到#时退出循环; //voice =voice + c 的简写 } if (voice.length()> 0) { Serial.println(voice);//-------------------- -------------------------------------------------- -// //----------控制多个引脚/ LED----------// if(voice =="*all on") {allon();} / /Turn Off All Pins (Call Function) else if(voice =="*all off"){alloff();} //Turn On All Pins (Call Function) //------------Turn On One-By-One----------// else if(voice =="*TV on") {digitalWrite(led1, HIGH);} else if(voice =="*fan on" ) {digitalWrite(led2, HIGH);} else if(voice =="*computer on") {digitalWrite(led3, HIGH);} else if(voice =="*卧室灯亮") {digitalWrite(led4, HIGH) );} else if(voice =="*bathroom lights on") {digitalWrite(led5, HIGH);} //---------关闭一对一------ ----// else if(voice =="*TV off") {digitalWrite(led1, LOW);} else if(voice =="*fan off") {digitalWrite(led2, LOW);} else if (voice =="*computer off") {digitalWrite(led3, LOW);} else if(voice =="*卧室灯关闭") {digitalWrite(led4, LOW);} else i f(voice =="*浴室灯关闭") {digitalWrite(led5, LOW);}//--------------------------- ----------------------------------------// 语音=“”;}} //初始化后重置变量
项目仓库
https://github.com/Rahul24-06/Arduino-Tutorial-JARVIS-v1-How-to-make-a-Home-Automation示意图
制造工艺