基于STM32F103C8T6的智能環境監測系統:DHT11溫濕度檢測與OLED顯示實現

引言

你是否曾想實時握身邊環境的溫濕度變化?無論是居家種植需要精準調控環境,還是實驗室存放敏感材料需監控條件,亦或是智能座艙場景下的環境感知,智能環境監測系統正成為連接物理世界與數字管理的重要橋梁。而在眾多嵌入式開發方案中,如何平衡性能、成本與開發難度,成為開發者尤其是入門愛好者的核心考量。

在這樣的需求背景下,STM32F103C8T6?以其獨特優勢脫穎而出:作為一款搭載 ARM Cortex-M3 內核的 32 位微控制器,它不僅具備 72 MHz 主頻、64 KB Flash 和 20 KB RAM 的充足資源,能輕松應對多傳感器數據處理需求,更以不到 20 元的市場價格,實現了“高性能與低成本”的黃金平衡,被譽為“嵌入式開發性價比之王”。

本項目正是基于這款高性價比硬件,構建一套功能完整的智能環境監測系統。其核心目標包括三大模塊:

? 環境感知層:通過 DHT11 溫濕度傳感器實時采集空氣中的溫度(測量范圍 0-50℃,精度 ±2℃)與濕度(20%-90% RH,精度 ±5% RH)數據;

? 信息展示層:借助 SSD1306 驅動的 OLED 顯示屏,以直觀的字符與圖形界面動態刷新環境參數,實現“數據可視化”;

? 交互控制層:集成敲擊傳感器模塊,通過檢測物理振動信號觸發 LED 狀態切換(如亮滅、閃爍模式切換),打造“環境監測 + 人機互動”的閉環體驗。

通過這套系統的實現,我們將完整覆蓋從硬件電路設計、傳感器驅動開發,到數據處理算法與用戶交互邏輯的全流程開發要點。接下來的章節,我們將逐一拆解硬件連接方案、軟件編程實現及系統調試技巧,帶你從零開始搭建屬于自己的智能環境監測裝置。

項目核心價值

? 實用性:實時監測溫濕度數據,可直接應用于家居、辦公等場景

? 學習性:涵蓋 STM32 外設配置、傳感器通信、OLED 顯示等嵌入式核心技能

? 擴展性:預留藍牙模塊接口,未來可升級為無線數據上傳系統

硬件準備

組件清單

為方便讀者對照采購與系統搭建,以下是基于 STM32F103C8T6 的智能環境監測系統所需的完整組件清單,已按關鍵參數與功能分類整理:

組件名稱

型號/規格

數量

功能說明

STM32F103C8T6 開發板

STM32F103C8T6

1

系統主控單元,負責運行檢測算法、數據處理及外設控制邏輯

DHT11 溫濕度傳感器

DHT11

1

采集環境溫濕度數據,濕度測量范圍 20%-90% RH,溫度測量范圍 0℃-50℃

OLED 顯示屏

128x64 分辨率,I2C 接口

1

實時顯示溫濕度數值、系統狀態等信息,低功耗且顯示清晰

LED 發光二極管

通用紅色 LED

1

狀態指示元件,可用于系統運行正常/異常提示(如溫濕度超限報警)

敲擊傳感器模塊

數字輸出型

1

檢測外部敲擊信號,可配置為觸發數據記錄或系統復位等特定操作

STLINK 調試器

STLINK V2

1

用于程序下載與在線調試,支持 STM32 系列芯片的固件燒錄與運行狀態監控

杜邦線

公對母/公對公混合

若干

連接各組件的導線,建議長度 20cm-30cm 以方便布局

3.3V 電源

直流 3.3V/1A 穩壓電源

1

為整個系統提供穩定工作電壓,兼容 STM32 與傳感器的供電需求

限流電阻

220Ω

1

串聯于 LED 回路中,限制通過電流以保護發光二極管不被燒毀

采購提示:表格中標注的關鍵參數(如 OLED 分辨率、接口類型,敲擊模塊輸出類型)直接影響硬件兼容性,建議優先選擇與規格一致的產品,避免因參數差異導致無法正常通信或功能異常。

硬件接線圖

組件STM32引腳
OLED SDAPB7 (I2C1 SDA)
OLED SCLPB6 (I2C1 SCL)
DHT11數據線PA0
LED指示燈PA1
敲擊傳感器PA2

ST-LINK V2與STM32F103C8T6最小核心系統的連接方式以及實物圖

軟件環境

Arduino IDE配置STM32開發環境

在開始STM32F103C8T6的智能環境監測系統開發前,需先完成Arduino IDE的開發環境配置。通過以下四步操作,即可讓IDE完美支持STM32系列開發板,為后續的溫濕度檢測與OLED顯示功能開發做好準備。

步驟一:添加開發板管理器URL

打開Arduino IDE后,點擊頂部菜單欄的 文件?→ 首選項(快捷鍵 Ctrl+,)。在彈出的"首選項"窗口中,找到"附加開發板管理器網址"輸入框,點擊右側圖標打開編輯界面,粘貼STM32開發板的官方管理器URL(可從STM32duino項目官網獲取最新地址)。

步驟二:安裝STM32F1xx核心包

關閉首選項窗口,依次點擊 工具?→ 開發板?→ 開發板管理器。在搜索框輸入"STM32F1xx",找到"STM32F1xx Boards"核心包,點擊"安裝"按鈕。等待進度條完成(建議勾選"安裝完成后關閉此窗口"),核心包大小約80MB,需確保網絡穩定。

步驟三:配置開發板與端口

安裝完成后,通過 工具?→ 開發板?選擇"Generic STM32F103C series"(根據實際硬件選擇具體型號)。接著在 工具?→ 端口?中選擇STLINK調試器對應的端口(通常顯示為"STLink Virtual COM Port"),若未識別可嘗試重新插拔STLINK或安裝驅動。

步驟四:設置上傳方式

最后在 工具?→ 上傳方式?中選擇"STLink",這是通過STLINK調試器燒錄程序的關鍵設置。完成后,IDE底部狀態欄會顯示當前選擇的開發板型號、端口和上傳方式。

配置校驗技巧:完成后可點擊菜單欄 文件?→ 示例,若能在"STM32Examples"中看到"Basic"等示例文件夾,說明環境配置成功。

此時Arduino IDE已具備開發STM32F103C8T6的能力,接下來即可開始編寫DHT11傳感器和OLED顯示屏的控制代碼。

庫安裝指南

在開始搭建基于 STM32F103C8T6 的智能環境監測系統前,我們需要先安裝三個核心庫以支持 OLED 顯示和溫濕度檢測功能。這些庫將幫助我們快速實現硬件驅動與數據可視化,避免重復編寫底層代碼。

通過 Arduino IDE 庫管理器安裝

1. 打開庫管理器

???啟動 Arduino IDE 后,依次點擊頂部菜單欄的 工具 > 管理庫,打開庫管理面板。在搜索框中分別輸入以下庫名稱,找到對應結果后點擊 安裝

2. 安裝必要庫及版本說明

? Adafruit SSD1306:OLED 屏幕驅動庫,推薦安裝 v2.5.7 版本(高版本可能存在兼容性問題)。

? Adafruit GFX:圖形顯示核心庫,需與 SSD1306 庫配合使用,安裝時選擇最新穩定版即可。

? DHT 庫:溫濕度傳感器驅動庫,支持 DHT11 等型號,直接安裝搜索結果中的 DHT sensor library

???版本兼容性提示:Adafruit SSD1306 v2.5.7 經過實測可穩定適配 STM32F103C8T6 與 128×64 OLED 屏幕,若安裝高版本出現編譯錯誤,可在庫管理器中點擊「選擇版本」回退至此版本。

手動安裝(庫管理器安裝失敗時)下面的庫文件后面的藍字為超鏈接,可跳轉!!!

