一文读懂机智云物联网APP开发
创始人
2024-03-19 23:46:52
0
本教程可用于C2 DevKit开发板套件全功能展示用于对shineblink C2 DevKit开发套件全面学习使用,shineblink&及机智云技术交流群(234976524)。开发板相关的进阶教程及DIY应用将在后续持续更新。

        教程主要包含以下内容:         1.LED1(黄灯开关)开关控制         2.LED2(绿灯开关)开关控制         3.人体检测(有人1,无人0)         4.按键检测(BTN1控制黄灯开关,BTN2控制绿灯开关。)         5. LED_PWM(红灯亮度)调光控制(蜂鸣器,3610电机, LED_PWM三个功能需要切换跳冒,控制一个功能的时候另外2个现象会随之改变,控制的时候要切换D0跳冒到对应的接口才有效果)         6.蜂鸣器开关(蜂鸣器,3610电机, LED_PWM三个功能需要切换跳冒,控制一个功能的时候另外2个现象会随之改变,控制的时候要切换D0跳冒到对应的接口才有效果)         7.3610电机调速蜂(鸣器,3610电机, LED_PWM三个功能需要切换跳冒,控制一个功能的时候另外2个现象会随之改变,控制的时候要切换D0跳冒到对应的接口才有效果)         8.继电器开关         9.OLED屏幕(为了展示,此处仅展示部分显示效果)         10.温湿度采集         11.可调电阻电压显示         12.光敏电阻电压显示(开发者可以转换成光照强度)


 

        一、云端部署         1.进入机智云开发者中心:机智云 开发者中心,没有账号的可以申请注册账号。 2.创建产品 注册账号之后点击左上角创建

根据自己需求选择对应的分类

输入产品名称和选择通讯方式后点击创建,新建一个产品。 3.数据点导入(数据点模板可在附件进行下载ShineBlink.xlsx) 创建产品后在产品的产品信息页面里,在标准数据点里面点击导入,选择ShineBlink.xlsx文件。

修改显示名称,为本项目需要用到的数据点进行命名,方便后续的区分。例如黄灯,如图操作之后确定即可更改。


 

修改完所有参数过后如图所示(如果不想自己修改,那么在标准数据点里面点击导入附件中的ShineBlink_c2_data.xlsx)

3.APP快速生成 回到开发者中心首页,点击右上角创建,选择移动应用,输入应用包名和应用名称后,根据自己需求选择关联或者不关联用户之后选择确认,创建一个移动应用。

在用户关联里面选择我们创建好数据点的产品

