快速设计一款门磁传感器产品原型(Wi-Fi MCU 接入)

更新时间Invalid date

概况

智能门磁传感器在智能安防领域扮演着重要的角色,应用的场合也越来越多。离家后不确定家中门窗是否关闭?不妨打开手机确认一下。文介绍如何使用涂鸦三明治开发板快速完成一个智能门磁传感器产品原型。

物料清单

硬件 (3)
  • NUCLEO-G71RB

    数量:1

    查看详情

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

    数量:1

  • 涂鸦三明治门磁传感器功能板

    数量:1

    查看详情

步骤

  • 第 1 步:方案介绍

    MCU 方案与 SoC 方案不同,传感器和联网模组的驱动代码写在 MCU 中,开发者可以自己开发 MCU 代码,拥有更多的可玩性。因此在开发前,我们需要对方案有个整体了解,方便后续开发。
    涂鸦三明治开发板门磁传感套件中,传感器板干簧管根据开合状态输出高低电平给MCU 控制板,MCU 通过串口 与 Wi-Fi 通信板连接,使用涂鸦智能 App 配网,可以将门磁状态展现在手机端,并与其他智能设备联动。MCU 型号为 STM32G071RB,Demo 教程采用 Arduino IDE 进行编程,可方便的移植于各 Arduino 系列开发板。

  • 第 2 步:硬件连接

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

    • 门磁传感器功能板,板载两路干簧管一路触发输出为低,一路触发输出为高,开发者可根据实际情况选用。
    • 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

    步骤 3.2:下载开发资料包

    创建工程,下载移植涂鸦 MCU SDK 开发包详细教程:MCU快速上手

    具体步骤教程已比较详细,这里不做赘述,不过在创建产品过程中要注意我们要创建的产品是门磁传感器,MCU 对接时选择自定义方案,才能下载到 MCU 开发资料包。

    image.png

    功能根据自身需求选择,这里基本功能DP建议选择门磁、告警、电量。

    image.png

    固件选择时要注意,Wi-Fi 模组默认的固件是通用固件,非低功耗固件,我们需要将功耗类型改为标准功耗,固件选择标准通用固件,我们才能下载到相关 MCU 开发包。

    image.png

    image.png

    步骤 3.3:移植调试

    移植调试详细教程:MCU SDK开发包移植调试

    移植成功配网会看到选择的产品面板,接下来我们需要编写获取干簧管状态的逻辑代码。

    image.png

  • 第 4 步:软件开发-传感器调试

    干簧管受磁力影响,输出的状态为高或低电平,因此 MCU 只需读取 IO 状态,判断门磁状态即可,代码比较简单。官网读取 IO 状态代码示例:

    int ledPin = 13; // LED connected to digital pin 13
    int inPin = 7;   // pushbutton connected to digital pin 7
    int val = 0;     // variable to store the read value
    
    void setup()
    {
      pinMode(ledPin, OUTPUT);      // sets the digital pin 13 as output
      pinMode(inPin, INPUT);      // sets the digital pin 7 as input
    }
    
    void loop()
    {
      val = digitalRead(inPin);   // read the input pin
      digitalWrite(ledPin, val);    // sets the LED to the button's value
    }
    
    

    MCU 需要将数据传输给App展示,上报函数如下:

    mcu_dp_bool_update(DPID_DOORCONTACT_STATE,当前门磁); //BOOL型数据上报;
    
    
  • 第 5 步:场景联动(扩展功能)

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

小结

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