1 前言
网上买的婴儿洗澡盆,上面自带有一个温度显示计,但是没用几次就不显示了。反馈给商家之后,商家二话不说直接又寄过来一个带温度计的支架。但是,没用几次又坏掉了。
也不太好意思再找商家了,想着自己来做一个吧,正好材料手边都是有的。
2 动手开始
首先从自己平常用的物料里面找到了如下的几件:

一个ESP32S2 mini板, 一个OLED 0.96寸显示屏,一个不锈钢外壳的DS18B20温度传感器。是的!物料就是这么简单的三样。
为了缩小体积,直接用线将这些原件焊接起来。
焊接好之后就像下图这样(这是已经烧录完程序的样子)。

3 编写代码
使用arduino进行代码编写。
#include <OneWire.h>
#include <DallasTemperature.h>
#include "SSD1306Wire.h"
// Initialize the OLED display using Arduino Wire:
SSD1306Wire display(0x3c, 3, 2, GEOMETRY_128_64);
// 定义DS18B20数据口连接ESP32的4号IO上
#define ONE_WIRE_BUS 4
// 初始连接在单总线上的单总线设备
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup(void)
{
// 设置串口通信波特率
Serial.begin(9600);
Serial.println("Dallas Temperature IC Control Library Demo");
// 初始库
sensors.begin();
display.init();
display.flipScreenVertically();
display.setFont(ArialMT_Plain_24);
display.drawString(0, 0, " Now Temp ");
display.display();
}
void loop(void)
{
sensors.requestTemperatures(); // 发送命令获取温度
Serial.print("Temperature for the device 1 (index 0) is: ");
String str = String(sensors.getTempCByIndex(0));
Serial.println(str);
display.clear();
display.drawString(0, 0, " Now Temp ");
display.drawString(20, 32, str);
display.display();
delay(500);
}4 设计外壳
用solidworks简单的设计一个外壳,方便保护电路,也方便使用。

使用3D打印机把这个外壳打印出来。安装上就好啦。
5 最终效果
澡盆放上水,试试温度。

非常不错!最后放上婴儿洗澡时使用的实景图。

我要赚赏金
