出厂固件可以通过配置文件 `config.json` 配置语音识别WiFi模块的系统参数和语音指令执行动作。包括唤醒有效时间、串口波特率、串口输出内容、IO高低电平、PWM输出、通过贝壳物联平台控制其他设备等。 ![配置文件](https://box.kancloud.cn/a4fd6b9b67c4cbd00a49e214f7b20dfe_903x601.jpg) [TOC] ## 一、配置文件存放位置 配置文件存放于 Arduino 程序文件(.ino 文件)同级目录的 `data` 文件加下,文件名为 `config.json` 。最终通过 Arduino IDE [配置文件上传插件](https://www.kancloud.cn/bigiot/common/497829)上传至 ESP-12S flash 内。 ## 二、配置文件格式 配置文件内容为 [json](http://www.json.org/json-zh.html) 字符串,如下: ~~~ { "C0":{"ID":"1","K":"493822593","BR":9600,"CI":10,"CC":1,"SPK":0}, "C1":{"M":"WAKE","W":"wake"}, "C2":{"M":"LED","V":1,"W":"ledon"}, "C3":{"M":"LED","V":0,"W":"ledoff"}, "C4":{"M":"BUZZING","TYPE":1}, "C5":{"M":"SAY","ID":"D2","C":"北京天气","S":"home","W":"waiting"}, "C6":{"M":"SAY","ID":"D2","C":"北京明日天气","S":"home","W":"waiting"}, "C7":{"M":"TIME"}, "C8":{"M":"SMARTCONFIG","BW":"smartconfig1","OW":"smartconfig2"}, "C9":{"M":"SAY","ID":"D449","C":"play","S":"home","W":"play1"}, "C10":{"M":"SAY","ID":"D449","C":"stop","S":"home","W":"stop1"}, "C12":{"M":"TALK","W":"introduce"}, "C15":{"M":"TALK","W":"showEnglish"}, "C18":{"M":"SLEEP","W":"sleep"}, "C19":{"M":"UART","C":"play","W":"uart"}, "C120":{"M":"IO","N":4,"V":1,"W":"io"} } ~~~ 文本编码格式为UTF-8无BOM格式编码。 ## 三、配置内容详解 `C0` 负责配置系统参数,必须填写,`C1~Cn` 为语音指令触发动作参数,选填,`C` 后面紧跟的数字对应语音识别指令烧录软件(SRTool.exe)中语音指令的序号,配置文件中的序号可以不连续,也可以不按照大小顺序排列,但**不得重复**。 ![指令对应关系](https://box.kancloud.cn/d3538a8f16c21f31845e8ef22fdf67a9_953x503.JPG) ### 1、系统参数配置(`C0`) 示例:`{"ID":"1","K":"493822593","BR":9600,"CI":10,"CC":1,"SPK":0}` |索引|类型|说明|备注| |---|---|---|---| |ID|字符串|贝壳物联平台中的设备 ID|购买模块时会随模块一起发送给客户,如果没有,可以向客服索取| |K|字符串|设备 ID 对应的 APIKEY|用来登录贝壳物联服务器的密码| |BR|数值|IO2 串口输出的波特率|可取 9600、57600、115200| |CI|数值|模块唤醒有效时长|单位:秒,建议 5-30| |CC|数值|唤醒有效时长是否延续|可取 0、1,当设为1时,在唤醒状态,模块收到有效指令后,唤醒状态的有效时长重置为CI设定值,反之则不重置| |SPK|数值|是否连接SPK模块|0:未连接,1:连接| *注:所有键值必须设置,不设置或设置错误会导值模块启动失败。* ### 2、语音指令触发动作配置(`C1~Cn`) 语音指令可以触发多种动作,用 `M` 键值进行区分。不同动作的配置内容有所不同。 几个**重要的共同之处**提前说明如下,以避免重复说明。 1. 选填项目不设置时需连同索引一起省略,如 `{"M":"WAKE","W":"wake"}` 不配置唤醒后播放内容时需写为 `{"M":"WAKE"}`; 2. 本节中串口输出是指 IO2 针脚作为 TX 输出。 3. 本节中提到播放内容时需连接贝壳物联的语音合成模块时才能实现; 4. `W` 和 `U` 配置项只能二选一,因为这两项都是IO2串口输出内容,同时配置会造成输出内容混乱。 #### 唤醒模块(WAKE) 示例:`{"M":"WAKE","W":"wake"}` 或 `{"M":"WAKE","U":"waked","B":1}` |索引|类型|说明|备注| |---|---|---|---| |M|字符串|唤醒模块动作标识 `WAKE`|必填| |W|字符串|文件名,省略扩展名 `.txt`,模块唤醒后播放此文件的文本内容|选填| |U|字符串|模块唤醒后串口输出内容|选填| |B|数值|0:无蜂鸣应答,1:蜂鸣应答|选填| #### 控制板载LED1(LED) 示例:`{"M":"LED","V":1,"W":"ledon"}` 或 `{"M":"LED","V":1,"U":"led turn on"}` |索引|类型|说明|备注| |---|---|---|---| |M|字符串|控制板载LED1动作标识 `LED`|必填| |V|数值| 0:关闭 1:打开|必填| |W|字符串|文件名,省略扩展名 `.txt`,动作执行后播放此文件的文本内容|选填| |U|字符串|动作执行后串口输出内容|选填| #### 蜂鸣提醒(BUZZING) 示例:`{"M":"BUZZING","TYPE":1,"U":"buzzing"}` |索引|类型|说明|备注| |---|---|---|---| |M|字符串|蜂鸣器发音动作标识 `BUZZING`|必填| |TYPE|数值| 可取 0、1、2 ,三种不同声音|必填| |U|字符串|动作执行后串口输出内容|选填| 注: 1. 此动作不提供 `W` 配置项,因为蜂鸣器和播放声音互相影响。 #### 控制 IO 高低电平(IO) 示例:`{"M":"IO","N":4,"V":1,"W":"io"}` 或 `{"M":"IO","N":4,"V":1,"U":"IO4 set high"}` |索引|类型|说明|备注| |---|---|---|---| |M|字符串|控制 IO 高低电平动作标识 `IO`|必填| |N|数值|4、5、15、16 四个值可选|必填| |V|数值| 0:低电平 1:高电平|必填| |W|字符串|文件名,省略扩展名 `.txt`,动作执行后播放此文件的文本内容|选填| |U|字符串|动作执行后串口输出内容|选填| #### PWM输出(PWM) 示例:`{"M":"PWM","N":4,"V":120,"W":"pwm"}` 或 `{"M":"PWM","N":4,"V":1,"U":"IO4 set to 120/1024*3.3"}` |索引|类型|说明|备注| |---|---|---|---| |M|字符串|IO PWM 输出动作标识 `IO`|必填| |N|数值|4、5、15、16 四个值可选|必填| |V|数值| 0~1023 可选|必填| |W|字符串|文件名,省略扩展名 `.txt`,动作执行后播放此文件的文本内容|选填| |U|字符串|动作执行后串口输出内容|选填| #### 串口输出(UART) 示例:`{"M":"UART","C":"uart print out"}` |索引|类型|说明|备注| |---|---|---|---| |M|字符串|串口输出动作标识 `UART`|必填| |C|字符串|串口输出内容|必填| 注: 此动作SPK设置为 0 时可用,即不连接SPK模块时。 #### 退出唤醒状态(SLEEP) 示例:`{"M":"SLEEP","W":"sleep"}` 或 `{"M":"SLEEP","U":"sleeped"}` |索引|类型|说明|备注| |---|---|---|---| |M|字符串|退出唤醒状态动作标识 `SLEEP`|必填| |W|字符串|文件名,省略扩展名 `.txt`,动作执行后播放此文件的文本内容|选填| |U|字符串|动作执行后串口输出内容|选填| #### 停止语音识别(QUIT) 示例:`{"M":"QUIT","W":"quit"}` 或 `{"M":"QUIT","U":"quited"}` |索引|类型|说明|备注| |---|---|---|---| |M|字符串|停止语音识别动作标识 `QUIT`|必填| |W|字符串|文件名,省略扩展名 `.txt`,动作执行后播放此文件的文本内容|选填| |U|字符串|动作执行后串口输出内容|选填| 注: 此动作执行后,语音模块停止监听声音,LED2 停止闪烁,所有语音指令失效。 可用通过重启 ESP-12S 恢复监听,按重启键或拉低 RST 针脚1秒。 在联网状态下,可以向模块发送 `up` 指令恢复监听。 #### 进入 smartconfig 配网模式(SMARTCONFIG) 示例:` {"M":"SMARTCONFIG","BW":"smartconfig1","OW":"smartconfig2"}` 或 ` {"M":"SMARTCONFIG","BU":"smartconfig begin","OU":"smartconfig over"}` |索引|类型|说明|备注| |---|---|---|---| |M|字符串|进入配网模式动作标识 `SMARTCONFIG`|必填| |BW|字符串|文件名,省略扩展名 `.txt`,进入 smartconfig 模式时播放此文件的文本内容|选填| |BU|字符串|进入 smartconfig 模式时串口输出内容|选填| |OW|字符串|文件名,省略扩展名 `.txt`,完成 smartconfig 模式时播放此文件的文本内容|选填| |OU|字符串|完成 smartconfig 模式时串口输出内容|选填| 注: 1. `BW` 和 `BU` 、`OW` 和 `OU` 只能二选一,也可都不配置。 2. 模块进入 smartconfig 模式后即可使用手机进行网络配置,详见 [Smartconfig联网配置](https://www.kancloud.cn/bigiot/common/497831) 。配置成功后,且 ID 和 APIKEY 配置正确的情况设备即可登录贝壳物联平台上线。 * * * * * **以下指令需要联网后才能执行** * * * * * #### 向贝壳物联平台设备、用户或分组发送指令(SAY) 示例:`{"M":"SAY","ID":"D449","C":"play","S":"home","W":"play1"}` 或 `{"M":"SAY","ID":"D449","C":"play","S":"home","U":"play send to D449"}` |索引|类型|说明|备注| |---|---|---|---| |M|字符串|向贝壳物联平台设备、用户或分组发送指令动作标识 `SAY`|必填| |ID|字符串|目标设备、用户或分组的唯一通讯标识,如 `D102`、`U2`、`G30`|必填| |C|字符串|向目标发送的指令内容|必填| |S|字符串|指令的签名标识,参考贝壳物联的 [通讯协议](https://www.bigiot.net/help/1.html) 的 `say` 指令|选填| |W|字符串|文件名,省略扩展名 `.txt`,动作执行后播放此文件的文本内容|选填| |U|字符串|动作执行后串口输出内容|选填| #### 查询服务器时间(DATE、TIME、FULLTIME) 1、查询日期 示例:`{"M":"DATE"}` |索引|类型|说明|备注| |---|---|---|---| |M|字符串|向贝壳物联服务器查询日期动作标识 `DATE`|必填| 返回: * SPK 为 1 时,播报服务器日期; * SPK 为 0 时,串口输出服务器日期。 2、查询时间 示例:`{"M":"TIME"}` |索引|类型|说明|备注| |---|---|---|---| |M|字符串|向贝壳物联服务器查询时间动作标识 `TIME`|必填| 返回: * SPK 为 1 时,播报服务器时间; * SPK 为 0 时,串口输出服务器时间。 3、查询日期和时间 示例:`{"M":"FULLTIME"}` |索引|类型|说明|备注| |---|---|---|---| |M|字符串|向贝壳物联服务器查询日期和时间动作标识 `FULLTIME`|必填| 返回: * SPK 为 1 时,播报服务器日期和时间; * SPK 为 0 时,串口输出服务器日期和时间。 #### 对话(TALK) 示例:`{"M":"TALK","W":"talk"}` |索引|类型|说明|备注| |---|---|---|---| |M|字符串|串口输出动作标识 `TALK`|必填| |W|字符串|文件名,省略扩展名 `.txt`,播放此文件的文本内容|必填| 注: 此动作SPK设置为 1 时可用,即连接SPK模块时。 #### SAY 指令特殊应用 以下应用需接 SPK 模块,将 `C0` 中的 `SPK` 配置为1 1、与小贝机器人对话 示例:`{"M":"SAY","ID":"D2","C":"北京天气","W":"waiting"}` D2 是贝壳物联的小贝机器人通讯ID,可以与它对话,譬如向它询问天气、让它讲个笑话等。得到回复结果后,通过 SPK 模块播放出来。类似的可以将示例代码中的"北京天气"改为"上海天气"、"广州明日天气"、"讲个笑话"等。