如何移植爱星云的源码

描述

上次已经给大家讲了如何搭建中间件SDK(Ai-WB2-12F使用安信可中间件接入爱星云,远程点个灯——第一篇)。经过上次的帖子,小伙伴们想必已经完成一个新项目的添加,并使用WB2编译成功,今天讲如何移植爱星云的源码。  

在正式开始之前,先介绍一下设备上云的流程。

源码

VScode 启动

一、连接Wi-Fi
第一步是设备进入配网,在配网之前需要能够正式连接到网络。   先把项目中的“h1”和“h2”两个文件夹删除。

新建文件夹为“wifista”(文件夹名字根据自己喜好定义就行)

在wifista 新建连接Wi-Fi的.c 和.h 文件,名字自定义


连接Wi-Fi 主要写三个函数:
 

Wi-Fi 初始化函数

Wi-Fi 连接函数

Wi-Fi 断开函数


Wi-Fi 初始化函数:staWiFiInit()

源码

Wi-Fi 连接函数函数:staWiFiConnect(char* ssid,char* password)

源码

Wi-Fi 断开函数:staWiFiDisconnect()

源码

之后在Main.c 中调用之后就能实现连接Wi-Fi。

二、LED控制

RGB灯是开发板上唯一能过作为指示的器件,所以使用RGB作为网络指示灯是非常好的选择。设置以下状态:

网络未连接或者断开:绿灯快闪

网络成功连接或已连接:隔2s 闪烁一次

正在连接WiFi:1s 间隔慢闪

2.1创建源码文件
直接创建名为"LED" 的文件夹,然后在里面创建.c和.h 文件名字自定,这里用的是 led_dev.c 和led_dev.h。并且写几行基础的代码。   led_dev.c

源码

led_dev.h

源码

2.2编写功能函数
后面也会使用这个库写受控灯的函数,暂且写网络灯的函数吧,一共有四个:

网络灯初始化函数,Ai-WB2-12F 的蓝色灯在IO3,并且创建闪烁任务

快闪状态 间隔100ms

隔2s 闪烁两次状态

500ms 间隔慢闪状态


网络灯初始化函数  devLedNetWorkdInit(void)

源码

这里其实只有每种状态指示延时时间上的区别而已,所以只需要在任务当中改变延时时间就行了。
网络灯状态处理任务,led_dev_run_task(void* arg):

源码

状态更新函数 devLedNetWorkdChangeState():

源码

2.3 调用状态更新函数
状态更新函数只需要在Wi-Fi 回调中的各个事件中调用即可,效果如下:

源码

三、按键读取
Ai-WB2-12F 开发板要进入配网,需要有个控制方式,开发板上的IO8按键正好可以使用,读取IO8按键,高电平长按2s 后进入配网。


按键初始化函数configButtomInit():

源码

长按识别任务:

源码

其他进入配网的方式也可以自己去实现,只需要能够进入配网状态就行。

四、爱星云配网移植


按照惯例,先新建一个文件夹用来存放爱星云的移植文档,本贴使用“aiio_cloud”作为文件名,可以根据自己喜好创建,之后关于爱星云的源码都会放在该文件夹中。
 

在该文件夹中新建一个.h 用来声明爱星云的配置,比如产品信息,三元组等,这里命名为“cloud_config.h"。


爱星云的配网有两种:BLE 和AP配网,本贴主要介绍BLE 配网,BLE 配网主要有两个函数:

BLE 配网启动函数

BLE 配网停止函数

BLE 配网启动函数bleConfigStart()

源码

BLE 配网回调函数:

源码

在回调函数当中,获取到了SSID、PASSWORD和MQTT 服务器地址以及其他的连接参数,打印出来之后,直接调用Wi-Fi连接,就能实现配网。

在Wi-Fi连接成功之后,停止调用配网函数就行。

说明:

此时因为没有连接爱星云,所以使用App 配网时会出现添加失败的提示,但是实际上Wi-Fi是连接成功的,只是没有连接爱星云而已。

五、其他内容

剩下的就是爱星云真正接入的部分,因为需要教大家比较多的东西,长话短说,直接做了一份基本连接的源码,大家根据基本连接的源码快速实现爱星云的连接。剩下的内容直接在源码README 中介绍,大家可点击查阅。

审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分