若因網絡問題或 IDE 版本差異導致安裝失敗,可通過 GitHub 倉庫手動下載庫文件:

? Adafruit SSD1306[1]

? Adafruit GFX[2]

? DHT 庫[3]

下載后將庫文件解壓,放置到 Arduino 安裝目錄下的 libraries?文件夾中,重啟 IDE 即可生效。

完成以上步驟后,開發環境的庫依賴就配置完畢了。接下來我們可以開始編寫硬件連接代碼,將傳感器與顯示屏接入 STM32 開發板。

代碼解析

完整代碼

以下是基于 STM32F103C8T6 的智能環境監測系統完整實現代碼,整合了 DHT11 溫濕度檢測、OLED 數據顯示及敲擊信號交互功能。代碼保留關鍵注釋以說明硬件連接與核心邏輯,方便二次開發與調試。

功能覆蓋

? 傳感器初始化:完成 DHT11、OLED 顯示屏及敲擊模塊的硬件配置

? 數據讀取:周期性采集溫濕度數據并進行有效性校驗

? OLED 顯示更新:動態刷新環境參數與系統狀態(如 LED 開關狀態)

? 敲擊信號處理:通過去抖動算法實現穩定的敲擊觸發邏輯,控制 LED 狀態切換

// cpp
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h>// OLED顯示屏設置
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);// 引腳定義
#define DHTPIN PA0 ????// DHT11連接引腳
#define LED_PIN PA1 ???// LED連接引腳
#define KNOCK_PIN PA2 ?// 敲擊模塊連接引腳// DHT傳感器設置
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);// 全局變量
bool ledState = false; ???????// LED狀態,初始為關閉
unsigned long lastKnockTime = 0; ?// 上次敲擊時間
const unsigned long debounceDelay = 300; ?// 去抖動延遲void setup() {// 初始化串口Serial.begin(9600);// 初始化OLED顯示屏if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {Serial.println(F("SSD1306 allocation failed"));for(;;); // 循環直到顯示屏初始化成功}display.clearDisplay();display.setTextColor(SSD1306_WHITE);// 初始化DHT傳感器dht.begin();// 初始化引腳pinMode(LED_PIN, OUTPUT);pinMode(KNOCK_PIN, INPUT);// 初始LED狀態digitalWrite(LED_PIN, ledState);// 顯示初始信息updateDisplay(0, 0);
}void loop() {// 讀取DHT11傳感器數據float humidity = dht.readHumidity();float temperature = dht.readTemperature();// 檢查讀取是否成功if (isnan(humidity) || isnan(temperature)) {Serial.println(F("Failed to read from DHT sensor!"));} else {// 更新顯示屏updateDisplay(temperature, humidity);}// 檢測敲擊信號int knockValue = digitalRead(KNOCK_PIN);unsigned long currentTime = millis();// 檢測到敲擊且超過去抖動時間if (knockValue == HIGH && currentTime - lastKnockTime > debounceDelay) {// 切換LED狀態ledState = !ledState;digitalWrite(LED_PIN, ledState);lastKnockTime = currentTime;Serial.print(F("Knock detected! LED "));Serial.println(ledState ? F("ON") : F("OFF"));}// 延時一段時間再進行下一次檢測delay(1000);
}// 更新OLED顯示內容
void updateDisplay(float temp, float humi) {display.clearDisplay();// 第一行居中顯示"iCEazy"display.setTextSize(2);int16_t x1, y1;uint16_t w, h;String title = "iCEazy";display.getTextBounds(title, 0, 0, &x1, &y1, &w, &h);display.setCursor((SCREEN_WIDTH - w) / 2, 0);display.print(title);// 顯示溫度display.setTextSize(1);display.setCursor(0, 24);display.print(F("Temperature: "));display.print(temp);display.print(F(" C"));// 顯示濕度display.setCursor(0, 36);display.print(F("Humidity: "));display.print(humi);display.print(F(" %"));// 顯示LED狀態display.setCursor(0, 48);display.print(F("LED State: "));display.print(ledState ? F("ON") : F("OFF"));display.display();
}


