电子说
Hesam Moshiri自己打造的雷射测距装置
测距应用对许多创客而言并不陌生,例如红外线测距、超音波测距等,但较少人使用雷射(对岸称为激光)测距。近期有一名创客Hesam Moshiri就示范如何打造一个基本的雷射测距。
控制电路设计开发
Hesam先挑一片主控板,他选择的RP2040-Zero板主控芯片为RP2040,即树莓派官方的独特MCU芯片,该芯片除了供自家RaspberryPi Pico板使用外,也供其他板卡商制成自己要的控制板,RP2040-Zero即是其一。
RP2040-Zero控制板接脚说明
娇小的RP2040-Zero板为整体控制电路的心脏,但还需要一个控制用的身体,对此Hesam设计了一片与RP2040-Zero连接的外围控制板,是运用Altium公司的云端版设计软件Altium Designer 23设计成,设计期间也透过网站搜寻可以取得的电子零件并产生料件列表(俗称BOM表),设计完成后的外围控制板为双层板,并委托他人客制生产,取得生产完成的印刷电路板后,Hesam再将购得的电子料件焊接上板子,以此实现外围控制板。
Hesam Moshiri自己设计与RP2040-Zero控制板(蓝色部分)连接的外围电路板(绿色部分),外围电路板上具备继电器(偏左位置的大灰色块)
控制板、外围控制板的立体电子零件布局图
客制的控制板毕竟不量产,故没有名字,而其上头有继电器(relay)、LED灯号、按钮等,以及有个专属连接器可连接蜂鸣器(buzzer),以便后续开发可以使用。然后,电力的部份也是先接到客制板上再传递给RP2040-Zero板,不过RP2040-Zero自身也能取得电力。
客制板还有两个特别的连接器,一个仅有4根接脚,用来连接飞时(Time-of-flight, ToF)测距传感器(distance sensor),传感器芯片是意法半导体(STMicroelectronics, STMicro)的VL53L0X(同时具有发送接收)。4根接脚的连接器本质上是I2C接口。
关于VL53L0X的性能规格,STMicro官网写最远可以量测200公尺,但一般要考虑配置与外部环境因素等,实务而言约在3公分~1公尺间;分辨率方面最小可以到0.1公分,不过也有误差范围,误差在3%~10%间。
另一个连接器有40根接脚,用来连接软板的TFT显示器,本质上是SPI接口,用来显示量测到的距离数值。Hesam用一片2.4吋、分辨率320 x 240的彩色TFT显示器。
控制程序设计开发
软件部分Hesam只有概略交代,但也能略窥一二,首先他是用比较底层、比较技术的方式进行软件开发,先是使用Raspberry Pi Pico的Pico C/C++ SDK v1.5函式库,然后花许多时间在LVGL(Light and Versatile Embedded Graphics Library)函式库上,用该函式库来设计开发2.4吋TFT显示器上的显示画面。
然后为了同时使用上RP2040内的两个执行核心,Hesam在RP2040-Zero控制板上跑一个实时操作系统(RTOS,没有明讲是哪一套)。至于开发工具方面,Hesam用常见的Microsoft Visual Studio Code(简称VS Code),写好的程序则透过gccarm 12.2.1编译程序进行编译。
若想了解程序细节,其实Hesam也已经把源代码放一份在Altium社群项目网站上,项目名称Laser-Range-Finder,必须注册账号后登入才能看,或者直接连结Google、Facebook账号也可以。
Hesam Moshiri在Altium社群项目网站上释出雷射测距的源代码
笔者下载一份后检视,里头有VL43L0X的C语言源代码(扩展名.c,另也有用上含括檔.h),以及一个已经编译好的Laser.uf2档案,可以直接烧到控制板上,或者保险一点是先放入flash_nuke.uf2档案把控制板上原有的内容都清掉,而后才放入Laser.uf2档案。
各种应用可能
Hesam完成上述后,后续就是让其他人以此为基础去加搭发挥,例如「当距离短于30公分时透过蜂鸣器发出警告」,类似今日汽车常见的倒车雷达,但其实多数是以超音波技术实现;或者是「距离超过80公分时则启动继电器,从而驱动电风扇、洗衣机等大功率设备运作」。
最后,雷射测距也是有缺点,照射到黑体物是不容易反射的,会被吸收,如此就无法准确测距,但是超音波与红外线同样有其优缺点,所以通常是同时使用上两种或两种以上的测距技术而后交叉比对确认,对于一些避障应用而言这将是不可少的。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !