李家钛2506034309 Arduino Nano 温度报警装置一、项目概述本项目基于 Arduino Nano 开发板搭配 DS18B20 温度传感器、SSD1306 OLED 显示屏和有源蜂鸣器模块实现温度实时监测与报警功能。当环境温度超过 30°C 时蜂鸣器自动报警OLED 屏幕同步显示当前温度和报警状态。核心功能实时采集环境温度OLED 屏幕显示温度数值中文界面温度 30°C 时蜂鸣器报警温度 ≤ 30°C 时蜂鸣器静默传感器异常自动提示二、实验材料器材清单序号器材名称数量参考价格1Arduino Nano 3 开发板1¥152DS18B20 温度传感器模块1¥53SSD1306 OLED 显示屏模块128×64I2C1¥84有源蜂鸣器模块1¥35杜邦线公对母/母对母若干¥26面包板可选1¥3合计约¥36三、硬件连接3.1 引脚接线表DS18B20 温度传感器 → Arduino NanoDS18B20 引脚Arduino Nano 引脚VCC5VGNDGNDDQD2SSD1306 OLED 显示屏 → Arduino NanoOLED 模块引脚Arduino Nano 引脚VDD5VGNDGNDSCKA5SDAA4有源蜂鸣器模块 → Arduino Nano蜂鸣器模块引脚Arduino Nano 引脚VCC5VGNDGNDI/OD33.2 硬件连接示意图![所有模块共用 5V 和 GND屏幕用3.3v)数据线分别连接 D2DS18B20、A5/A4OLED I2C、D8蜂鸣器。四、软件编程4.1 所需库安装在 Arduino IDE 中安装以下库OneWire — DS18B20 单总线通信库菜单项目 → 加载库 → 管理库 → 搜索 OneWire → 安装DallasTemperature — DS18B20 温度读取库菜单项目 → 加载库 → 管理库 → 搜索 DallasTemperature → 安装Adafruit SSD1306 — SSD1306 OLED 驱动库菜单项目 → 加载库 → 管理库 → 搜索 Adafruit SSD1306 → 安装Adafruit GFX Library — 图形显示基础库菜单项目 → 加载库 → 管理库 → 搜索 Adafruit GFX → 安装4.2 完整源代码#includeWire.h#includeAdafruit_GFX.h#includeAdafruit_SSD1306.h#includeOneWire.h#includeDallasTemperature.h// OLED 配置#defineSCREEN_WIDTH128#defineSCREEN_HEIGHT64#defineOLED_RESET-1Adafruit_SSD1306display(SCREEN_WIDTH,SCREEN_HEIGHT,Wire,OLED_RESET);// 引脚配置#defineONE_WIRE_BUS2// DS18B20 数据引脚#defineBUZZER_PIN3// 有源蜂鸣器控制引脚#defineLED_PIN13// 板载LED报警引脚OneWireoneWire(ONE_WIRE_BUS);DallasTemperaturesensors(oneWire);// 温度报警阈值constfloatTEMP_THRESHOLD28.0;// 文字内容: 王奂熙 | 宽: 47 | 高: 16constunsignedcharbitmap_wanghuanxi[]PROGMEM{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x20,0x00,0x01,0xFF,0x0F,0xC3,0x49,0x00,0x00,0x10,0x08,0x42,0xC9,0x00,0x00,0x10,0x18,0xC3,0xAF,0x00,0x00,0x10,0x1B,0x23,0xA8,0x00,0x01,0xFF,0x11,0x22,0xE8,0x00,0x00,0x10,0x11,0x22,0x48,0x80,0x00,0x10,0x3F,0xF1,0xE7,0x00,0x00,0x10,0x06,0x80,0x00,0x00,0x00,0x10,0x0C,0x41,0x49,0x00,0x03,0xFF,0x38,0x32,0x24,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};// 非阻塞定时变量unsignedlonglastBlink0;unsignedlonglastTempUpdate0;bool alarmStatefalse;floatcurrentTemperature0.0;bool alarmActivefalse;constlongALARM_INTERVAL200;// 开机进度条动画voidshowBootAnimation(){constinttotalSteps40;constintstepDelay50;constintbarX10;constintbarY40;constintbarWidth108;constintbarHeight8;for(intstep0;steptotalSteps;step){intpercent(step*100)/totalSteps;intfillWidth(step*barWidth)/totalSteps;display.clearDisplay();display.setTextSize(2);display.setTextColor(SSD1306_WHITE);display.setCursor(20,10);display.print(Smart);display.setCursor(15,28);display.print(Monitor);display.drawRect(barX,barY,barWidth,barHeight,SSD1306_WHITE);if(fillWidth0){display.fillRect(barX,barY,fillWidth,barHeight,SSD1306_WHITE);}display.setTextSize(1);display.setCursor(50,barY12);display.print(percent);display.print(%);display.display();delay(stepDelay);}delay(200);}voidsetup(){Serial.begin(9600);pinMode(BUZZER_PIN,OUTPUT);digitalWrite(BUZZER_PIN,LOW);pinMode(LED_PIN,OUTPUT);digitalWrite(LED_PIN,LOW);sensors.begin();if(!display.begin(SSD1306_SWITCHCAPVCC,0x3C)){Serial.println(F(SSD1306 初始化失败));for(;;);}display.clearDisplay();showBootAnimation();display.clearDisplay();}voidloop(){unsignedlongnowmillis();if(now-lastTempUpdate1000){lastTempUpdatenow;sensors.requestTemperatures();currentTemperaturesensors.getTempCByIndex(0);if(currentTemperature-100){display.clearDisplay();display.setTextSize(2);display.setCursor(15,20);display.print(Sensor Err);display.display();digitalWrite(BUZZER_PIN,LOW);digitalWrite(LED_PIN,LOW);return;}alarmActive(currentTemperatureTEMP_THRESHOLD);display.clearDisplay();intnameW47;intnameH16;intnameX(128-nameW)/2;intnameY0;display.drawBitmap(nameX,nameY,bitmap_wanghuanxi,nameW,nameH,SSD1306_WHITE);display.setTextSize(1);display.setTextColor(SSD1306_WHITE);display.setCursor(30,nameY18);display.print(2506034324);display.setCursor(15,nameY38);display.print(Temp: );display.print(currentTemperature,1);display.print( C);display.setCursor(15,nameY52);if(alarmActive){display.print(ALARM! High Temp);}else{display.print(Normal Temp);}display.display();Serial.print(Temp: );Serial.print(currentTemperature,1);Serial.print( C Status: );Serial.println(alarmActive?ALARM:Normal);}if(alarmActive){if(now-lastBlinkALARM_INTERVAL){lastBlinknow;alarmState!alarmState;digitalWrite(BUZZER_PIN,alarmState);digitalWrite(LED_PIN,alarmState);}}else{digitalWrite(BUZZER_PIN,LOW);digitalWrite(LED_PIN,LOW);}}六、项目总结本项目通过 Arduino Nano 采集 DS18B20 温度数据在 SSD1306 OLED 上实时显示并实现超温蜂鸣器报警功能。项目涵盖了单总线通信、I2C 显示、汉字字模显示、数字输出控制等常用嵌入式开发技术是一个典型的传感器采集显示控制综合应用。可扩展方向增加湿度传感器如 DHT11/DHT22实现温湿度双监测添加 WiFi 模块如 ESP8266实现远程温度监控增加按键模块支持报警阈值可调记录历史温度数据绘制温度曲线](https://i-blog.csdnimg.cn/direct/a1d1d0ae49da4d0c8e0ce7d9ec5c58e6.jpeg#pic_center)

