开发者成长激励计划-基于TencentOS Tiny 手把手教你通过腾讯连连小小程序控制板子的4个LED灯

2022-08-11 11:43:13 浏览数 (2)

本来想基于开发板做一个汽车交流充电桩的,由于本人能力和时间有限,做不了,做一个简单的点灯例程,通过腾讯连连小小程序控制板子的4个LED灯

实验材料:windows电脑一台,CH32V_EVB_AIoT ReVB02开发板一块(没有开发板的可以自搭电路),type-c数据线一条,可联网可作热点手机一台。

软件安装包:MounRiver_Studio_Setup_V181.zip。下载地址:MounRiver Studio 第一次用这个软件,真的很好用,关键还免费。以后一定要支持一下。

开始的操作步骤,我就不重复了,doc/31.TencentOS-Tiny_CH32V_EVB_QuickStart.md · 腾讯开源/TencentOS-tiny - Gitee.com

具体可以按照官方教程,完成后入下面:

云端日志云端日志

为了方便查看,我们把定时上传时间改成60s,如下图

将 定时上传改成60秒将 定时上传改成60秒

在线调试视频

视频内容

通过微信连连小程序控制输出内容

视频内容

到这里,官方的例程结束了,接下来的只能靠自己了,加油吧,打工人。

接下来,我们解析一下平台下发的内容如下,对应串口答应的内容

[19:26:22.054]收←◆---> TCMQTTRCVPUB:

[19:26:22.212]收←◆callback:

---------------------------------------------------------

topic:$thing/down/property/47MURRUAQY/LED1

payload:"{"method":"control","clientToken":"clientToken-ifw-UfDyZ","params":{"power_switch":1}}"

---------------------------------------------------------

平台下发平台下发

对应的函数应该是这个

我查阅了资料知道了,这是Json格式的,我们将下面两个文件添加到User文件夹下,完成后如下图所示

cJSON.zip
添加cjson添加cjson

接下来就是 最后一步了,修改mqtt_iot_explorer.c文件下的default_message_handler函数,记得添加头文件#include "cJSON.h"

代码语言:javascript复制
void default_message_handler(mqtt_message_t* msg)
{
    printf("callback:rn");
    printf("---------------------------------------------------------rn");
    printf("ttopic:%srn", msg->topic);
    printf("tpayload:%srn", msg->payload);
    printf("---------------------------------------------------------rn");

    cJSON *root = NULL;
    cJSON *params = NULL;
    cJSON *method = NULL;
    cJSON *power_switch = NULL;
    
    /*解析从云端收到的控制信息,示例控制信息为*/
    //payload:"{"method":"control","clientToken":"clientToken-@Ropy0JGd","params":{"power_switch":0}}"
    root = cJSON_Parse(msg->payload  1);
    if (!root){
        printf("Invalid json rootrn");
        return;
    }

    /* 解析出method*/
    method = cJSON_GetObjectItem(root, "method");
    if (!method){
        printf("Invalid json methodrn");
        cJSON_Delete(root);
        return;
    }

    /* 仅处理云端下发的 control 数据*/
    if (0 != strncmp(method->valuestring, "control", sizeof("control") - 1)){
        cJSON_Delete(root);
        return;
    }

    /*解析出params*/
    params = cJSON_GetObjectItem(root, "params");
    if (!params){
        printf("Invalid json paramsrn");
        cJSON_Delete(root);
        return;
    }
    /*解析出 power_switch*/
    power_switch = cJSON_GetObjectItem(params, "power_switch");
    /*根据 power_switch 控制实际硬件开关*/
    if (power_switch->valueint){
        GPIO_WriteBit(GPIOE, GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5, 0);
    }else{
        GPIO_WriteBit(GPIOE, GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5, 1);
    }

    cJSON_Delete(root);
}

最后成果演示:

视频内容

还有一件事忘了,esp8266固件不是乐鑫官方固件,固件 在下面压缩包

QCloud_IoT_AT_ESP8266_v2.1.1_20200903_UART_1_3 (2).zip

通过这个活动,我学到了很多知识,体会到了编程的乐趣 ,好久没有熬夜到凌晨1-2点了,也体会到了国产开发软件的 突飞猛进,MounRiver Studio真的是个很好的软件,是我目前用过单片机厂家自研ide中最好的一家,还有特别是腾讯连连小程序做的非常好,在实际项目中,可以节约很多开发时间。目前我们公司 使用还是比较少的。

将以下文件替换原来的文件就可以了,加油吧,打工人。

mqtt_iot_explorer.zip

0 人点赞