首页 》  技术百科 》  用行空板造一个可以测温的“传送枪” 返回上一页

用行空板造一个可以测温的“传送枪”

发布时间:2023-11-09

你有看过《Rick and Morty》吗?是什么让Rick能够在宇宙间翱翔,在时空中穿梭?没错,是这个神奇的传送枪!只需输入平行宇宙的坐标,再按下按钮神秘的绿色圆形传送门就会在你面前出现,开启了在不同空间之间创造实时连接的传送门。仿佛置身于虚拟世界的夹缝中。纵身一跃,你就能来到一个全新的宇宙


虽然现实世界无法实现这个神奇的技术,但我每天做梦都在想,如果有一天我能时空穿梭我要跳到哪里。可能瞬间去见千里之外的朋友,可能转身去到伦敦桥。

image.png

,,,用行空板造一个可以测温的“传送枪”

介绍道具也是一个满足心愿的事情。兼具功能实用性、再加上这个fancy的外形。

图片

Rick的这个动作好像瞬间让我想到了刚过去的口罩事件,‘稍等量一下体温’。这熟悉的场景浮现眼前。


图片

首当其冲我要给它先加一个测温功能。同时我还需要它可以保持供电,有屏幕可以显示它的数值。我找到了行空板和红外测温模块,满足可以快速、准确地测量目标物体的表面温度的需要,不论是测量室内温度、食物温度,甚至是机械设备的温度,它都能轻松采集。以此满足了我的便携采集数据并显示的需求。


图片

二、

硬件


行空板

MP2636充电升压模块

Gravity: 非接触式红外温度传感器

3.7V电池


图片

行空板是一个可以使用Python学习和编程的单板微型计算机。它不仅集成了LCD触摸彩屏,让你可以直观地查看数据,还具备WiFi和蓝牙功能,方便与其他设备连接和交互。此外,行空板内置了各种常用传感器,还可以连接IIC、uart、usb串口的硬件,感知周围的环境。


红外测温模块与一般的测温传感器不同,它是根据被测物体的红外辐射能量来确定物体的温度,不与被测物体接触,不影响被测物体温度场,并且温度分辨率高、响应速度快、稳定性好等特点。其视场为(FOV)35°。其他的温度测量传感器可分为接触式和非接触式,接触式测温只能测量被测物体与测温传感器达到热平衡后的温度,所以响应时间长,且极易受环境温度的影响。


当我们使用锂电池来作为我们的电源方案时,首先要解决的两个技术难点就是电池的升压和充电。而MP2636充电升压模块,可以把3.7v电池升压到5v以支持行空板的供电。同时这个升压模块支持充电功能。完美支持便携的锂电池供电的diy需求。


图片

图片

选好硬件后建了一个可以直接3D打印、能够匹配行空板和其他硬件的模型。如果想增加其他模块的话可以在这个基础上修改。


图片

图片

https://www.thingiverse.com/thing:6234661


三、

代码


我们直接使用python编程控制硬件时,需要用到pinpong库,这是一个可以控制几百种开源硬件主控板的Python库,满足我们用Python控制开源硬件。

1.读取红外温度传感器数值并打印
加载红外温度传感器模块的库:

from pinpong.libs.dfrobot_mlx90614 import MLX90614
加载行空板pinpong库:

from pinpong.board import Board
红外温度传感器使用I2C通信,地址默认为0x5A:

irt = MLX90614(0x5A)


from pinpong.libs.dfrobot_mlx90614 import MLX90614from pinpong.board import Board
Board().begin()irt = MLX90614(0x5A)
while True:    print(irt.obj_temp_c())


2. 读取数值成功了,现在我们尝试绘制UI界面和把数值打印到行空板的显示屏上。


加载行空板的GUI:from unihiker import GUI


from pinpong.libs.dfrobot_mlx90614 import MLX90614from pinpong.board import Boardfrom unihiker import GUIimport time


背景图使用robot.png,从(0,0)像素的位置显示,图片宽度为240(全屏显示):img1=u_gui.draw_image(image="robot.png",x=0,y=0,w=240)


实时温度显示使用数码管数字显示,字号120,在(25,85)像素坐标的位置。


Board().begin()u_gui=GUI()irt = MLX90614(0x5A)img1=u_gui.draw_image(image="robot.png",x=0,y=0,w=240)txt=u_gui.draw_digit(text="0",x=25,y=85,font_size=120, color="#FF6666")


运行程序
设定当温度小于等于38度时,刷新温度数字显示。
当温度大于38度时,刷新数字显示的同时,颜色显示变为正红色。


while True:    my_variable = irt.obj_temp_c()    if (my_variable <= 38):        txt.config(text=my_variable, color="#FF6666")
    if (my_variable > 38):        txt.config(text=my_variable, color="#FF0000")    time.sleep(0.1)


3.所有代码


from pinpong.libs.dfrobot_mlx90614 import MLX90614from pinpong.board import Boardfrom unihiker import GUIimport time

Board().begin()u_gui=GUI()irt = MLX90614(0x5A)img1=u_gui.draw_image(image="robot.png",x=0,y=0,w=240)txt=u_gui.draw_digit(text="0",x=25,y=85,font_size=120, color="#FF6666")
while True:    my_variable = irt.obj_temp_c()    if (my_variable <= 38):        txt.config(text=my_variable, color="#FF6666")    if (my_variable > 38):        txt.config(text=my_variable, color="#FF0000")    time.sleep(0.1)


现在我们就完成了一个可以测温的portal gun的原型,更多的diy还可以添加其他测量的模块。比如使用光谱模块制作一个光谱仪,nfc读卡识别模块。