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
相关文章
|
前端开发 JavaScript 网络协议
深入理解Python Web开发中的前后端分离与WebSocket实时通信技术
【7月更文挑战第18天】前后端分离采用Flask/Django框架,前端JavaScript框架如Vue.js与后端通过AJAX/Fetch通信。WebSocket提供实时双向通信,Python可借助websockets库或Flask-SocketIO实现。最佳实践包括定义清晰的接口规范,确保安全性(HTTPS,认证授权),优化性能,和健壮的错误处理。结合两者,打造高效实时应用。
388 1
|
算法 C语言
如何用C语言轻松判断回文数?
如何用C语言轻松判断回文数?
|
SQL 前端开发 安全
详细介绍前后端分离必备的接口规范,包括命名规范、参数规范、错误处理规范等
详细介绍前后端分离必备的接口规范,包括命名规范、参数规范、错误处理规范等
3768 1
|
NoSQL 数据库
Google Earth Engine(GEE)——美国大陆(CONUS)30米土壤属性概率图数据库
Google Earth Engine(GEE)——美国大陆(CONUS)30米土壤属性概率图数据库
296 0
|
消息中间件 Linux
Linux IPC(进程间通信)管理:深入解析ipcs和ipcrm命令的用法与示例
在Linux操作系统中,进程间通信(IPC)是实现进程之间数据传递和同步的关键机制。Linux提供了多种IPC方式,如消息队列、信号量和共享内存等。为了优化系统性能与稳定性,及时管理和清理IPC资源非常重要。本文将深入介绍ipcs和ipcrm命令的使用方法,并给出丰富的示例,以帮助读者更好地理解IPC资源管理的实践技巧。
1631 1
|
人工智能 监控 数据可视化
智慧工地全套源代码 智慧工地信息化管理平台源码(PC端+移动端+可视化数据大屏端)
v智慧工地全套源代码 智慧工地信息化管理平台源码(PC端+移动端+可视化数据大屏端)
1086 2
|
机器学习/深度学习 算法 TensorFlow
【深度学习】基于卷积神经网络(tensorflow)的人脸识别项目(一)
【深度学习】基于卷积神经网络(tensorflow)的人脸识别项目(一)
566 0
【深度学习】基于卷积神经网络(tensorflow)的人脸识别项目(一)
|
XML PHP 数据安全/隐私保护
phpexcel中文教程-设置表格字体颜色背景样式、数据格式、对齐方式、添加图片、批注、文字块、合并拆分单元格、单元格密码保护
转:http://www.cnblogs.com/huangcong/p/3687665.html   首先到phpexcel官网上下载最新的phpexcel类,下周解压缩一个classes文件夹,里面包含了PHPExcel.
2194 0
|
vr&ar 计算机视觉
REALY头部重建榜单冠军模型HRN解读【OpenVI—论文解读系列】
高保真 3D 头部重建在许多场景中都有广泛的应用,例如 AR/VR、医疗、电影制作等。尽管大量的工作已经使用 LightStage 等专业硬件实现了出色的重建效果,从单一或稀疏视角的单目图像估计高精细的面部模型仍然是一个具有挑战性的任务。 本文中,我们将介绍CVPR2023最新的头部重建论文,该工作在单图头部重建榜单REALY上取得正脸、侧脸双榜第一,并在其他多个数据集中取得了SOTA的效果。
938 6
|
缓存 网络协议 NoSQL
深入理解Linux网络——TCP连接建立过程(三次握手源码详解)-3
五、异常TCP建立情况 1)connect系统调用耗时失控 客户端在发起connect系统调用的的时候,主要工作就是端口选择。在选择的过程中有一个大循环