【开发者案例】使用HaaS EDU K1实现一个数字量角器

简介: 2021年3月,阿里发布了HaaS EDU K1物联网教育开发板。它是一款云端一体全链路解决方案的积木平台。
来源 | HaaS技术社区

2021年3月,阿里发布了HaaS EDU K1物联网教育开发板。它是一款云端一体全链路解决方案的积木平台。

点击这里查看HaaS EDU K1硬件介绍
点击这里查看HaaS EDU场景式应用整体介绍

image.png

2021年7月,阿里又发布了一站式的集成开发环境HaaS Studio,大大降低了alios things开发环境搭建的门槛。HaaS Studio 集 C / JS / Python 三种语言开发于一体,实现了VSCode一个插件完成三种应用开发的功能。

HaaS EDU K1板载了一块MPU6050芯片,官方例程实现了一个水平仪。Simon Liu在此基础上基于HaaS EDU K1的Python轻应用实现了一个电子量角器,效果如下图:

7c341440706640d58515351d01c1625a.gif

主要流程:

  1. 官方Python轻应用的gyroscope例程提供了获取MPU6050原始数据的api:read_MPU6050()
  2. 对获取到的数据通过滤波算法进行融合(main分支使用了一阶互补滤波,kalman分支使用了卡尔曼滤波)。
  3. 将解算后得到的c_angle_y四舍五入保留一位小数显示到OLED屏幕上。

主要代码如下:

def main():
    ac = []
    gy = []
    ystr = ""
    while (True):
        
        t_now = utime.ticks_ms()
        dt = (t_now - last_read_time)/1000.0
        acc_x, acc_y, acc_z, gyro_x, gyro_y, gyro_z = read_MPU6050()
 
        #Full scale range +/- 250 degree/C as per sensitivity scale factor. The is linear acceleration in each of the 3 directions ins g's
        Ax = acc_x/16384.0
        Ay = acc_y/16384.0
        Az = acc_z/16384.0
        
        # This is angular velocity in each of the 3 directions 
        Gx = (gyro_x - calib_x_gyro)/131.0
        Gy = (gyro_y - calib_y_gyro)/131.0
        Gz = (gyro_z - calib_z_gyro)/131.0
 
        acc_angles = acc_angle(Ax, Ay, Az) # Calculate angle of inclination or tilt for the x and y axes with acquired acceleration vectors
        gyr_angles = gyr_angle(Gx, Gy, Gz, dt) # Calculate angle of inclination or tilt for x,y and z axes with angular rates and dt 
        (c_angle_x, c_angle_y) = c_filtered_angle(acc_angles[0], acc_angles[1], gyr_angles[0], gyr_angles[1]) # filtered tilt angle i.e. what we're after
        (k_angle_x, k_angle_y) = k_filtered_angle(acc_angles[0], acc_angles[1], Gx, Gy, dt)
 
        set_last_read_angles(t_now, c_angle_x, c_angle_y)
        c_angle_y += offset
        ystr = ("{:.1f}".format(c_angle_y))
        display.fill(0)
        display.text(ystr, 55, 30, 1)
        display.show()
        utime.sleep_ms(10)

注:

  • 整个项目只有两个py文件,加起来代码不超过300行。
  • 默认的底层固件应该是使用了Micropython的1306驱动,仅支持一个字号和字体。
  • 分支bigfonts尝试在不修改底层固件的情况下实现更大字体(主要是数字)的显示,并且使用了自带的驱动,但是显示有严重滞后,欢迎各位大佬进行优化。

使用Python轻应用开发初步体验感受的优缺点如下:

优点
开发快速,提供大量封装好的api,可以操纵开发板的硬件以及与传感器通讯。
可以通过远程和本地进行热更新。

缺点
开发受到底层固件的限制,比如你想显示更多字体,要么需要固件支持,或者重写SSD1306的驱动和字库,或者按照我的方法在python源码中建立字库并优化显示速度。又或者你希望使用按键中断,也需要更新固件来进行支持。(截止到2021年8月3日的固件尚未支持EDU K1的按键中断)

最后是开源的代码,欢迎Star,欢迎优化:
Gitee:haas_eduk1_digital_protractor
Github:haas_eduk1_digital_protractor

相关文章
|
8月前
|
存储 移动开发 Android开发
HarmonyOS应用开发者高级认证(88分答案)
HarmonyOS应用开发者高级认证(88分答案)
2757 0
|
14天前
|
人工智能 小程序 Android开发
鸿蒙应用开发从入门到入行 - 篇1:HarmonyOS介绍——带你深入理解鸿蒙特性
本文介绍了华为的HarmonyOS(鸿蒙系统),这是一个面向全场景的分布式操作系统,不仅适用于手机和平板,还支持电脑、车机、手表、电视等多种设备。文章详细解析了鸿蒙系统的三大特性:一次开发多端部署、可分可合自由流转、统一生态原生智能,并分析了鸿蒙系统为何能蚕食安卓市场份额的原因。猫林老师认为,鸿蒙凭借其先进的技术和国内政策支持,有望在未来的市场中占据重要地位。最后,文章提供了学习鸿蒙系统的建议和一些课后练习,帮助读者更好地理解和掌握这一系统。
84 7
鸿蒙应用开发从入门到入行 - 篇1:HarmonyOS介绍——带你深入理解鸿蒙特性
|
8月前
|
人工智能 自然语言处理 前端开发
《阿里云产品手册2022-2023 版》——数字实践平台
《阿里云产品手册2022-2023 版》——数字实践平台
131 0
|
存储 IDE Java
《鸿蒙理论知识 06》HarmonyOS 概述之应用开发基础知识
HarmonyOS 的应用软件包以 APP Pack(Application Package)形式发布,它是由一个或多个 HAP(HarmonyOS Ability Package)以及描述每个 HAP 属性的 pack.info 组成。HAP 是 Ability 的部署包,HarmonyOS 应用代码围绕 Ability 组件展开。一个 HAP 是由代码、资源、第三方库及应用配置文件组成的模块包,可分为 entry 和 feature 两种模块类型.
316 0
|
编解码 JavaScript 小程序
HaaS UI小程序解决方案基础教学之一: 快速开始
本文介绍如何快速创建一个HaaS UI应用, 并对基本环境和应用结构进行简单的说明.
851 15
HaaS UI小程序解决方案基础教学之一: 快速开始
|
传感器 AliOS-Things 物联网
HaaS EDU K1场景式应用案例上手
基于HaaS EDU K1 硬件本体,在无须外接任何外设的情况下,官方提供了10个精心打造的场景式案例。
693 15
HaaS EDU K1场景式应用案例上手
|
存储 开发框架 达摩院
HaaS UI小程序解决方案基础教学|阿里云产品内容精选(三十五)
本文内容取自HaaS技术圈。HaaS(Hardware as a Service)物联网设备云端一体开发框架,整合阿里云、达摩院、平头哥技术,基于数亿物联网设备接入经验,提供积木式硬件开发能力,实现低代码快速开发,帮助中小开发者聚焦业务,实现设备安全上云,加速设备创新迭代。
|
运维 小程序 前端开发
|
JavaScript IDE 前端开发
HaaS EDU K1开发实践|阿里云产品内容精选(四十七)
HaaS(Hardware as a Service)物联网设备云端一体开发框架,整合阿里云、达摩院、平头哥技术,基于数亿物联网设备接入经验,提供积木式硬件开发能力,实现低代码快速开发,帮助中小开发者聚焦业务,实现设备安全上云,加速设备创新迭代。