1.环境配置: 参考Arduino IDE上手教程完成IDE安装, 并根据实际使用的开发板安装对应的板管理, 与需要的驱动库。
2.使用到的驱动库:
1.使用到的硬件产品:
基于M5Unified和M5GFX添加基本的命令显示功能, 并添加turn on
,turn off
指令回调函数,模拟开关灯控制场景。
#include <M5Unified.h>#include <unit_asr.hpp> ASRUnit asr; void turnOnHandler(){ Serial.println("turn on command received!"); M5.Display.setCursor(0, 0); M5.Display.fillRect(0, 0, 320, 60, BLACK); M5.Display.println("turn on!");} void turnOffHandler(){ Serial.println("turn off command received!"); M5.Display.setCursor(0, 0); M5.Display.fillRect(0, 0, 320, 60, BLACK); M5.Display.println("turn off!");} void wakeupHandler(){ Serial.println("Hi,M Five command received!"); M5.Display.setCursor(0, 0); M5.Display.fillRect(0, 0, 320, 60, BLACK); M5.Display.println("wakeup!");} void setup(){ M5.begin(); M5.Display.setFont(&fonts::FreeMonoBold12pt7b); Serial.begin(115200); asr.begin(&Serial1, 115200, 18, 17); asr.addCommandWord(0x14, "turn on", turnOnHandler); asr.addCommandWord(0x15, "turn off", turnOffHandler); asr.addCommandWord(0xFF, "Hi,M Five", wakeupHandler); M5.Display.setCursor(0, 0); M5.Display.fillRect(0, 0, 320, 60, BLACK); M5.Display.println("Say \"Hi,M Five\"\nto wakeup!");} void loop(){ M5.update(); if (asr.update()) { Serial.println(asr.getCurrentCommandWord()); Serial.println(asr.getCurrentCommandNum()); Serial.println(asr.getCurrentRawMessage()); Serial.println((asr.checkCurrentCommandHandler())); }}
1.下载模式: 不同设备进行程序烧录前需要下载模式, 不同的主控设备该步骤可能有所不同。详情可参考Arduino IDE上手教程页面底部的设备程序下载教程列表, 查看具体的操作方式。
CoreS3长按复位按键(大约2秒)直到内部绿色LED灯亮起,便可松开,此时设备已进入下载模式,等待烧录。
Hi M Five
命令唤醒。I'm here
。Turn on
命令,回应 OK
。Turn off
命令,回应 OK
。AA 55 46 55 AA
, 其中指令码为 0x46
。可参考下方案例程序进行指令添加与注册回调函数。#include <M5Unified.h>#include <unit_asr.hpp> ASRUnit asr; void JustHandler(){ Serial.println("Just command received!");} void setup(){ M5.begin(); Serial.begin(115200); asr.begin(&Serial1, 115200, 22, 21); asr.addCommandWord(0x46, "Just", JustHandler);} void loop(){ M5.update(); if (asr.checkMessage()) { Serial.println(asr.getCurrentCommandWord()); Serial.println(asr.getCurrentCommandNum()); Serial.println(asr.getCurrentRawMessage()); Serial.println((asr.checkCurrentCommandHandler())); }}
Hi M Five
命令唤醒,回应 I'm here
。Just
命令,回应 Do it
。JustHandler
函数正常调用Just command received!
Just
0x46
0xAA 0x55 0x46 0x55 0xAA
1