基于MLX90614与XIAO SAMD21的智能杯垫:非接触测温与嵌入式开发实践

MLX90614Seeed Studio XIAO SAMD21红外温度传感器
于 2026-05-30 12:56:23 修改
·本内容遵循CC 4.0 BY-SA版权协议

1. 项目概述与核心价值

作为一个喜欢鼓捣电子玩意儿,同时又是个咖啡重度依赖者的人,我经常遇到一个尴尬:刚冲好的咖啡太烫,等想起来喝的时候又凉透了。市面上那些带温度显示的智能水杯,要么太贵,要么设计不合我意。于是,我决定自己动手,做一个既实用又有颜值的“智能杯垫”。它的核心功能很简单:实时监测放在上面的杯子的温度,并通过一个小屏幕直观地告诉你,现在是“太烫”、“适饮”还是“已凉”。

这个项目的核心,是红外温度传感器MLX90614和一块小巧但功能强大的微控制器Seeed Studio XIAO SAMD21。选择红外测温而非传统的接触式热电偶或DS18B20,是因为它无需接触液体,完全非侵入式,不会污染饮品,响应速度也极快。MLX90614这款传感器精度不错,且通过I2C通信,与微控制器连接非常简单。整个系统的逻辑就是传感器“看”一下杯壁(尤其是金属或陶瓷这类导热好的杯子),微控制器读取温度数据,经过判断后,驱动一块OLED屏幕显示具体数值和对应的表情图标。

从技术角度看,这虽然是一个小制作,但它完整地串联起了物联网感知层的典型流程:物理信号(红外辐射)采集、模拟/数字信号转换(传感器内部完成)、微控制器数据处理、人机交互(屏幕显示)。对于想入门嵌入式开发、传感器应用或简单物联网项目的朋友来说,这是一个绝佳的练手项目。它不仅涉及硬件选型、电路连接、3D建模与打印,还包含了完整的Arduino代码编写与调试。做完它,你对一个完整电子产品的开发流程会有一个非常清晰的认识。

2. 核心硬件选型与设计思路解析

为什么是这些零件?这是项目成功的基础,每个选择背后都有其考量。

2.1 微控制器:Seeed Studio XIAO SAMD21

我选择了Seeed Studio的XIAO SAMD21开发板。对于这个项目,它有几个无法抗拒的优点:

  1. 极致小巧:它的尺寸大约只有20mm x 17.5mm,比一个拇指指甲盖还小,这对于需要嵌入杯垫内部、空间有限的应用来说是决定性优势。
  2. 足够性能:基于ARM Cortex-M0+内核,主频48MHz,处理传感器数据和刷新屏幕绰绰有余,远比传统的ATmega328P(Arduino Uno核心)要强大和高效。
  3. 原生USB支持:它通过USB-C接口进行编程和供电,省去了额外的USB转串口芯片,使得电路更简洁,连接电脑也更方便。
  4. 兼容性:在Arduino IDE中,它可以被识别为一块Arduino板,开发环境和语法与标准Arduino完全一致,学习成本极低。

注意:XIAO系列还有ESP32C3、RP2040等版本,功能更强大(如自带Wi-Fi)。但对于这个纯本地监测项目,SAMD21版本性价比最高,也避免了无线模块带来的额外功耗和复杂度。

2.2 传感器:MLX90614ESF-BCC 红外温度计

这是项目的“眼睛”。MLX90614是一个工厂校准过的非接触式红外温度计,我选用的是BCC封装(视场角较小,约10°),更适合测量小目标。

  • 工作原理:所有物体都在向外辐射红外线,其强度与物体表面温度有关。传感器内部的热电堆检测到这股辐射,并将其转换为微弱的电压信号,经过内部放大器、ADC和强大的DSP单元处理后,通过I2C接口直接输出校准后的摄氏或华氏温度值。
  • 非接触优势:完全避免了液体腐蚀、结垢影响测温精度的问题,也使得杯垫表面可以保持完整、易于清洁。
  • 关键参数:测量范围-70°C到+380°C,精度在0°C到+50°C范围内约为±0.5°C,完全满足饮品测温需求(0-100°C)。其I2C地址默认为0x5A,这意味着一条I2C总线上可以挂载多个传感器。

一个重要的实操心得:MLX90614测量的是物体表面温度。对于咖啡杯,这近似于液体温度,但存在微小滞后。杯壁材质影响很大:不锈钢杯导热快,测得温度最接近液体实际温度;厚陶瓷杯导热慢,显示温度可能略低于实际液体温度。这是所有非接触测温的物理限制,需要心里有数。

2.3 显示屏:0.91英寸 128x32 I2C OLED

选择OLED而非LCD,主要基于以下几点:

  1. 自发光与高对比度:OLED像素自发光,黑色纯粹,在光线较暗的环境下(比如夜晚的桌面)显示效果依然清晰锐利,可视角度极大。
  2. 超薄与低功耗:OLED屏幕非常薄,有利于设备做薄。在显示静态内容时,功耗极低。
  3. I2C接口:仅需两根数据线(SDA, SCL)即可通信,与MLX90614共用一组I2C引脚,极大简化了布线。我们选用的这款屏幕驱动芯片通常是SSD1306,有成熟的Arduino库支持。

2.4 结构件:3D打印与激光切割铝板

  • 3D打印主体:使用PLA材料打印外壳主体、传感器支架、后盖等。PLA易于打印、强度足够、安全无毒。结构设计上,要充分考虑内部走线空间、屏幕开孔位置、传感器视角(需正对杯壁下方)、USB-C口开槽以及散热。
  • 激光切割铝板顶面:这是设计中的一个亮点。为什么用铝板?
    • 耐热性:PLA的玻璃化转变温度在60°C左右,长期接触高温杯子可能会变形。铝板作为隔热层,直接承受杯底热量,保护了下面的3D打印结构。
    • 质感与美观:喷砂阳极氧化或喷哑光黑漆后的铝板,质感远胜纯塑料,让作品看起来更精致、更专业。
    • 热传导:铝是良导体,能快速将杯底热量均匀分布,避免局部过热,同时也让杯垫本身的热容显得不那么“冷”。

3. 系统电路设计与连接详解

整个电路的连接极其简洁,这得益于I2C总线的高效。下图清晰地展示了所有组件的连接关系:

核心连接原则(务必遵循):

  1. 电源统一:所有模块(XIAO, OLED, MLX90614)的VCC都连接到XIAO的3.3V输出引脚。严禁接5V! MLX90614和这款OLED的工作电压都是3.3V,接5V会永久损坏。
  2. 共地:所有模块的GND都必须连接到XIAO的GND,形成共同的参考零电位。
  3. I2C总线并联:OLED和MLX90614的SDA线都接到XIAO的D4(即SDA功能引脚),SCL线都接到XIAO的D5(即SCL功能引脚)。这是标准的I2C并联接法。

具体接线表:

组件 引脚 连接到 XIAO SAMD21 说明
MLX90614 VCC 3V3 3.3V电源
GND GND 电源地
SDA D4 I2C数据线
SCL D5 I2C时钟线
OLED 屏幕 VCC 3V3 3.3V电源
GND GND 电源地
SDA D4 与传感器SDA并联
SCL D5 与传感器SCL并联

焊接与布线实操要点:

  1. 线材选择:使用30AWG的硅胶线或排线最佳。这种线细而柔软,便于在狭小空间内弯曲走线,且硅胶外皮耐高温,焊接时不易烫伤。
  2. 先测试后组装:强烈建议在将所有元件装入外壳前,先按照上表在面包板上搭建电路,并上传测试代码验证传感器和屏幕是否工作正常。这能避免因硬件问题导致的反复拆装。
  3. 焊接顺序:我个人习惯先焊接传感器模块的引线(约8cm),将其固定到传感器支架上并穿线完成后,再焊接至XIAO。屏幕的引线(约14cm)同理。这样便于分模块处理。
  4. 防短路处理:焊接点应圆润光滑,无毛刺。对于密集的引脚(如XIAO),可以使用热熔胶或绝缘胶带对焊点进行点胶隔离,防止在安装时因挤压与金属外壳或其他导线短路。

4. 3D建模与结构件制作全流程

一个产品化的项目,外壳和结构同样重要。我使用Fusion 360进行全流程设计。

4.1 三维建模设计要点

