月球模型链接:https://www.thingiverse.com/thing:3242080
法兰、底座模型见附件(.SLDPRT文件为SW 2020创建,请使用2020以上版本打开)。
月球模型需要向热床反法向偏移一定距离,使其具有一定的基准平面安装底座。
接着导入法兰模型,调整到合适的位置使其两者能够良好吻合。
然后合并两者模型,或者直接进行切片(直接切片会有略微挤出溢出-走线重复)。
最后导入打印机打印。
(打印效果见Figure7)
法兰孔建议嵌入M3的土八螺母/铜嵌螺母以获得更好的装配效果。
装配的螺丝采用M3x26(?好像是这个参数,模型不在手边有点忘了,更长也无所谓)。
(好久之前打印的月球模型,当时打印机调教得不好,层纹还是很明显。)
控制器需要尽可能小巧,因此需要采用体积较小的元件。
MCU采用ESP32-C3-MINI-N4,该封装外形小巧,且相对于QFN芯片更易于焊接、外围阻容少。
内置USB JTAG控制器,可以直接使用USB进行烧录,省下一颗USB-TTL芯片的成本和空间(虽然ESP32-C3成本比较高)。
具有WIFI和蓝牙功能,可以接入物联网平台。
电源管理需要满足电池的充电、系统供电的分配和控制。电源架构如下图所示:
电源管理采用ETA6002。
那必须要有 R!G!B!
采用了较为主流的WS2812b灯珠。选用更小封装的型号可能会更好,但由于手头还有不少5050封装的,因此就直接用了。
由于空间有限,只放进了两颗,亮度比较有限。
但,应该没人用这玩意照明吧?
选用了一个尺寸为L35W30H10mm的聚合物电池,容量为1000mAh。
电池链接:https://item.taobao.com/item.htm?id=589740856789&spm=a1z10.1-c.w4004-22660760862.4.2c3e7f05jPE9V6&skuId=4258503775257
(卡其色 103035-1000毫安)
在按键功能方面,软件需要实现:灯光的开关、灯光亮度切换、灯光颜色的切换。
本项目采用了单个按键的功能复用实现。
分别为:
在按键功能复用上,调用了OneButton库予以实现。
WS2812b是一款可编程的RGB灯珠,可以通过程序进行控制。
本项目采用了FastLED库予以实现控制。
目前续航效果较差,亮度最高状态下约能连续使用6h。
因此,希望通过让MCU闲时进入低功耗状态以降低MCU的部分功耗、提高续航。
物联网后可以使用APP查看灯的状态、控制灯的状态或者接入米家灯。
目前这两个功能仍在开发中(咕咕)。
#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); }
链接:https://oshwhub.com/carele_i/moonlight
本文主要介绍在未联网(AP热点)情况下实现WEB交互界面的CSS和javascript库。
本文介绍如何使用Arduino-ESP32库中的API函数获取ESP32的芯片、RAM信息等,并提供了一个示例程序代码。
ESP32系列(包括ESP32-S3)搭载Xtensa双核处理器,默认情况下Arduino框架仅使用单核运行用户代码,通过多核编程,可以充分利用硬件资源来提升系统响应和性能。
ESP32 芯片有34个物理GPIO管脚。每个GPIO管脚都可用作一个通用IO,或连接一个内部的外设信号。IO_MUX ¹、RTC IO MUX 和GPIO交换矩阵用于将信号从外设传输至GPIO管脚。
ESP32Encoder库是一个利用ESP32脉冲计数器硬件外设实现高效旋转编码器读取的软件库。
本文对比了几款适合物联网开发的盒子硬件参数,供大家参考。
乐动掌控采用掌控板作为主控,塑胶一体式外壳,侧面和底面开具多个乐高扩展孔位,兼容乐高积木,可完成多种创意应用。
在MicroPython的ESP32库中,NVS类用于管理非易失性存储,支持 32 位有符号整数和 二进制blob。
Arduino-ESP32项目提供的Preferences库是一个专为ESP32设计的非易失性存储解决方案,它替代了传统的Arduino EEPROM库,提供了更强大、更可靠的数据存储功能。
本方案是一个基于ESP32-CAM + 物联网的图像采集方案。
专属教研服务系统,助您构建STEM课程体系,打造一站式教学环境。