關鍵函數解釋
????????智能環境監測系統的穩定運行依賴于三大核心函數的協同工作,它們分別負責系統初始化、數據處理與交互響應、以及信息可視化呈現。以下是各函數的詳細解析:
?????????setup():系統初始化的基石
該函數在設備上電后僅執行一次,為整個系統搭建運行框架。首先通過`Serial.begin(9600)`初始化串口通信,便于調試過程中的數據輸出;隨后啟動OLED顯示屏,通過I2C地址`0x3C`進行設備檢測,若初始化失敗則進入循環等待狀態,確保顯示屏就緒后才繼續執行。接著初始化DHT11溫濕度傳感器,并完成硬件引腳配置:將LED燈設為輸出模式,敲擊檢測模塊設為輸入模式。為保證初始狀態明確,函數會將LED初始狀態設為關閉,并調用`updateDisplay()`函數刷新屏幕,顯示系統啟動信息。

????????loop():數據采集與交互控制的核心
作為系統的主循環函數,`loop()`以1秒為周期持續運行,實現環境監測與用戶交互功能。首先通過DHT11傳感器的`readHumidity()`和`readTemperature()`方法獲取溫濕度數據,使用`isnan()`函數判斷數據有效性——若無效(如傳感器未連接),則通過串口打印“Invalid data”錯誤信息;若有效,則調用`updateDisplay()`更新屏幕顯示。
????????updateDisplay():信息可視化的呈現層
該函數負責將系統狀態以清晰的布局展示在OLED屏幕上,具體分為四步:首先調用`clearDisplay()`清除原有內容,然后分區域繪制信息:


標題區:居中顯示“iCEazy”(字號2),通過`getTextBounds`函數計算文本寬度,實現水平居中對齊;
溫度區:在坐標`(0,24)`顯示“Temperature: X°C”,其中X為實時溫度值;
濕度區:在坐標`(0,36)`顯示“Humidity: Y%”,其中Y為實時濕度值;
狀態區:在坐標`(0,48)`顯示“LED State: ON/OFF”,反映當前LED工作狀態。
????????所有內容繪制完成后,調用`display()`函數刷新屏幕,確保信息實時更新。
????????顯示布局設計:分區顯示使信息層次分明,固定坐標便于用戶快速定位關鍵數據;居中標題增強了界面的視覺統一性。
????????通過這三個函數的協作,系統實現了從硬件初始化、數據采集到信息展示的完整流程,兼顧了穩定性、實時性與用戶體驗。


功能實現
溫濕度讀取

在基于 STM32F103C8T6 的智能環境監測系統中,溫濕度數據的準確獲取是核心環節之一。我們通過 DHT 庫提供的 `dht.readHumidity() 和 dht.readTemperature()` 函數與 DHT11 傳感器進行交互,實現溫濕度數據的讀取。
為了保證數據的可靠性和傳感器的長期穩定工作,**讀取周期被嚴格控制在 1 秒,這一設置完全符合 DHT11 傳感器的采樣率要求,避免因頻繁讀取導致的數據失真或傳感器損壞。

????????數據讀取后,系統會通過 `isnan()` 函數對返回值進行有效性判斷——如果函數返回 `NaN`(非數字),則表明本次讀取失敗。此時,系統會立即通過串口輸出提示信息“Failed to read from DHT sensor!”,幫助開發者快速定位問題;而只有當數據驗證通過后,才會將其用于后續的 OLED 顯示,從源頭確保環境監測數據的可信度。

關鍵操作提示
- 讀取函數:使用 `dht.readHumidity()`(濕度)和 `dht.readTemperature()`(溫度)獲取原始數據
- 周期控制:1 秒讀取間隔嚴格匹配 DHT11 硬件特性
- 有效性校驗:通過 `isnan()` 函數檢測數據是否為 `NaN`,規避無效值干擾
- 故障反饋:讀取失敗時串口輸出“Failed to read from DHT sensor!”,便于調試

