专栏首页caoqi95的记录日志Arduino 入门项目系列 (5) - Android 手机通过蓝牙语音控制 LED

Arduino 入门项目系列 (5) - Android 手机通过蓝牙语音控制 LED

为了加快 Arduino 的学习,决定周一这一天的上午也用来学习 Arduino。今天还是继续学习蓝牙模块的使用。实现通过蓝牙模块,在手机端语音控制 LED 的功能。这种思路后续再扩宽的话,加上动手能力强的话,完全自己搭建智能家居系统。

本文章主要参考的是这篇:Android 通过蓝牙语音控制 Arduino,非常感谢作者的教程!

设置蓝牙

本人使用的蓝牙模块是 HC-05,由实验室的小伙伴友情提供。因为是他人使用过的,所以得进行初始化设置。

  • 进入 AT 模式:具体参考这篇文章:Arduino使用HC05蓝牙模块与手机连接
  • AT 模式的一些命令: 进入 AT 模式后,重新设置名称和密码,并将蓝牙设置为从模式,因为这个项目中,手机是主机。
AT+ORGL    # 恢复出厂模式
AT+NAME=Bluetooth    # 设置蓝牙名称为 Bluetooth
AT+ROLE=0    # 设置蓝牙为从模式
AT+CMODE=1    # 设置蓝牙为任意设备连接模式
AT+PSWD=1234    # 设置蓝牙匹配密码为1234

