上次已经给大家讲了如何搭建中间件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 中介绍,大家可点击查阅。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !