发帖
1 1 1

Ai-wb2-32s腾讯物联网开发平台+温度上传+led控制

zxfeee
高级会员

1

主题

5

回帖

783

积分

高级会员

积分
783
官方公告 58 1 前天 05:01
[i=s] 本帖最后由 zxfeee 于 2025-4-4 05:01 编辑 [/i]

Ai-wb2-32s腾讯物联网开发平台+温度上传+led控制

效果

77e7fa42b073bb99ef448ac620ebda6000_00_00-00_00_0200_00_00-00_00_30.gif

关于腾讯物联网开发平台

优点

集成进腾讯连连如果不在乎样式界面端可以一行代码都不写

每个设备每日赠送消息数为2000条。虽然有少但也够用。详情

image-20250404020411165.png

缺点

只能10个设备

新版本开发平台中H5自定义面板受限

  • 新版本

    image-20250404015550567.png

  • 旧版本

    image-20250404015743447.png

环境搭建

搭建

https://bbs.ai-thinker.com/forum.php?mod=viewthread&tid=45149&ctid=23

说明:

新版本eclipse和楼主提供的新建项目方法不一样建议用楼主提供的https://pan.baidu.com/s/1inIIFZn-Fh-swwpNKc-EXA?pwd=1234

避坑

https://bbs.ai-thinker.com/forum.php?mod=viewthread&tid=41771&ctid=23

附阿里云盘分享:
Ai-Thinker-WB2_20250401.exe https://www.alipan.com/s/z4GrZZesQ3n 提取码: dn81 点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。

驱动

https://docs.ai-thinker.com/_media/tools/serial_driver_windos.7z

烧录

https://bbs.ai-thinker.com/forum.php?mod=viewthread&tid=45221&ctid=23

image.png

参考

dht11温湿度传感器

\applications\iot-solution\demo_dht11

腾讯物联网平台控制LED

\applications\iot-solution\qcloud_demo

示意图

image-20250404021013118.png

连线

dht11的VCC连开发版3V3

dht11的GND连开发版GND

dht11的DATA连开发版IO11

修改dht11的DATA连接端口

文件路径

\applications\iot-solution\demo_dht11\demo_dht11\driver_dht11_interface_bl602.c

image-20250404012210581.png

开发流程

注意事项

wifi2.4G模式

wifi密码安全模式【WPA/WPA2 PSK 混合模式】

物联网平台相关

  1. 新建产品

** 公共实例--->产品开发--->新建产品--->内容如图--->点击下方【新建产品】

image-20250404022851960.png

  1. 添加模型
    物理模型--->新建自定义功能--->内容如下--->确定
    image-20250404021928244.png

  2. 界面
    交互开发--->面板配置--->配置--->标准面板--->保存

    image-20250404022157037.png

    image-20250404022336900.png

  3. 添加设备到腾讯连连
    设备调试--->新建设备--->二维码--->微信--->腾讯连连小程序--->点击中间的【+】--->点击【扫一扫】扫描二维码

  4. 获取设备信息
    点击刚刚新建的设备,在设备信息中获取并记录【设备名称】、【设备密钥】、【产品ID】的值

代码相关

  1. 替换设备信息

    \applications\iot-solution\qcloud_demo\components\qcloud_iot_c_sdk\platform\platform/HAL_Device_freertos.c
    中替换下述内容
    sg_product_id 的值修改为产品ID的值。sg_device_name 的值修改为设备名称的值sg_product_secret 的值修改为设备密钥的值。sg_device_secret 的值修改为设备密钥的值

  2. 复复制demo_dht11中的类库到 \applications\iot-solution\qcloud_demo 目录下

    image-20250404024937829.png

  3. 实现上传温度实现

    实现文件位于:

    \applications\iot-solution\qcloud_demo\sdk_app_qcloud\light_data_template_sample.c

    1. 在文件中添加头文件:
      #include "driver_dht11_basic.h"
    2. 在【static void _usr_init(void)】方法上面添加温度相关方法
      static Timer sg_temperatureReportTimer;
      
       void temperature_report_task(void* params)
       {
           printf("dht11 init.\r\n");
           dht11_basic_init();
      
           float temperature;
           uint8_t humidity;
      
           for (;;)
           {
               if (expired(&sg_temperatureReportTimer))
               {
                   dht11_basic_read(&temperature, &humidity);
                   blog_info("%.2f C degree\t%u%%", temperature, humidity);
                   sg_ProductData.m_current_temp = temperature;
                   // 标记current_temp属性已更改
                  set_property_state(&sg_ProductData.m_current_temp, eCHANGED);
                  // 触发报告任务,通知有新的数据需要上报
                  xTaskNotifyGive(report_task_handle);
                  countdown_ms(&sg_temperatureReportTimer, 10 * 1000); // 设置下一次触发时间间隔
               }
               vTaskDelay(1000 / portTICK_PERIOD_MS); // 每秒检查一次是否到期
           }
       }
      
    3. 调整代码顺序。将下面方法放在【void temperature_report_task(void* params)】上面,避免报错
      /*set property state, changed or no change*/
       static void set_property_state(void* pProperyData, eDataState state)
       {
           int i;
      
           for (i = 0; i < TOTAL_PROPERTY_COUNT; i++) {
               if (sg_DataTemplate[i].data_property.data == pProperyData) {
                   sg_DataTemplate[i].state = state;
                   break;
               }
           }
       }
      
    4. 修改static void _usr_init(void)方法
      static void _usr_init(void)
       {
           // led_gpio_init(LED_PIN);
           // key_init(KEY_PIN);
           xTaskCreate(report_task, "rptask", 2048, NULL, 16, &report_task_handle);
      
           // 初始化温度上报定时器,设定首次触发时间为立即执行
           countdown_ms(&sg_temperatureReportTimer, 0);
           xTaskCreate(temperature_report_task, "tempReportTask", 2048, NULL, 16, NULL);
      
           blog_debug("add your init code here");
       }
      
    5. **修改代码
      image-20250404030254887.png
      **
      1. #define TOTAL_PROPERTY_COUNT 6 // 5改6
         #define MAX_STR_NAME_LEN     (64)
        
         static sDataPoint sg_DataTemplate[TOTAL_PROPERTY_COUNT];
        
         typedef enum {
             eCOLOR_RED = 0,
             eCOLOR_GREEN = 1,
             eCOLOR_BLUE = 2,
         } eColor;
        
         typedef struct _ProductDataDefine {
             TYPE_DEF_TEMPLATE_BOOL   m_light_switch;
             TYPE_DEF_TEMPLATE_ENUM   m_color;
             TYPE_DEF_TEMPLATE_INT    m_brightness;
             TYPE_DEF_TEMPLATE_STRING m_name[MAX_STR_NAME_LEN + 1];
             TYPE_DEF_TEMPLATE_OBJECT m_position;
             TYPE_DEF_TEMPLATE_FLOAT m_current_temp; // 添加新的温度属性
         } ProductDataDefine;
        
      2. 添加新的代码
        image-20250404030154001.png
        _init_struct_position();
             sg_ProductData.m_position = (void*)&sg_StructTemplatePosition;
             sg_DataTemplate[4].data_property.data = sg_ProductData.m_position;
             sg_DataTemplate[4].data_property.struct_obj_num = TOTAL_PROPERTY_STRUCT_POSITION_COUNT;
             sg_DataTemplate[4].data_property.key = "position";
             sg_DataTemplate[4].data_property.type = TYPE_TEMPLATE_JOBJECT;
             sg_DataTemplate[4].state = eCHANGED;
        
             //温度
             sg_ProductData.m_current_temp = 0.00; // 设置初始值
             sg_DataTemplate[5].data_property.key = "current_temp"; // 注意索引应根据实际总数调整
             sg_DataTemplate[5].data_property.data = &sg_ProductData.m_current_temp;
             sg_DataTemplate[5].data_property.type = TYPE_TEMPLATE_FLOAT;
             sg_DataTemplate[5].state = eCHANGED;
        
    6. 修改WiFi连接信息(可选。也可以蓝牙配网,但要注意手机权限和功能需要正常开启,调整部分产品选项)

      \applications\iot-solution\qcloud_demo\sdk_app_qcloud\main.c
      中将【static bool wifi_info_read()】方法修改如下
      static bool wifi_info_read()
       {
           // 硬编码设置 WiFi 名称和密码
           const char *default_ssid = "WiFi名";
           const char *default_passwd = "WiFi密码";
      
           // 设置 SSID
           strncpy(sta_ssid, default_ssid, sizeof(sta_ssid) - 1);
           sta_ssid[sizeof(sta_ssid) - 1] = '\0'; // 确保字符串以 NULL 结尾
           blog_info("sta_ssid:%s", sta_ssid);
      
           // 设置密码
           strncpy(sta_passwd, default_passwd, sizeof(sta_passwd) - 1);
           sta_passwd[sizeof(sta_passwd) - 1] = '\0'; // 确保字符串以 NULL 结尾
           blog_info("sta_passwd:%s", sta_passwd);
      
           // 返回 true 表示成功
           return true;
       }
      
    7. 根据提示编译并上传。过程中可能需要按2号按键位置以便上传。上传完成后需要按2号按键重启设备。
      注意:
      上传时避免COM口被其它软件占用

其它内容

腾讯物联网代码生成和调试网址

腾讯云物联网开发平台小程序 SDK 的使用示例

IoT 应用端 App & SDK

物联网开发平台说明

基于 TCP 的 MQTT 接入文档

物模型协议

**Topic列表
image-20250404033818710.png
**

──── 1人觉得很赞 ────

使用道具 举报

学习
您需要登录后才可以回帖 立即登录
高级模式
返回
统计信息
  • 会员数: 28305 个
  • 话题数: 40305 篇