环境配置: 参考 Arduino IDE上手教程 完成IDE安装, 并根据实际使用的开发板安装对应的板管理, 与需要的驱动库。
使用到的驱动库:
基于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.checkMessage()) {
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