收藏官网首页
查看: 3767|回复: 0

【物联网开发】机智云App远程电机PWM调速

682

主题

741

帖子

3万

积分

版主

Rank: 7Rank: 7Rank: 7

积分
36647
跳转到指定楼层
#
 楼主| 发表于 2022-11-2 11:29:14 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
免费使用STM32、APP自动代码生成工具
本帖最后由 Kara 于 2022-11-2 11:32 编辑

【物联网开发】机智云App远程电机PWM调速

一、实现的功能描述
App远程控制开发板上控制电机的PWM信号占空比,以达到控制电机转速的目的。并将App下发的PWM占空比值显示在OLED屏幕上。

二、 UI配置描述
本例程中所包含的UI配置代码如下:
  1. UI = "[5_MotorPWM_%_0_100]"
复制代码

例程中用了类型为 “5” 的控件,该类控件用来通过App下发控制量给设备,控制范围为0-100,单位为%。关于该类型控件的具体描述可以参看官网中关于ShineBlink云的教程。
基于以上UI配置,当设备上电后,我们在小程序中可以看到系统为我们自动生成的小程序页如下:




三、本实验教学目的
掌握基于ShineBlink的:
  • 基于WiFi或4G接入ShineBlink免开发云,也可以轻松的接入机智云物联网平台,并自动生成微信小程序
  • PWM信号控制电机(电机的PWM控制引脚为D0)
  • OLED屏幕显示(OLED屏幕占用SCL1和SDA1引脚)


四、本实验涉及的模块
电机在开发板上的位置如下:

五、完整源代码(WiFi版本)
  1. --配置D0口为PWM功能,参数20000表示PWM的周期为20ms,参数1表示高电平有效
  2. LIB_PwmConfig1(20000,1)
  3. LIB_PwmUpdate1(0) --电机默认停止转动
  4. --设置0.96寸oled模块占用的IIc1接口,用来显示电压和PWM占空比
  5. LIB_0_96_OledConfig("IIC1")
  6. --设置UI配置,该配置决定了小程序页面显示的控件具体有哪些什么,名字是什么
  7. UI = "[5_MotorPWM_%_0_100]"
  8. --设置C2开发板自带的WiFi连接云
  9. ssid = "abcdef" --修改成您的WiFi路由器账号
  10. pswd = "123456" --修改成您的WiFi路由器密码
  11. LIB_CloudConfig("S0", "WIFI_C2", 0, "SBK_01", UI, ssid, pswd)
  12. --显示控制电机的默认占空比
  13. LIB_0_96_OledPuts("1","1",string.format("PWM:%03d%%", 0))
  14. while(GC(1) == true)
  15. do
  16.     --查询是否收到服务器下发的数据
  17.     recv_flag, msg = LIB_CloudRecv()
  18.     if recv_flag == 1 then
  19.         --查看服务器是否下发控制电机PWM占空比的指令
  20.         if string.find(msg, "MotorPWM") ~= nil then
  21.             Json_Val = LIB_JsonParse(msg, "$.MotorPWM")
  22.             --将解析出来的字符串转换成数字
  23.             val = tonumber(Json_Val)
  24.             if val ~= nil then
  25.                 if val <= 100 and val >= 0 then
  26.                     --通过设置D0口输出的PWM有效电平宽度来控制电机震动强度
  27.                     LIB_PwmUpdate1(val*200)
  28.                     --显示控制电机的占空比
  29.                     LIB_0_96_OledPuts("1","1",string.format("PWM:%03d%%", val))
  30.                 end
  31.             end
  32.         end
  33.     end
  34. end
复制代码
注意:本例程使用的是 C2 DevKit 开发板上的震动电机,所以使用前需要将开发板上的黄色跳线帽跳至MOT选项。


六、实验现象
将上面代码中的ssid和pswd改成您的路由器账号和密码,然后将代码复制到开发板中并运行十几秒之后,我们用微信扫描开发板背后的二维码,在弹出的微信小程序中我们就可以远程控制开发板上的电机的转速(震动强度)。


七、4G版本
4G版本和WiFi版本的代码几乎一样,我们只需做如下两处调整即可实现4G远程:
(1)将4G模块插入开发板上的4G插槽,如下图:

(2)将代码中WIFI初始化改成4G初始化即可,调整如下:
将原来WiFi的:
  1. --设置C2开发板自带的WiFi连接云
  2. ssid = "abcdef" --修改成您的WiFi路由器账号
  3. pswd = "123456" --修改成您的WiFi路由器密码
  4. LIB_CloudConfig("S0", "WIFI_C2", 0, "SBK_01", UI, ssid, pswd)
复制代码
调整成4G后的:
  1. --设置外部4G模块连接云
  2. LIB_CloudConfig("S0", "4G_ML302", 0, "SBK_01", UI, "NO_GPS")
复制代码


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表