相关新闻

最新新闻

2026 职场学生刚需:录音app哪个好用,不踩雷只留这一个

2026 职场学生刚需:录音app哪个好用,不踩雷只留这一个

先说明白核心判断 针对学生课堂记录、论文访谈、复习备考和职场日常整理的刚需,结合当前公开版本对五款主流工具的横向测试,综合转写准确率、AI整理能力、成本和场景适配多个维度,更适合大多数刚需用户的选择是听脑AI,它在把录音…

2026/7/5 2:57:20
【Linux进程控制】从exec程序替换到手写简易Shell:fork、execvp、环境变量与内建命令

【Linux进程控制】从exec程序替换到手写简易Shell:fork、execvp、环境变量与内建命令

🔥个人主页:爱和冰阔乐 📚专栏传送门:《数据结构与算法》 、C 🐶学习方向:C方向学习爱好者 ⭐人生格言:得知坦然 ,失之淡然 🏠博主简介 文章目录前言一、进程程序替换1…

2026/7/5 2:57:20
测控技术与仪器专业全解析——被名字低估的“工业之眼“

测控技术与仪器专业全解析——被名字低估的“工业之眼“

前言 每年高考志愿填报季,都有一个专业让无数考生和家长犯了难——测控技术与仪器。光听名字,不少人会联想到"修仪表"“读表盘"的冷门行当,甚至有人将它归入"没前途"的专业之列。然而事实恰恰相反:它是…

2026/7/5 2:57:20
济宁智慧养老方案深度拆解:从“伪智能”到“真闭环”,如何为独居老人构建10分钟安全防线

济宁智慧养老方案深度拆解:从“伪智能”到“真闭环”,如何为独居老人构建10分钟安全防线

作为一名专注智慧养老领域的技术博主,我发现很多同行在为父母选择智能照护方案时,都曾陷入过一种焦虑:花大价钱买回的设备,最终不是被老人“拔电吃灰”,就是沦为只会告警、无人处置的“电子稻草人”。本文正是为这些在…

2026/7/5 2:57:20
企业开始出现“Agent 泛滥”,真正缺的不是更多机器人,而是统一负责人

企业开始出现“Agent 泛滥”,真正缺的不是更多机器人,而是统一负责人

很多企业的 Agent 不是从统一规划开始的。销售团队先做一个客户资料助手,客服团队做一个工单 Agent,研发团队接入编程工具,市场团队又搭建自动写稿流程。每个项目单独看都合理,半年后企业却发现,没人知道内部到底运行着…

2026/7/5 2:57:20
mcntools - Minecraft 模组 JAR 文件硬编码翻译工具

mcntools - Minecraft 模组 JAR 文件硬编码翻译工具

一个用于提取和替换 Minecraft 模组 JAR 文件中字符串的 Python 工具。 项目地址 github mcntools 界面展示 此处用深色主题展示,主题配色均来自ttkbootstrap 字符串常量预览界面 原文译文映射表 功能特性 字符串提取 - 从 class 文件常量池中提取可翻译字符…

2026/7/5 2:52:20

月新闻