今天小编给大家带来的是来自国外的Maker Gokux 的Tiny LiDAR的项目。这个测距仪项目使用了一个0.49英寸的OLED显示屏,配合微型电池和微XIAO ESP32c3,打造出一个超级迷你的激光测距仪。通过使用VL53L0X TOF的激光测距传感器,可以实现2米内的距离测量。
Gokux 是OLED显示器的忠实粉丝。最近做的还能多项目都使用了OLED显示屏。在研究一个项目时,Gokux 遇到了最小的OLED显示屏,一个0.49英寸的64x32像素的微型显示屏。他决定用这个显示器构建一个超级小工具。除了显示器之外,这个项目使用了微型电池和微型微控制器 Xiao ESP32。这就是Gokux 想出的“LiDAR ”项目。
材料清单
硬件
- Seeed studio xiao esp32c3
- 小型电池
- 0.49英寸OLED显示模块
- 基于VL53L0X TOF的激光激光测距传感器 图片 滑动开关
- B-7000 多用途胶水
- 30 AWG 电线
软件
- Fusion 360
- arduino IDE
工具
- 烙铁套件
- 线切割机
- 焊接工具
- 3D打印机及耗材
产品设计
利用Fusion 360来规划和设计我的项目,这需要仔细的空间优化。需要将所有部件安装到尽可能小的外形尺寸中,同时确保实用性,包括足够的布线空间和易于组装。首先,导入了零件的所有 3D 模型,并通过将零件放置在不同的位置来尝试不同的配置。一旦我找到了最佳配置,围绕它们建造了外壳。下面提供了所有设计文件。
3D打印
将所有模型导出到。STL 文件,使用 Anycubic 打印机 3D 打印它们。在这个项目中,我使用了 Numakers PLA+ Outrageous Orange 灯丝。你可以找到。第一步中的 STL 文件。
代码烧录
我总是喜欢在组装之前将代码上传到微控制器。我正在使用Arduino IDE刷新代码。按照以下教程为 Seeed Studio XIAO ESP32C3 设置 IDE,并了解有关此板的更多信息
确保将所有必需的库安装到 Arduino IDE 中
- VL53L0X库
- MedianFilter 库
下面是该项目的完整代码
//The range readings are in units of mm. #include
#include#include
#include#include
#define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins) Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); VL53L0X sensor;
MedianFilter test(10, 0);
// Uncomment this line to use long range mode. This
// increases the sensitivity of the sensor and extends its
// potential range, but increases the likelihood of getting
// an inaccurate reading because of reflections from objects
// other than the intended target. It works best in dark
// conditions.
//#define LONG_RANGE
// Uncomment ONE of these two lines to get
// - higher speed at the cost of lower accuracy OR
// - higher accuracy at the cost of lower speed
//#define HIGH_SPEED #define HIGH_ACCURACY void setup()
{
Serial.begin(9600); Wire.begin();
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3D for 128x64 Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
sensor.init(); sensor.setTimeout(500);
#if defined LONG_RANGE
// lower the return signal rate limit (default is 0.25 MCPS) sensor.setSignalRateLimit(0.1);
// increase laser pulse periods (defaults are 14 and 10 PCLKs) sensor.setVcselPulsePeriod(VL53L0X::VcselPeriodPreRange, 18);
sensor.setVcselPulsePeriod(VL53L0X::VcselPeriodFinalRange, 14); #endif
#if defined HIGH_SPEED
// reduce timing budget to 20 ms (default is about 33 ms) sensor.setMeasurementTimingBudget(20000);
#elif defined HIGH_ACCURACY
// increase timing budget to 200 ms sensor.setMeasurementTimingBudget(200000);
#endif
// Clear the buffer. display.setTextColor(WHITE);
}
void displayDistance( int val)
{
display.clearDisplay(); display.setTextSize(3); display.setCursor(40,32); display.print(val); display.setTextSize(1); display.setCursor(60,55); display.print("mm"); display.display(); delay(100);
}
void loop()
{
int o,r = sensor.readRangeSingleMillimeters(); test.in( r );
o = test.out(); Serial.print(o);
if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); } Serial.println();
displayDistance( o );
}
接线图
小ESP32C3支持锂电池充放电管理。这意味着 BMS 是内置的。因此,不需要外部BM S。您可以通过 USB 端口为电池充电
组装和接线
由于我们项目的规模很小,我们需要使用不同的组装方法。由于零件上没有任何螺丝孔,因此我们不能使用微小的螺钉将所有东西固定在一起。最好的使用方法是胶水,这与大多数紧凑型科技产品
(例如 AirPods)中使用的制造方法相同。我们在这里没有使用热胶,我们使用的是 B-7000 多用途胶水。现在让我们开始组装
解题步骤 5.1
将OLED模块的所有四根电线焊接到传感器上。此外,从传感器上焊接另外四根 20 毫米的电线,这些电线将在后续步骤中用于连接到 xiao GPIO。
解题步骤 5.2
将OLED模块放入3D打印插槽中,同时将传感器放在侧面,并确保将传感器与侧面的小窗口对齐
解题步骤 5.3
现在粘上OLED模块和传感器。在模块的侧面涂上胶水
解题步骤 5.4
将电池粘在OLED模块顶部
解题步骤 5.5
减少开关端子的长度,将电池 BT+ 线切成合适的长度,然后将 BT+ 线焊接到其中一个开关端子中。此外,从开关上焊接一根小电线。将连接到 Xiao 板的 BAT+
解题步骤 5.6
现在将开关放入 3D 打印插槽并将其粘合到位
解题步骤 5.7
将所有 GPIO 线焊接在 Xiao 板下方。通过 Xiao 的 3V3 引脚为 OLED 和传感器供电。此外,将电池负极线和正极 BT 线从开关连接到 Xiao 的电池端子。
解题步骤 5.8
推下所有电线,将 Xiao 板放入 3D 打印中。此外,将 USB 端口与 3D 打印上的孔对齐。并粘上Xiao板
解题步骤 5.9
我们刚刚完成了项目的组装。打开电源
组装完成有效果了
测试
让我们测试一下我们的测量的准确性。我在距离设备 10 厘米的地方放置了一个物体。我们项目
的测量值也显示为 100 毫米,因此效果很好。
总结
向其添加钥匙链,可以将其与侧面的 3 毫米小孔连接起来。所以最好随身携带。我们的传感器可以测量高达 2 米,但精度很低。它提供长达 1 米的可靠测量。所以建议大家在这个范围内使用它。所以这是Gokux 做的最小的项目。这对他来说是一次很棒的学习经历。他目前正在计划在同一拓扑中开展更多项目。因此,想了解他的更多作品欢迎大家点击原文链接了解。