Skip to content

floating142/SmartLamp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SmartLamp

PlatformIO LVGL Espressif ESP32 Arduino FastLED

开发环境

  • 平台:PlatformIO (VSCode 插件)
  • 框架:Arduino
  • 开发板:esp32-c3-devkitc-02
  • 分区表:partitions.csv

主要硬件

  • ESPC3-12-N4 模块(ESP32‑C3 系列)
  • WS2812B(16×4 灯板,支持色温与亮度控制)
  • 1.54" ST7789 TFT(240×240)
  • BH1750 环境光传感器
  • DHT40 温湿度传感器
  • CW2015 电量检测 IC
  • DS3231 RTC(实时时钟)
  • 18650 电池 + 充放电管理(IP5407 / IP3005A)
  • 触摸(TTP223)与拨轮输入(ADC)
  • 人体存在传感器 HLK‑LD2410D

目录结构

src/           # 主固件源码(按功能模块划分)
	app/         # 灯效与核心逻辑
	sensors/     # 各类传感器驱动与管理
	network/     # Wi-Fi、MQTT、BLE 等网络相关
	ui/          # 本地 UI 与显示
	input/       # 按键输入
	system/      # I2C、RTC、存储等系统服务
doc            # 文档与资料
platformio.ini # PlatformIO 配置

主要功能

  • 智能灯控制

    • 亮度与色彩控制(支持 RGB/HSV 处理与色温调整)
    • 多种灯效(淡入/淡出、场景、动画序列)
    • 环境光自适应调节亮度
    • 支持状态与配置持久化存储
  • 传感器采集

    • 支持 BH1750(光照)、SHT4x(温湿度)、CW2015(电量/充放电状态)等多种传感器
    • 统一管理,支持轮询、数据过滤与事件分发
  • 简易雷达驱动(未完成)

    • 支持 LD2410D 雷达的基础通信与数据解析
    • 目前仅实现原始数据读取,目标检测/跟踪与高级控制尚未实现
  • 网络与集成

    • Wi‑Fi:管理连接/重连,采用自动重连与指数退避以降低资源占用
    • MQTT(轻量消息总线):发布 <base>/state、订阅 <base>/set,上报 <base>/availability;支持 LWT、QoS=1 与 retained
    • Home Assistant:支持 MQTT Discovery,上报 device_info 与 availability 以便自动注册实体
    • 建议:限制消息大小(避免大 JSON)、启用心跳与重连、将凭据/主题配置持久化;SRAM 紧张时谨慎启用 TLS
  • 蓝牙接口

    • BLE(基于 NimBLE):用于配网(写入 Wi‑Fi 凭据)、本地控制与状态查询
    • 设计要点:分块传输大载荷、限制并发连接、合理设置 MTU 与广告间隔以节省内存与 CPU
    • 安全:对敏感操作(凭据写入、OTA)建议强制配对/绑定或短期授权
  • 本地 UI 与输入

    • 使用 LovyanGFX + lvgl 渲染 UI,显示时间、天气、状态与设置界面。
    • 支持 GPIO 按键与 ADC 按键,短按/长按及多键逻辑
  • 系统服务

    • I2C 总线统一管理,支持多外设接入
    • RTC 定时任务与时间戳
    • 持久化存储,支持分区管理
  • 模块化架构

    • 代码按功能模块划分,每个模块独立实现任务与接口,通过消息队列与事件回调解耦
    • 模块间通过消息队列/事件回调解耦,便于扩展与维护

注意事项(内存与 Flash)

  • ESP32‑C3 性能有限,只有单核,且只有 400 KB SRAM,容易内存溢出,需小心优化;需特别注意 FreeRTOS 系统任务堆栈。
  • 程序应尽量精简并控制内存峰值,避免同时分配大堆与大缓冲。此程序实现了 WiFi 与 BLE 共存,导致开机后内存仅剩 29 KB。
  • 通过网页(HTTP)获取 JSON 会占用大量内存,应避免一次性大缓冲或并发解析,优先使用流式/分块解析并复用缓冲区。
  • C3 内置 flash 仅 4 MB,空间有限;已将程序分区调整为 3 MB(需权衡 OTA 与数据存储空间)。

主要依赖库及来源

About

一个基于 ESP32C3 的模块化智能灯固件,提供多种可编程灯效、亮度与色彩控制,集成光照、温湿度与电量等传感器数据。它包含 Wi‑Fi 管理、MQTT 与 Home Assistant 集成接口、以及 BLE 命令通道以便本地配置与控制。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors