Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【开发者成长激励计划-基于TencentOS Tiny的非侵入式86型智能开关】

【开发者成长激励计划-基于TencentOS Tiny的非侵入式86型智能开关】

原创
作者头像
繁林
修改于 2022-08-10 01:51:54
修改于 2022-08-10 01:51:54
1.1K10
代码可运行
举报
运行总次数:0
代码可运行

非侵入式86型智能开关产品.pptx

1 产品介绍

非侵入式86型智能开关装置是针对遵循86型安装盒(JB/T 8593-2013)的开关面板简易接入物联网的一款辅助装置. 它能在用户不改动原有正常的86型开关面板的情况下, 实现对开关面板接入到物联网, 并通过物联网实现用户对不同开关面板的适配, 实现对远程开关, 定时开关和光感开关等功能. 免打孔, 免接线的特点以求让用户以最低的适应成本使用物联网技术.

设备演示视频

2 产品亮点

  • 支持腾讯连连小程序扫描二维码添加设备.
  • 腾讯连连小程序中实现自定义H5页面: 设备上报的按键状态会在UI界面上直观地显现出来.
  • 通过TOS Tiny快速接入腾讯云IoT Explorer平台.
  • 设备完成开关操作后, 按键触手会自动回到起始位置, 不妨碍原开关面板的正常使用.
  • 基于事件驱动的设计, 设备支持在移动过程中插入执行新的按键操作.
  • 未来将通过小程序配置设备以适应不同按键个数的开关面板和触键幅度.
  • 未来将接入homeassistant和各种智能音箱以实现联动.

3 产品硬件架构

3.1 组成架构

非侵入式86型智能开关硬件组成架构
非侵入式86型智能开关硬件组成架构

3.2 沁恒CH32V307_EVB简介

CH32V_EVB是腾讯物联网操作系统TencentOS tiny 团队联合沁恒微电子设计的一款物联网评估板, 其采用沁恒RISC-V MCU CH32V307VCT6芯片. 而该芯片是采用基于沁恒自研RISC-V架构微处理器青稞V4架构. 在该开发板上可充分学习评估TencentOS tiny 基础内核、RISC-V IP核架构和IoT组件功能.

ESP8266

作为TOS Tiny系列开发板的一员, CH32V_EVB自然少不了板载一个ESP8266 WIFI模块. 通过开发板上的简单跳线的即可进行烧录和测试. 将腾讯云物联网平台提供的ESP8266固件烧录进ESP8266模块, 在加上TOS Tiny系统加持下, 可以实现在几乎在无代码添加的情况下让MCU快速上云.

3.3 THB6128步进电机驱动模块

THB6128是一款双全桥MOSFET, 低导通电阻的电机驱动IC. 该模块为电机提供独立电源供应, 并接受主控芯片输出的转速脉冲信号, 方向信号和使能信号以驱动电机运转, 且模块对主控的信号均采取光耦隔离的保护措施.

该模块采用信号:共阳极接线法, 即CP+/DIR+/EN+接到开发板+3.3V端. 当CP-/DIR-/EN-针脚为低电平时, 方为输出有效信号.

模块电流设定拨码开关(1/2/3/4): ON/ON/ON/ON(0.7A)

模块细分设定拨码开关(1/2/3): ON/OFF/OFF(64细分)

3.4 霍尔传感器3144以及LM393比较器

霍尔传感模块是基于霍尔元件3144设计而成, 元件是一种磁传感器, 用于计算丝杆转动的圈数. 由于丝杆运动与该传感器没有机械干涉, 它相比于限位开关寿命更长且更稳定. 使用宽电压LM393比较器, 通过对霍尔元件信号与电位器比较, 直接输出稳定的高低电平信号到主控芯片. 需要注意该传感器只对某一极磁场敏感.

4 产品方案设计

4.1 产品组成

产品组成框图
产品组成框图

主要抽象出两个概念:

  • 触手(tentacle)
  • 滑台(slider)
触手和滑台.jpg
触手和滑台.jpg

4.2 端侧架构

端侧架构堆叠图
端侧架构堆叠图

主要流程

程序主要流程图.png
程序主要流程图.png

核心代码

主要基于事件驱动回调的方式来实现:

代码语言:c
代码运行次数:0
运行
AI代码解释
复制
// g_sw_status: uint16_t. 下发的最新的设备状态.
// g_sw_status_pst: uint16_t. 已操作的缓存的设备状态
// cur_key_pos: 0对应按键位置为起始位置; 1对应开关面板左①号键位...
// 当触手处在 cur_key_pos 号按键位置上时, 进入该回调
void on_over_key_pos(int cur_key_pos)
{
    printf("当前处于%d号按键上:", cur_key_pos);
    int tmp = 1 << (cur_key_pos - 1);
    if (((g_sw_status ^ g_sw_status_pst) & tmp) != 0)
    {
        if ((g_sw_status & tmp) != 0 && (g_sw_status_pst & tmp) == 0)
        {
            // 按键从关闭-->打开
            printf("打开按键\n");
            tentable_push(PUSH_METHOD_ON);
            g_sw_status_pst = g_sw_status_pst | (g_sw_status & tmp);
        }
        else //if (g_sw_status & tmp == 0 && g_sw_status_pst & tmp != 0)
        {
            // 按键从打开-->关闭
            printf("关闭按键\n");
            tentable_push(PUSH_METHOD_OFF);
            g_sw_status_pst = g_sw_status_pst & ~(g_sw_status_pst & tmp);
        }
        tos_task_delay(1000);
    }
}

监控任务:

