HaaS EDU场景式应用学习 - 分歧争端机

HaaS EDU场景式应用整体介绍

1、实验介绍

分歧争端机使用的场景是当出现分歧时,分别摇一摇HaaS EDU K1来摇出一个0到100之间的数字,通过比较谁摇出的数字大来解决分歧的一种方法。本质是通过摇一摇这个动作来随机产生一个数字。这个实验的核心如何通过加速度传感器来检测到摇一摇这个动作,并随机生成一个数字。

显示效果

2、涉及知识点

  • 三轴加速度传感器的原理和使用
  • 随机数生成的方法
  • OLED绘图

3、软硬件环境准备

3.1、硬件

HAAS EDU K1 开发板一块 (开发板内置 MPU-6050 传感器)

USB2TypeC 数据线一根

 

3.2、软件

“分歧争端机”功能已经包含在edu_demo应用中,并且包含在发布版本中。

 

3.2.1、固件版本

       固件版本:V1.0.0

3.2.2、代码路径

git clone https://gitee.com/alios-things/AliOS-Things.git -b dev_3.1.0_haas
cd AliOS-Things/application/example/edu_demo/k1_apps/shakeshake

3.2.3、编译

进入代码的顶层目录如AliOS-Things进行编译。直接编译application/example/目录下的edu_demo应用。

两种方法进行编译

命令行方式

aos make distclean
aos make edu_demo@haaseduk1 -c config
aos make

AliOS Studio IDE方式

3.2.4、烧录

见开发环境章节

4、硬件介绍 - MPU-6050

请参考《陀螺仪小球》中的相同章节。

5、应用开发

本实验通过MPU_Get_Accelerometer去获得三轴加速度传感器的原始值。然后计算出在y方向上和z方向上的差值,作为震动大小的强弱指标。

当两个方向上的震动大小都超过了阈值,就认为是一次有效的摇晃,就生成随机数。生成随机的方法直接采用系统自带的rand()方法,他的返回值对100进行取模,保证是一个小于100的数字,然后将这个数据显示在OLED屏幕上。

void shakeshake_task()
{
    while (1)
    {
        // 获取三轴加速度信息
        MPU_Get_Accelerometer(&ax, &ay, &az);
        // 计算出y轴和z轴方向上的变化量
        y_change = (ay >= ay_pre) ? (ay - ay_pre) : (ay_pre - ay);
        z_change = (az >= az_pre) ? (az - az_pre) : (az_pre - az);
        // 变化量都超过阈值,则进行下一步处理
        if ((y_change > SHAKE_Y_THRESHOLD) && (z_change > SHAKE_Z_THRESHOLD))
        {
            // 生成100以下的随机数
            rand_value = rand() % 100;
            // 将随机数转化为需要显示的字符
            itoa(rand_value, showstr, 10);
            // 清除屏幕memory
            OLED_Clear();
            // 画出显示的图标
            OLED_Icon_Draw(50, 0, &icon_shakeshake_32_32_v2, 1);
            // 画出显示的字符
            OLED_Show_String(54, 36, showstr, 24, 1);
            // 画出左右翻页的图标
            OLED_Icon_Draw(2, 24, &icon_skip_left, 0);
            OLED_Icon_Draw(122, 24, &icon_skip_right, 0);
            // 将屏幕memory显示出来
            OLED_Refresh_GRAM();
        }
        // 保存本次y轴和z轴方向上的值
        az_pre = az;
        ay_pre = ay;
        // 暂停50ms
        aos_msleep(50);
    }
}

6、更多应用

本实验展示的仅是六轴传感器的一个非常简单的应用。随着类似传感器的体积越来越小,精度越来越高,它们也被应用在各种消费类电子产品,如穿戴设备、手机上。

使用它们可以进行一些非常有趣的应用,例如,手环中经常会使用到的计步算法,运动状态检测算法,都是基于其中的六轴传感器数据。近年来,还有很多学术界的工作,使用手环中的六轴传感器来实现空中写字的识别。

除此之外,它也广泛应用于辅助定位、飞行设备的姿态检测,摄像机云台的水平保持等等。

期待开发者们在HaaS EDU K1上能够发掘出更多有价值的使用场景,欢迎联系我们哦~~

7、开发者技术支持

如需更多技术支持,可加入钉钉开发者群,或者关注微信公众号

更多技术与解决方案介绍,请访问阿里云AIoT首页https://iot.aliyun.com/

猜你喜欢

转载自blog.csdn.net/HaaSTech/article/details/114257803