关联我们之前创建好数据点的shineblink产品(其他自定义更改可参考APP开发的相关文档https://devdocs.gizwits.com/zh-cn/AppDev/APP/AddApp/CreatApp.html)。

APP页面编辑,回到我们创建数据点的产品,点击控制页面,配置智能场景,可用于定时,延时等智能化规则操作。

进入控制页面,选择通用模板,在功能里面勾选我们用到的数据点,如果勾选全部数据点,会导致APP多出无用的数据点,在功能里面对我们的显示进行排序和大小图标调整。配置后记得需要保存。

构建应用,进入应用后点击顶部有构建应用,等待构建完成后,扫描二维码即可下载APP。

APP部分页面如图所示

到此云端部署完成。

二、程序开发 1.基础参数配置 将开发板连接至电脑,或者电脑创建main.lua文件,选用自己熟悉的编辑器打开main.lua(比如notapad++)。

添加机智云参数初始化程序。 代码如下(尽量别再网页复制代码,有时候编码不一致会导致程序不通过): --机智云平台为每个产品类别分配的唯一PK和PS,一定要改成您自己的PK和PS PK = "bf4e8824edbb4ada934c6ca4c8d30eb1" PS = "f32f10d34fcd4a4784a8de13dc2ee01b" --初始化4G模块 LIB_Giz4GConfig(PK,PS,6000,0,"UART0","D5","HIGH","D6","HIGH")

2.添加继电器开关程序,根据电路图可知,继电器为高电平使能。 代码如下: --初始化继电器GPIO LIB_GpioOutputConfig("D4","STANDARD") --默认继电器为关闭状态 LIB_GpioWrite("D4",0)

        --查询机智云是否下发了写"Sw3"开关量数据点的动作         flag,recv_data = LIB_RecvFromGizCloud("Sw3")         if flag == 1 then                 if recv_data == 1 then -- 云下发了1                         LIB_GpioWrite("D4",1)--继电器打开                 else -- 云下发了0                         LIB_GpioWrite("D4",0)--继电器关闭                 end         end

3.人体感应,根据电路图可知,红外采用数字探头NS312,当探头感应到人体时输出高电平2S,否则输出低电平2s,该输出端口接到开发板的D7引脚。 代码如下: --人体感应初始化 LIB_GpioInputConfig("D7","NOPULL")

        --读取人体感应输入引脚的电平值     Alarm = LIB_GpioRead("D7")     --根据传感器状态上报云端     if Alarm == 1 then         --上传云端感应到人体         LIB_SendToGizCloud("In1", Alarm)     elseif Alarm == 0 then         --上传云端未感应到人体         LIB_SendToGizCloud("In1", Alarm) End

4.温湿度采集,OLED显示,根据开发板电路图可知温湿度传感器SHT30在开发板的接口为IIC0(SCL0,SDA0),Oled屏幕在开发板的接口为IIC1(SCL1,SDA1) 代码如下: --设置sht3x传感器占用SCL0和SDA0引脚,并启动传感器以每秒出10个数据的频率工作,repeatability="HIGH"时精度最高 LIB_Sht3xConfig("IIC0","10","HIGH") --设置0.96寸oled模块占用SCL1和SDA1引脚 LIB_0_96_OledConfig("IIC1")         --查询sht3x传感器是否出数     sht3x_flag,sht3x_temp,sht3x_humi = LIB_Sht3xGetResult()     --如果传感器有新的温湿度数据产生     if sht3x_flag == 1 then         --在oled的第一行和第二行分别显示温度(摄氏度)和湿度(百分比)         LIB_0_96_OledPuts("1","1",string.format("temprature: %.2f", sht3x_temp))         LIB_0_96_OledPuts("2","1",string.format("humidity: %.2f", sht3x_humi))                 --向机智云发送温度和湿度数据         LIB_SendToGizCloud("Rf3", sht3x_temp)         LIB_SendToGizCloud("Rf4", sht3x_humi)     end

5.按键;黄灯,绿灯开关控制,本教程将展示APP控制黄灯,绿灯,按键控制黄灯,绿灯,并同步状态。根据电路图可知,按键按下低电平,LED低电平点亮。 代码如下: --初始化D8引脚,黄灯 LIB_GpioOutputConfig("D8","STANDARD") --初始化D9引脚,绿灯 LIB_GpioOutputConfig("D9","STANDARD") --设置按键"BTN1"(占用D10口)以低电平有效的方式检测按键动作 LIB_ButtonConfig("BTN1","D10","L") --设置按键"BTN1"(占用D11口)以低电平有效的方式检测按键动作 LIB_ButtonConfig("BTN2","D11","L") led1_value = 0        --黄灯状态 led2_value = 0        --绿灯状态

        --查询机智云是否下发了写"Sw1"开关量数据点的动作         flag,recv_data = LIB_RecvFromGizCloud("Sw1")                 if recv_data == 1 then -- 云下发了1                                 led1_value=1                 else -- 云下发了0                         led1_value=0                 end         --查询机智云是否下发了写"Sw2"开关量数据点的动作         flag,recv_data = LIB_RecvFromGizCloud("Sw2")                 if recv_data == 1 then -- 云下发了1                         led2_value=1                 else -- 云下发了0                         led2_value=0                 end                 --轮询按键事件     key_value = LIB_ButtonQuery("BTN1")     --如果按键1短按过,切换LED1状态     if key_value == 1 then                 if led1_value ==1 then                         led1_value=0                         LIB_SendToGizCloud("Sw1", led1_value)--同步状态                 else                         led1_value=1                         LIB_SendToGizCloud("Sw1", led1_value)--同步状态                 end     end     key_value = LIB_ButtonQuery("BTN2")     --如果按键2短按过,切换LED2状态     if key_value == 1 then         if led2_value ==1 then                         led2_value=0                         LIB_SendToGizCloud("Sw2", led2_value)--同步状态                 else                         led2_value=1                         LIB_SendToGizCloud("Sw2", led2_value)--同步状态                 end     end         if led1_value==1 then                 LIB_GpioWrite("D8",0)--黄灯打开         else                 LIB_GpioWrite("D8",1)--黄灯关闭         end         if led2_value==1 then                 LIB_GpioWrite("D9",0)--绿灯打开         else                 LIB_GpioWrite("D9",1)--绿灯关闭         end

6. 可调电阻电压显示和光敏电阻电压显示。根据手册及电路图可知,模拟旋钮电压采集其工作原理为电阻分压的方式,通过A0端口采集可变电阻的电压。光敏感应的原理为当光照越强,LS06的电阻越小,实际上仍然是电阻分压的原理,采用A1端口采集电压。 OLED显示代码及上传云端代码如下: --配置A0-A3这四个通道同时开始工作,当每个通道采集满50个点时缓存满,每个点的采集时间间隔为10ms LIB_ADConfig(50,10000) AD0=0.0 AD1=0.0

    A0_full_flag, A0_tab = LIB_ADCheckBufFull("A0")     --每当A0通道的缓存满以后,计算缓存内的50个元素的平均值,并换算成电压值     if A0_full_flag == 1 then         SUM = 0         for i = 1, #A0_tab do --此处#A0_tab的值是50,表示A0_tab表内的元素个数             SUM = SUM + A0_tab         end         AVER = SUM / #A0_tab         AD0=AVER*3.6/4096.0         --将A0通道的AD值转换成实际电压显示出来,注意这里是保留小数点后一位         LIB_0_96_OledPuts("3","1",string.format("AD0:%.1f", AD0))                 LIB_SendToGizCloud("Rf1", AD0)     end         --每当A1通道的缓存满以后,计算缓存内的50个元素的平均值,并换算成电压值     A1_full_flag, A1_tab = LIB_ADCheckBufFull("A1")     if A1_full_flag == 1 then         SUM = 0         for i = 1, #A1_tab do --此处#A1_tab的值是50,表示A0_tab表内的元素个数             SUM = SUM + A1_tab         end         AVER = SUM / #A1_tab         AD1=AVER*3.6/4096.0         --将A1通道的AD值转换成实际电压显示出来,注意这里是保留小数点后一位         LIB_0_96_OledPuts("4","1",string.format("AD1:%.1f", AD1))                 LIB_SendToGizCloud("Rf2", AD1) end 7.蜂鸣器,此教程效果需要将D0跳冒接到最左侧的BUZ上才能实现效果。此无源蜂鸣器工作电压为2~5V,其工作频率为2700HZ,高电平使能。根据其参数,需将PWM周期配置为1/2700=370us。高电平的占空比将决定其音量大小,此次实验为开关动作,音量固定。。 实现代码如下: --配置D0口为PWM功能,参数370表示PWM的周期为370us,参数1表示高电平有效 LIB_PwmConfig1(370,1) --更新D0口的PWM输出占空比为0 LIB_PwmUpdate1(0) cnt = 0 --查询机智云是否下发了写"Sw4"开关量数据点的动作         flag,recv_data = LIB_RecvFromGizCloud("Sw4")         if flag == 1 then                 if recv_data == 1 then -- 云下发了1                         cnt = 185                         --蜂鸣器打开                 else -- 云下发了0                         cnt = 0                         --蜂鸣器关闭                 end                 LIB_PwmUpdate1(cnt)         end 8.红灯亮度调节,红灯亮度调节主要用到D0口PWM功能,效果演示需要将D0跳冒插到中间的LED上,此实验演示LED的100个不同亮度。 代码如下: --查询机智云是否下发了写"Ws2"开关量数据点的动作         flag,recv_data = LIB_RecvFromGizCloud("Ws2")         if flag == 1 then                 if Ws2==0 then                         cnt=370                 else                         cnt =300 - Ws2 *3                 end                 LIB_PwmUpdate1(cnt)         end 9. 3610电机调速,主要用到D0口PWM功能,效果演示需要将D0跳冒插到中间的MOT上,此实验演示电机的100个不同速度。 代码如下:         --查询机智云是否下发了写"Ws2"开关量数据点的动作         flag,recv_data = LIB_RecvFromGizCloud("Ws3")         if flag == 1 then                 if Ws2==0 then                         cnt=0                 else                         cnt = Ws2 *3                 end                 --红灯亮度调节                 LIB_PwmUpdate1(cnt)         end        

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...