建模的核心目标是:紧凑、稳固、美观、易于装配

  1. 内部布局规划:在建模软件中,首先根据XIAO、OLED屏幕、MLX90614传感器的实际尺寸创建简化的实体模型,作为“占位符”。然后围绕它们设计外壳内部空间,确保元件放入后不会晃动,并留出约1-2mm的余量以便安装。
  2. 传感器视角与定位:这是功能实现的关键。需要精确计算传感器支架的角度和高度,确保当杯子放在铝板中心时,MLX90614的探测视场能完整覆盖杯壁下沿。我的设计是让传感器以约15度仰角朝向杯垫中心。
  3. 走线通道设计:在外壳内部设计专门的线槽或过线孔,让连接传感器的四根线和屏幕的四根线可以规整地排布,避免杂乱和相互缠绕,也防止在合盖时压坏线材。
  4. 散热与开孔:在微控制器和屏幕对应的外壳位置,设计一些细小的通风栅格,有助于空气流通,避免长时间工作积热。USB-C接口的开槽要精准,既要能顺利插拔,又不宜过大影响美观。
  5. 装配结构:主体与后盖采用螺丝固定(M3*10mm螺丝),设计好对应的支柱和螺丝孔。传感器支架与主体也采用螺丝固定。所有螺丝孔都需要在建模时打好“导孔”,并使用“螺纹”命令或留出足够间隙(对于M3螺丝,通常打3.2mm-3.4mm的孔)。

4.2 从模型到实物:导出与加工

  1. 3D打印文件(STL):设计完成后,将主体(main body)、后盖(back plate)、传感器支架(sensor holder)等需要打印的部件,分别“另存为网格”或直接导出为STL文件。这是3D打印机的通用格式。
  2. 激光切割文件(DXF):对于顶部的铝板,需要在Fusion 360中单独处理。
    • 在装配体中找到铝板零件,右键选择“设为可见”和“设为激活状态”。
    • 进入“草图”模式,使用“投影”工具(快捷键P),将铝板零件的轮廓投影到一个新的草图上。
    • 退出草图,在浏览器中找到这个新生成的草图,右键选择“保存为DXF”。
    • 这个DXF文件包含了铝板的精确二维轮廓,可以发送给激光切割服务商。重要:在图纸或沟通中务必注明材料类型(如6061铝板)、厚度(例如1.5mm)和表面处理要求(如喷哑光黑漆)。

4.3 后期处理与装配准备

  • 3D打印件处理:打印完成后,小心去除支撑材料。用细砂纸(如600目)轻轻打磨结合面,确保平整,以便后续粘贴或螺丝紧固。如果打印层纹明显,可以进行补土、打磨、喷漆,追求极致外观。
  • 铝板处理:收到激光切割好的铝板后,边缘可能会有轻微的毛刺或氧化层。用120-180目的砂纸轻轻打磨边缘和正反两面,这不仅能去除毛刺,更重要的是增加表面粗糙度,使后续喷漆附着力更强。打磨后,用酒精清洁表面,晾干后喷涂2-3层哑光黑喷漆,每层间隔15-20分钟,喷漆环境需通风无尘。

5. Arduino代码深度剖析与自定义

代码是项目的灵魂,它定义了智能杯垫的“行为”。下面我们逐部分解析提供的代码,并讲解如何自定义。

5.1 库文件引入与对象声明

CPP
# include <Wire.h> // I2C通信库
# include <Adafruit_MLX90614.h> // MLX90614传感器驱动库
# include <Adafruit_GFX.h> // 图形核心库
# include <Adafruit_SSD1306.h> // SSD1306 OLED驱动库
 
// 定义OLED屏幕尺寸
# define SCREEN_WIDTH 128
# define SCREEN_HEIGHT 32
# define OLED_RESET -1 // 无复位引脚
 
// 声明OLED显示对象,指定尺寸、I2C接口和复位引脚
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
// 声明MLX90614传感器对象
Adafruit_MLX90614 mlx = Adafruit_MLX90614();

要点:务必在Arduino IDE的“库管理”中搜索并安装 Adafruit MLX90614 LibraryAdafruit SSD1306Adafruit GFX 库通常会在安装SSD1306库时自动关联安装。

5.2 自定义位图数据

