开发者学堂课程【阿里云 AIoT 物联网开发实战:AliOS Things 技术分享】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/328/detail/3698
AliOS Things 技术分享(二)
三、使用 AliOS Things 帮助设备快速上云
1、开发环境搭建
搭建开发环境,AliOS Things 是开源的,直接克隆代码。
根据参考文档搭建开发环境https://help.aliyun.com/document det ail/161042.html
安装 vscode 及 AliOS Studio 插件
安装基于命令行的编译系统、编译工具 aos-cube
配置环境变量可做开发环境的搭建
2、演示 demo 介绍
准备工作:在物联网平台创建一个灯的产品,并新建一个测试设备;准备硬件做测试
创建工程:基于现有 APP 模板 linkkit_demo 创建一个新的工程,基于 linkkit 模板创建一个新工程,内置连接物联网平台的功能。
编写业务代码:编写少量业务代码,灯的设备直接连到阿里云平台
控制灯:通过阿里云调式控制的面板,可下发指令控制 Wi-Fi 智能灯
3、准备工作
物联网平台 https://iot.console.aliyun.com/创建产品和测试设备
准备开发板、PC、Wi-Fi 路由器,开发板通过 USB 线与 PC 连接,开发板通过路由器连到网络。
4、基于模板创建工程
基于 vscode 模板创建 AliOS 工程,快速编译。使用 ymodem 方式下载程序,设备连云成功。
5、编写业务代码
共五部分,第一个增加 GPIO 的头文件,增加 GPIO 的功能,用于控制 LED 灯开关。
第二个更新设备信息,阿里云平台资源组更新为刚建立的资源组。
第三个用于定义全局变量,用于保存 GPIO 信息。
第四个在接收云端属性设置的回调函数里,解析云端数据,配置 LED灯开光,on 或 off。
第五个在 linkkit 的 main 函数里,初始化 GPIO
6、控制灯
控制灯有在线调试的平台,在阿里云平台的工具上,可对格式直接发送指令,直接发送到设备中。
7、视频演示
通过 AliOS Things 快速连接阿里云 IoT 平台
阿里云物联网平台
在设备管理、产品,创建新产品。
产品名 cio_demo,选择标准路灯照明品类,WiFi 连网,标准的数据格式,创建产品
cio_demo 产品情况
功能定义里有很多标准属性
设备管理,添加设备。设备名 cio_test_device, 备注名字 living room light,点击确认。
设备添加成功,设备是未激活状态,因为没有添加真实的设备。
可看到 DeviceName、DeviceSecret
到 AliOS Things studio,通过加号创建一个工程,选择 linkkit demo 作为模板创建。选择一个板子,现在使用 mk3072开发板。起名字,生成整个工程。左边是大目录,主要在 linkkit_example_solo.c 目录里,修改直连设备在此文件里的代码。
将以下信息复制粘贴到此文件
添加响应变量,记录 GPIO 的信息,led_gpio_out
Int linkkit_main(void*paras) 是 linkkit 的 main 入口函数,gpio 进行初始化
#endif
memset(&led_gpio_out, 0,sizeof(gpio_dev_t));
led_gpio_out.port=7;
led_gpio_out.config= OUTPUT_PUSH_PULL;
led_gpio_out.priv =NULL;
hal_gpio_init(&led_gpio_out);
port 为第七个 ping,OUTPUT 模式,调用 gpio_init 初始化
property_set 回调函数
static int user_property_set event handler(const int devid const char *request, const int request_len)
{
int res = 0;
EXAMPLE_TRACE("Property Set
Received,Request:%s",request);
res =IOT_Linkkit_Report(EXAMPLE_MASTER_DEVID,
ITM_MSG_POST_
PROPERTY,
(unsigned char *)request,request_len);
EXAMPLE _TRACE("Post Property Message ID:d"res);
return 0;
cJSON *root =NULL, *LightSwitch =NULL;
root=cJSON_Parse(request);
LightSwitch=cJSON GetObjectItem(root,"LightStatus");
if(LightSwitch->valueint == 0){
EXAMPLE_TRACE("led off");
hal_gpio_output_low(&led_gpio_our);
} else if(LightSwitch->valueint == 1f {
EXAMPLE TRACE("led on");
hal_gpio_output_high(&led_gpio_out);
回调函数里增加收到数据后的回调处理,收到接听的数据,LightStatu
s 属性,根据属性的值设置灯的on或off。
点击编译,有所有 memory 情况,ROM、RAM 情况。大概使用600多 K 的 ROM,97K的 RAM
打开串口,串口工具,开发板。开发板进入下载模式,通过串口命令下载,选择 ymodem 模式,选择编译生成的 binary。
选择以下,回车下载
Directory:/home/johnny/aosApp/myapp/out/myapp@mk3072/binary
串口波特率115200
使用自己的 AliOS Things studio id 开发工具开发阿里 OS 应用非常简单,有很多 demo 模板可供创建,使用统一的接口开发代码非常少。
重启开发板,log 串口连接上网,因为使用 WiFi 模组提前到配网信息创建。
控制台设备上,设备处于在线状态。
设备的在线调试页面,找到 Light Status 属性,通过设置的方法向下发一个脚本,Light Status 设置为1,发送指令。
设成1,灯亮。设为0,灯灭。
四、AliOS Things 开发社区
整个 OS 代码开源,可通过几种方式下载 AliOS 代码
官方网站:
图形化裁剪工具页面下,根据自己的需求,选择需要的组件,定制化下载 OS。体验更小、更灵活的 AliOS Things。
https://aliosthings.iot.aliyun.com/aos/download
Github 里做全量代码下载
https://github.com/alibaba/AliOS-Thing
s/tree/rel 3.1.0
Github 是国外版,下载速度慢。Gitee 做国内的镜像,下载速度快,内容与 Github 相同。
https://gitee.com/alios-things/AliOS-Things
/tree/rel 3.1.0/
文档链接https://help.aliyun.com/product/123206.heml
有100余片的技术文档,字典式输出便于查询。
hal i2c 接口,可看到接口的原型、参数、入参、入参描述、出参、返回值,文档非常详细。