BLDC风扇方案介绍-软件部分

一、开发前准备

本项目的软件开发是基于涂鸦云平台的,所以需要在涂鸦的IoT平台进行产品创建,使用的也是涂鸦现在主推的CBU模组。涂鸦IoT云平台只能使用涂鸦的模组,因为只有涂鸦授权后的产品才能连上涂鸦云。好在涂鸦的最近的活动比较多,可以参加涂鸦的活动获(bai)取(piao)模组。
涂鸦的SDK编译一般是在Linux下进行编译开发的,所以可能需要大家安装下虚拟机,windows下好像也是可以的,但是编译速度有点慢。
下面是开发中会使用到的链接:
涂鸦IoT平台
CBU开发SDK环境
本项目代码github地址
CBU模组规格书

二、功能需求

序号 功能
1、 三种模式风(正常风,自然风:忽大忽小间隔15秒,睡眠风:每隔一小时自动降档,最后降到最低档)
2、 编码器旋转控制风扇,顺时针旋转风速+,逆时针旋转风速- 。
3、 编码器按钮短按切换模式,长按设备复位。
4、 4颗指示灯显示风速,4颗指示灯指示8档风速,闪烁代表1档,常量代表2档。4颗指示灯还复用本地定时指示。
5、 本地定时功能,时间到自动关机。定时按键:无定时->1小时->2小时->3小时->4小时->无定时。
6、 电源按键,风扇工作状态按下后关闭风扇,风扇处于关闭状态按下后打开风扇。
7、 长按 WiFi 按键,设备进入配网模式。
8、 LED有8颗,除指示风速4颗LED外,还有4颗指示灯。一颗 WiFi 指示灯,指示 WiFi 状态;其他三颗指示当前风扇模式
9、 led指示灯亮度可通过APP调整,正常亮度,较暗亮度。
10、 断电记忆

三、产品创建

进入 Tuya IoT 平台 ,创建产品->标准类目->小家电->风扇->风扇->填入产品信息->选择DP点->选择面板->选择涂鸦标准模组SDK开发,选择对应的模组。

代码编译完成后将生成的固件上传,具体信息填入,参考该链接下文档 。上传完固件后,后期也可以更新固件进行OTA,这个功能用起来也是十分方便的。

四、烧录、授权

前面说过了如果想上涂鸦云是模组是需要授权的,那么如何烧录授权呢?这是涂鸦官方文档关于烧录的介绍,这里在开发过程中强烈推荐使用烧录授权分立方案,即烧录UA(应用区)固件。
QIO、UA、UG文件是什么意思上面的官方文档里已经有了详细的介绍,我这里就不再复述了。
芯片烧录工具下载地址

在这里插入图片描述

五、功能开发

1、配网及配网指示灯显示

调用该函数 tuya_iot_wf_gw_unactive() 以进入配网模式,涂鸦 SDK 对于网络状态的定义有以下几种:

typedef BYTE_T GW_WIFI_NW_STAT_E;
#define STAT_LOW_POWER          0   // idle status,use to external config network
#define STAT_UNPROVISION        1   // smart config status
#define STAT_AP_STA_UNCFG       2   // ap WIFI config status
#define STAT_AP_STA_DISC        3   // ap WIFI already config,station disconnect
#define STAT_AP_STA_CONN        4   // ap station mode,station connect
#define STAT_STA_DISC           5   // only station mode,disconnect
#define STAT_STA_CONN           6   // station mode connect
#define STAT_CLOUD_CONN         7   // cloud connect
#define STAT_AP_CLOUD_CONN      8   // cloud connect and ap start
#define STAT_REG_FAIL           9   // register fail
#define STAT_OFFLINE            10   // offline
#define STAT_MQTT_ONLINE        11
#define STAT_MQTT_OFFLINE       12
#define STAT_UNPROVISION_AP_STA_UNCFG		13 //smart-cfg and ap-cfg concurrent config status

长按进入配网模式功能实现:

STATIC VOID wifi_key_process(TY_GPIO_PORT_E port,PUSH_KEY_TYPE_E type,INT_T cnt)
{
   
    PR_DEBUG("port:%d,type:%d,cnt:%d",port,type,cnt);
    OPERATE_RET op_ret = OPRT_OK;
    UCHAR_T ucConnectMode = 0;

    if (port = WIFI_KEY_PIN) {
   
        if (LONG_KEY == type) {
    //press long enter linking network
            PR_NOTICE("key long press");
            /* 手动移除设备 */
            tuya_iot_wf_gw_unactive();
        } else if (NORMAL_KEY == type) {
   
            PR_NOTICE("key normal press");
        } else {
   
            PR_NOTICE("key type is no deal");
        }
    }

    return;
}

STATIC VOID wifi_config_init(VOID)
{
   
    OPERATE_RET op_ret = OPRT_OK;

    /* LED 相关初始化 */ 
    tuya_gpio_inout_set(WIFI_LED_PIN, FALSE);
    tuya_set_led_light_type(wifi_led_handle, OL_HIGH, 0, 0); //关闭 led

    /* LED 相关初始化 */ 
    op_ret = tuya_create_led_handle(WIFI_LED_PIN, TRUE, &wifi_led_handle);
    if (op_ret != OPRT_OK) {
   
        PR_ERR("key_init err:%d", op_ret);
        return;
    }
    tuya_set_led_light_type(wifi_led_handle, OL_HIGH, 0, 0);

    /* 按键相关初始化 */
    KEY_USER_DEF_S key_def;

    op_ret = key_init(NULL, 0, WIFI_KEY_TIMER_MS);
    if (op_ret != OPRT_OK) {
   
        PR_ERR("key_init err:%d", op_ret);
        return;
    }

    /* 初始化 key 相关参数 */
    memset(&key_def, 0, SIZEOF(key_def));
    key_def.port = WIFI_KEY_PIN;                            //按键引脚
    key_def.long_key_time = WIFI_KEY_LONG_PRESS_MS;         //长按时间配置
    key_def.low_level_detect = WIFI_KEY_LOW_LEVEL_ENABLE;   //TRUE:低电平算按下,FALSE:高电平算按下
    key_def.lp_tp = LP_ONCE_TRIG;   //
    key_def.call_back = wifi_key_process;                   //按键按下后回调函数
    key_def.seq_key_detect_time = WIFI_KEY_SEQ_PRESS_MS;    //连按间隔时间配置

    /* 注册按键 */
    op_ret = reg_proc_key(&key_def);
    if (op_ret != OPRT_OK) {
   
        PR_ERR("reg_proc_key err:%d", op_ret);
    }

    return;
}

这里对于wifi 状态的做出的提示如下:

STATIC VOID wifi_state_led_reminder(IN CONST GW_WIFI_NW_STAT_E cur_stat)
{
   
    switch (cur_stat)
    {
   
        case STAT_LOW_POWER:    //wifi 连接超时,进入低功耗模式
            tuya_set_led_light_type(wifi_led_handle, OL_HIGH, 0, 0); //关闭提示灯
        break;

        case STAT_UNPROVISION: //SamrtConfig 配网模式,等待连接
            tuya_set_led_light_type(wifi_led_handle, OL_FLASH_HIGH, WIFI_LED_FAST_FLASH_MS, 0xffff); //led 快闪
        break;

        case STAT_AP_STA_UNCFG: //ap 配网模式,等待连接
            tuya_set_led_light_type(wifi_led_handle, OL_FLASH_HIGH, WIFI_LED_LOW_FLASH_MS, 0xffff); //led 慢闪
        break;

        case STAT_AP_STA_DISC:
        case STAT_STA_DISC:     //SamrtConfig/ap 正在连接中
            tuya_set_led_light_type(wifi_led_handle, OL_HIGH, 0, 0); //关闭 led 
        break;

        case STAT_CLOUD_CONN:
        case STAT_AP_CLOUD_CONN: //连接到涂鸦云
            tuya_set_led_light_type(wifi_led_handle, OL_LOW, 0, 0)
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
本设计是基于STM32 BLDC直流无刷电机控制器设计,并附上原理图和源码等,供网友参考学习。源代码是基于免费开源CoOS(UCOS类似)操作系统上写的,在学习无刷电机的控制同时还能学习到操作系统的知识。同时提供用Matlab的GUI编写的串口接收程序和开源的代码,实时接收速度和电流信息,便于PID测试,并且有CAN(TJA1050)接口。同时自己可以进行修改学习Matlab的GUI编程。 STM32 BLDC直流电机控制器组成如下: 1.STM32F103RB处理器 时钟72M Flash 64K RAM 20K 2.MOSFET SUD35N05-26L 55V 35A Rds=0.02 3. MOSFET驱动 IR2101S 4.输入开发板电源参数:电源 10到20V,最大电流 20A 电源及STM32 BLDC开发板无刷电机图片: 软件资料包括如下: 有无刷电机转速调节的PID程序(基于免费开源CoOS操作系统) 自己做的Matlab GUI串口PID调试程序(开源,自己可以改进) 自己以前做的STM32程序 电机运行时PID调节图: 无刷电机规格要求: 额定电压 12V 额定电流 2.26A 额定转速 13027RPM STM32 BLDC直流无刷电机接口: 黄色线: Vcc +5V 灰色: GND 棕色:霍尔S1 蓝色:霍尔S2 橙色:霍尔S3 红色:A相 黑色:B相 绿色:C相 STM32 BLDC开发板接口配置: 1.无刷电机驱动 2.串口通信接口 3.CAN通信接口 4.有AD接口能检测电压和电流 5.两个按键和一个复位键 6.一个LED 7.JLINK调试接口 STM32 BLDC开发板配件: 交流220V转直流12V 6A电源 带霍尔无刷电机 12V 2.26A STM32无刷电机驱动板

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值