• 【物联网开发】机智云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")
    复制代码
  • 相关阅读:
    【老生谈算法】matlab实现LMS算法的自适应滤波算法源码——自适应滤波
    day14网络编程
    【DevOps】Git 图文详解(四):Git 使用入门
    上四休三,未来的期许
    CSRF漏洞详解与挖掘
    程序员35岁之后不写程序了,该怎样职业规划?
    【工具篇】Unity翻书效果的三种方式
    采集分析仪设计原理图:437-带触摸显示的10路5Msps@18bit采集分析仪
    C++实现一个通用线程池
    k8s-8部署Prometheus+Grafana
  • 原文地址:https://blog.csdn.net/gizwits_csdn/article/details/127651948