智能家居控制模拟套件
针对有编程基础的学生开发的一套蓝牙局域网控制模拟套件。版本号【1.0】
下一版本将更新WiFi远程控制系统。
郑州三松信息技术有限公司出品。
电路图如下:
1、可实现的功能:
1、手机APP蓝牙控制led。
2、手机APP蓝牙控制舵机。
3、手机APP蓝牙控制直流电机。
4、蜂鸣器交互。
2、元件介绍:
元件 | 数量 | 教程 | 备注 |
---|---|---|---|
arduino_uno主控板 | 1块 | 用于程序主控 | |
舵机 | 1个 | 可实现固定角度转动 | |
直流空心杯电机 | 1个 | 输入高低电平即可工作 | |
蜂鸣器 | 1个 | 可实现声音试人机交互 | |
LED灯 | 1个 | 用于模拟日光灯操作 |
3、手机APP介绍:【此版本为安卓版,目前ios版本正在开发中】
4、手机APP功能详解:
APP采用简介明了的交互界面,模拟智能家居的局域网控制。
- 点按触发。
- 语音控制
- 语音反馈
- 蓝牙检索
- 一键连接
5、手机端使用图解:
1、首先打开APP界面如下:
等待语音服务启动完毕,即可进入下一步:
2、蓝牙设备配对:
- 打开手机蓝牙
- 单击界面上的搜索设备按钮
- APP将自动搜索局域的蓝牙设备
如下图:
找到HC06的蓝牙设备,单击即可配对,秘钥为“1234”
3、APP的使用:
配对成功之后就可以单击界面上的按钮进行局域网控制了,具体单片机接受端的代码见代码详解篇。
4、语音遥控的使用:
单击界面中央的麦克风按钮,即可进行语音识别。
5、语音识别口令:
【本版本软件内置六款口令进行模拟实验,仅供参考。】
语音关键字 | 对应蓝牙串口值 | 功能 | 备注 |
---|---|---|---|
开灯 | 1 | 对应实现单片机端LED灯开启 | |
关灯 | 2 | 对应实现单片机端LED灯关闭 | |
开门 | 3 | 对应实现单片机端舵机动作 | |
关门 | 4 | 对应实现单片机段舵机动作 | |
开风扇 | 5 | 对应实现单片机端电机启动 | |
关风扇 | 6 | 对应实现单片机端电机关闭 |
备注:所有关键字,只需语音中包含即可。
例如:“请开门”、“开开门”、“芝麻开门”等,均可以实现开门的功能。
//******************//郑州三松信息技术有限公司//***********************//
//******************//智能家居系统模拟1.0//******************//
//arduino手册地址:http://www.ocrobot.com/doku.php?id=learning
#include<Servo.h>
#include <SoftwareSerial.h>
SoftwareSerial mySerial(0, 1); // RX, TX,定义0端口是接收端,1端口是发射端
Servo myservo;
char val='/';
int pos=0;
int Bee=2;//定义蜂鸣器对应单片机端口为2
int LED=3; //定义led对应单片机端口为3
int FAN=4; //定义风扇对应单片机端口为4
int DUOJI=5;//定义开门舵机对应单片机端口为5
void setup() //开机运行的程序代码
{
pinMode(2,OUTPUT); //设置2号IO口为输出模式
pinMode(3,OUTPUT); //设置3号IO口为输出模式
pinMode(4,OUTPUT); //设置4号IO口为输出模式
digitalWrite(2,HIGH);//设置2号IO口为初始高电平状态
digitalWrite(4,LOW);//设置4号IO口为初始低电平状态
Serial.begin(9600);//设置串口波特率为9600
myservo.attach(5);//设置舵机连接口为5号IO口
}
void loop() // 循环执行的程序代码
{
val=Serial.read(); //接收数据
switch (val){
case '1': ledopen(); break;
case '2': ledclose(); break;
case '3': dooropen(); break;
case '4': doorclose(); break;
case '5': fanopen(); break;
case '6': fanclose(); break;
//以上数据对应手机APP控制代码
}
}
////////////////////////////////////////////
void fanopen() // 定义开风扇函数
{
bee();
digitalWrite(4,HIGH);
}
void fanclose() // 定义关风扇函数
{
bee();
digitalWrite(4,LOW);
}
void dooropen() // 定义开门函数
{
bee();
for(pos = 0; pos <= 180; pos += 1) // 此处依靠for循环来实现舵机从0度旋转到180度的控制。
{
myservo.write(pos);
delay(15);
}
}
void doorclose() //定义关门函数
{
bee();
for(pos = 180; pos>=0; pos-=1) // 此处依靠for循环来实现舵机从180度旋转到0度的控制。
{
myservo.write(pos);
delay(15);
}
}
void ledopen() // 定义LED开启函数
{
bee();
digitalWrite(3,HIGH);
}
void ledclose() //定义LED关闭函数
{
bee();
digitalWrite(3,LOW);
}
void bee() //定义蜂鸣器函数
{
tone(2,500,500);
delay(200);
tone(2,800,500);
}