前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【开发者成长激励计划-基于TencentOS Tiny 智能纸巾盒方案】

【开发者成长激励计划-基于TencentOS Tiny 智能纸巾盒方案】

原创
作者头像
谭广健
修改2022-08-01 11:15:10
3.3K3
修改2022-08-01 11:15:10
举报
文章被收录于专栏:腾讯云IoT腾讯云IoT

1、方案概述

此方案是建基于TencentOS Tiny CH32V\_EVB RISC-V开发套件。开发板是采用沁恒RISC-VMCUCH32V307VCT6芯片,CH32V305/7系列是基于沁恒自研RISC-V架构微处理器青稞V4系列设计的32位工业级互联型微控制器,配备了硬件堆栈区、快速中断入口,在标准RISC-V基础上大大提高了中断响应速度。加入单精度浮点指令集,扩充堆栈区,具有更高的运算性能。扩展串口UART数量到8组,定时器到10组,其中4组高级定时器。提供USB2.0高速接口(480Mbps)并内置了PHY收发器,而以太网MAC升级到千兆并集成了10M-PHY模块,并且板载有esp8266 WiFi模组,支持腾讯云固件,这样提供了强大多元化的网络传输能力。同时板载有1.54寸 IPS高清显示屏,支持240\*240分辨率,可以即时反馈相关的数据信息。再结合TencentOS Tiny开源物联网操作系统简便快速的开发如虎添翼。配合腾讯云物联网开发平台IoT Explorer 和腾讯连连小程序能高效地开发出基于物联网应用技术的智能设备。

TencentOS tiny整体架构
TencentOS tiny整体架构
CH32V_EVB RISC-V
CH32V_EVB RISC-V

2、方案落地

由于TencentOS Tiny CH32V_EVB RISC-V开发套件功能强大可以通过对接不同的传感器实现不同的功能组合,因此我们这次就通过DHT11传感器和红外检测传感器,实现一个简单的数据据上报系统。

方案架构
方案架构

这次我们设想的应用场景是智能纸巾盒,通过DHT11传感器获取环境的温度和湿度并且进行实时上报。而红外检测传感器则负责对纸巾有没进行判断,并将结果进行上报。通过腾讯云物联网开发平台IoT Explorer进行数据交互,并以腾讯连连小程序进行实时反馈。

传统纸巾盒没纸不易发觉
传统纸巾盒没纸不易发觉

3、方案组件

3.1  DHT11传感器

DHT11是一款有已校准数字信号输出的温湿度传感器。 其精度湿度±5%RH, 温度±2℃,量程湿度5~95%RH, 温度-20~+60℃。

DHT11
DHT11

3.2 红外检测传感器

红外检测传感器对环境光线适应能力强,其具有一对红外线发射与接收管,发射管发射出一定频率的红外线,当检测方向遇到障碍物(反射面)时,红外线反射回来被接收管接收,经过比较器电路处理之后,绿色指示灯会亮起,同时信号输出接口输出数字信号(一个低电平信号),可通过电位器旋钮调节检测距离,有效距离范围2~30cm,工作电压为3.3V-5V。

红外检测传感器
红外检测传感器

4、方案亮点

  • 软件业务设计解耦,可拓展性强
  • 支持多平台快速适配与工程迁移
  • 支持腾讯连连小程序数据上下行(温湿度、纸巾状态)
  • 支持腾讯云IoT Explorer平台实时查看上报数据信息(对接腾讯连连小程序数据上行)
  • 支持腾讯连连微信公众号、腾讯连连小程序信息推送(没纸)
  • 采用腾讯云可视化编辑器进行腾讯连连小程序界面的布局、事件、属性关联等。

5、方案实现

方案的核心主要在于TencentOS Tiny与传感器的联通和数据通MQTT传输协议上报到腾讯云IoT Explorer,并通过腾讯连连小程序进行反馈。

5.1 TencentOS Tiny与传感器的联通

与传感器进行联通首先要对传感器进行初始化,就是告诉TencentOS Tiny那些GPIO口是有数据上报的,我们这里就红外检测传感器举个例子吧。

代码语言:javascript
复制
#define infrared_PORT GPIOD
#define infrared_PIN GPIO_Pin_7   //设置GPIO  口
#define infrared_RCC RCC_APB2Periph_GPIOD
#define INFRARED_STATE() GPIO_ReadInputDataBit(infrared_PORT,infrared_PIN)//读红外的状态

