本来想基于开发板做一个汽车交流充电桩的,由于本人能力和时间有限,做不了,做一个简单的点灯例程,通过腾讯连连小小程序控制板子的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,如下图
在线调试视频
通过微信连连小程序控制输出内容
到这里,官方的例程结束了,接下来的只能靠自己了,加油吧,打工人。
接下来,我们解析一下平台下发的内容如下,对应串口答应的内容
[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文件夹下,完成后如下图所示
接下来就是 最后一步了,修改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固件不是乐鑫官方固件,固件 在下面压缩包
通过这个活动,我学到了很多知识,体会到了编程的乐趣 ,好久没有熬夜到凌晨1-2点了,也体会到了国产开发软件的 突飞猛进,MounRiver Studio真的是个很好的软件,是我目前用过单片机厂家自研ide中最好的一家,还有特别是腾讯连连小程序做的非常好,在实际项目中,可以节约很多开发时间。目前我们公司 使用还是比较少的。
将以下文件替换原来的文件就可以了,加油吧,打工人。