新闻中心

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 结构设计 的综合实践案例。


关键词:

评论


相关推荐

技术专区

关闭