32

K_b0KBsM · 7月3日

创客项目秀 | 基于XIAO的迷你激光数显测距仪

今天小编给大家带来的是来自国外的Maker Gokux 的Tiny LiDAR的项目。这个测距仪项目使用了一个0.49英寸的OLED显示屏,配合微型电池和微XIAO ESP32c3,打造出一个超级迷你的激光测距仪。通过使用VL53L0X TOF的激光测距传感器,可以实现2米内的距离测量。

e011e342-4ecc-4a76-ac3e-d24cc2ad1ead.jpg

Gokux 是OLED显示器的忠实粉丝。最近做的还能多项目都使用了OLED显示屏。在研究一个项目时,Gokux 遇到了最小的OLED显示屏,一个0.49英寸的64x32像素的微型显示屏。他决定用这个显示器构建一个超级小工具。除了显示器之外,这个项目使用了微型电池和微型微控制器 Xiao ESP32。这就是Gokux 想出的“LiDAR ”项目。

e011e342-4ecc-4a76-ac3e-d24cc2ad1ead.jpg

材料清单

e011e342-4ecc-4a76-ac3e-d24cc2ad1ead.jpg

硬件

  • Seeed studio xiao esp32c3
  • 小型电池
  • 0.49英寸OLED显示模块
  • 基于VL53L0X TOF的激光激光测距传感器 图片 滑动开关
  • B-7000 多用途胶水
  • 30 AWG 电线

软件

  • Fusion 360
  • arduino IDE

工具

  • 烙铁套件
  • 线切割机
  • 焊接工具
  • 3D打印机及耗材

c1190d88-b125-424b-89c7-aa2e8d48654c.jpg

产品设计

利用Fusion 360来规划和设计我的项目,这需要仔细的空间优化。需要将所有部件安装到尽可能小的外形尺寸中,同时确保实用性,包括足够的布线空间和易于组装。首先,导入了零件的所有 3D 模型,并通过将零件放置在不同的位置来尝试不同的配置。一旦我找到了最佳配置,围绕它们建造了外壳。下面提供了所有设计文件。

e934cf50-2ded-4d5d-a959-c6916e22043a.png

3D打印

将所有模型导出到。STL 文件,使用 Anycubic 打印机 3D 打印它们。在这个项目中,我使用了 Numakers PLA+ Outrageous Orange 灯丝。你可以找到。第一步中的 STL 文件。

790afa09-b6f3-4232-bf6c-14ad7067bfa2.jpg

代码烧录

ca06c024-13af-426e-abc0-9bb9eb385442.jpg

我总是喜欢在组装之前将代码上传到微控制器。我正在使用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 );
}

接线图

00edfb1f-a25e-4677-b5db-b383df223fd7.jpg

小ESP32C3支持锂电池充放电管理。这意味着 BMS 是内置的。因此,不需要外部BM S。您可以通过 USB 端口为电池充电

组装和接线

由于我们项目的规模很小,我们需要使用不同的组装方法。由于零件上没有任何螺丝孔,因此我们不能使用微小的螺钉将所有东西固定在一起。最好的使用方法是胶水,这与大多数紧凑型科技产品

(例如 AirPods)中使用的制造方法相同。我们在这里没有使用热胶,我们使用的是 B-7000 多用途胶水。现在让我们开始组装

解题步骤 5.1

将OLED模块的所有四根电线焊接到传感器上。此外,从传感器上焊接另外四根 20 毫米的电线,这些电线将在后续步骤中用于连接到 xiao GPIO。
3e311e65-8b43-4d11-b8f6-25bc9a3e5c9b.jpg
45bbd128-3dd5-40d0-b3c7-63b9e119f91e.jpg

解题步骤 5.2

将OLED模块放入3D打印插槽中,同时将传感器放在侧面,并确保将传感器与侧面的小窗口对齐
4372b2d5-e846-4316-a831-48eb5784768d.jpg
fe0347e3-a6c3-410f-9cde-6b30be507dcb.jpg

解题步骤 5.3

现在粘上OLED模块和传感器。在模块的侧面涂上胶水
d9e61018-3457-4b59-a14d-5ff8f33c904d.jpg

解题步骤 5.4

将电池粘在OLED模块顶部
2c9c600f-95f7-44b2-aac6-0cbb805a8a4a.jpg

解题步骤 5.5

减少开关端子的长度,将电池 BT+ 线切成合适的长度,然后将 BT+ 线焊接到其中一个开关端子中。此外,从开关上焊接一根小电线。将连接到 Xiao 板的 BAT+
e455408b-49a1-4d34-ba5d-1bcd0d7e086b.jpg

解题步骤 5.6

现在将开关放入 3D 打印插槽并将其粘合到位
69c99414-8128-4786-8d33-c80d9f76c078.jpg

解题步骤 5.7

将所有 GPIO 线焊接在 Xiao 板下方。通过 Xiao 的 3V3 引脚为 OLED 和传感器供电。此外,将电池负极线和正极 BT 线从开关连接到 Xiao 的电池端子。
c39a46ed-caca-43e2-acc7-14c66abab7ff.jpg

解题步骤 5.8

推下所有电线,将 Xiao 板放入 3D 打印中。此外,将 USB 端口与 3D 打印上的孔对齐。并粘上Xiao板
b9ffbce7-a786-4e32-8f39-3ac14830ea3c.jpg
d7c180d3-6992-4659-9f0c-ac6cca5a075f.jpg

解题步骤 5.9

我们刚刚完成了项目的组装。打开电源
30f20512-88ba-4fb0-8116-c918122a5cc8.jpg

组装完成有效果了

测试

让我们测试一下我们的测量的准确性。我在距离设备 10 厘米的地方放置了一个物体。我们项目
a839decf-6cce-404f-8602-b228a1071b58.jpg

的测量值也显示为 100 毫米,因此效果很好。

总结

77abf871-dd04-49f5-863e-eb3f36b0062e.jpg

向其添加钥匙链,可以将其与侧面的 3 毫米小孔连接起来。所以最好随身携带。我们的传感器可以测量高达 2 米,但精度很低。它提供长达 1 米的可靠测量。所以建议大家在这个范围内使用它。所以这是Gokux 做的最小的项目。这对他来说是一次很棒的学习经历。他目前正在计划在同一拓扑中开展更多项目。因此,想了解他的更多作品欢迎大家点击原文链接了解。

推荐阅读
关注数
7541
内容数
48
深度服务产业的国际化双创平台
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息