发作品签到
标准版

【涂鸦智能】物联网温湿度传感器

工程标签

6.5k
0
0
24

简介

涂鸦智能--WB3S&STM32F0--物联网温湿度传感器

简介:涂鸦智能--WB3S&STM32F0--物联网温湿度传感器

开源协议

GPL 3.0

创建时间:2021-01-18 11:38:32更新时间:2022-06-08 14:36:44

描述

立创&涂鸦训练营第二期--物联网温湿度传感器

基于涂鸦智能的小温湿度传感器,自动采集当前温湿度数据,并通过STM32 & wifi模块上传至云端,送至APP端显示

主要内容

  • 整体介绍
  • 部分电路
  • 部分程序
  • 注意事项
  • 实际效果

整体介绍

  • 本次工程是一个基于涂鸦智能的温湿度传感器,采用低代码 MCU 方案,SHT20负责采集温湿度,涂鸦物联网模块与STM32F0单片机结合使用,实现温湿度数据的采集和上报,并将数据可视化。
  • 传感器可以由两块PCB构成,通过排针排母及四颗固定柱连接,整体尺寸:56mm* 44mm*15mm。下层板包含了传感器所需的各种电路,上层是一块OLED模块。
  • 供电上,可以使用3.7V锂电池或者Type-C接口供电,当两者同时接入时,默认采用USB供电,右下角按键用来实现一键开关机功能。
  • OLED接口为IIC通信接口,可以在OLED上显示当前的温湿度和其他内容,OLED也可以通过右上方按键控制是否开启显示。

部分电路

  1. 电源
    • 首先是电源的输入来源:USB接口或者单节锂离子电池(3.7V输入)
      两种电源都是最常见的电源来源,为了更好的管理两者,在电源的输入端使用了锂电池和USB自动切换电路,它由一个PMOS管,肖特基二极管和电阻构成,可以做到:

      USB和电池同时接入时,切断电池供电

      USB断开时,切回到电池供电

      原理图连接如下

      首先,需要注意的是PMOS管的方向,电池电源的流入方向确实是从D(漏极)→S(源极),它利用了PMOS的体二极管。

      • 当只有USB供电时,PMOS关闭,VBUS 经过肖特基二极管后供给后续电路,由于肖特基二极管压降较低,实测大概0.26V,所以VCC得到的电压在4.8V左右。
      • 当锂电池单独供电时,R4 将 G(栅极)电压下拉到 0V,PMOS 导通,VBAT 流过MOS后供给后部电路,由于MOS内阻很小,所以只有很小的电压损耗,实测只有0.005V,故 VCC ≈ VBAT 。
      • 当两者同时接入时,VBUS 流过 D3 ,VCC 在4.8V左右,而 PMOS 的栅极 电压为VBUS = 5V,PMOS 截止,而且VCC(4.8V) > VBAT ,故电池是被切断的。
      • 如果将 PMOS 方向旋转,VBAT 由 S → D ,那么当两者同时接入时,USB 电流会流入锂电池,出现问题。
      • 当两者同时接入时,如果突然拔掉USB,由于后续电路有电容会存储一定的电荷,故不会出现整体先断电在上电的情况,而是中途不掉电,直接切换的效果
    • 一键开关机电路:借助于开关机电路,可以通过右下方的轻触按键实现一键开关机,长按两秒后开机,开机后再按一下则关机。
      原理图如下

      • 不使用时,PMOS关闭,不会有电源流入
      • 当按下按键时,PMOS 栅极 通过按键下拉到地,PMOS导通,电源流入,整体电路上电,此时,需要在初始化程序中拉高 PWR_ON 引脚电压,三极管导通,MOS栅极拉低,这样,即使松开按键,电路也会一直导通了。
      • 需要关机功能,则将 PWR_DOWN 引脚设置为输入检测,当再次按下按键时, PWR_DOWN 引脚检测到低电平,则程序控制 PWR_ON 引脚输出低电平,三极管截止,PMOS再次关断,实现关机功能。

    • LDO降压电路:电源流入后,经过一路LDO电路降压到3.3V后供给整个系统使用,为了保护电路,添加了PTC以及两个TVS二极管,整体需求的电流峰值在200mA左右,平均正常工作电流100mA。

  2. wifi模块:采用涂鸦智能的 WB3S 模块,通过串口和STM32通讯,将 1 脚拉高,焊接 R6 ,R2 悬空即可,为了满足瞬时的大电流需求,可以在VDD端可以多加一个电容。
  3. STM32系统:本次使用的单片机型号为STM32F030F4P6,M0内核,TSSOP-20封装,小体积,负责处理SHT20传感器的数据,控制OLED显示,通过串口与WB3S通信等,包含了复位,晶振,SWD接口等电路,并充分地使用了它的所有引脚.
  4. SHT20: 温湿度传感器,IIC通讯,故两个上拉电阻是必须的,为减少PCB本身的干扰,芯片周围挖槽。
  5. OLED模块:模块电路较为简单,包含一路LDO电路以及必要的阻容元件,使用IIC和STM32通讯,供电电压可使用5V或3.3V。
  6. 按键:共包含3个侧贴按键,空间占用少而且按压方便,下方SW3控制整体的开关,上方SW1为配网按键,SW2则控制着OLED的显示情况,默认开启,再次按压关闭显示。
    • 按键并联一个电容,实现简单的硬件消抖,

