2023-11-6 18:53:48 [显示全部楼层]
2269浏览
查看: 2269|回复: 5

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

[复制链接]
本帖最后由 Afra 于 2023-11-7 17:32 编辑



一、介绍

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

虽然现实世界无法实现这个神奇的技术,但我每天做梦都在想,如果有一天我能时空穿梭我要跳到哪里。可能瞬间去见千里之外的朋友,可能转身去到伦敦桥。
用行空板造一个可以测温的“传送枪”图1

回到现实世界,这个超级难题我可能没法解决,但我是不是可以拥有一个传送抢外形的道具也是一个满足心愿的事情。兼具功能实用性、再加上这个fancy的外形。

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

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

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

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

二、硬件
用行空板造一个可以测温的“传送枪”图4

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

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

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

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

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

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

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

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


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

1.读取红外温度传感器数值并打印
加载红外温度传感器模块的库:from pinpong.libs.dfrobot_mlx90614 import MLX90614
加载行空板pinpong库:from pinpong.board import Board
红外温度传感器使用I2C通信,地址默认为0x5A:irt = MLX90614(0x5A)

  1. from pinpong.libs.dfrobot_mlx90614 import MLX90614
  2. from pinpong.board import Board
  3. Board().begin()
  4. irt = MLX90614(0x5A)
  5. while True:
  6.     print(irt.obj_temp_c())
复制代码

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

  1. from pinpong.libs.dfrobot_mlx90614 import MLX90614
  2. from pinpong.board import Board
  3. from unihiker import GUI
  4. import time
复制代码

背景图使用robot.png,从(0,0)像素的位置显示,图片宽度为240(全屏显示):img1=u_gui.draw_image(image="robot.png",x=0,y=0,w=240)
实时温度显示使用数码管数字显示,字号120,在(25,85)像素坐标的位置。

  1. Board().begin()
  2. u_gui=GUI()
  3. irt = MLX90614(0x5A)
  4. img1=u_gui.draw_image(image="robot.png",x=0,y=0,w=240)
  5. txt=u_gui.draw_digit(text="0",x=25,y=85,font_size=120, color="#FF6666")
复制代码

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

  1. while True:
  2.     my_variable = irt.obj_temp_c()
  3.     if (my_variable <= 38):
  4.         txt.config(text=my_variable, color="#FF6666")
  5.     if (my_variable > 38):
  6.         txt.config(text=my_variable, color="#FF0000")
  7.     time.sleep(0.1)
复制代码

3. 所有代码:
  1. from pinpong.libs.dfrobot_mlx90614 import MLX90614
  2. from pinpong.board import Board
  3. from unihiker import GUI
  4. import time
  5. Board().begin()
  6. u_gui=GUI()
  7. irt = MLX90614(0x5A)
  8. img1=u_gui.draw_image(image="robot.png",x=0,y=0,w=240)
  9. txt=u_gui.draw_digit(text="0",x=25,y=85,font_size=120, color="#FF6666")
  10. while True:
  11.     my_variable = irt.obj_temp_c()
  12.     if (my_variable <= 38):
  13.         txt.config(text=my_variable, color="#FF6666")
  14.     if (my_variable > 38):
  15.         txt.config(text=my_variable, color="#FF0000")
  16.     time.sleep(0.1)
复制代码

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



hnyzcj  版主

发表于 2023-11-7 18:11:27

漂亮
回复

使用道具 举报

木子呢  管理员

发表于 2023-11-7 18:19:22

漂亮+1
回复

使用道具 举报

Forgotten  版主

发表于 2023-11-7 20:14:37

这个供电方案不错,做需要移动的项目的时候可以借鉴
回复

使用道具 举报

rzegkly  版主

发表于 2023-11-10 20:33:30

漂亮
回复

使用道具 举报

许培享  中级技神

发表于 2024-1-14 12:14:06

制作精良
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
关于楼主
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail