久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 基于 Seeed XIAO SAMD21 與 OLED 擴展板的智能手電筒設計

基于 Seeed XIAO SAMD21 與 OLED 擴展板的智能手電筒設計

作者:Yifan Gao 時間:2025-11-21 來源: 收藏

摘要

本文介紹了一款基于 Seeed Studio XIAO SAMD21(XIAO M0) 微控制器及其 XIAO 擴展板 實現的智能手電筒。系統以 3.7V 鋰離子電池供電,使用擴展板集成的充電管理與電源系統,并通過 AO3400 N 溝道 MOSFET 驅動高功率 LED 陣列。借助 XIAO 擴展板上的 SSD1306 OLED 顯示屏,手電筒可實時顯示亮度百分比,并通過搖桿式按鍵實現四檔光照模式(20%、40%、100%、關閉)的循環切換。本文從設計動機、硬件架構、電路設計、軟件控制策略、機械結構和裝配流程等方面,對該“過度工程”的智能手電進行系統性闡述。

Smart Flashlight with XIAO MCU


1 引言

在野外露營、戶外探險和應急照明等場景中,便攜式手電筒是必備工具。市售手電雖然種類豐富,但在以下方面仍存在局限:

  • 亮度檔位可定制性差;

  • 不具備狀態反饋(如電量或亮度信息);

  • 擴展性與可編程能力有限。

為滿足個人露營需求,作者設計了這款 智能手電筒,目標包括:

  1. 具備多檔亮度控制:支持不同環境下的照明需求;

  2. 可視化亮度信息:通過 OLED 顯示亮度百分比與當前模式;

  3. 基于 XIAO 的可編程平臺:便于日后擴展功能;

  4. 結構一體化:通過 3D 打印實現定制外殼。

項目使用了 XIAO SAMD21 開發板 + XIAO 擴展板 作為控制與電源核心,通過 MOSFET 驅動自制 2835 LED 陣列,實現高電流、大面積泛光的照明效果。


2 系統構成與總體架構

系統可分為以下幾個部分:

  1. 控制與電源模塊

    • XIAO SAMD21 M0 微控制器

    • XIAO 擴展板(含鋰電充電電路、電源管理及 SSD1306 OLED)

    • 3.7V、2000 mAh 鋰離子電池

  2. 功率驅動模塊

    • AO3400 N 溝道 MOSFET(SOT-23 封裝)

    • MOSFET 柵極電阻:10 kΩ(0603 封裝)

    • LED 陣列負載(8 顆 2835 白光 LED)

  3. LED 光源模塊

    • 自制銅包板(LED Board)

    • 8 顆 2835 封裝白光 LED 并聯

    • 每對 LED 串聯 5.6 Ω 電阻(2512 封裝),用于限流

  4. 人機交互與結構件

    • XIAO 擴展板上的 SSD1306 OLED 顯示屏

    • 觸發按鍵 – 搖桿式開關

    • 3D 打印外殼(主殼體 + PCB 支架)


3 硬件設計與關鍵器件

3.1 主要器件清單

  • XIAO SAMD21 M0 開發板

  • XIAO Expansion Board(帶 OLED 與充電電路)

  • 3.7V 鋰電池,容量約 2000 mAh

  • LED 白光 2835 封裝 × 若干

  • 5.6 Ω 電阻(2512)

  • AO3400 N 溝道 MOSFET(SOT-23)

  • 10 kΩ 電阻(0603)

  • 搖桿式按鍵(Push Button – Rocker Switch 風格)

  • 若干導線、M2 螺絲

  • 3D 打印外殼與 LED PCB 支架

3.2 控制與供電電路

本設計中,XIAO 擴展板同時承擔:

  • 鋰電池充電與保護;

  • 為 XIAO 與 OLED 提供穩定電源(約 3V/3.3V);

  • 對外提供 3V 電源端口,用于驅動 LED 負載(通過 MOSFET 控制)。

MOSFET 驅動配置

  • MOSFET 型號:AO3400 N 溝道 MOSFET

  • 接線關系:

    • 柵極(G):通過 10 kΩ 電阻連接至 XIAO 的 D2 引腳;

    • 漏極(D):連接至 LED 負載的負極;

    • 源極(S):連接至擴展板 GND;

  • LED 負載正極:接 XIAO 擴展板的 3V 輸出端。

這種典型的**低端開關(Low-side Switch)**結構,使得高電流從電源 → LED → MOSFET → 地構成閉合回路,微控制器僅通過控制柵極電壓來開關或調制電流。

為什么必須使用 MOSFET?

普通 MCU I/O 引腳典型輸出能力約為 20–30 mA,只適合驅動單顆小功率 LED。而本項目中的 LED:

  • 采用 2835 封裝白光 LED,高亮度,單顆電流可達 200–500 mA;

  • 多顆并聯后,整體電流可能達到 2 A 量級。

若直接用 XIAO 的 I/O 引腳驅動:

  • 將遠超引腳電流能力;

  • 可能燒毀芯片或造成不穩定工作。

采用 MOSFET 作為開關器件,可以:

  • 通過 I/O 提供極小的柵極驅動電流;

  • 讓 MOSFET 承擔大電流的開關任務;

  • 通過 PWM 信號控制柵極,實現亮度調節。


4 機械結構與 3D 建模

4.1 結構劃分

手電主體采用兩部分結構:

  1. 主機身(Main Body)

    • 內部放置 XIAO 擴展板與鋰電池;

    • 右側區域安裝擴展板,使 OLED 可側向可視;

    • 上表面為搖桿開關安裝位置,便于單手握持與拇指操作。

  2. PCB 支架與燈頭

    • 前部為 PCB Holder,用于固定自制 LED 板;

    • 整體與主機身螺絲連接,便于拆裝維護。

建模使用 Autodesk Fusion 360 完成。

4.2 3D 打印參數

  • 主體材料:紫色 PLA(主殼體),透明 PLA(LED Holder),以兼顧強度與透光效果;

  • 打印參數參考:

    • 噴嘴:0.4 mm

    • 層高:0.2 mm


5 軟件設計與控制邏輯

系統軟件采用 Arduino 框架開發,主要包括兩階段:
1)簡單開關測試; 2)最終多檔亮度與 OLED 顯示控制。

5.1 測試程序 1:單純 MOSFET 開關驗證

用于驗證 MOSFET 驅動路徑是否正常:

void setup() {  // 使用 D2 控制 MOSFET
  pinMode(2, OUTPUT);
}void loop() {  digitalWrite(2, HIGH);  // 打開 LED 負載
  delay(1000);  digitalWrite(2, LOW);   // 關閉 LED 負載
  delay(1000);
}

若 LED 能以 1 秒周期閃爍,則說明:

  • MOSFET 接線正確;

  • 電源與 LED 負載路徑正常;

  • MCU 控制輸出無誤。

5.2 主程序:多檔亮度 + OLED 顯示

主控邏輯:

  • 使用一個按鍵(搖桿開關)切換模式;

  • 模式按順序循環:

    • 模式 1:關閉(OFF)

    • 模式 2:20% 亮度

    • 模式 3:40% 亮度

    • 模式 4:100% 亮度

    • 模式 5:再次關閉(OFF)

  • OLED 以豎屏方式顯示當前亮度百分比或“OFF”。

完整示例代碼如下:

#include <Wire.h>#include <Adafruit_SSD1306.h>#include <Adafruit_GFX.h>#define OLED_WIDTH  128#define OLED_HEIGHT 64#define OLED_ADDR   0x3Cconst int switchPin = 1;  // 按鍵輸入const int lightPin  = 2;  // MOSFET 柵極(PWM 輸出)int lightMode = 1;        // 當前模式Adafruit_SSD1306 display(OLED_WIDTH, OLED_HEIGHT);void setup() {  pinMode(lightPin, OUTPUT);  pinMode(switchPin, INPUT_PULLUP); // 按鍵上拉輸入
  digitalWrite(lightPin, LOW);

  display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR);
  display.clearDisplay();
}void loop() {  // 按鍵檢測(簡單版,未加去抖)
  if (digitalRead(switchPin) == LOW) {
    lightMode = lightMode + 1;    if (lightMode == 6) {
      lightMode = 1;
    }
  }  if (lightMode == 1) {    digitalWrite(lightPin, LOW);
    display.clearDisplay();
    display.setRotation(3);
    display.setTextSize(3);
    display.setTextColor(WHITE);
    display.setCursor(5, 55);
    display.println("OFF");
    display.display();    delay(500);
  }  else if (lightMode == 2) {    analogWrite(lightPin, 50);  // 約 20% 占空比
    display.clearDisplay();
    display.setRotation(3);
    display.setTextSize(3);
    display.setTextColor(WHITE);
    display.setCursor(5, 55);
    display.println("20%");
    display.display();    delay(500);
  }  else if (lightMode == 3) {    analogWrite(lightPin, 100); // 約 40% 占空比
    display.clearDisplay();
    display.setRotation(3);
    display.setTextSize(3);
    display.setTextColor(WHITE);
    display.setCursor(5, 55);
    display.println("40%");
    display.display();    delay(500);
  }  else if (lightMode == 4) {    analogWrite(lightPin, 255); // 全亮
    display.clearDisplay();
    display.setRotation(3);
    display.setTextSize(2);
    display.setTextColor(WHITE);
    display.setCursor(5, 55);
    display.println("100%");
    display.display();    delay(500);
  }  else if (lightMode == 5) {    analogWrite(lightPin, LOW);
    display.clearDisplay();
    display.setRotation(3);
    display.setTextSize(3);
    display.setTextColor(WHITE);
    display.setCursor(5, 55);
    display.println("OFF");
    display.display();    delay(500);
  }  // 可視需要添加短暫延時,避免多次觸發
  // delay(200);}

工程上可進一步加入按鍵去抖(硬件 RC / 軟件定時)、長按/短按區分等,豐富交互方式。


6 裝配工藝

6.1 電子部分預處理

  1. 使用電烙鐵從 XIAO 擴展板上拆除原有 LED、按鍵、電池等器件;

  2. 將擴展板固定在 3D 打印主機身內預留位置,通過底部開窗方便走線;

  3. 使用 4 顆 M2 螺絲將擴展板牢固固定;

  4. 將 3.7V 鋰電池放入機身內部電池倉,并連接至擴展板電池接口;

  5. 打開擴展板上的電源開關,若 XIAO 狀態 LED 點亮,說明供電正常。

6.2 最終裝配

  1. 將 LED 負載焊接并固定在 PCB Holder 上,使用 2 顆 M2 螺絲鎖緊;

  2. 連接:

    • LED 負極 → MOSFET 漏極;

    • LED 正極 → XIAO 擴展板 3V 端子;

  3. 將 LED PCB 支架組件推入主機身前端,并用 2 顆 M2 螺絲固定;

  4. 使用電烙鐵將搖桿開關引腳接至 D1 和 GND(作為模式切換輸入);

  5. 將搖桿開關壓入預留開孔中,完成結構閉合。

至此,智能手電筒的硬件與結構裝配全部完成。


7 測試與使用體驗

將系統帶到野外環境進行實測:

  • 光束為泛光型(Flood Light),照射范圍寬廣,適合照明營地或近距離活動區域;

  • 相比傳統聚光手電,本設計更強調面積覆蓋而非遠距離照射;

  • 不同亮度檔位可在省電與亮度之間靈活切換:

    • 20%:適合近距離看地圖、找物品;

    • 40%:適合普通夜間行走;

    • 100%:適合大范圍照明或復雜地形檢查。

OLED 屏以百分比形式直觀顯示當前亮度,有利于快速確認工作模式。


8 改進方向與版本規劃

作者計劃在后續的 V2 版本 中進行以下優化:

  1. 減少線材與飛線

    • 將 MOSFET 開關電路與 LED 陣列集成到同一塊 PCB 上;

    • 縮短信號與電源路徑,增強可靠性。

  2. 結構一體化

    • 針對手持手感進一步優化外形;

    • 提高防塵、防濺水能力。

  3. 功能擴展

    • 增加電池電量指示;

    • 增加閃爍模式 / SOS 模式;

    • 優化按鍵邏輯,支持長按關燈、雙擊爆閃等高級控制方式。


9 結論

本文展示了一款基于 XIAO SAMD21 + XIAO 擴展板 + AO3400 MOSFET + 自制 LED 陣列 的智能手電筒,從設計動機到實現細節完整覆蓋了:

  • 高功率 LED 負載的 MOSFET 開關驅動方法;

  • 利用現成擴展板實現鋰電充電與系統供電;

  • 使用 OLED 屏實現亮度信息可視化;

  • 通過 3D 打印實現定制結構與人機工程設計。

從工程實現角度看,該項目雖被作者稱為“過度工程”,但正是這種“過度”,讓一個日常工具兼具了可玩性、可擴展性與技術深度,非常適合作為 電源管理 + 大電流驅動 + 嵌入式 UI + 3D 結構設計 的綜合實踐案例。


關鍵詞:

評論


相關推薦

技術專區

關閉