快速设计一款温湿度产品原型(MCU接入)

更新时间2020-09-01 03:04:47

概况

温湿度传感器作为基础传感类别,在智能家居领域应用广泛。通过温湿度传感器采集温度和湿度,可以实现多样化的智能场景联动。比如在炎热的夏季,温湿度传感器检测到室内温度高于 29℃,联动打开空调,当室内温度降到 23℃ 以下时,联动关闭空调,整个过程自动智能控制调节,省心又省电,让温度始终处于舒适的范围,极大的方便了我们的生活。

基于涂鸦平台可以简单、快速完成一款智能温湿度传感器的开发,在 App 端实现产品智能联动,本文将介绍如何使用涂鸦三明治开发板快速完成一个智能温湿度传感器产品原型。

物料清单

硬件 (3)
  • 涂鸦三明治温湿度传感器功能板

    数量:1

    查看详情

  • 涂鸦三明治 Wi-Fi MCU 通信板(E3S)

    数量:1

    查看详情

  • NUCLEO-G071RB

    数量:1

    STM32G071RB MCU 官方开发板查看详情

步骤

  • 第 1 步:方案介绍

    MCU 方案与 SoC 方案不同,传感器和联网模组的驱动代码写在 MCU 中,开发者可以自己开发 MCU 代码,拥有更多的可玩性。因此在开发前,我们需要对方案有个整体了解,方便后续开发。

    涂鸦三明治开发板温湿度传感套件中,传感器板负责采集温湿度数据通过 I2C 接口传给 MCU ,MCU 控制板,通过串口 与 Wi-Fi 通信板连接,使用涂鸦智能 App 配网,可以将湿度传感器数据展现在手机端,并与其他智能设备联动。MCU 型号为 STM32G071RB,Demo 教程采用 Arduino IDE 进行编程,可方便的移植于各 Arduino 系列开发板。

  • 第 2 步:硬件连接

    本次使用的涂鸦三明治开发板温湿度传感套件主要包含:

    • 温湿度传感器功能板,板载 SHT30 温湿度传感器,I2C 接口,负责温湿度数据的采集传输。
    • Wi-Fi MCU 通信板,板载涂鸦 TYWE3S 模组,负责智能化连接。模组已烧录通用固件,MCU 对接涂鸦串口协议,即可使用模组+App+云涂鸦一站式智能化服务。
    • MCU控制板,采用ST官方 NUCLEO-G071RB 开发板,负责传感数据接收和模组通讯控制。NUCLEO-G071RB 开发板支持 Arduino 接口,本片教程demo我们也将基于 Arduino 开发演示。

    将三明治开发板套件控制板、通讯板、功能板拼接组装,实物效果如下图。
    image.png

  • 第 3 步:例程下载

    软件开发过程主要基于 Arduino 实现 MCU 与传感器和模组协议对接。首先调通 MCU 和模组的通讯,可以实现App配网,MCU 数据传输到App。

    步骤 3.1:环境搭建

    环境搭建教程:三明治开发板环境搭建
    环境搭建的教程主要讲如何在 Arduino IDE 中添加ST开发板,集成 STM32CubeProgrammer 实现编译下载功能,初学开发者需仔细阅读。

    image.png

  • 第 4 步:开发实战-通信板调试

    体验了 demo 例程后,接下来我们详细讲解讲解整个demo例程实现的具体步骤,开发者可以根据步骤,快速开发一个属于自己的温湿度传感器。

    步骤 4.1:创建产品

    创建工程,下载移植涂鸦 MCU SDK 开发包详细教程:MCU快速上手
    具体步骤教程已比较详细,这里不做赘述,不过在创建产品过程中要注意我们要创建的产品是温湿度传感器,MCU 对接时选择自定义方案,才能下载到 MCU 开发资料包。
    image.png
    功能根据自身需求选择,这里基本功能可默认只选温湿度显示功能。
    image.png
    固件选择时要注意,Wi-Fi 模组默认的固件是通用固件,非低功耗固件,我们需要将功耗类型改为标准功耗,固件选择标准通用固件,我们才能下载到相关 MCU 开发包。
    image.png
    image.png

    步骤 4.2:硬件测试

    下载到 MCU 开发包后,使用开发包中的涂鸦模组调试助手,开发者可以使用助手模拟 MCU 模式,配合调试模组通讯板,验证模组是否通讯正常,同时也可以熟悉涂鸦串口协议提高对接效率。确定通信板正常可用的,可以跳过此步骤。若调试过程中对协议收发有疑问,也可以使用此助手协助查看正确数据交互格式。

    使用步骤可参考:涂鸦模组调试助手使用说明链接

    image.png

    步骤 4.3:移植 MCU SDK

    移植调试详细教程:MCU SDK开发包移植调试
    移植成功配网会看到选择的产品面板,温湿度现在展现的是显示初值,接下来我们需要移植SHT30驱动代码,获取温湿度数据传到App展示。
    image.png

  • 第 5 步:开发实战-功能板调试

    SHT30驱动下载链接:SHT30_Drive.zip

    添加SHT30驱动到工程中,以周期模式获取为例,应用层参考代码:

    #include <Wire.h>
    #include <SHT3XD.h>
    
    ClosedCube_SHT3XD sht3xd;
    
    void setup()
    {
    	Serial.begin(9600);
    
    	sht3xd.begin(0x44);
    	Serial.print("SHT3XD Serial #");
    	Serial.println(sht3xd.readSerialNumber());	
    
    	if (sht3xd.periodicStart(REPEATABILITY_HIGH, FREQUENCY_10HZ) != NO_ERROR)
    		Serial.println("[ERROR] Cannot start periodic mode");
    
    }
    
    void loop()
    {
    	printResult("Periodic Mode", sht3xd.periodicFetchData());
    	delay(250);
    }
    
    void printResult(String text, SHT3XD result) {
    	if (result.error == NO_ERROR) {
    		Serial.print(text);
    		Serial.print(": T=");
    		Serial.print(result.t);
    		Serial.print("C, RH=");
    		Serial.print(result.rh);
    		Serial.println("%");
    	}
    	else {
    		Serial.print(text);
    		Serial.print(": [ERROR] Code #");
    		Serial.println(result.error);
    	}
    }
    
    

    能成功获取温湿度传感器数据后,MCU 需要将数据传输给App展示。模组端对同样的数据会进行过滤,因此建议数据周期性获取,当数据有改变时再上报,减少数据上报频率。上报函数如下:

    if(updata_flag==1)
    {
      mcu_dp_value_update(DPID_TEMP_CURRENT,T); //VALUE型数据上报;
      mcu_dp_value_update(DPID_HUMIDITY_VALUE,RH); //VALUE型数据上报;
    }
    
    

    image.png

  • 第 6 步:场景联动(扩展功能)

    所有功能调试通过后,App 端已经可以接收到温湿度传感器的数据。智能传感器最大的应用场景是用来收集传感数据来和其它产品进行联动,如果开发者手中有涂鸦生态设备或开发板,可以在App端实现场景联动功能的配置。

    场景联动设置教程:场景联动设置

    image.png

小结

基于涂鸦平台,使用涂鸦三明治开发板,Arduino IDE编程,快速实现一款智能温湿度传感器产品原型搭建

相关 DEMO 教程
点击获取服务和帮助