代码语言:c
代码运行次数:0
运行
AI代码解释
复制
void monitor_task_entry(void* arg)
{
    ...     // 一些值的初始化
    while (1)
    {
        switch (get_key())          // 获取测试按键
        {...} 
        ...
        LCD_ShowString(...);        // 通过LCD输出测试信息
        // 当按键开关量发生变化
        while(g_sw_status != g_sw_status_pst)
        {
            // 阻塞方法. 滑台移动到下一个键位, 并返回到达键位值.
            // 若滑台处在末尾键位, 则改变滑台的运动方向
            ret = slider_moveNextStep();
            if (ret < 0)
            {
                printf("moveNextStep=>%d\n", ret);
                break;
            }
            // 触发到达键位时间
            on_over_key_pos(ret);
        }
        // 空出CPU给其它任务执行
        tos_task_delay(100);
    }

通信代码:

由于挤出的时间比较仓促, 通信部分代码是直接在智能电灯的demo上改出来的:

连带物模型也懒得改(

就借用了brightness属性进行开关状态量的更新和同步

代码语言:c
代码运行次数:0
运行
AI代码解释
复制
void default_message_handler(mqtt_message_t* msg) {
    ... // 一些初始化操作
    len = strlen(msg->payload);
    if (len <= sizeof (msg->payload) && msg->payload[len-1] == '"')
        msg->payload[len-1] = '\0';
    
    cjson_root = cJSON_Parse((char*)(msg->payload +1));
    if (cjson_root == NULL) {
        ...
        goto exit;
    }
    jmethod = cJSON_GetObjectItem(cjson_root, "method");
    method = cJSON_GetStringValue(jmethod);
    jparams = cJSON_GetObjectItem(cjson_root, "params");
    jbrightness = cJSON_GetObjectItem(jparams, "brightness");
    brightness = jbrightness->valueint;
    if (jmethod == NULL || method == NULL ||
        jparams == NULL || jbrightness == NULL) 
    {
        printf("report reply status parser fail:%X\t%X\t%X\t%X\t%X\t\r\n",
            cjson_root, jmethod, method, jparams, jbrightness);
        event_flag = report_fail;
        goto exit;
    }
    if (strstr(method, "control") == NULL)
    {
        printf("method:%s\r\n", method);
        event_flag = report_fail;
        goto exit;
    }
    g_sw_status = brightness & 0x07;
    printf("g_sw_status:%d\n", g_sw_status);
exit:
    // FIXME: cJSON_Delete只需要对根句柄操作, 否则会崩
    cJSON_Delete(cjson_root);
    .. // 一些归0操作
    return;
}

上报开关状态量部分代码:

代码语言:c
代码运行次数:0
运行
AI代码解释
复制
#define EVENT_DATA_TEMPLATE  "{\\\"method\\\":\\\"report\\\"\\,\\\"clientToken\\\":\\\"00000001\\\"\\,\\\"params\\\":{\\\"brightness\\\":%d}}"
void mqtt_task_entry(void) {
    ...
    while (1) {
        tos_sleep_ms(5000);
        /* use AT+PUB AT command */
        memset(payload, 0, sizeof(payload));
        // 就改了这句↓
        snprintf(payload, sizeof(payload), EVENT_DATA_TEMPLATE, g_sw_status_pst & 0x0F);
        printf("pub payload:%s\n", payload);
        if (tos_tf_module_mqtt_pub(event_topic_name, QOS0, payload) != 0)
        {
            printf("module mqtt pub fail\n");
            break;
        }
        else
        {
            printf("module mqtt pub success\n");
        }
    }
}

4.3 用户交互

采用腾讯连连小程序实现自定义H5页面.

非侵入式86型智能开关腾讯连连H5界面
非侵入式86型智能开关腾讯连连H5界面

只要大致理解腾讯连连H5面板原理: HTML和NodeJS是相对独立的关系, 就不难制作出想要的H5页面.

image.png
image.png

核心代码

前端代码是基于腾讯物联网开发平台提供示例项目魔改而成:https://github.com/tencentyun/iotexplorer-h5-panel-demo

首先是魔改了大按钮为3个大按钮:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  // 渲染顶部大按钮
  const renderHeadPanel = () => {
      ...
      // 将id=="brightness"和类型为int的属性值渲染成3个大按钮
      switch (type) {
      case "int":
      case "float":
        console.log('int/float');
        if (id == "brightness")
        {
          return (
            <HeadBoolPanel
              templateConfig={headTemplateConfig}
              onChange={(value) => doControlDeviceProperty(id, value)}
              value={value as number}
              disabled={disabled}
            />
          );
        }
    }
  }

大按钮由大块的按钮和icon组成, 其中icon的样式反映设备已操作的开关量状态.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 单个按钮的核心代码
<div id="power-switch-body_1"
        className="power-switch-body off"
          onClick={() => {
            if (disabled) 
              return;
            
            if ((value & 0x01) != 0)
            {
              value &= ~0x01;
            }
            else
            {
              value |= 0x01;
            }
            onChange(value);
          }}
        >
          <div id="power-switch-icon_1" className="power-switch-icon off" />
        </div>

按钮按下的处理函数与icon更新:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 设备属性控制
const doControlDeviceProperty = async (propertyId: string, value: unknown) => {
// renderHeadPanel();
// 控制报文
const payload = {
    [propertyId]: value,
};
if (propertyId == 'brightness')
{
    let val_num = value as number;
    let tmp = 0x01; 
    for (let index = 0; index < 3; index++) 
    {
    let id_str = "#power-switch-body_" + (index + 1);
    const body = document.querySelector(id_str);
    if ((val_num & tmp) != 0)
    {
        body?.setAttribute("class", "power-switch-body");          
    }
    else
    {
        body?.setAttribute("class", "power-switch-body off");
    }
    tmp <<= 1;
    }
}

try {
    const res = await sdk.controlDeviceData(payload);
    console.log("[controlDeviceData]", payload, "成功", res);
} catch (err) {
    console.log("[controlDeviceData]", payload, "失败", err);
}
};

通过sdk监听wsEventReport事件, 获取设备上报的已操作的开关量状态信息:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    sdk.on('wsEventReport', (data) => {
      console.log('wsEventReport',  data);
      let isHasBrightness = false;
      let brightness = 0;
      const {Payload, deviceId} = data;
      if (deviceId == sdk.deviceId)
      {
        console.log(`发现设备:${deviceId}`);
        const {params} = Payload;
        if ('params' in Payload)
        {
          if ('brightness' in params)
          {
            brightness = params.brightness;
            isHasBrightness = true;
          }
        }
        if (isHasBrightness)
        {
          let val_num = brightness as number;
          // val_num = Math.round(Math.random() * 100) % 0x08;
          console.log(`val_num:${val_num}`);
          let tmp = 0x01; 
          for (let index = 0; index < 3; index++) 
          {
            let id_str = "#power-switch-icon_" + (index + 1);
            const body = document.querySelector(id_str);
            if ((val_num & tmp) != 0)
            {
              body?.setAttribute("class", "power-switch-icon");          
            }
            else
            {
              body?.setAttribute("class", "power-switch-icon off");
            }
            tmp <<= 1;
          }
        }
      }
    });

编写完所有面板代码和样式后, 可以通过"命令控制台"cd到项目目录, 运行

代码语言:shell
AI代码解释
复制
npm run release

即可在iotexplorer-h5-panel-demo\dist\release下找到:

代码语言:txt
AI代码解释
复制
index.*.js
index.*.css

即可上传到IoT平台:

QQ浏览器截图20220808165118.png
QQ浏览器截图20220808165118.png
QQ浏览器截图20220808165251.png
QQ浏览器截图20220808165251.png

4.4 使用微信开发工具开发腾讯连连自定义H5页面

参考:https://cloud.tencent.com/document/product/1081/67441

安装好NodeJS和whistleJS代理程序并加入环境变量PATH后, 在"命令提示符"中运行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
w2 start

配置好证书后, cd到项目目录:

代码语言:shell
AI代码解释
复制
npm run dev
....
# 当看到:
「wdm」: Compiled successfully.
# 即成功运行项目, 不要关闭控制台

每当修改项目代码保存时, 后台会自动编译新的程序. 通过"微信开发者工具"输入正确地址并登陆, 即可预览H5页面:

代码语言:txt
AI代码解释
复制
# 请替换括号内容
https://iot.cloud.tencent.com/h5panel/developing?deviceName=(deviceName)&productId=(productId)

4.5 使用真机腾讯连连进行调试

根据4.3的介绍, 将生成的H5页面上传后, 即可:

QQ浏览器截图20220808170812.png
QQ浏览器截图20220808170812.png

使用腾讯连连小程序扫描, 即可在真机调试H5页面和设备.

149eb56bd3d547896f9461dee25d118.jpg
149eb56bd3d547896f9461dee25d118.jpg

5 使用TOS Tiny和腾讯云物联网开发平台全栈开发感受

无论从端侧开发还是前端交互开发, 都有充分的技术支持. 技术栈的设计均是相应领域的所擅长的, 取各家之所长, 所以非常利于嵌入式工程师进行全栈开发. 从主控到ESP8266 的硬件联动, 再到腾讯物联网开发平台和腾讯连连的软件联动, 环环相扣, 代码利用率相当高.

端侧固件代码

https://gitee.com/YJHmath/NI-86-box-ISW

腾讯连连自定义H5页面代码

https://gitee.com/YJHmath/non-invasive86-box-intelligent-switch-h5-pannel

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
1 条评论
热度
最新
666
666
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
开发者成长激励计划-开发笔记:基于IoT NTP实现实时时钟
设备的RTC大部分场景是有用的,但RTC芯片增加了成本,而实现NTP网络协议又增加了系统的复杂性。如果物联网系统能够提供NTP校时是性价比最高的方案。
flavorfan
2022/08/17
1.9K1
开发者成长激励计划-开发笔记:基于IoT NTP实现实时时钟
【开发者成长激励计划-基于TencentOS Tiny 云控制转CAN通信控制电机】
产品的软件部分基于TencentOS Tiny开源物联网操作系统平台和使用腾讯云物联网开发平台Iot Explorer和腾讯连连小程序。硬件部分是基于沁恒自研RISC-V架构微处理器青稞V4系列的TencentOS Tiny CH32V_EVB RISC-V开发套件来实现。
用户4136378
2022/08/01
7120
【开发者成长激励计划-基于TencentOS Tiny  云控制转CAN通信控制电机】
开发者成长激励计划-基于TencentOS Tiny 简易蓝牙mesh网关方案
本次设计了基于CH32V307和TencentOS Tiny的简易蓝牙mesh网关控制系统,通过开发板上的按键可以控制蓝牙灯具的开关灯和亮度调节。
EternalStarCHN
2022/07/31
8530
开发者成长激励计划-基于TencentOS Tiny 手把手教你通过腾讯连连小小程序控制板子的4个LED灯
本来想基于开发板做一个汽车交流充电桩的,由于本人能力和时间有限,做不了,做一个简单的点灯例程,通过腾讯连连小小程序控制板子的4个LED灯
wujiajun
2022/08/10
9801
开发者成长激励计划-基于TencentOS Tiny 手把手教你通过腾讯连连小小程序控制板子的4个LED灯
开发者成长激励计划-基于TencentOS Tiny的智能轮椅控制系统
基于TencentOS Tiny的智能轮椅控制系统.pptx 项目演示视频 视频内容 1 、项目背景 当今社会人们的生活条件不断改善,我国国民的平均寿命也在不断提高。然而,随着年龄的增长老年人的身体机能也在逐渐老化,尤其是下肢力量衰退显著,这使得老年人的活动受到了很大的限制。另一方面,先天缺陷或后天事故所带来的下肢残疾也给一部分人的生活带来了很大的困扰。 如何通过科技手段帮助这些行动不便的老年人和残疾人恢复生活自理能力,一直以来都是社会关注的焦点。目前市面上的电动轮椅发展迅速,市场前景广阔,如何提高轮椅的
SEU_HZZ
2022/08/10
6460
开发者成长激励计划-基于TencentOS Tiny的智能轮椅控制系统
开发者成长激励计划-基于TencentOS Tiny的植物土壤湿度监测机
本次有幸参与开放原子开源基金会举办的开发者成长激励计划,植物土壤湿度监测机基于TencentOS Tiny CH32V_EVB RISC-V开发套件(采用WCH的RISC-V CH32V307VCT6 MCU)开发套件,外接WiFi模组及土壤湿度传感器监测植物生长环境湿度数据上传至云端,支持本地自动水泵运行,也可以通过腾讯云IoT实现云端手动控制水泵。
不爱吃胡萝卜
2022/08/11
7660
开发者成长激励计划-基于TencentOS Tiny的植物土壤湿度监测机
开发者成长激励计划-基于TencentOS Tiny环境监测小车
随着国家对环境大气监测越来越重视,一种新型移动监测车出现了,他满足了可以随处走动,随时随地的监测数据,本次就是在此方案的影响下完成本次的环境监测小车。当然这里我只是做了一个简单的模型,已经做到了采集温湿度传感器上云,后续可以自己添加一些传感器,真实采集大气的环境的TVOC传感器,还可以加入GPS上传小车行进轨迹。
用户9951948
2022/08/08
5740
开发者成长激励计划-基于TencentOS Tiny环境监测小车
AIoT应用创新大赛-基于TencentOS Tiny 的智慧灯
snprintf(report_buf, sizeof(report_buf), REPORT_DATA_TEMPLATE, lux);
百特曼
2022/03/15
6740
开发者成长激励计划-基于TencentOS Tiny 自修伴侣
自修伴侣(self-study planner)是基于物联网操作系统TencentOS tiny和CH32V_EVB RISC-V开发套件开发一款物联网化的番茄时钟、喝水提醒、to-do list 清除为一体的自修伴侣。
flavorfan
2022/08/04
2K0
开发者成长激励计划-基于TencentOS Tiny 自修伴侣
AIoT应用创新大赛-基于TencentOS Tiny的办公区厕所蹲位监控系统
这次有幸获得腾讯物联网和NXP联合推出的TencentOS Tiny EVB_AIoT开发板,是基于NXP的i.MX RT1062跨界MCU,其功能非常强大。因为时间关系,还有很多强大的功能尚在学习中,这次先运用学习的基础知识,做了一个有些趣味性的系统。
HonestQiao
2022/03/14
1.2K2
AIoT应用创新大赛-基于TencentOS Tiny的办公区厕所蹲位监控系统
【腾讯连连IoT开发大赛】基于TencentOS Tiny的智能甲醛探测与云打印系统
达特甲醛探测仪是基于英国达特公司设计开发的WZ-S型甲醛检测模组设计开发的,它可以用于检测环境中甲醛的浓度,以提示用户运用科学有效的方法降低甲醛污染,进而使环境的空气质量变得更加清新,也进一步提高用户的健康意识以及对生活品质的追求。
杨源鑫
2021/01/10
2.9K1
【腾讯连连IoT开发大赛】基于TencentOS Tiny的智能甲醛探测与云打印系统
开发者成长激励计划-基于TencentOS Tiny智能家居控制终端
本次的开发者成长激励计划我打算制作一款智能家居监测和集成控制终端,本次完成了对家庭环境数据上传,主要有PM2.5环境监测,和SHT20温湿度数据监测,本来还打算监测下TVOC数据的,由于传感器原因没有做了,后期可以加上,所以我先弄了一些假数据上传演示,本次下发的控制设备我做了一个红外控制空调的操作,可以控制模式,设备温度。CH32V307开发板板载功能可以实现全部功能,而无需外加其他设备。
用户6340714
2022/08/10
7472
开发者成长激励计划-基于TencentOS Tiny智能家居控制终端
开发者成长激励计划-基于TencentOS Tiny的电子血压计
很高兴能够参与到腾讯云AIoT应用创新大赛,有机会认识到各种行业背景的物联网爱好者,作为一个新手,接触了面向物联网领域的TencentOS Tiny系统、腾讯云物联网开发平台以及RISC-V芯片的应用实例等。
联远智维
2022/08/10
1.4K0
开发者成长激励计划-基于TencentOS Tiny的电子血压计
AIoT应用创新大赛-基于TencentOS Tiny 的遥控小车
很早就有做个智能小车的想法,但由于时间有限和囊中羞涩,一直没有付出行动,感谢腾讯TencentOS Tiny团队的信任,给了这么一次机会,虽然离自己的设想的功能还差很多,但至少迈出了重要的一步,更重要的是能学习TencentOS Tiny实时操作系统 和i.MX RT系列应用处理器,在此表示感谢。
用户9320370
2022/03/06
1.1K0
AIoT应用创新大赛-基于TencentOS Tiny 的遥控小车
开发者成长激励计划-基于TencentOS Tiny 的多功能宏键盘
基于TencenOS Tiny和ch32v307开发的宏键盘,将显示和机械轴融合在一起,功能可以根据需求进行自定义。 可以在云端查看按键频次,并可以远程控制按键的显示,可玩性可以自由发挥。
用户9918347
2022/07/27
6910
开发者成长激励计划-基于TencentOS Tiny 的多功能宏键盘
开发者成长激励计划-基于TencentOS Tiny的电子表
有幸能够参与这次比赛,学到了很多知识,由于时间比较匆忙,赶在结束前几天完成了这个DEMO。这个项目基于TOS的mqtt的例程,通过滴答数计时并显示时间,通过联网校对时间,云端下发指令矫正时间,项目目的主要是完成对TencentOS移植以及腾讯物联网平台的实践。
用户8204584
2022/08/10
9100
AIoT应用创新大赛-基于TencentOS Tiny的护眼台灯
现如今由于新冠疫情影响,疫情催生着在线教育,让很多学习场景从学校、教室转移至家庭、宿舍。作为开学即隔离的学生党感受颇深QAQ,每天的网课和作业对用眼需求更大,昏暗的宿舍和巨亮的屏幕更是增大了眼睛的压力。于是就有了开发此demo的想法,同时感谢TencentOS团队提供的这次机会开启了我学习嵌入式操作系统,以及学习NXP系列MCU的旅程。
JGMMS
2022/03/12
1.5K0
开发者成长激励计划-基于TencentOS Tiny移植JS解释器
Github开源地址:https://github.com/DawnMagnet/JSInterpreter-TencentOS
曙光磁铁
2022/08/08
9740
开发者成长激励计划-基于TencentOS Tiny移植JS解释器
AIoT应用创新大赛-基于TencentOS Tiny 的会议室使用小助手
诸如会议室等隐私场所,不能通过单纯的安装监控进行管理,实际管理中却又想得知是否有人在使用。为解决此类问题,会议室使用小助手横空出世。
烫烫烫烫烫烫锟斤拷
2022/02/07
1.6K0
AIoT应用创新大赛-基于TencentOS Tiny 的会议室使用小助手
开发者成长激励计划-基于TencentOS Tiny 的物联网小车机械臂
随之物联网的发展,各类设备都能通过物联网进行控制,本次方案尝试了通过腾讯物联网平台实现设备控制设备的功能,使用了小型机械臂和小车进行测试,验证控制的物联网控制的实时性。机械臂由5个舵机实现5个自由度。小车由一个转向舵机和一个驱动电机组成。控制端采用WCH沁恒RISC-V TencentOS Tiny CH32V_EVB_AIoT RevB02开发套件负责读取电位器和姿态传感器数据并上传到云端,执行端由STM32L431RCT6控制器负责驱动电机和舵机。
海内天涯
2022/08/06
1.1K0
开发者成长激励计划-基于TencentOS Tiny 的物联网小车机械臂
推荐阅读
开发者成长激励计划-开发笔记:基于IoT NTP实现实时时钟
1.9K1
【开发者成长激励计划-基于TencentOS Tiny 云控制转CAN通信控制电机】
7120
开发者成长激励计划-基于TencentOS Tiny 简易蓝牙mesh网关方案
8530
开发者成长激励计划-基于TencentOS Tiny 手把手教你通过腾讯连连小小程序控制板子的4个LED灯
9801
开发者成长激励计划-基于TencentOS Tiny的智能轮椅控制系统
6460
开发者成长激励计划-基于TencentOS Tiny的植物土壤湿度监测机
7660
开发者成长激励计划-基于TencentOS Tiny环境监测小车
5740
AIoT应用创新大赛-基于TencentOS Tiny 的智慧灯
6740
开发者成长激励计划-基于TencentOS Tiny 自修伴侣
2K0
AIoT应用创新大赛-基于TencentOS Tiny的办公区厕所蹲位监控系统
1.2K2
【腾讯连连IoT开发大赛】基于TencentOS Tiny的智能甲醛探测与云打印系统
2.9K1
开发者成长激励计划-基于TencentOS Tiny智能家居控制终端
7472
开发者成长激励计划-基于TencentOS Tiny的电子血压计
1.4K0
AIoT应用创新大赛-基于TencentOS Tiny 的遥控小车
1.1K0
开发者成长激励计划-基于TencentOS Tiny 的多功能宏键盘
6910
开发者成长激励计划-基于TencentOS Tiny的电子表
9100
AIoT应用创新大赛-基于TencentOS Tiny的护眼台灯
1.5K0
开发者成长激励计划-基于TencentOS Tiny移植JS解释器
9740
AIoT应用创新大赛-基于TencentOS Tiny 的会议室使用小助手
1.6K0
开发者成长激励计划-基于TencentOS Tiny 的物联网小车机械臂
1.1K0
相关推荐
开发者成长激励计划-开发笔记:基于IoT NTP实现实时时钟
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验