OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2386|回复: 0

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

[复制链接]

308

主题

317

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
1211
金钱
1211
注册时间
2020-2-25
在线时间
115 小时
发表于 2022-11-2 15:14:12 | 显示全部楼层 |阅读模式

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

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

[color=rgb(0, 0, 0) !important]复制代码


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




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


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

五、完整源代码(WiFi版本)
  • --配置D0口为PWM功能,参数20000表示PWM的周期为20ms,参数1表示高电平有效
  • LIB_PwmConfig1(20000,1)
  • LIB_PwmUpdate1(0) --电机默认停止转动
  • --设置0.96寸oled模块占用的IIc1接口,用来显示电压和PWM占空比
  • LIB_0_96_OledConfig("IIC1")
  • --设置UI配置,该配置决定了小程序页面显示的控件具体有哪些什么,名字是什么
  • UI = "[5_MotorPWM_%_0_100]"
  • --设置C2开发板自带的WiFi连接云
  • ssid = "abcdef" --修改成您的WiFi路由器账号
  • pswd = "123456" --修改成您的WiFi路由器密码
  • LIB_CloudConfig("S0", "WIFI_C2", 0, "SBK_01", UI, ssid, pswd)
  • --显示控制电机的默认占空比
  • LIB_0_96_OledPuts("1","1",string.format("PWM:%03d%%", 0))
  • while(GC(1) == true)
  • do
  •     --查询是否收到服务器下发的数据
  •     recv_flag, msg = LIB_CloudRecv()
  •     if recv_flag == 1 then
  •         --查看服务器是否下发控制电机PWM占空比的指令
  •         if string.find(msg, "MotorPWM") ~= nil then
  •             Json_Val = LIB_JsonParse(msg, "$.MotorPWM")
  •             --将解析出来的字符串转换成数字
  •             val = tonumber(Json_Val)
  •             if val ~= nil then
  •                 if val <= 100 and val >= 0 then
  •                     --通过设置D0口输出的PWM有效电平宽度来控制电机震动强度
  •                     LIB_PwmUpdate1(val*200)
  •                     --显示控制电机的占空比
  •                     LIB_0_96_OledPuts("1","1",string.format("PWM:%03d%%", val))
  •                 end
  •             end
  •         end
  •     end
  • end

[color=rgb(0, 0, 0) !important]复制代码

注意:本例程使用的是 C2 DevKit 开发板上的震动电机,所以使用前需要将开发板上的黄色跳线帽跳至MOT选项。


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


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

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

[color=rgb(0, 0, 0) !important]复制代码

调整成4G后的:
  • --设置外部4G模块连接云
  • LIB_CloudConfig("S0", "4G_ML302", 0, "SBK_01", UI, "NO_GPS")

[color=rgb(0, 0, 0) !important]复制代码


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 17:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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