月球灯 - 基于ESP32-C3控制器 - 嘉立创EDA开源硬件平台

编辑器版本 ×
标准版 Standard

1、简单易用,可快速上手

2、流畅支持300个器件或1000个焊盘以下的设计规模

3、支持简单的电路仿真

4、面向学生、老师、创客

专业版 professional

1、全新的交互和界面

2、流畅支持超过3w器件或10w焊盘的设计规模,支持面板和外壳设计

3、更严谨的设计约束,更规范的流程

4、面向企业、更专业的用户

专业版 月球灯 - 基于ESP32-C3控制器

  • 3.3k
  • 10
  • 22

简介:基于ESP32-C3设计的月球灯控制器,需要搭配特定底座和法兰模型使用。

开源协议: GPL 3.0

(未经作者授权,禁止转载)

已参加:“暖冬造物迎新年”征集令

创建时间: 2024-01-20 14:02:27
更新时间: 2024-03-25 20:33:59
描述
## 更新日志 * 2024.01.20:最初开源该项目 Ver2.4 * 2024.01.20:可以将D1移除、D2短接,以得到更好的供电效果,等待重新打板。 ## 零、模型说明 月球模型链接:[https://www.thingiverse.com/thing:3242080](https://www.thingiverse.com/thing:3242080) 法兰、底座模型见附件(.SLDPRT文件为SW 2020创建,**请使用2020以上版本打开**)。 **月球模型需要向热床反法向偏移一定距离,使其具有一定的基准平面安装底座。 接着导入法兰模型,调整到合适的位置使其两者能够良好吻合。 然后合并两者模型,或者直接进行切片(直接切片会有略微挤出溢出-走线重复)。 最后导入打印机打印。 (打印效果见Figure7)** 法兰孔建议嵌入M3的土八螺母/铜嵌螺母以获得更好的装配效果。 装配的螺丝采用M3x26(?好像是这个参数,模型不在手边有点忘了,更长也无所谓)。 (好久之前打印的月球模型,当时打印机调教得不好,层纹还是很明显。) ## 一、效果展示 ![IMG_20240114_125813.jpg](//image.lceda.cn/pullimage/T4XTn2JWdIimCjbaS3HwD8F9zsHZcrpPwwVpsnYC.jpeg) <center>Figure1 实物图1</center> ![IMG_20231004_181830.jpg](//image.lceda.cn/pullimage/6lMFR3VBtta0PA6Y7B988i8fjOLf8iuTM7pWi9Cd.jpeg) <center>Figure2 实物图2</center> ![IMG_20240114_130129.jpg](//image.lceda.cn/pullimage/JMLoKohbPdQBS2LRKb9vR76JmL5GZQxCAcWpszIJ.jpeg) <center>Figure3 爆炸图</center> ## 二、硬件设计 控制器需要尽可能小巧,因此需要采用体积较小的元件。 ### 2.1 MCU MCU采用ESP32-C3-MINI-N4,该封装外形小巧,且相对于QFN芯片更易于焊接、外围阻容少。 内置USB JTAG控制器,可以直接使用USB进行烧录,省下一颗USB-TTL芯片的成本和空间(虽然ESP32-C3成本比较高)。 具有WIFI和蓝牙功能,可以接入物联网平台。 ### 2.2 电源管理 电源管理需要满足电池的充电、系统供电的分配和控制。电源架构如下图所示: ![电源架构.png](//image.lceda.cn/pullimage/Q9QI7uaZdGMBkirRpIZNbc0CcvmikQ6Z2L8tfaAm.png) <center>Figure4 电源架构</center> 电源管理采用ETA6002。 ### 2.3 灯光 那必须要有 R!G!B! 采用了较为主流的WS2812b灯珠。选用更小封装的型号可能会更好,但由于手头还有不少5050封装的,因此就直接用了。 由于空间有限,只放进了两颗,亮度比较有限。 但,应该没人用这玩意照明吧? ### 2.4 电池 选用了一个尺寸为L35W30H10mm的聚合物电池,容量为1000mAh。 电池链接:[https://item.taobao.com/item.htm?id=589740856789&spm=a1z10.1-c.w4004-22660760862.4.2c3e7f05jPE9V6&skuId=4258503775257](https://item.taobao.com/item.htm?id=589740856789&spm=a1z10.1-c.w4004-22660760862.4.2c3e7f05jPE9V6&skuId=4258503775257) (卡其色 103035-1000毫安) ## 三、软件设计 ### 3.1 按键功能 在按键功能方面,软件需要实现:灯光的开关、灯光亮度切换、灯光颜色的切换。 本项目采用了单个按键的功能复用实现。 分别为: * KEY1长按:发光开/关 * KEY1双击:发光颜色切换(预设5种) * KEY1单击:亮度切换(8个亮度等级) 在按键功能复用上,调用了`OneButton库`予以实现。 ### 3.2 WS2812b控制 WS2812b是一款可编程的RGB灯珠,可以通过程序进行控制。 本项目采用了`FastLED库`予以实现控制。 ### 3.3 低功耗&物联网 目前续航效果较差,亮度最高状态下约能连续使用6h。 因此,希望通过让MCU闲时进入低功耗状态以降低MCU的部分功耗、提高续航。 物联网后可以使用APP查看灯的状态、控制灯的状态或者接入米家灯。 目前这两个功能仍在开发中(咕咕)。 ## 四、更多图片 ![IMG_20240114_125949.jpg](//image.lceda.cn/pullimage/BDb8VLfI14GUi64QFYkzRoRfO4UeW1ajRLkpng4T.jpeg) <center>Figure5 实物图3</center> ![IMG_20240114_130339.jpg](//image.lceda.cn/pullimage/2A5GMzuV1ggNepYe5X2MyHxkOWsIDy9hIdKMQlAb.jpeg) <center>Figure6 实物图4</center> ![IMG_20240114_125916.jpg](//image.lceda.cn/pullimage/M0Ulp0KyHJ3a5622A7AQlppSxP3MWcVPeDp9hBZ8.jpeg) <center>Figure7 实物图5</center> ![IMG_20240114_130339.jpg](//image.lceda.cn/pullimage/qGIWxoaWFHmsvbTeHYn8jhlXiS6oi3yWacc9V2Fm.jpeg) <center>Figure8 实物图6(该侧为Type-C接口和复位按键-需要顶针)</center> ![IMG_20240114_130354.jpg](//image.lceda.cn/pullimage/eG2T4BPWFiJnzwTCTW019dYtkMFhs4RTM2iNkkwT.jpeg) <center>Figure9 实物图7(该侧为多功能按键)</center> ![IMG_20231004_163601.jpg](//image.lceda.cn/pullimage/JCmxJXSGFbUn1xEFb52PGtuirX3toemyasPmxV7E.jpeg) <center>Figure10 实物图8</center> ## 附录 ### 附录1:源代码 ``` #include <Arduino.h> #include <FastLED.h> #include "OneButton.h" // FastLED #define NUM_LEDS 2 // LED灯珠数量 #define DATA_PIN 10 // Arduino输出控制信号引脚 #define LED_TYPE WS2812 // LED灯带型号 #define COLOR_ORDER GRB // RGB灯珠中红色、绿色、蓝色LED的排列顺序 uint8_t max_bright = 255; // LED亮度控制变量,可使用数值为 0 ~ 255, 数值越大则光带亮度越高 CRGB leds[NUM_LEDS]; // 建立光带leds // OneButton #define button1_Pin 5 OneButton button1(button1_Pin, true); // 变量 unsigned char status=0; // LED开关状态 unsigned char brightness=0; // 亮度状态 unsigned char colorStatus=0; // 颜色状态 // 函数 void click1() { if(status) { brightness+=32; FastLED.setBrightness(brightness); FastLED.show(); if(brightness<10) { brightness=0; } } } void doubleclick1() { if(status) { colorStatus++; switch(colorStatus) { case 0: fill_solid(leds, 2, CRGB::White);break; case 1: fill_solid(leds, 2, CRGB::LightBlue);break; case 2: fill_solid(leds, 2, CRGB::LightCoral);break; case 3: fill_solid(leds, 2, CRGB::Pink);break; case 4: fill_solid(leds, 2, CRGB::MediumPurple);break; case 5: fill_solid(leds, 2, CRGB::Gold);break; case 6: colorStatus=0; } FastLED.show(); } } void longPressStart1() { status=!status; if(status & brightness==0) { brightness=128; } else if(!status) { brightness=0; } FastLED.setBrightness(brightness*status); FastLED.show(); } void setup() { // put your setup code here, to run once: LEDS.addLeds<LED_TYPE, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS); // 初始化光带 FastLED.setBrightness(brightness); // 设置光带亮度 fill_solid(leds, 2, CRGB::White); FastLED.show(); button1.attachClick(click1); button1.attachDoubleClick(doubleclick1); button1.attachLongPressStart(longPressStart1); } void loop() { // put your main code here, to run repeatedly: button1.tick(); delay(50); } ```
设计图
原理图
1 /
PCB
1 /
未生成预览图,请在编辑器重新保存一次
工程成员
侵权投诉
相关工程
换一批
加载中...
添加到专辑 ×

加载中...

温馨提示 ×

是否需要添加此工程到专辑?

温馨提示
动态内容涉嫌违规
内容:
  • 153 6159 2675

服务时间

周一至周五 9:00~18:00
  • 技术支持

support
  • 开源平台公众号

MP