一、项目介绍
恒温杯垫是一种具有恒温维持功效的智能杯垫,可以自动感应杯子的温度,根据温度变化来保持恒定温度。产品适用于各种场合,例如办公室、家庭、餐厅、咖啡厅等公共场所及个人使用。下面将详细介绍这个项目的市场应用。
二、市场应用介绍
首先,在办公室,很多人经常因为喝咖啡或茶水而走来走去。这种情况下,恒温杯垫可以帮助用户保持饮品的温度稳定,不用担心喝不完的暖水或是被冷却了的咖啡,保持了办公效率。在家庭中,恒温杯垫也可以作为一个常用的餐具,可以帮助家庭成员保持好喝的温暖饮料等食品。
其次,对于餐厅和咖啡厅来说,恒温杯垫可以为他们提供更好的用户体验,增加顾客忠诚度.而且恒温杯垫也能增加这些商家的商品辅助销售,帮助商家提升交易率。
最后,对于个人用户,恒温杯垫也是一个非常实用的小工具。无论是平时上班、在家休息还是旅行,都可以随时使用气温杯垫保持饮品温度恒定,确保饮品的口感更加完美。
恒温杯垫市场应用较为广泛,适用范围也非常广泛,能够满足不同人群的需要。
三、项目思路
随着科技的发展,生活节奏的加快,人们忙于工作,常常忘记喝水,久而久之,人们的身体健康也受到了影响,
本次提出的设计,它可以保持杯子的温度,使用者可以调节杯子的温度,以保持最佳饮用温度。恒温杯垫的工作原理是:当杯子放在恒温杯垫上时,恒温杯垫会检测杯子的温度,并调节其内部的加热元件,使杯子保持在设定的温度。恒温杯垫采用可调节的电路,可以调节加热元件的加热程度,使杯子保持在设定的温度。它可以通过感应器检测杯子是否放置在上面,如果没有放置,保温杯垫会自动关闭加热功能,避免能源的浪费。它主要的特点:
1.使杯子保持在设定的温度,从而维持杯内水的温度。
2.温度显示:恒温杯垫通常会配备液晶屏或LED显示屏,显示当前杯中饮品的温度,让用户随时了解饮品的温度情况。
方案框图
本次方案的框图如下,我们使用的是得捷的Scheme-it来设计框架图
https://www.digikey.cn/schemeit/project/原理图-e32c001871894b03b0e8884538b15a3c
三、元器件介绍
主控芯片:乐鑫ESP32-WROOM
乐鑫ESP32-WROOM-32是一款低功耗、高性能的Wi-Fi和蓝牙双模模组,具有强大的处理能力和丰富的外设接口,适用于物联网和嵌入式应用开发。
以下是ESP32-WROOM-32的主要特点和特性:
1. 处理器性能:搭载了双核Tensilica LX6微处理器,主频高达240MHz,可提供高性能的计算和处理能力。
2. Wi-Fi功能:支持802.11b/g/n标准的Wi-Fi连接,能够实现高速稳定的无线网络连接,用于连接互联网或局域网。
3. 蓝牙功能:支持经典蓝牙(Bluetooth Classic)和低功耗蓝牙(Bluetooth Low Energy),可与其他蓝牙设备进行通信和互联。
4. 内存和存储:具备520KB的静态RAM(SRAM)和4MB的闪存存储器,可用于存储应用程序、数据和文件系统。
5. 外设接口丰富:包括多个通用IO引脚(GPIO)、SPI、I2C、UART、PWM、外部中断等接口,方便连接和控制各种外部设备和传感器。
6. 低功耗设计:采用了多种低功耗技术,包括动态功耗调节、深度睡眠模式等,以减少功耗并延长电池续航时间。
7. 安全性支持:支持Wi-Fi网络的安全功能,包括WPA/WPA2个人和企业级加密,保护数据传输的安全性。
8. 开发生态系统:乐鑫ESP32-WROOM-32热门且广泛使用,拥有庞大的开发社区和丰富的开发资源,有大量的开源库和示例代码可供开发者使用。
乐鑫ESP32-WROOM-32具备高性能、低功耗和丰富的外设接口等特点,适合用于各种物联网和嵌入式应用开发,如智能家居、智能设备、传感器网络、工业控制等领域。
称重传感器:LPS25HBR
1.数字接口:LPS25HBR采用I2C或SPI接口,可以通过这些接口与微控制器或其他数字设备进行通信。
2.压力测量范围:LPS25HBR可以测量正压力范围从260 hPa到1260 hPa,能够满足大气压力测量的需求。
3.高分辨率:传感器具有高分辨率,提供24位的数字输出精度,可实现高精度的压力测量。
4.低功耗:LPS25HBR采用低功耗设计,工作电流仅为2μA,可在电池供电的应用中延长续航时间。
5.温度补偿:传感器内置了温度补偿功能,确保在不同温度下准确测量气压,并提供温度输出。
显示器模块:OLED12864
1.高对比度和鲜明的颜色:OLED技术使得显示效果非常鲜艳,显示内容具有高对比度和广阔的色彩范围,使图像和字体的呈现更加清晰和生动。
2.快速响应时间:OLED显示屏可以非常快速地响应电信号,没有拖影或模糊效果,适合显示动态图形和视频。
3.大视角:OLED12864能够提供较大的视角范围,使得显示内容在不同角度观看时仍然保持清晰可见。
4.节能:OLED显示屏可以直接发光,不需要背光源,因此能够节约电能,特别是在显示黑色时。
5.超薄和轻巧:由于OLED12864显示屏的结构较简单,所以它通常比液晶显示(LCD)屏更薄和轻巧。
温敏电阻:PT1000
1.PT1000的电阻值随温度呈线性变化,通常是根据铂电阻的温度系数来确定。PT1000的温度系数非常稳定和可靠,使其成为许多温度测量应用中的首选传感器之一。
2.PT1000通常具有1000欧姆(Ω)的额定电阻值,这意味着在参考温度下(通常为0℃),其电阻值为1000Ω。当温度发生变化时,PT1000的电阻值会相应地发生变化。
四、原理图以及PCB介绍
以下是本次项目使用KiCad绘制的设计框图以及PCB图
如图所示,本次设计主要由乐鑫公司的ESP32为主控芯片,通过控制LM75温度传感器感受水温之后通过ESP32的i2c接口上传数值,在通过OLED12864实时显示水温。
使用Scheme-it设计的原理图导出到KiCad后,有一些地方并不匹配,比如网络标签并不识别,用户自定义的符号引脚未分配等等,因此需要继续更改加以完善。经过完善的原理图如下,与阶段1中并没有什么改动,只是增加了几个切换开关便于调试。
五、成品展示
正在加热
六、程序功能说明
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// LM75 I2C地址
#define LM75_ADDRESS 0x48
Adafruit_SSD1306 display(128, 64, &Wire, -1);
//定义继电器引脚:
const int relay=15;
void disout(char *pr,float tem) {
display.clearDisplay();
display.display();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.print(pr);
display.setTextSize(2);
display.setCursor(0, 23); // 将文本放置在新的行
display.println(tem,1);
display.setTextSize(1.5);
display.setCursor(50,23);
display.print("celsius");
display.display();
}
float LM75() {
Wire.beginTransmission(LM75_ADDRESS); // 启动I2C通信并设置目标设备地址
Wire.write(0x00); // 向LM75发送控制寄存器地址,用于选择温度寄存器
Wire.endTransmission(); // 结束I2C通信
delay(500);
Wire.requestFrom(LM75_ADDRESS, 2);
int rawTemp = Wire.read() << 8 | Wire.read(); // 从LM75读取两个字节的温度数据,合并为一个整数
float temperature = rawTemp / 256.0; // 将温度数据转换为摄氏度,因为LM75的分辨率是0.25°C,所以除以256
if (temperature >= 0 && temperature <= 125) {
return temperature;
} else {
// 温度超出范围,你可以在这里处理异常或返回一个特定的值
return -1.0; // 作为示例,返回-1.0 表示温度异常
}
}
void setup() {
Serial.begin(115200);
Wire.begin();
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.display();
pinMode(relay,OUTPUT);
digitalWrite(relay,LOW);
}
void loop() {
char *pt="tempature:";
char *pr="Heating completed!";
char *pa="Heating.......";
volatile float temp=LM75();
if(temp>0&&temp<125){
disout(pt,temp);
delay(1000);
if(temp<40&&temp>0)
{
digitalWrite(relay,HIGH);
disout(pt,temp);
}
else if(temp>80)
{
digitalWrite(relay,LOW);
disout(pr,temp);
}
}
else {
display.clearDisplay();
display.setCursor(0,0);
display.setTextSize(2);
display.print("ERROR!!!!!!!!!!!!!!!!!!");
display.display();
delay(1000);
}
}
以上就是主要程序的说明,实现的一个简单的判断自动开关的功能。
七、心得体会
本次FastBond2阶段1,我想到设计一个可实现自动加温、温度可调的恒温杯垫,以便随时都可以饮用。杯垫附带有称重的功能,通过杯垫上的重量信息实现自启动,从而达到智能化。