代码中包含了四个16x16像素的位图数组,用于在OLED上显示图标。这些数据是十六进制数组,代表了图标的黑白像素点。

  • image_weather_temperature_bits[]: 温度计图标(常显)。
  • image_weather_frost_bits[]: 雪花图标,表示“已凉”(<50°C)。
  • image_hand_thumbs_up_bits[]: 点赞手图标,表示“适饮”(50-70°C)。
  • image_operation_warning_bits[]: 感叹号警告图标,表示“太烫”(>70°C)。 你可以使用在线的位图编辑器(如https://javl.github.io/image2cpp/)生成自己的图标,替换这些数组数据,实现个性化显示。

5.3 初始化设置 setup()

CPP
void setup() {
mlx.begin(); // 初始化传感器,默认I2C地址0x5A
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // 初始化OLED,供电模式为内部开关电容,I2C地址0x3C
display.clearDisplay(); // 清空屏幕缓冲区
display.display(); // 将清空操作更新到实际屏幕
}

常见问题排查:如果上传代码后屏幕不亮,首先检查接线,然后尝试将0x3C改为0x3D,因为有些OLED模块的I2C地址可能是0x3D。可以使用I2C扫描代码来确认地址。

5.4 主循环逻辑 loop()

这是核心逻辑所在,循环执行。

CPP
void loop() {
float coffeeTemperature = mlx.readObjectTempC(); // 读取物体温度(摄氏度)
display.clearDisplay(); // 每次循环前清空缓冲区
 
// 温度判断与对应图标显示
if (coffeeTemperature < 50) {
// 显示雪花图标和“已凉”状态(原代码仅显示图标,可添加文字)
display.drawBitmap(105, 9, image_weather_frost_bits, 15, 15, 1);
} else if (coffeeTemperature >= 50 && coffeeTemperature <= 70) {
// 显示点赞图标和“适饮”状态
display.drawBitmap(105, 6, image_hand_thumbs_up_bits, 16, 16, 1);
} else {
// 显示警告图标和“太烫”状态
display.drawBitmap(105, 7, image_operation_warning_bits, 16, 16, 1);
}
 
// 绘制公共元素:左侧温度计图标、右侧圆圈、温度数值
display.drawBitmap(65, 9, image_weather_temperature_bits, 16, 16, 1);
display.drawCircle(115, 16, 21, 1); // 在图标外画一个圆圈,增强视觉效果
display.setTextSize(2); // 设置字体大小为2(较大)
display.setTextColor(SSD1306_WHITE); // 设置字体颜色为白色
display.setCursor(1, 10); // 设置文本起始坐标(左上角为0,0)
display.print(coffeeTemperature); // 打印温度数值
 
display.display(); // 将所有绘制内容一次性更新到屏幕
delay(500); // 延时500毫秒,即每0.5秒更新一次
}

5.5 如何自定义温度阈值

这是项目最实用的自定义部分。你只需要修改loop()函数中的if判断条件即可。 例如,如果你喜欢喝更热一点的茶,可以将“适饮”温度调高:

CPP
if (coffeeTemperature < 55) { // 低于55°C算凉
// 显示“凉”状态
} else if (coffeeTemperature >= 55 && coffeeTemperature <= 75) { // 55-75°C适饮
// 显示“好”状态
} else { // 高于75°C太烫
// 显示“烫”状态
}

进阶想法:你甚至可以添加一个按钮,通过短按、长按来循环切换几组预设的温度阈值(如咖啡模式、茶模式、牛奶模式),并将当前模式保存在XIAO的EEPROM中,实现断电记忆。这需要引入按钮库和EEPROM库,并增加状态机逻辑。

6. 分步组装与调试实录

组装过程是“从图纸到实物”的兑现,顺序和细节决定成败。

6.1 传感器模块预组装

  1. 焊接引线:取四根约8-10cm长的不同颜色导线(建议按VCC红、GND黑、SDA绿、SCL黄区分),焊接到MLX90614传感器的四个引脚上。焊接要快而准,避免长时间加热损坏传感器。
  2. 装入支架:将焊好线的传感器轻轻推入3D打印的传感器支架中,确保其红外接收窗正对支架前端的开口,且没有遮挡。
  3. 穿线并合盖:将四根导线从支架后部的预留孔中穿出,然后扣上传感器后盖。如果设计是卡扣式,直接扣紧;如果是螺丝固定,则拧紧螺丝。
  4. 固定到主体:将整个传感器模块通过两颗M3*10mm螺丝,固定到杯垫主体内部指定的安装柱上。拧螺丝时力度适中,避免滑丝或压坏打印件。

6.2 主板与屏幕集成

  1. 焊接屏幕引线:取四根约12-14cm长的导线,焊接到OLED屏幕的引脚上。同样建议用颜色区分。
  2. 固定屏幕:将OLED屏幕对准主体外壳正面的显示窗口,从内部放置。用少量热熔胶或强力双面胶在屏幕PCB板边缘点胶,将其固定在外壳内壁上。务必确保屏幕正面与外壳窗口平行,且显示区域完全露出。
  3. 安装XIAO主板:将Seeed Studio XIAO SAMD21主板插入主体内部的主板槽位,使其USB-C接口精确对准外壳侧面的开槽。可以用一小块泡棉胶或热熔胶在主板背面点一下,辅助固定,防止其移动。

6.3 内部连线

这是最需要耐心的一步。按照之前“电路设计”部分的接线表,将所有导线焊接到XIAO对应的引脚上。

  • 建议顺序:先焊接所有GND(地线),再焊接VCC(电源线),最后焊接SDA和SCL(信号线)。这样可以先建立共同的参考地。
  • 焊接技巧:XIAO的引脚焊盘很小,建议使用尖头烙铁,温度控制在350°C左右,使用含松香的细焊锡丝。先将焊盘上锡,然后将导线头蘸一点助焊剂,再与焊盘焊接。焊点应呈光滑圆锥形。
  • 理线:焊接完成后,用扎带或胶带将多余的线材捆扎整齐,紧贴外壳内壁放置,为后盖留出空间。

6.4 最终总装

  1. 安装后盖:将3D打印的后盖对准主体,使用四颗M3*10mm螺丝将其固定。拧紧螺丝时采用对角线顺序,逐步上紧,确保受力均匀,外壳闭合严密。
  2. 放入顶板:最后,将已经喷漆并完全干燥的激光切割铝板,沿着外壳顶部的卡槽轻轻推入。它应该平整地覆盖在顶部,与外壳边缘齐平。
  3. 通电测试:使用一根USB-C数据线,连接杯垫和手机充电器或电脑USB口。此时,OLED屏幕应该点亮,显示当前探测到的温度(如果没有杯子,可能是室温)。将一杯热水放在杯垫上,观察温度变化和图标切换是否正常。

7. 校准、优化与高级玩法探讨

基础功能实现后,我们可以让它更精准、更智能。

7.1 传感器读数校准与滤波

MLX90614出厂已校准,但不同个体、不同安装角度(非垂直测量)可能引入微小误差。我们可以通过软件进行补偿。

  • 偏移校准:用一个已知准确温度的热源(如经过校准的温度计测量的温水杯)和冷源(冰水混合物,约0°C)进行测试。记录传感器读数和实际温度,计算出一个偏移量(Offset),在代码中读取温度后加上或减去这个值。
    CPP
    float actualTemp = mlx.readObjectTempC() + offset; // offset可能是+1.5或-0.5等
  • 软件滤波:传感器读数可能存在微小跳动。采用滑动平均滤波可以显著提升显示稳定性。
    CPP
    const int numReadings = 5;
    float readings[numReadings];
    int readIndex = 0;
    float total = 0;
    float average = 0;
     
    void loop() {
    total = total - readings[readIndex]; // 减去最旧的读数
    readings[readIndex] = mlx.readObjectTempC();
    total = total + readings[readIndex]; // 加上最新的读数
    readIndex = (readIndex + 1) % numReadings; // 循环索引
    average = total / numReadings; // 计算平均值
    // 使用average进行后续判断和显示
    delay(100); // 缩短单次读取延时,但滤波后整体更新速度不变
    }

7.2 功耗优化

目前设备需持续供电。如果想做成电池供电的便携版,功耗是关键。

  1. 硬件层面:选用低功耗的微控制器(如ATmega328P在休眠模式下功耗极低),并确保OLED屏幕支持通过代码完全关闭(display.ssd1306_command(SSD1306_DISPLAYOFF))。
  2. 软件层面
    • 间歇工作:如果不是需要持续监测,可以让系统大部分时间处于深度睡眠(Deep Sleep)模式,每隔一段时间(如10秒)由定时器唤醒,测量一次温度并刷新显示,然后再次休眠。XIAO SAMD21支持多种低功耗模式。
    • 动态更新:当温度变化不大时,降低屏幕刷新率和传感器采样率。

7.3 功能扩展思路

这个项目是一个优秀的平台,可以衍生出许多变体:

  1. 无线化与云端记录:将主控换成Seeed Studio XIAO ESP32C3,它集成了Wi-Fi和蓝牙。你可以编写代码,让杯垫将温度数据通过Wi-Fi发送到MQTT服务器(如Home Assistant)、或直接推送通知到手机(通过Bark、Server酱等),甚至记录每天不同时段的饮水温度曲线。
  2. 多杯垫组网:制作多个智能杯垫,每个使用ESP32-C3,并通过蓝牙Mesh或Wi-Fi连接到同一个中枢,在手机App上同时监控办公室或家庭里多个人的饮品温度。
  3. 增加触觉反馈:在杯垫内部增加一个微型振动马达。当温度达到“适饮”范围时,不仅屏幕显示点赞图标,杯垫还会轻轻震动一下,提供无需看屏幕的提醒,非常适合在专注工作时使用。
  4. 环境温度补偿:MLX90614也能读取环境温度(mlx.readAmbientTempC())。对于精度要求极高的场景,可以利用环境温度对物体温度读数进行更精确的补偿计算(某些高级库或算法已包含此功能)。

8. 常见问题与故障排除速查表

在制作和调试过程中,你可能会遇到以下问题。这里提供一个快速排查指南。

现象 可能原因 排查步骤与解决方案
OLED屏幕不亮 1. 电源未接通或接反。
2. I2C地址错误。
3. 屏幕或主板损坏。
1. 检查VCC和GND是否分别接到3V3和GND,确认USB供电正常。
2. 运行I2C扫描代码,确认OLED地址是0x3C还是0x3D,并修改代码中的begin()参数。
3. 尝试用万用表测量屏幕VCC引脚是否有3.3V电压。
屏幕亮但无显示/乱码 1. I2C数据线接触不良。
2. 代码初始化失败。
3. 屏幕对比度问题(极少见)。
1. 重新焊接或按压SDA、SCL线连接点。
2. 检查Adafruit_SSD1306库是否正确安装,并确认SCREEN_WIDTHSCREEN_HEIGHT与你的屏幕匹配(本例是128x32)。
3. 在setup()中尝试添加 display.setContrast(255); 调整对比度。
温度读数始终为室温或异常 1. MLX90614传感器接线错误或未连接。
2. 传感器视角被遮挡或未对准杯壁。
3. 杯壁材质问题(如塑料杯、双层玻璃杯)。
1. 检查传感器四根线是否连接正确且牢固。
2. 确保传感器前方的开孔畅通,且杯子放置时,杯壁位于其探测视场内。可用手机摄像头(部分能看到红外光)辅助观察传感器是否在工作(会有微弱红光)。
3. 确保使用金属、单层陶瓷等导热良好的杯子。塑料、木质或真空双层杯无法有效测量内部液体温度。
温度读数跳动剧烈 1. 电源噪声干扰。
2. 传感器受到气流或环境热源干扰。
3. 代码无滤波。
1. 尝试使用外部质量好的5V电源适配器,并在XIAO的3V3和GND之间焊接一个10uF的电解电容进行滤波。
2. 避免将杯垫放在空调出风口、暖气片旁或阳光直射下。
3. 在代码中实现滑动平均滤波(见7.1节),这是最有效的软件解决方案。
上传代码失败 1. Arduino IDE板卡或端口选择错误。
2. XIAO驱动未安装(Windows常见)。
3. USB线仅供电不支持数据。
1. 在“工具”->“开发板”中选择“Seeed SAMD Boards”下的“Seeed Studio XIAO M0”。在“端口”中选择对应的COM口(连接XIAO后会出现)。
2. 首次连接时,电脑可能需要安装驱动。可前往Seeed官网下载或等待系统自动安装。
3. 换一根已知可传输数据的USB-C线。
杯垫外壳局部过热 1. 长时间放置高温热源(如刚沸腾的水壶)。
2. 内部元件(如线性稳压器)发热堆积。
1. 铝板顶面是关键,它能分散热量。但避免长时间接触超过80°C的极端热源。
2. 检查外壳通风设计。如果使用电池或某些降压模块,确保其功耗和发热在可接受范围内,必要时在外壳增加散热孔。

完成这个项目后,我最大的体会是,硬件项目的乐趣在于从虚拟的代码和冷冰冰的元件中,亲手创造出有实用价值、有交互温度的实体。这个智能杯垫现在就在我的办公桌上,它不仅仅是一个温度计,更是我自己需求的一个贴心解决方案。每次看到那个小小的点赞图标亮起,就知道咖啡到了最佳赏味期,这种满足感远超购买一个成品。过程中遇到的每一个问题,从传感器读数不稳到外壳尺寸偏差,都是学习的机会。如果你也动手做了一个,不妨试试给它加上无线功能,或者设计一个更酷的外形,这其中的可能性,只受你的想象力限制。