本教程可用于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快速生成
回到开发者中心首页,点击右上角创建,选择移动应用,输入应用包名和应用名称后,根据自己需求选择关联或者不关联用户之后选择确认,创建一个移动应用。
在用户关联里面选择我们创建好数据点的产品
APP页面编辑,回到我们创建数据点的产品,点击控制页面,配置智能场景,可用于定时,延时等智能化规则操作。
进入控制页面,选择通用模板,在功能里面勾选我们用到的数据点,如果勾选全部数据点,会导致APP多出无用的数据点,在功能里面对我们的显示进行排序和大小图标调整。配置后记得需要保存。
构建应用,进入应用后点击顶部有构建应用,等待构建完成后,扫描二维码即可下载APP。
APP部分页面如图所示
到此云端部署完成。
进入cmd。输入 lua+空格+你的lua文件名 就可以了,记得要加上lua ,不然window就相当于帮你双击了这个文件而已,Lua就帮你执行输出
二、程序开发
1.基础参数配置
将开发板连接至电脑,安卓手机怎么运行lua脚本,或者电脑创建main.lua文件,选用自己熟悉的编辑器打开main.lua(比如notapad++)。
添加机智云参数初始化程序。
代码如下(尽量别再网页复制代码,有时候编码不一致会导致程序不通过):
--机智云平台为每个产品类别分配的唯一PK和PS,一定要改成您自己的PK和PS
PK = &34;
PS = &34;
--初始化4G模块
LIB_Giz4GConfig(PK,PS,6000,0,&34;,&34;,&34;,&34;,&34;)
2.添加继电器开关程序,根据电路图可知,继电器为高电平使能。
代码如下:
--初始化继电器GPIO
LIB_GpioOutputConfig(&34;,&34;)
--默认继电器为关闭状态
LIB_GpioWrite(&34;,0)
--查询机智云是否下发了写&34;开关量数据点的动作
flag,recv_data = LIB_RecvFromGizCloud(&34;)
if flag == 1 then
if recv_data == 1 then -- 云下发了1
LIB_GpioWrite(&34;,1)--继电器打开
else -- 云下发了0
LIB_GpioWrite(&34;,0)--继电器关闭
end
end
代码如下:
--人体感应初始化
LIB_GpioInputConfig(&34;,&34;)
--读取人体感应输入引脚的电平值
Alarm = LIB_GpioRead(&34;)
--根据传感器状态上报云端
if Alarm == 1 then
--上传云端感应到人体
LIB_SendToGizCloud(&34;,Alarm)
elseif Alarm == 0 then
--上传云端未感应到人体
LIB_SendToGizCloud(&34;,Alarm)
End
4.温湿度采集,OLED显示,根据开发板电路图可知温湿度传感器SHT30在开发板的接口为IIC0(SCL0,SDA0),Oled屏幕在开发板的接口为IIC1(SCL1,SDA1)
代码如下:
--设置sht3x传感器占用SCL0和SDA0引脚,并启动传感器以每秒出10个数据的频率工作,repeatability=&34;时精度最高
LIB_Sht3xConfig(&34;,&34;,&34;)
--设置0.96寸oled模块占用SCL1和SDA1引脚
LIB_0_96_OledConfig(&34;)
--查询sht3x传感器是否出数
sht3x_flag,sht3x_temp,sht3x_humi = LIB_Sht3xGetResult()
--如果传感器有新的温湿度数据产生
if sht3x_flag == 1 then
--在oled的第一行和第二行分别显示温度(摄氏度)和湿度(百分比)
LIB_0_96_OledPuts(&34;,&34;,string.format(&34;,sht3x_temp))
LIB_0_96_OledPuts(&34;,&34;,string.format(&34;,sht3x_humi))
--向机智云发送温度和湿度数据
LIB_SendToGizCloud(&34;,sht3x_temp)
LIB_SendToGizCloud(&34;,sht3x_humi)
end
5.按键;黄灯,绿灯开关控制,本教程将展示APP控制黄灯,绿灯,按键控制黄灯,绿灯,并同步状态。根据电路图可知,按键按下低电平,LED低电平点亮。
代码如下:
--初始化D8引脚,黄灯
LIB_GpioOutputConfig(&34;,&34;)
--初始化D9引脚,绿灯
LIB_GpioOutputConfig(&34;,&34;)
--设置按键&34;(占用D10口)以低电平有效的方式检测按键动作
LIB_ButtonConfig(&34;,&34;,&34;)
--设置按键&34;(占用D11口)以低电平有效的方式检测按键动作
LIB_ButtonConfig(&34;,&34;,&34;)
led1_value = 0 --黄灯状态
led2_value = 0 --绿灯状态
--查询机智云是否下发了写&34;开关量数据点的动作
flag,recv_data = LIB_RecvFromGizCloud(&34;)
if recv_data == 1 then -- 云下发了1
led1_value=1
else -- 云下发了0
led1_value=0
end
--查询机智云是否下发了写&34;开关量数据点的动作
flag,recv_data = LIB_RecvFromGizCloud(&34;)
if recv_data == 1 then -- 云下发了1
led2_value=1
1.打开 lua文件使用一般的文本编辑工具就可以打开和编辑了,linux下使用自带的vim编辑器,windows下使用自带的记事本就可以。2.使用 要使用lua文件,必须要安装一个lua的解析器。因为lua语言是种脚本语言,类似于javascript,运。
else -- 云下发了0
led2_value=0
end
--轮询按键事件
1、首先打开电脑,点击打开Linux自带的vim编辑器。2、其次点击打开lua文件,使用文本编辑。3、最后编辑小火箭可以直接打开ss://开头的节点链接,自动导入节点即可。
key_value = LIB_ButtonQuery(&34;)
--如果按键1短按过,切换LED1状态
if key_value == 1 then
if led1_value ==1 then
led1_value=0
LIB_SendToGizCloud(&34;,led1_value)--同步状态
else
led1_value=1
LIB_SendToGizCloud(&34;,led1_value)--同步状态
end
end
key_value = LIB_ButtonQuery(&34;)
--如果按键2短按过,切换LED2状态
01 lua文件是编写lua脚本语言的文件,lua文件要打开的话要先看是什么结尾的,如果是.lua或.wlua的话就可以直接打开,使用记事本查看。1、如果是查看的话,可以安装一些第三方的记事本软件,然后用他们打开lua文件进行查看。
if key_value == 1 then
if led2_value ==1 then
led2_value=0
LIB_SendToGizCloud(&34;,led2_value)--同步状态
else
led2_value=1
LIB_SendToGizCloud(&34;,led2_value)--同步状态
end
end
if led1_value==1 then
LIB_GpioWrite(&34;,0)--黄灯打开
else
LIB_GpioWrite(&34;,1)--黄灯关闭
end
if led2_value==1 then
LIB_GpioWrite(&34;,0)--绿灯打开
else
LIB_GpioWrite(&34;,1)--绿灯关闭
end
6. 可调电阻电压显示和光敏电阻电压显示。根据手册及电路图可知,模拟旋钮电压采集其工作原理为电阻分压的方式,通过A0端口采集可变电阻的电压。光敏感应的原理为当光照越强,LS06的电阻越小,实际上仍然是电阻分压的原理,采用A1端口采集电压。
OLED显示代码及上传云端代码如下:
LIB_ADConfig(50,10000)
AD0=0.0
AD1=0.0
A0_full_flag,A0_tab = LIB_ADCheckBufFull(&34;)
--每当A0通道的缓存满以后,计算缓存内的50个元素的平均值,并换算成电压值
if A0_full_flag == 1 then
SUM = 0
for i = 1,A0_tab的值是50,表示A0_tab表内的元素个数
SUM = SUM + A0_tab
end
AVER = SUM / #A0_tab
AD0=AVER*3.6/4096.0
--将A0通道的AD值转换成实际电压显示出来,注意这里是保留小数点后一位
LIB_SendToGizCloud(&34;,AD0)
end
--每当A1通道的缓存满以后,计算缓存内的50个元素的平均值,并换算成电压值
A1_full_flag,A1_tab = LIB_ADCheckBufFull(&34;)
if A1_full_flag == 1 then
SUM = 0
for i = 1,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(&34;,&34;,string.format(&34;,AD1))
LIB_SendToGizCloud(&34;,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
--查询机智云是否下发了写&34;开关量数据点的动作
flag,recv_data = LIB_RecvFromGizCloud(&34;)
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个不同亮度。
代码如下:
--查询机智云是否下发了写&34;开关量数据点的动作
flag,recv_data = LIB_RecvFromGizCloud(&34;)
if flag == 1 then
if Ws2==0 then
cnt=370
else
cnt =300 - Ws2 *3
end
LIB_PwmUpdate1(cnt)
end
代码如下:
--查询机智云是否下发了写&34;开关量数据点的动作
flag,recv_data = LIB_RecvFromGizCloud(&34;)
if flag == 1 then
if Ws2==0 then
cnt=0
else
cnt = Ws2 *3
end
--红灯亮度调节
LIB_PwmUpdate1(cnt)
end