结合 ShineBlink 和 机智云 开发者即使不懂嵌入式物联网开发、云和App开发,也能很快实现一款包含硬件、云和App的物联网智能硬件。
实现一款通过4G Cat1方式接入机智云的设备,用户可以通过App远程控制2个舵机。舵机采用Pwm信号驱动,通过调整PWM的占空比来控制舵机的角度。通过本例可以很容易衍生出其他应用,比如远程控制照明灯亮度、直流电机调速等等。
下图是接线实物图和App控制页面:
名称 | 推荐购买源 | 资料下载 |
---|---|---|
通用版机智云 App | 免费 | 下载地址 |
ShineBlink 万能物联网开发板 | 淘宝搜索”ShineBlink“店铺有售 | shineblink.com |
带机智云GAgent固件的ML302 4G模块 | 淘宝搜索”ShineBlink“店铺有售,购买链接:https://item.taobao.com/item.htm?ft=t&id=657692493882 | gizwits.com |
舵机模块 | 任何可用3.3V PWM信号驱动的舵机模块 | |
黑色底板 | 该底板只是为了省掉接杜邦线,让外观好看一些,不是必需品,开发者如果没有可以用杜邦线来替代。如果仍想获取该底板,有如下两种方式:(1)通过右边提供的PCB工程资料自己打样PCB制作即可(2)通过联系微信号"shine_blink"免费获取空板PCB自己焊接也可(如果还有的话) | 底板PCB工程下载地址 |
xxxxxxxxxx
--配置D0 D1 D2口为PWM功能,周期20ms,高电平为有效极性
LIB_PwmConfig3(20000,1)
--机智云平台为每个产品类别分配的唯一PK和PS,一定要改成您自己的PK和PS
PK = "3f6f7f3f4c854682a7f7b5d587b76c5d"
PS = "f2513e683b72421786609d9ab25bd37a"
--初始化4G模块
LIB_Giz4GConfig(PK,PS,6000,120,"UART0","D5","HIGH","D6","HIGH")
--设置D0 D1 D2这3路PWM高电平脉宽为0.5ms(即舵机位置为0度)
Pwm1 = 500
Pwm2 = 500
Pwm3 = 500 --PWM3未用到
LIB_PwmUpdate3(Pwm1,Pwm2,Pwm3)
--开始大循环
while(GC(1) == true)
do
--查询机智云是否下发了写"Em1"枚举型数据点(舵机1)
flag,recv_data = LIB_RecvFromGizCloud("Em1")
if flag == 1 then
print(string.format("Em1:%d", recv_data))
if recv_data == 0 then
--设置D0口的PWM1高电平脉宽为0.5ms(即舵机1位置为0度)
Pwm1 = 510
LIB_PwmUpdate3(Pwm1,Pwm2,Pwm3)
elseif recv_data == 1 then
--设置D0口的PWM1高电平脉宽为1ms(即舵机1位置为45度)
Pwm1 = 1000
LIB_PwmUpdate3(Pwm1,Pwm2,Pwm3)
elseif recv_data == 2 then
--设置D0口的PWM1高电平脉宽为1.5ms(即舵机1位置为90度)
Pwm1 = 1500
LIB_PwmUpdate3(Pwm1,Pwm2,Pwm3)
elseif recv_data == 3 then
--设置D0口的PWM1高电平脉宽为2ms(即舵机1位置为135度)
Pwm1 = 2000
LIB_PwmUpdate3(Pwm1,Pwm2,Pwm3)
elseif recv_data == 4 then
--设置D0口的PWM1高电平脉宽为2.5ms(即舵机1位置为180度)
Pwm1 = 2490
LIB_PwmUpdate3(Pwm1,Pwm2,Pwm3)
else
--设置D0口的PWM1高电平脉宽为0.5ms(即舵机1位置为0度)
Pwm1 = 510
LIB_PwmUpdate3(Pwm1,Pwm2,Pwm3)
end
end
--查询机智云是否下发了写"Em2"枚举型数据点(舵机2)
flag,recv_data = LIB_RecvFromGizCloud("Em2")
if flag == 1 then
print(string.format("Em2:%d", recv_data))
if recv_data == 0 then
--设置D1口的PWM2高电平脉宽为0.5ms(即舵机2位置为0度)
Pwm2 = 510
LIB_PwmUpdate3(Pwm1,Pwm2,Pwm3)
elseif recv_data == 1 then
--设置D1口的PWM2高电平脉宽为1ms(即舵机2位置为45度)
Pwm2 = 1000
LIB_PwmUpdate3(Pwm1,Pwm2,Pwm3)
elseif recv_data == 2 then
--设置D1口的PWM2高电平脉宽为1.5ms(即舵机2位置为90度)
Pwm2 = 1500
LIB_PwmUpdate3(Pwm1,Pwm2,Pwm3)
elseif recv_data == 3 then
--设置D1口的PWM2高电平脉宽为2ms(即舵机2位置为135度)
Pwm2 = 2000
LIB_PwmUpdate3(Pwm1,Pwm2,Pwm3)
elseif recv_data == 4 then
--设置D1口的PWM2高电平脉宽为2.5ms(即舵机2位置为180度)
Pwm2 = 2490
LIB_PwmUpdate3(Pwm1,Pwm2,Pwm3)
else
--设置D1口的PWM2高电平脉宽为0.5ms(即舵机2位置为0度)
Pwm2 = 510
LIB_PwmUpdate3(Pwm1,Pwm2,Pwm3)
end
end
end
上面代码中出现的"LIB_"开头的库函数的详细介绍可以在shineblink.com网站上的API文档中查询。
通过《4G设备接入机智云教程》我们可以很快掌握机智云的接入流程,并使用现成的通用版机智云App即可很快的实现手机App远程访问我们的开发板。缺点就是通用版App的UI页面看起来不够专业。
本例中我们使用了"Em1","Em2"这两个枚举型数据点,记得在机智云平台修改相应的数据点的名称以及枚举范围描述。
在选择二之前,必须完成上面选择一的工作,然后参考《赛博坦零代码App开发(4G版)》教程实现定制版App访问设备。开发好以后的页面如下:
如果有一定开发能力,开发者可以考虑在机智云免费提供的开源代码上做一定的定制开发形成自己的App。