這種“讀取-校驗-反饋”的閉環設計,既滿足了環境監測對實時性的需求,又通過多重機制保障了數據的準確性,為后續的 OLED 顯示和系統決策提供了可靠的數據源。


敲擊控制LED邏輯

?在基于 STM32F103C8T6 的智能環境監測系統中,敲擊交互控制 LED 是一個充滿趣味的功能實現。當我們敲擊傳感器模塊時,系統如何準確識別信號并穩定控制 LED 狀態呢?這背后離不開三個關鍵設計:去抖動延遲機制、簡潔的狀態切換邏輯,以及直觀的調試反饋。
????????去抖動延遲:告別"誤觸發"的關鍵設計
????????機械傳感器在受到敲擊時,金屬觸點可能因彈性形變產生短暫的"抖動",表現為電平信號快速波動(比如一次敲擊被誤判為多次)。為解決這個問題,系統引入了 **300 ms 的去抖動延遲(debounceDelay)**。其核心邏輯是:只有當檢測到敲擊信號為高電平,且當前時間與上次有效敲擊時間的差值超過 300 ms 時,才判定為一次有效敲擊。這種設計就像給系統加了一個"冷靜期",確保短暫的信號波動不會被誤識別,大幅提升了交互穩定性。
????????有效敲擊判斷公式:
????????當前敲擊時間 - 上次敲擊時間 > debounceDelay (300 ms)`
滿足該條件時,系統才確認敲擊有效,避免機械抖動導致的"幽靈觸發"。

????????狀態切換:一行代碼實現"亮滅反轉"
????????確認有效敲擊后,LED 狀態的切換通過極簡邏輯實現:`ledState = !ledState`。這種 **bool 型變量取反操作** 能直接將 LED 狀態從"亮"切換為"滅",或從"滅"切換為"亮",無需復雜的條件判斷。隨后,系統根據更新后的 ledState 控制 LED_PIN 引腳輸出高低電平,完成硬件層面的狀態控制。這種設計不僅代碼簡潔,還能確保狀態切換的即時性。
????????串口調試:讓交互過程"可視化"
????????為方便開發調試,系統在每次有效敲擊時,會通過串口打印 **"Knock detected! LED ON/OFF"** 信息。這條反饋不僅能讓開發者直觀確認敲擊信號已被識別,還能通過"ON/OFF"后綴判斷 LED 當前狀態是否符合預期。例如,首次敲擊后打印"LED ON",再次敲擊打印"LED OFF",清晰呈現交互邏輯的執行過程,大幅降低調試難度。
????????通過這三重設計,敲擊控制 LED 功能既實現了硬件信號的穩定識別,又通過簡潔代碼完成狀態控制,同時保留了開發調試的便利性,充分體現了嵌入式系統"簡潔高效、人機協同"的交互設計理念。


設備運行效果圖



?

以上代碼和項目設計僅供參考,實際實施時請根據具體硬件版本調整引腳配置和庫版本。歡迎在評論區分享您的實現經驗和改進建議!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/96697.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/96697.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/96697.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

動態規劃在子數組/子串問題

目錄 一、最大子數組和&#xff08;LeetCode 53&#xff09; 二、環形子數組的最大和&#xff08;LeetCode 918&#xff09; 三、乘積最大子數組&#xff08;LeetCode 152&#xff09; 四、乘積為正數的最長子數組長度&#xff08;LeetCode 1567&#xff09; 五、等差數列…

微信小程序開發筆記(01_小程序基礎與配置文件)

ZZHow(ZZHow1024) 參考課程: 【尚硅谷微信小程序開發教程】 [https://www.bilibili.com/video/BV1LF4m1E7kB] 009_文件和目錄結構介紹新建頁面與調試基礎庫 一個完整的小程序項目分為兩個部分&#xff1a;主體文件、頁面文件 主體文件又稱全局文件&#xff0c;能夠作用于整…

NLP Subword 之 BPE(Byte Pair Encoding) 算法原理

本文將介紹以下內容&#xff1a; 1. BPE 算法核心原理2. BPE 算法流程3. BPE 算法源碼實現DemoBPE最早是一種數據壓縮算法&#xff0c;由Sennrich等人于2015年引入到NLP領域并很快得到推廣。該算法簡單有效&#xff0c;因而目前它是最流行的方法。GPT-2和RoBERTa使用的Subword算…

CSS 偽類選擇器

偽類選擇器&#xff08;pseudo-class selector&#xff09;是一種用于選擇HTML元素特定狀態或特征的關鍵字&#xff0c;它允許開發者基于文檔樹之外的信息&#xff08;如用戶交互、元素位置或狀態變化&#xff09;來選擇元素并應用樣式。偽類選擇器以冒號(:)開頭&#xff0c;附…

Electron 新特性:2025 版本更新解讀

引言&#xff1a;Electron 新特性在 2025 版本更新中的解讀核心價值與必要性 在 Electron 框架的持續演進中&#xff0c;新特性的引入是推動桌面開發創新的核心動力&#xff0c;特別是 2025 年的版本更新&#xff0c;更是 Electron 項目從成熟生態到前沿技術的躍進之鑰。它不僅…

MyBatis從入門到面試:掌握持久層框架的精髓

MyBatis從入門到面試&#xff1a;掌握持久層框架的精髓 前言 在Java企業級應用開發中&#xff0c;持久層框架的選擇至關重要。MyBatis作為一款優秀的半自動化ORM框架&#xff0c;以其靈活的SQL定制能力和良好的性能表現&#xff0c;成為了眾多開發者的首選。本文將帶你從MyBa…

5.Three.js 學習(基礎+實踐)

Three.js 是 “WebGL 的封裝庫”&#xff0c;幫你屏蔽了底層的著色器 / 緩沖區細節&#xff0c;專注于 “3D 場景搭建”&#xff0c;開發效率高&#xff0c;是通用 3D 開發的首選。他的核心是 “場景 - 相機 - 渲染器” 的聯動邏輯&#xff0c;先掌握基礎組件&#xff0c;再學進…

消火栓設備工程量計算 -【圖形識別】秒計量

消火栓設備工程量計算 -【圖形識別】秒計量 消防系統的消火栓設備水槍、水帶和消火栓組成&#xff0c;根據清單定額規則計算消火栓設備工程量。通過CAD快速看圖的圖形識別框選圖紙就能自動數出消火栓數量&#xff0c;省時又準確&#xff0c;是工程人做消防算量的好幫手。 一、…

Docker 與 VSCode 遠程容器連接問題深度排查與解決指南

Docker 與 VSCode 遠程容器連接問題深度排查與解決指南 引言 Visual Studio Code 的 Remote - Containers 擴展極大地提升了開發體驗&#xff0c;它將開發環境容器化&#xff0c;保證了環境的一致性&#xff0c;并允許開發者像在本地一樣在容器內進行編碼、調試和運行。然而&…

愛圖表:鏑數科技推出的智能數據可視化平臺

本文轉載自&#xff1a;https://www.hello123.com/aitubiao ** 一、? AI 圖表&#xff1a;智能數據可視化好幫手 愛圖表是鏑數科技旗下的一款智能數據可視化工具&#xff0c;它能讓復雜的數字和報表變得直觀又好懂。接入了先進的DeepSeek 系列 AI 模型&#xff0c;它不僅會做…

ENVI系列教程(四)——圖像幾何校正

目錄 1 概述 1.1 控制點選擇方式 1.2 幾何校正模型 1.3 控制點的預測與誤差計算 2 詳細操作步驟 2.1 掃描地形圖的幾何校正 2.1.1 第一步:打開并顯示圖像文件 2.1.2 第二步:啟動幾何校正模塊 2.2 Landsat5 影像幾何校正 2.2.1 第一步:打開并顯示圖像文件 2.2.2 第…

STM32-FreeRTOS操作系統-消息隊列

引言在嵌入式開發領域&#xff0c;STM32與FreeRTOS的結合應用極為廣泛。本文將探討如何在STM32上使用FreeRTOS實現消息隊列功能&#xff0c;助力高效任務通信與系統協作。消息隊列定義消息隊列是一種在 FreeRTOS 中用于任務間通信的機制。它允許任務將消息發送到隊列中&#xf…

【開題答辯全過程】以 C語言程序設計課程網站為例,包含答辯的問題和答案

個人簡介一名14年經驗的資深畢設內行人&#xff0c;語言擅長Java、php、微信小程序、Python、Golang、安卓Android等開發項目包括大數據、深度學習、網站、小程序、安卓、算法。平常會做一些項目定制化開發、代碼講解、答辯教學、文檔編寫、也懂一些降重方面的技巧。感謝大家的…

手機上有哪些比較好用的待辦事項提醒工具

在快節奏的現代工作中&#xff0c;我們每天都要面對大量的任務與事務。從項目截止日期、客戶會議&#xff0c;到日常的工作安排&#xff0c;瑣碎的事項容易讓人顧此失彼。 手機待辦事項工具早已突破傳統“記事本”的局限&#xff0c;成為移動辦公場景下的效率核心。它們通過任務…

Mysql數據庫事務全解析:概念、操作與隔離級別

MySQL系列 文章目錄MySQL系列一、什么是事務1.1事務的核心概念1.2、 事務的四大屬性&#xff08;ACID&#xff09;1.2.1 原子性&#xff08;Atomicity&#xff09;1.2.2 一致性&#xff08;Consistency&#xff09;1.2.3 隔離性&#xff08;Isolation&#xff09;1.2.4 持久性&…

【MCU EEPROM開發教程】

簡單來說把eeprom芯片當成一個傳感器來使用&#xff0c;通過IIC/SPI等協議對芯片進行讀寫操作&#xff0c;具體的讀寫操作涉及到一些算法—怎么樣讀寫更加快速&#xff0c;以及一些異常錯誤處理。 應用場景&#xff1a; 對于一些掉電也不能丟失的數據要存在eeprom/flash中&…

Docker將鏡像搬移到其他服務上的方法

導出/加載鏡像&#xff08;保留分層、標簽&#xff09;和導出/導入容器快照&#xff08;僅文件系統&#xff0c;丟失鏡像歷史與標簽&#xff09;。 一、把鏡像打包帶走&#xff08;推薦&#xff09; 適合把一個或多個鏡像搬到離線/內網機器&#xff0c;保留分層與標簽。 在源服…

Ubuntu 系統安裝 Miniconda 完整方法與注意事項

一、完整安裝步驟 1. 下載 Miniconda 安裝包 Miniconda 安裝包為 .sh 格式腳本,下載途徑分兩種: 方式 1:瀏覽器下載(適合新手) 訪問 Miniconda 官方下載頁,選擇對應系統版本(Ubuntu 選 Miniconda3-latest-Linux-x86_64.sh),默認保存到用戶目錄的 ~/Downloads 文件夾…

【后端】數據庫四大范式詳細解析

梳理一下 MySQL&#xff08;或關系型數據庫&#xff09;中的第一、二、三、四范式&#xff0c;這是數據庫設計中非常重要的規范化理論。1?? 第一范式 (1NF&#xff1a;First Normal Form)定義&#xff1a;字段具有原子性&#xff0c;不可再分。數據表中每一列都必須是不可分割…

HarmonyOS后臺任務調度:JobScheduler與WorkManager實戰指南

本文將深入探討HarmonyOS 5&#xff08;API 12&#xff09;中的后臺任務調度機制&#xff0c;重點講解JobScheduler和WorkManager的使用方法、適用場景及最佳實踐&#xff0c;幫助開發者實現高效、智能的后臺任務管理。 1. 后臺任務調度概述 HarmonyOS提供了兩種主要的后臺任務…