内容介绍
内容介绍
本次任务:使用姿态传感器完成体感游戏手柄,并设计完成一个游戏。
硬件平台介绍
M5StickC PLUS 是M5StickC的大屏幕版本,主控采用ESP32-PICO-D4模组,具备蓝牙4.2与WIFI功能,小巧的机身内部集成了丰富的硬件资源,如红外、RTC、麦克风、LED、IMU、按键、蜂鸣器、PMU等。
ESP32-PICO-D4
ESP32-PICO-D4具有520KB片上RAM与4MB的外部 SPI flash,同时兼备Wi-Fi和蓝牙功能,主频高达240M。
MPU68866
轴IMU单元是带有3轴重力加速度计和3轴陀螺仪的6轴姿态传感器,可以实时计算倾斜角度和加速度。该芯片采用mpu6886,具有16位ADC,内置可编程数字滤波器和片上温度传感器,采用I2C接口(addr:0x68)与上位机通信,并支持低功耗模式。
AXP192
AXP192是可配置的智能电源选择系统,可实时监测功耗(mA或mW),剩余电池状态(%或mAh),剩余电池或充电时间,集成备用电池为RTC模块供电,具有过压保护/欠压保护/ 过流保护 过温保护功能。
软件平台搭建
首先,去arduino官网下载软件:
复制下方的 M5Stack 板管理网址到 附加开发板管理器:
中:
https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json
在开发板管理器输入并搜索 M5Stack
进行安装,然后选择对应的开发板配置:
▲ 最终效果图
▲ 软件运行流程图
-
外设初始化
M5.begin(); // 开发板初始化
M5.IMU.Init(); // 陀螺仪初始化
M5.Lcd.setRotation(1); // 设定屏幕方向
M5.Lcd.fillScreen(TFT_ORANGE); // 设定背景颜色
M5.Lcd.setTextColor(TFT_BLACK); // 设定字体颜色
M5.Lcd.setCursor(30, 30); // 设定打印位置
M5.Lcd.setTextSize(4); // 设定字体大小
M5.Lcd.print("SHAKE");
-
建立骰子点坐标数组
// 点位置
int dot[6][6][2]
{
{{35, 35}},
{{15, 15}, {55, 55}},
{{15, 15}, {35, 35}, {55, 55}},
{{15, 15}, {15, 55}, {55, 15}, {55, 55}},
{{15, 15}, {15, 55}, {35, 35}, {55, 15}, {55, 55}},
{{15, 15}, {15, 35}, {15, 55}, {55, 15}, {55, 35}, {55, 55}},
};
-
画骰子动画函数
void draw_dice(uint16_t x, uint16_t y, uint8_t n)
{
M5.Lcd.fillRect(x-1, y-1, 72, 72, BLACK);
M5.Lcd.fillRect(x, y, 70, 70, WHITE);
for (int d = 0; d < 6; d++)
if (dot[n][d][0] > 0)
M5.Lcd.fillCircle(x + dot[n][d][0], y + dot[n][d][1], 7, TFT_BLACK);
}
- 陀螺仪姿态阈值判断与骰子点数随机生成动画绘制
void loop(void)
{
while (1)
{
M5.IMU.getAccelData(&accX, &accY, &accZ);
if (accX > 2 || accY > 2) break;
}
M5.Lcd.fillScreen(TFT_ORANGE);
delay(250);
draw_dice(40, 30, random(0, 6));
delay(250);
draw_dice(135, 30, random(0, 6));
}
不足与展望
不足
-
陀螺仪长时间存在零漂问题,导致后期摇骰子精度不准确;
-
随机数生成使用的C库random函数,且没有增加随机种子,属于伪随机;
-
主程序采用循环模式运行,导致系统实时性较低。
-
使用互补滤波算法使用加速度计弥补陀螺仪长时间的零漂,增大系统精度;
-
使用RTC时间作为随机种子,增强游戏的随机性。
软硬件
元器件
ESP32-PICO-D4
ESP32-PICO-D4 是一款基于 ESP32 的系统级封装 (SiP) 模组,可提供完整的 Wi-Fi 和蓝牙 ® 功能。该模组的外
观尺寸仅为 (7.000±0.100) mm × (7.000±0.100) mm × (0.940±0.100) mm,整体占用的 PCB 面积最小,已集成
1 个 4 MB 串行外围设备接口 (SPI) flash。
电路图
附件下载
掷骰子.zip
团队介绍
ESP32产品开发小白
评论
0 / 100
查看更多