【涂鸦智能】基于涂鸦智能的吉他温湿度传感器
简介
基于涂鸦智能的物联网温湿度传感器
简介:基于涂鸦智能的物联网温湿度传感器开源协议
:GPL 3.0
描述
1.项目简介:
本设计项目用于立创EDA与涂鸦智能平台联动开展的物联网寒假训练营活动的项目作业,主题是基于涂鸦智能物联网模块+MCU控制的室内温湿度传感器。
此电路设计的WiFi物联网模块选择涂鸦智能平台下的WBR3模块,MCU主控芯片选择ATmega328PB-AU(注意B)。所述的室内温湿度传感器采用高精度数字温湿度传感器SHT30-DIS,支持Micro 5P【5V】供电与锂电池【3.7V】供电两种模式,设计有自动切换供电、锂电池充电与锂电池电量显示等功能。电路原理图的绘制与PCB的设计均使用立创EDA客户端;外壳设计使用SolidWorks 2020,其制造工艺选择3D打印技术制造,材料为PLA材料。
本项目的物联网温湿度传感器可对室内的温湿度数据进行实时采集与处理,通过对WBR3进行智能配网可通过手机端涂鸦APP查看,同时温湿度数据还能够通过0.96寸的4针OLED屏实时显示。所采集到的室内的温湿度变化数据能够存储云端并以折线图的形式展现APP端,同时主控芯片引出四个引脚,并接上红、绿、蓝、橙四种LED,可自定义开发温度、湿度报警机制,配网模式指示等。
2.功能介绍:
-
1. 基于涂鸦智能平台的物联网WiFi模块WBR3开发,可通过涂鸦智能App远程监控查看数据;
-
2. 配置SHT30高精度数字温湿度传感器,采集室内的温湿度数据;
-
3. 0.96寸4针OLED屏实时显示温湿度数据,每隔20s刷新一次;
-
4. 拥有WiFi智能配网功能,联网即可无线控制;
-
5. 支持Micro 5P 5V供电与锂电池3.7V供电;
-
6. 供电电路能够自动切换,5V供电时能够终止锂电池的供电;
-
7. 锂电池电量显示功能,指示锂电池剩余电量;
-
8. Micro 5V供电时能够为锂电池充电;
-
9.引出ISP烧录口,方便bootloader的烧写调整;
-
10.MCU引出4路引脚,可控制4种颜色的LED指示灯:红、绿、蓝、橙。
3.设计特点:
- PCB面积(7.6cm×5.4cm)限制在10cm×10cm内,打板成本低;
- 支持3.7V锂电池与5V的type-C接口两种模式供电,有电量显示与充电功能;
- 支持通过WiFi无线获取数据,随时随地;
- 体积小,重量轻,结构紧凑,制作成本低;
- 外形简约,运行稳定, 效果炫酷。
4.元件选型:
-
1.物联网模块选用涂鸦智能的低功耗嵌入式WBR3模块,支持WIFI、蓝牙等无线通讯方式;
-
2.MCU选择ATmega328PB-AU,相比于ATmega328P,新增多组iic,spi,uart硬件通讯串口,功能更为强大,支持Arduino编程,同时也支持更换成ATmega328P;(引脚功能都一样)
( 需去Github上下载配置相应的MiniCore开发板库:Arduino IDE的首选项中添加开发板管理网址:https://mcudude.github.io/MiniCore/package_MCUdude_MiniCore_index.json,
开发板管理中搜索MiniCore下载。)
-
3.5V供电口选用micro 5P接口,与安卓接口的手机数据线通用,使用方便;
-
4.温湿度传感器选择SHT30,测量精度高,反应灵敏,功耗低,价格合适;
-
5.LED、电容、电阻均选择0603封装,节省空间,又锻炼焊接技巧;
-
6.锂电池充电模块选择TP4095,使用方便,充电电流稳定,搭配LED指示效果强;
-
7.电量显示模块选择HM1160,成本低廉,原理易懂,节省设计内容,效果稳定,功耗低,不过要去淘宝采购;
-
8.显示屏选择0.96寸4针OLED-黄蓝屏,采用I2C通讯,成本低廉,显示效果稳定,功耗低;
-
9.USB转TTL电路选择CH340C管理,成本低,效果稳定,原理易懂,常用选择;
-
10.选择PS7516作为3.7V转5V升压电路的DC-DC管理芯片,升压效率高,升压效果棒。
5.APP界面:

配网步骤:
- (1)打开PCB板上的总开关;
- (2)打开手机端的涂鸦APP;
- (3)使设备与手机连接在同一WIFI下;
- (4)点击涂鸦APP右上角添加设备;
- (5)点击自动搜搜,等待配网成功。
- 注:如果自动搜索超时,可以选择手动搜索。
Tuya模组调试成功截图:
- MCU模拟:

- 模组模拟:

6.程序设计:
GitHub地址:https://github.com/BlackRain543/Indoor-temperature-and-humidity-sensor.git
1.所使用的Arduino库文件:
#include <U8g2lib.h> //OLED驱动
#include <ClosedCube_SHT31D.h> //SHT30驱动
#include <SoftwareSerial.h> //通信串口设置
- U8G2为节省RAM消耗,采用2页缓存,每10s更新一次数据,同时自定义制作了简单的中文字库;
- ClosedCube_SHT31D库读取SHT30传感器所采集到的温度和湿度数据;
- SoftwareSerial库实现MCU与涂鸦模块的串口通信。
2.LED指示设置:(蓝,绿LED指示湿度,红、橙LED指示温度)
- 温度<25℃时, 红LED灭,橙LED亮;
- 25℃<温度<30℃时,红LED亮,红LED灭;
- 温度>30℃时, 红LED亮,橙LED亮。
- 湿度<60%时, 蓝LED灭,绿LED亮;
- 60%<湿度<75%时, 蓝LED亮,绿LED灭;
- 湿度>75%时, 蓝LED亮,绿LED亮。
7.外壳设计:
【SolidWorks建模,Keyshot 9渲染。】
外壳设计思路:
- 建模思路依据3D打印制造工艺,无需支撑,保证了壳体表面的光滑度,结构强度与制造的流畅性,外壳整体四周多处采用镂空结构,增强了外壳的散热能力与通风能力,优化了LED灯的指示效果。
- 外壳的主要镂空图形采用六边形蜂窝,简约的同时增强科技感。
- 对开关,tuya联网模块天线,Micro接口等外露处切出空间以方便调试,温湿度传感器处所对应的壳体位置周围镂空以增加气流通畅性,保证所采集数据的稳定性、实效性与可信度。
3D打印参数(总共4件):层高0.15mm,填充(15%),无需支撑。


8.成品展示:






9.设计心得:
经过本次的物联网训练营基于MCU方案的PCB项目设计,学习到了许多与实际设计PCB中相关的新知识,例如锂电池的电量检测,锂电池的充电电路,ATmega328p基于供电电压对晶振的选择等,同时进一步熟悉了立创EDA的操作,了解到了更多关于PCB器件布局,布线的设计细节。
本次设计在电源管理方面进行了较多尝试,初次尝试了设计与MCU相关的电路。在起初设计过程中,跟着训练营的课程与去开源广场的参考并未感觉到有多少困难,但是当收到PCB板并焊接完成后上电的那一刻才发现到了第一次崩盘:无法烧录bootloader引导程序。毕竟Arduino开发与STM32相比更简单是因为IDE里有很多铺垫,但当自己铺不上的时候就倍感难顶。而且由于本人工具缺少难以拆焊,飞线本领也不到家,所以本人当即修改引出烧录口后与调整下载电路后进行了第二次打板,毕竟新年将至时间不多了。
然而第二次打板后的硬件调试过程依旧阻碍重重。。。
- [1]由于tuya模块的工作电压为3.3V,且锂电池供电电压一般在3.7V以上,Atmega328PB也只能采用3.3V供电,所以只能选择8MHz的无源外接晶振。也正由于此,bootloader的烧写上出现诸多问题。首先ATmega328PB与ATmega328P所识别的签名不相同,经过一番网上查询后深入.conf文件内修改了签名才能烧录成功引导程序。然后由于8MHz晶振的问题,导致程序内delay(1000)的真实延时从1s变为2s,串口的波特率设置19200时,实际波特率是9600。所以导致的问题是Arduino IDE无法直接通过Micro口接入通过CH340C烧写程序,报错一直为超时。然而最后的临时解决办法是用另一块Arduino UNO当做了ISP下载器而烧写的程序。这是第一个折腾了很久的困难点。
- [2]紧接着开发程序的过程中,起初挺正常,OLED的显示刷新很流畅,SHT30也能读取数据。但放了一晚上过后,SHT30的数据无法正常读取,检查后发现返回错误代码-101。最后去库文件中搜寻发现-101错误对应的是CRC检验错误。CRC是啥?本人直接去学习网站B站开始了学习。在了解CRC原理后,可以缩小问题所在的区间为软件上。本人又多去尝试了几个有关SHT30的库,最终此问题的解决正是在程序中的修改得以解决(虽然用的还是最初的那个库)。这是第二个折腾了比较久的困难点。
- [3]随后的开发总算顺畅了点,但很快又给我绊了一跤:动态内存占用99%(`゚Д゚´)。这下比较麻烦,毕竟调库一时爽,溢满火葬场,所以本人通过不断的注释编译,最终定位在U8G2库占用较多。起初是怀疑所导入的自带字库的问题,本人又来到了学习网站b站学习如何自定义u8g2字库。虽然后来可算腾了点空,但当tuya的SDK移植接踵而来时,又差点满了。后来还是去CSDN把这个U8G2库从头到尾学习了一遍后发现,原来是我页数缓存调用太多了,其实屏幕一两页的缓存就够我不小心设置成了最大页数缓存,所以别看刷新率挺高,代价挺不小。经过稍微更改,动态内存占用只占51%啦,可算又舒畅了许多。
- [4]然而SDK的移植对于我这种初次尝试的小白又是一个不小的麻烦。[原来根本都不知道SDK是什么]tuya给的是一大堆文件,所以根本不知道先看哪个好。翻来翻去在protocol.c可算找到了一些步骤指示。但当一如往常地进行调库操作时,报错出了一堆奇奇怪怪的东西,搜搜查查后推断为.c文件在Arduino IDE这边编译不好办,不过好在C语言与C++关系比较近,后缀改成.cpp后就能正常运行了。
- [5]代码可算调试完,但是这时候才发现tuya模块没给我一丁点回应,调用了几个判断函数后检查发现到处都是failed,unknown等。难不成坏了?还真坏了,后来去群里询问才知道这模块通5V电压就没了,然而我那块UNO的ISP的3.3V引脚坏了,一直都是用5V下载的程序。
- [6]然后好在tuya的模块质量过硬,5V也没大问题,后续的配网调试通过tuya的调试助手也还算较为顺利地完成了。由于我目前就一个手机,所以配网流程写在“第五部分”了,tuya平台的配网步骤还是十分简便,如果SDK的移植调试好了的话。
- [7]单独锂电池供电的时候会出现tuya模组供电电压不足的问题,4V经过AMS1117稳压后续只有2.3V左右的电压,看来第三次打板也躲不过了 ̄□ ̄||。
经过本次的立创涂鸦物联网训练营,感觉真的学到了很多东西,因为不去学这么多东西根本搞不到这一步,哈哈,哈。这次项目的制作总共打了三次板(换了三种颜色嘿嘿)。每一个卡壳的困难点起始最终解决时所作的改动基本就没修多少地方,之所以耗时是因为,你要把所有你可能出问题的地方都筛一遍,不断缩小BUG范围,才能基本确定到底是哪里出现了问题。Ardunio平时虽然平时用着挺顺手,但从硬件与底层上搞起来其实挺不简单,很多地方之所以方便是因为有很开拓者已经把路给铺好了。希望在自身能够在后续的MCU开发项目中能够更加熟练吧。
[但是如果下次开发MCU,我决定选择STM32。ヾ(・ω・`。)]


立创EDA平台与涂鸦智能提供了开发者们一个很好的展示与交流平台,我尤其喜欢的是开源广场上的稀奇古怪、富有创新的的PCB设计,好多都想做出来玩一遍。Tuya智能同样供给了开发者们一个很好交流平台,在物联网开发方面给开发者们铺垫了一个很完善的基础平台营造了良好的生态。在这段时间里的一系列训练营的直播与交流中弥补我在建模与程序之间电路PCB设计这座桥梁之间的空缺,以为我也会努力成为一位能提供诸多完整精良的开源项目的开发者。非常感谢立创EDA和涂鸦智能提供给了一个很好的锻炼机会。
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程

评论