如何和Arduino控制板进行串口通信通信
## 准备条件
- 一台WIN7以上的的电脑
- 一个USB转TTL模块
- 一个语音识别模块
- 一个Arduino控制板
- 在使用前,用户需要提前掌握语音固件制作、固件烧录等方法;如果该部分仍然没掌握,请先去看相关视频教程。
---
  语音识别模块和Arduino控制板进行串口通信,那就必须事先约定好<span style="color:red">波特率</span>和<span style="color:red">控制协议</span>。假如用语音模块让Arduino控制开关灯,现在咱们针对这个来设计固件。
## 1.协议设计
- 波特率:波特率<span style="color:red">115200</span>、8位数据位、无奇偶校验、1位停止位
- 开灯指令:0x01<span style="color:red">(16进制,1个字节)</span>
- 关灯指令:0x02<span style="color:red">(16进制,1个字节)</span>
## 2.语音固件制作
  在<span style="color:red">Pin脚配置</span>下,<span style="color:green">GPIO_B6</span>配置为<span style="color:red">UART1_RX</span>,选择<span style="color:red">固定格式</span>,则识别的格式为帧头为<span style="color:blue">AA 55</span>,帧尾为<span style="color:blue">55 AA</span>,<span style="color:green">GPIO_B7</span>配置为<span style="color:red">UART1_TX</span>,<span style="color:green">波特率</span>为<span style="color:red">115200</span>,如下图所示:
::: hljs-center

:::
  在**命令词自定义**的<span style="color:green">基础信息</span>下,添加两个命令词,分别为开灯、关灯,如下图所示:
::: hljs-center

:::
  在<span style="color:green">控制详情</span>中,为命令词<span style="color:red">开灯</span>添加一个控制,如下图所示:
::: hljs-center

:::
  为命令词<span style="color:red">关灯</span>添加一个控制,如下图所示:
::: hljs-center

:::
  上述两个步骤操作完成后,<span style="color:green">控制详情</span>如下图所示:
::: hljs-center

:::
待固件在线编程生成后,烧录好固件。
## 3.编写Arduino测试代码
```arduino
//软串口库
#include <SoftwareSerial.h>
//定义软串口,2脚为RXD,3脚为TXD
SoftwareSerial mySerial(2, 3);
void setup(){
Serial.begin(115200);
mySerial.begin(115200);
}
//语音识别控制模块发送十六进01或者02,Arduino就可以解析该命令
void loop() {
char c;
//检测软串口是否有数据
if (mySerial.available() > 0)
{
c = mySerial.read();//读出串数据
Serial.println(c); //从主串口打开出来
if (c == 0x01) {
Serial.println("已收到开灯指令");
//在这里,就可以通过GPIO来控制开灯
}
else if (c == 0x02) {
Serial.println("已收到关灯指令");
//在这里,就可以通过GPIO来控制关灯
}
}
}
```
## 4.接线
- 语音识别模块的<span style="color:red">GND</span> 接 Arduino的<span style="color:green">GND</span>
- 语音识别模块的<span style="color:red">RXD</span> 接 Arduino的<span style="color:green">TXD</span>
- 语音识别模块的<span style="color:red">TXD</span> 接 Arduino的<span style="color:green">RXD</span>
- 语音识别模块的<span style="color:red">VCC</span> 接 Arduino的<span style="color:green">+5V</span>
---
## 5.上电测试
  接好线后,检查下接线是否异常,没问题的话,给Arduino控制板供电。待语音识别模块唤醒后,喊命令词<span style="color:red">开灯</span>、<span style="color:red">关灯</span>,监测Arduino串口打印的报文,是否有打印<span style="color:blue">已收到开灯指令</span>、<span style="color:blue">已收到关灯指令</span>,如果收到,则表示通信正常;反之异常,请按照上述流程重新检查下。