AliOS Things 技术分享(二)|学习笔记

简介: 快速学习 AliOS Things 技术分享(二)

开发者学堂课程【阿里云 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 连接,开发板通过路由器连到网络。

image.png

4、基于模板创建工程

基于 vscode 模板创建 AliOS 工程,快速编译。使用 ymodem 方式下载程序,设备连云成功。

image.png

5、编写业务代码

image.png

共五部分,第一个增加 GPIO 的头文件,增加 GPIO 的功能,用于控制 LED 灯开关。

第二个更新设备信息,阿里云平台资源组更新为刚建立的资源组。

第三个用于定义全局变量,用于保存 GPIO 信息。

第四个在接收云端属性设置的回调函数里,解析云端数据,配置 LED灯开光,on 或 off。

第五个在 linkkit 的 main 函数里,初始化 GPIO

6、控制灯

控制灯有在线调试的平台,在阿里云平台的工具上,可对格式直接发送指令,直接发送到设备中。

image.png

7、视频演示

通过 AliOS Things 快速连接阿里云 IoT 平台

阿里云物联网平台

image.png

在设备管理、产品,创建新产品。

image.png

产品名 cio_demo,选择标准路灯照明品类,WiFi 连网,标准的数据格式,创建产品

image.png

cio_demo 产品情况

功能定义里有很多标准属性

image.png

设备管理,添加设备。设备名 cio_test_device, 备注名字  living room light,点击确认。

image.png

设备添加成功,设备是未激活状态,因为没有添加真实的设备。

image.png

可看到 DeviceName、DeviceSecret

image.png

到 AliOS Things studio,通过加号创建一个工程,选择 linkkit demo 作为模板创建。选择一个板子,现在使用 mk3072开发板。起名字,生成整个工程。左边是大目录,主要在 linkkit_example_solo.c 目录里,修改直连设备在此文件里的代码。

image.png

将以下信息复制粘贴到此文件

image.png

添加响应变量,记录 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

image.png

打开串口,串口工具,开发板。开发板进入下载模式,通过串口命令下载,选择 ymodem 模式,选择编译生成的 binary。

选择以下,回车下载

Directory:/home/johnny/aosApp/myapp/out/myapp@mk3072/binary

串口波特率115200

使用自己的 AliOS Things studio id 开发工具开发阿里 OS 应用非常简单,有很多 demo 模板可供创建,使用统一的接口开发代码非常少。

重启开发板,log 串口连接上网,因为使用 WiFi 模组提前到配网信息创建。

控制台设备上,设备处于在线状态。

image.png

设备的在线调试页面,找到 Light Status 属性,通过设置的方法向下发一个脚本,Light Status 设置为1,发送指令。

image.png

设成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 接口,可看到接口的原型、参数、入参、入参描述、出参、返回值,文档非常详细。

image.png

相关实践学习
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
机器学习/深度学习 算法 计算机视觉
使用sklearn进行特征选择
背景 一个典型的机器学习任务,是通过样本的特征来预测样本所对应的值。如果样本的特征少,我们会考虑增加特征。而现实中的情况往往是特征太多了,需要减少一些特征。
阿里巴巴微服务核心手册:Spring Boot+Spring cloud+Dubbo
微服务作为一项在云中部署应用和服务的新技术已成为当下最新的热门话题。但大部分围绕微服务的争论都集中在容器或其他技术是否能很好的实施微服务,而红帽说API应该是重点。
|
存储 弹性计算 固态存储
阿里云服务器实例规格是什么?实例规格应该怎么选?
在我们选购阿里云服务器的时候,同配置的云服务器,往往会有多个实例规格可供选择,而且不同实例规格的价格差别很大,例如一款2核4G配置的云服务器,在阿里云目前的活动中就有经济型e、通用算力型u1、计算型c7、计算型c8y等实例可选,价格方面,经济型e实例2核4G1M配置的活动价格目前只要599.93元/1年,而计算型c7实例要1860.00元/1年。可见不同实例规格之间的价格差别还是很大的,那么阿里云服务器实例规格是什么?作为初次购买阿里云服务器的用户在面对众多实例规格时应该怎么选呢?
阿里云服务器实例规格是什么?实例规格应该怎么选?
|
JavaScript Java 测试技术
基于小程序的家政服务管理系统+springboot+vue.js附带文章和源代码设计说明文档ppt
基于小程序的家政服务管理系统+springboot+vue.js附带文章和源代码设计说明文档ppt
410 59
|
存储 API 图形学
Unity精华☀️二、到底是什么原因导致“万向锁”?旋转翻车的终极解析!
Unity精华☀️二、到底是什么原因导致“万向锁”?旋转翻车的终极解析!
|
机器学习/深度学习 数据采集 算法
图像识别中的局限性
【10月更文挑战第1天】
1400 0
|
消息中间件 负载均衡 Java
揭秘Kafka背后的秘密!Kafka 架构设计大曝光:深入剖析Kafka机制,带你一探究竟!
【8月更文挑战第24天】Apache Kafka是一款专为实时数据处理及流传输设计的高效率消息系统。其核心特性包括高吞吐量、低延迟及出色的可扩展性。Kafka采用分布式日志模型,支持数据分区与副本,确保数据可靠性和持久性。系统由Producer(消息生产者)、Consumer(消息消费者)及Broker(消息服务器)组成。Kafka支持消费者组,实现数据并行处理,提升整体性能。通过内置的故障恢复机制,即使部分节点失效,系统仍能保持稳定运行。提供的Java示例代码展示了如何使用Kafka进行消息的生产和消费,并演示了故障转移处理过程。
242 3
|
SQL 算法 关系型数据库
Sharding-Proxy代理Mysql服务
Apache shardingSphere Sharding-proxy落地实战
483 84
|
Java 数据库连接 Apache
java编程语言常用框架有哪些?
Java作为一种广泛使用的编程语言,拥有众多常用框架,这些框架帮助开发者提高开发效率和代码质量。
562 3
|
开发框架 测试技术 Android开发
如何评价Flutter?
【7月更文挑战第11天】
303 1