void infrared_INIT(void)//红外测试
{
    GPIO_InitTypeDef GPIO_InitStructure;//定义结构体变量
    RCC_APB2PeriphClockCmd(infrared_RCC,ENABLE);
    GPIO_InitStructure.GPIO_Pin=infrared_PIN;  //选择你要设置的IO口
    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;  //设置浮空输入
    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;   //设置传输速率
    GPIO_Init(infrared_PORT,&GPIO_InitStructure);      /* 初始化GPIO */
}

PS.如果对GPIO陌生请参阅我之前的文章吧【什么是GPIO,它有什么用

这样就初始化了GPIO的端口,那怎么获得红外检测传感器的数值呢?就通过INFRARED_STATE()可以获得了,好吧上代码。

代码语言:javascript
复制
if(INFRARED_STATE()==1){
   LCD_ShowChinese(20,20+42+38,"当前没障碍物",BLACK,WHITE,32,0);
}else{             
   LCD_ShowChinese(20,20+42+38,"当前有障碍物 ",YELLOW,RED,32,0);
}

5.2 连通腾讯云物联网开发平台IoT Explorer

在获得数据后就需要上报,我们这里就直接调用mqtt_iot_explorer.c这个文件。改一下就是了,首先必须改的是wifi连接,然后就是注册腾讯云物联网开发平台IoT Explorer

代码语言:javascript
复制
 esp8266_tencent_firmware_join_ap("SSID", "15875012590");  //修改你的WIFI热点

注册腾讯云物联网开发平台IoT Explorer 三元素:

代码语言:javascript
复制
#define PRODUCT_ID              "产品ID"
#define DEVICE_NAME             "设备名称"
#define DEVICE_KEY              "设备秘钥"

5.3数据通MQTT传输协议上报到腾讯云

数据是通过MQTT进行JSON格式的传输,所以必须将相关的JSON换为你腾讯云上物型JSON格式。

代码语言:javascript
复制
#define REPORT_DATA_TEMPLATE "{\\\"method\\\":\\\"report\\\"\\,\\\"clientToken\\\":\\\"20220729\\\"\\,\\\"params\\\":{\\\"motionAlarm_state\\\":%d\\,\\\"temperature\\\":%d\\,\\\"humidity\\\":%d}}"

最近后就推送到腾讯云的物联网开发平台IoT Explorer 。

代码语言:javascript
复制
memset(payload, 0, sizeof(payload));
snprintf(payload, sizeof(payload), REPORT_DATA_TEMPLATE,INFRARED_STATE(), temperature,humidity);
tos_tf_module_mqtt_pub(report_topic_name, QOS0, payload)

这样假设一切顺利的就可以再设备云端日志,上面看到实时发送来的数据

设备发送的数据
设备发送的数据

还是看看我的效果吧【视频播放地址】。。

视频内容

6、关于屏显示汉字

由于是移值了系统自带的LCD模块驱动代码,所以如果中文显示是需要在lcdfont.h中植入相关的字模,字模可以通过字模

软件PCtoLCD2002进行生成,要注意一点的就是字体的大小16、24、32。

注意字体大小
注意字体大小

7、PPT介绍

PPT介绍

8、活动收获

首先很荣幸能参与到这次比赛,让我加深了TencentOS-tiny的开发认知,也对沁恒RISC-VMCUCH32V307VCT6芯片有了深层次的了解。的确沁恒RISC-VMCUCH32V307VCT6芯片是一个不错的国产芯片再配合TencentOS Tiny 是一款不错的物联网开发入门和进阶级的方案。本次方案也只是抛砖引玉,望各位同袍功能努力研究,制作更多优势的物联应用方案。由于本人水平有限,研究动手能力不强;并不太善长表述,且文中有错漏之处望多包涵。

GitHub上不了,,传Gitee算了。。

代码语言:javascript
复制
代码地址:https://gitee.com/jmtgj/tencent-os-tiny-ch32-v307.git

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、方案概述
  • 2、方案落地
  • 3、方案组件
    • 3.1  DHT11传感器
      • 3.2 红外检测传感器
      • 4、方案亮点
      • 5、方案实现
        • 5.1 TencentOS Tiny与传感器的联通
          • 5.2 连通腾讯云物联网开发平台IoT Explorer
            • 5.3数据通MQTT传输协议上报到腾讯云
            • 6、关于屏显示汉字
            • 7、PPT介绍
            • 8、活动收获
            相关产品与服务
            TencentOS Server
            TencentOS Server 是腾讯云推出的 Linux 操作系统,它旨在为云上运行的应用程序提供稳定、安全和高性能的执行环境。它可以运行在腾讯云 CVM 全规格实例上,包括黑石物理服务器2.0。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档