uData 框架设计思想是基于传统 sensorhub 概念基础之上的,结合IoT的业务场景和 AliOS Things 物联网操作系统的特点设计而成的一个面对 IoT 的感知设备处理框架。为了能更好的提供每个开发者极简开发,uData 已将驱动相关的 OS 调用,比如中断注册接口,设备硬件配置接口等都抽象到了sensor hal 实现。每一个设备驱动程序,只需一个 .c文件中,通过 BUS 总线如 I2C,对设备进行读写和配置操作,就能实现全部的功能,同时也减少了开发者调试工作时间。可以方便地开发传感器驱动程序。
sensor 组件是 udata 组件的 Sensor Driver 部分,可单独提供 sensor hal 接口给外部模块使用,而无需使用 udata 组件全部功能。
Apache license v2.0
系统中相关配置已有默认值,如需修改配置,统一在yaml中**def_config**节点修改,具体如下:
Sensor 的设备驱动程序默认不编译, 可在yaml中添加驱动对应的宏进行配置,如添加温度传感器驱动 SI7006
sensor_hal_init() 传感器器驱动初始化
sensor_hal_open() 打开传感器,即让指定的传感器进入工作状态
sensor_hal_read() 读取传感器数据
sensor_hal_write() 向传感器发送数据,暂时未使用
sensor_hal_ioctl() 对传感器的参数进行设置
sensor_hal_close() 关闭指定的传感器
基于 Sensor Hal 接口获取传感器数据,并在本地进行打印,参考 example/sensor_local_demo.c
注意: sensor 组件需配合传感器进行使用,haaseduk1 开发板有自带传感器,本示例基于 haaseduk1 自带的温湿度传感器 SI7006 进行演示。haas100 用户可自行外接传感器参考本示例进行验证。
组件使用示例相关的代码下载、编译和固件烧录均依赖AliOS Things配套的开发工具,所以首先需要参考《AliOS Things集成开发环境使用说明之搭建开发环境》,下载安装。 待开发环境搭建完成后,可以按照以下步骤进行示例的测试。
打开已有工程
如果用于测试的案例工程已存在,可参考《AliOS Things集成开发环境使用说明之打开工程》打开已有工程。
创建新的工程
组件的示例代码可以通过编译链接到AliOS Things的任意案例(solution)来运行,这里选择helloworld_demo案例。helloworld_demo案例相关的源代码下载可参考《AliOS Things集成开发环境使用说明之创建工程》,硬件类型选择“haas edu k1”, 解决方案选择“ helloworld 简单示例”。
案例下载完成后,需要在helloworld_demo组件的package.yaml中添加对组件的依赖:
在执行编译步骤时,会自动下载 sensor 组件及依赖的相关组件,sensor组件源码被下载到了./components/sensor路径中。
solutions/helloworld_demo/package.yaml 配置信息 def_config 中添加要运行的 example 示例代码和 Sensor 设备驱动的宏。例如温湿度传感器 si7006 数据并在本地进行打印:
在示例代码已经添加至组件的配置文件,并且helloworld_demo已添加了对该组件的依赖后,就可以编译helloworld_demo案例来生成固件了,具体编译方法可参考《AliOS Things集成开发环境使用说明之编译固件》。
helloworld_demo案例的固件生成后,可参考《AliOS Things集成开发环境使用说明之烧录固件》来烧录固件。
固件烧录完成后,可以通过串口查看示例的运行结果,打开串口的具体方法可参考《AliOS Things集成开发环境使用说明之查看日志》。
当串口终端打开成功后,可在串口中输入help来查看已添加的测试命令。
CLI命令行输入:
关键日志
CLI日志:
基于 Sensor Hal 接口获取传感器数据,并通过 linkkit 上传到云端,参考 example/sensor_cloud_demo.c
注意: sensor 组件需配合传感器进行使用,haaseduk1 开发板有自带传感器,本示例基于 haaseduk1 自带的温湿度传感器 SI7006 进行演示。haas100 用户可自行外接传感器参考本示例进行验证。
以运行 linksdk_demo 为例,具体步骤如下:
打开已有工程 如果用于测试的案例工程已存在,可参考《AliOS Things集成开发环境使用说明之打开工程》打开已有工程。
创建新的工程
组件的示例代码可以通过编译链接到AliOS Things的任意案例(solution)来运行,这里选择 linkkit_demo 案例。 linkkit_demo 案例相关的源代码下载可参考《AliOS Things集成开发环境使用说明之创建工程》,硬件类型选择“haas edu k1”, 解决方案选择“ WI-FI设备连接阿里云示例”。
2.1 solutions/helloworld_demo/package.yaml 配置信息 def_config 中添加要运行的 example 示例代码和 Sensor 设备驱动的宏。例如温湿度传感器 si7006 数据并通过 linkkit 上传到云端:
2.2 solutions/linksdk_demo/main.c 添加 sensor_cloud_test_init() 函数调用
2.3 solutions/linksdk_demo/data_model_basic_demo.c 的 demo_main() 函数中
- 替换你自己在阿里云物联网平台上创建设备的三元组信息,下面三元组仅本示例测试所用
solutions/linksdk_demo/package.yaml 依赖信息 depends 末尾添加 sensor 组件
在示例代码已经添加至组件的配置文件,并且helloworld_demo已添加了对该组件的依赖后,就可以编译 linkkit_demo 案例来生成固件了,具体编译方法可参考《AliOS Things集成开发环境使用说明之编译固件》。
linkkit_demo 案例的固件生成后,可参考《AliOS Things集成开发环境使用说明之烧录固件》来烧录固件。
CLI命令行输入:打开连网成功后会自动保存AP信息的功能
CLI命令行输入:netmgr -t wifi -c {ssid} {password} 连接名为ssid的路由器AP,其中 {ssid} {password}替换为自己的路由器配网信息
设备在联网成功后会自动读取 Sensor 数据并上报到云端,同时可以看到设备在阿里云物联网平台处于在线状态,在日志服务中能查看设备上传到云端的日志信息
CLI日志:
sensor设备驱动 components/sensor/drv/drv_####_####_####.c 中 i2c_dev_t 结构体成员 port 要与 sensor_i2c_init() 初始化中的 port 相同。
Q1: 怎么自己添加特定型号的传感器驱动程序?
1. 参考 components/sensor/drv/drv_####_####_####.c 已集成的传感器设备驱动编写驱动文件;
2. components/sensor/drv/drv_init.c 中添加驱动程序的宏开关, 如
3. components/sensor/package.yaml 中添加参与编译的源代码文件
更具体的操作可以参考下面链接: