Picothermal:基于 RP2040 与 Flir Lepton 的 WebUSB 热成像相机
Picothermal – WebUSB Thermal Camera Using RP2040 and Flir Lepton
开发者用 RP2040 微控制器搭配 Flir Lepton 3.5 传感器做出 WebUSB 热成像相机 Picothermal,分辨率从 MLX90640 的 24x32 提升到 160x120。
介绍
在设计完我的第一个热成像相机项目,并随后将其传感器升级为 MLX90640 之后,我意识到自己仍然缺少一些功能。我想要更大的屏幕、更好的电池以及更多的热像素。因此,picothermal 诞生了。
为了获得更好的图像质量,(代价高昂的)决定是使用 Flir 的一款传感器,具体来说是我从 Mouser 购买的 Flir Lepton 3.5,这相比 MLX90640 的 24x32 像素到 160x120 像素是一个巨大的飞跃。
然后我意识到,获得更大屏幕和更好电池,同时让设备更便携的最简单方法是使用 USB-C,然后使用 PC 或手机。这就是 Aliexpress 上所有平价热成像相机(以及 Flir One)的做法。但有一点我不喜欢,我喜欢设计寿命极长的项目,而绑定到某个应用意味着如果我不想让设备过时,就需要维护它。有些相机使用 UVC 来绕过这个问题,这本质上允许热成像相机作为网络摄像头运行,然后使用各种技巧在颜色之外发送辐射数据(像素的绝对温度)。我决定使用 WebUSB,没有什么特别的原因,只是我觉得这样更容易控制相机(UVC 有一些扩展可以实现这一点,所以也许我错了),以及 Embassy 支持它。主要缺点是 Firefox 不支持 WebUSB,但在我的 Android 手机上,我觉得我甚至无法卸载 Chrome,所以这是我愿意接受的妥协。我以后随时可以添加 UVC 支持。
硬件
硬件本身其实极其简单。首先,我选择了一款 RP2040 微控制器(我是在 RP2350 发布之前构建的),尽管我可能应该使用支持 USB2.0 的 STM32,而不是卡在 USB1.1 上。然后是一个 USB-C 连接器、一个用于 5V -> 3V3 转换的降压转换器,以及几个用于微控制器和传感器所需其他电压轨的 LDO,还有一些其他杂项组件。没有电池,没有充电控制器,没有 microSD,所需的一切都已经在手机上。你可以在下面看到原理图,由 Kicanvas 提供。
我从 Aisler(1.6mm 厚度)和 JLCPCB(0.8mm 厚度)订购了电路板,最终使用了 Aisler 的,因为它们更容易焊接且更坚固,尽管 USB-C 连接器是为 0.8mm 设计的。
固件
我在 2023 年完成了硬件,然后因为生活琐事而放弃了该项目,当时我卡在调试 TinyUSB 协议栈上。那时我实际上想的是使用 UVC 而不是 WebUSB。
然而,既然我已经买了传感器并构建了硬件,我决定现在,也就是 2026 年,再试一次,这次通过使用智能体。尽管我很想邀功,但实际上我没有编写任何固件,Claude 使用 Rust 和 Embassy 很好地构建了固件。我认为同时使用微控制器的两个核心有点过度设计,但最终它运行得毫无问题,所以我没什么可抱怨的。当然,它不可维护,但除了添加 UVC 选项和实际使用备用按钮做点什么之外,并没有太多需要做的。
我确实感到内疚/懒惰,因为我从未亲手完成固件(以及网页应用),但与此同时,我觉得我也没有时间以它目前的形式来完成它。随你怎么理解吧。
结论
现在我可以将相机连接到我的 Android 手机,在 Chrome 中打开 WebUSB 着陆页(叹气……),相机就能直接工作。我对最终结果相当满意,只要 WebUSB 仍受支持,我可能会用很多年。
一切照常在我的 Github 上(见页面开头的链接),如果你在复现时遇到任何问题,请告诉我。
玩得开心!
来源:Hacker News · cezarchirila.com