程序部分

  • 官方文档教程请看文档教程
  • 官方视频教程请看MCU SDK 移植
  • 这次的程序思路较为清晰,创建F0工程后,按照教程将从涂鸦下载的MCU SDK移植到工程中,然后添加SHT20驱动,OLED驱动,按键程序以及控制开关机的程序。
  • STM32 将各个模块初始化后,开机,进入while(1),利用按键触发配网,配网成功后,用SHT20采集数据,并将采集的数据上报,核心的程序为
// SDK函数
wifi_uart_service();
// 温湿度采集
temp=SHT2x_GetTempPoll();//获取SHT20 温度
Humi=SHT2x_GetHumiPoll();//获取SHT20 湿度
// 温湿度上报
mcu_dp_value_update(1,(long)temp*10); //温度数据上报,采集的 float 数据转换为 long;
mcu_dp_value_update(2,(long)Humi); //湿度数据上报,float 转换为 long ;
// 温湿度OLED显示
OLED_WS_DIS(temp,Humi);
  • 完整的程序已经放在了附件中,还请大佬指正

注意事项

  • 我手中的是micro usb接口,现在的图中已经改为了Type-C接口。
  • 板子整体平均电流在100mA,峰值电流在200mA,所以选择LDO时,需要选择最大输出超过300mA的型号。
  • 使用锂电池供电时,由于板子本身没有电池管理芯片,所以要选择带有放电保护板的锂电池,而且电池不宜长期使用,当电压不足时,应该及时充电。
  • 关于OLED显示模块,使用常见的即可,这里使用的是技新的模块,本来计划做一块和下板相同尺寸的OLED模块,使用1.3寸OLED,但是种种原因,放弃使用。
  • 程序上,有几处需要注意的地方,例如,如果使用定时器,要注意串口和定时器的中断优先级,移植SDK时的串口发送函数是用的单字节函数等等,需要留心。
void USART1_SendByte(unsigned char data)//单字节发送函数
{	
	while((USART1->ISR & USART_FLAG_TXE) != USART_FLAG_TXE);
	USART1->TDR = data;
}

实际效果

  • 几张图片:





如果有任何问题,请留言,评论。

设计图

原理图
PCB

BOM

IDNameDesignatorFootprintQuantity
110kR3,R1,R5,R130603_R_JX4
2TYPE-C 6PUSB1TYPE-C-SMD_TYPE-C-6P1
3ME6217C33M5GU3SOT-23-5_L3.0-W1.7-P0.95-LS2.8-BR1
4K2-1112SA-A4SW-01SW3,SW1,SW2KEY-TH_K2-1112SA-AXXW-XX3
50.1uC9,C23,C6,C5,C19,C2,C12,C13,C14,C15C060310

附件

序号文件名称下载次数
1
202102130132.mp4
1210
2
202102130148.mp4
368
3
程序.rar
259
克隆工程
添加到专辑
0
0
分享
侵权投诉

工程成员

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航