硬件准备

  • Arduino UNO 一个
  • 蓝牙模块 HC-05 一个
  • 红色和黄色 LED 各一个
  • Android 手机(有谷歌套件
  • 面包板一块
  • 连接线若干

软件准备

  • Arduino IDE
  • 在 Google APP Store 或者其他安卓市场下载 Arduino Voice Control

电路连接

黄色 LED 的连线:长脚 ——>先接个电阻,再连接 13,短脚 ——> GND 红色 LED 的连线:长脚 ——>先接个电阻,再连接 12,短脚 ——> GND 蓝牙的连线:VCC ——> 5V,GND ——> GND,RXD ——> TXD,TXD ——> RXD,这里需要注意蓝牙的 RXD 要与 Arduino 的 TXD 连接,TXD 要与 Arduino 的 RXD 连接,两者是交错连接的同时在烧录的时候,注意断开 TXD 和 RXD 的连接,要不然烧录的时候会受到干扰,继而会报错。

实现代码

Arduino_Learning/VoiceControlLed

/*
 * 通过蓝牙,实现手机语音控制 LED
 */
#define YELLOW_PIN 13
#define RED_PIN 12


String voice;

void setup() {
  // 设置串行波特率
  Serial.begin(9600);
  // 将 led 引脚设为输出模式
  pinMode(YELLOW_PIN, OUTPUT);
  pinMode(RED_PIN, OUTPUT);
}

// 获取指令函数。将串口传输的字符连接成完整的字符串指令
String getVoice(){
  while(Serial.available()){
    delay(50);
    char orderChar = Serial.read();
    // 如果按下“#”号键的话,停止获取语音
    if(orderChar == "#")
      break;
      voice += orderChar;
    }
   return voice;
  }
// 使 LED 闪烁
void blink(){
  digitalWrite(YELLOW_PIN, HIGH);
  digitalWrite(RED_PIN, HIGH);
  delay(100);
  digitalWrite(YELLOW_PIN, LOW);
  digitalWrite(RED_PIN, LOW); 
  delay(100);
  }
// 控制函数。解析字符串指令并执行相应动作
void control(String voice){
  // 打开黄色 LED 
  if(voice.endsWith("yellow")){
    digitalWrite(YELLOW_PIN, HIGH);
    //Serial.println("Light ON");
    }
   // 打开红色 LED
  if(voice.endsWith("red")){
    digitalWrite(RED_PIN, HIGH);
    //Serial.println("Light ON");
    }  
  // 闪烁
  if(voice.endsWith("blink")){
    blink();
    }
  // 停止闪烁
  if(voice.endsWith("stop")){
    digitalWrite(YELLOW_PIN, HIGH);
    digitalWrite(RED_PIN, HIGH);}
  // 关闭 LED
  if(voice.endsWith("off")){
    digitalWrite(YELLOW_PIN, LOW);
    digitalWrite(RED_PIN, LOW);
    }
  }

void loop() {
  String voice = getVoice();
  control(voice);
  voice = ""; // 将 voice 清空
}

烧录代码

代码编译完没问题后,点击图中所选按钮将其上传至 Arduino UNO 板上。

手机设置

  1. 点击 CONNECT,选择蓝牙,点击连接。
  1. 点击中间的麦克风,进行语音输入

实际结果

  • 语音输入 turn on the yellow:黄色的灯会打开
  • 语音输入 turn on the red:红色的灯会打开
  • 语音输入 blink:两个灯会一起闪烁
  • 语音输入 stop:两个灯会停止闪烁,并保持常亮
  • 语音输入 turn off:两个灯都会熄灭

这个项目的结果最好的显示方式是录视频,但我一个人忙不过来,就放弃了。结果可以参考上面那篇文章的结果。我主要增加了按颜色实现语音控制 LED ,以及 LED 闪烁功能的开启和关闭这些功能。只是代码方面的修改,及语音方面输入的不同。

心得总结

刚开始在看到一篇用 BitVoice 这个工具实现语音控制的文章,但下载了 BitVoice 这个软件后,没有搞懂怎么使用,就放弃了。后来在收藏夹里又突然发现上面这篇文章,就赶紧参考写代码实现了。在实现的过程中,感觉英文发音比较准的话,会比较容易控制;发音不好的话,就会识别不清,得多次输入。

参考文章

[1]. Android 通过蓝牙语音控制 Arduino [2]. Arduino使用HC05蓝牙模块与手机连接

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Arduino 入门项目系列 (4) - Android 手机通过蓝牙远程控制 LED

    上周鼓捣 Deepin 系统去了,就没认真学习,发文章。这周学习的是蓝牙模块的使用。实现蓝牙模块控制 LED 的开关。蓝牙模块的用处很多,主要用于数据的传输,可...

    caoqi95
  • 使用 VS Code 开发 Arduino 项目

    在 VS Code 中搜索 Arduino 插件并安装。安装完之后,进行重新加载。

    caoqi95
  • Unsharp Masking

    简单说就是对输入图像进行高通滤波,获得高频信号,然后一定程度地与原始信号相加得到校正后的结果。这样处理后的结果就是原图像中的高频信号被突出了。

    caoqi95
  • SC20委员会正在考虑远程参会的可能性

    SC20,高性能计算、网络、存储和分析的国际会议,在即将于2020年11月15日至20日在亚特兰大乔治亚世界会议中心举行的会议之前发布了一个特别通知。

    GPUS Lady
  • 版本控制器——Egit使用方法

    什么是Git Gitv是目前世界上最先进的分布式版本控制系统。   那我们为什么需要学习Git呢?因为在我们传统的java自学中,所有的项目都是自己独立开发完成...

    生活创客
  • Seaborn设置图形显示的效果

    x = np.linspace(0,14,100) y1 = np.sin(x) y2 = np.sin(x+2)*1.25 def sinplot() ...

    慕白
  • 超硬核的 Python 数据可视化教程!

    python中最基本的作图库就是matplotlib,是一个最基础的Python可视化库,一般都是从matplotlib上手Python数据可视化,然后开始做纵...

    叫我龙总
  • NVIDIA通过kaolin PyTorch库简化3D深度学习研究

    3D计算机视觉和AI的研究工作像两个摩天大楼一样并排发展。但是这些巨大的塔之间的旅程涉及爬上和爬下数十个楼梯间。

    代码医生工作室
  • 自动驾驶汽车眼中的世界是什么样的?

    大数据文摘
  • NLP 算法工程师相关的面试题

    【导读】本项目记录了面试NLP算法工程师常会遇到的问题,作者songyingxin。

    代码医生工作室

扫码关注云+社区

领取腾讯云代金券