你有看過《Rick and Morty》嗎?是什么讓Rick能夠在宇宙間翱翔,在時空中穿梭?沒錯,是這個神奇的傳送槍!只需輸入平行宇宙的坐標,再按下按鈕神秘的綠色圓形傳送門就會在你面前出現(xiàn),開啟了在不同空間之間創(chuàng)造實時連接的傳送門。仿佛置身于虛擬世界的夾縫中??v身一躍,你就能來到一個全新的宇宙
雖然現(xiàn)實世界無法實現(xiàn)這個神奇的技術(shù),但我每天做夢都在想,如果有一天我能時空穿梭我要跳到哪里??赡芩查g去見千里之外的朋友,可能轉(zhuǎn)身去到倫敦橋。
介紹道具也是一個滿足心愿的事情。兼具功能實用性、再加上這個fancy的外形。
Rick的這個動作好像瞬間讓我想到了剛過去的口罩事件,‘稍等量一下體溫’。這熟悉的場景浮現(xiàn)眼前。
首當其沖我要給它先加一個測溫功能。同時我還需要它可以保持供電,有屏幕可以顯示它的數(shù)值。我找到了行空板和紅外測溫模塊,滿足可以快速、準確地測量目標物體的表面溫度的需要,不論是測量室內(nèi)溫度、食物溫度,甚至是機械設(shè)備的溫度,它都能輕松采集。以此滿足了我的便攜采集數(shù)據(jù)并顯示的需求。
二、
硬件
行空板是一個可以使用Python學(xué)習和編程的單板微型計算機。它不僅集成了LCD觸摸彩屏,讓你可以直觀地查看數(shù)據(jù),還具備WiFi和藍牙功能,方便與其他設(shè)備連接和交互。此外,行空板內(nèi)置了各種常用傳感器,還可以連接IIC、uart、usb串口的硬件,感知周圍的環(huán)境。
紅外測溫模塊與一般的測溫傳感器不同,它是根據(jù)被測物體的紅外輻射能量來確定物體的溫度,不與被測物體接觸,不影響被測物體溫度場,并且溫度分辨率高、響應(yīng)速度快、穩(wěn)定性好等特點。其視場為(FOV)35°。其他的溫度測量傳感器可分為接觸式和非接觸式,接觸式測溫只能測量被測物體與測溫傳感器達到熱平衡后的溫度,所以響應(yīng)時間長,且極易受環(huán)境溫度的影響。
當我們使用鋰電池來作為我們的電源方案時,首先要解決的兩個技術(shù)難點就是電池的升壓和充電。而MP2636充電升壓模塊,可以把3.7v電池升壓到5v以支持行空板的供電。同時這個升壓模塊支持充電功能。完美支持便攜的鋰電池供電的diy需求。
選好硬件后建了一個可以直接3D打印、能夠匹配行空板和其他硬件的模型。如果想增加其他模塊的話可以在這個基礎(chǔ)上修改。
https://www.thingiverse.com/thing:6234661
三、
代碼
我們直接使用python編程控制硬件時,需要用到pinpong庫,這是一個可以控制幾百種開源硬件主控板的Python庫,滿足我們用Python控制開源硬件。
1.讀取紅外溫度傳感器數(shù)值并打印
加載紅外溫度傳感器模塊的庫:
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. 讀取數(shù)值成功了,現(xiàn)在我們嘗試繪制UI界面和把數(shù)值打印到行空板的顯示屏上。
加載行空板的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)
實時溫度顯示使用數(shù)碼管數(shù)字顯示,字號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")
運行程序
設(shè)定當溫度小于等于38度時,刷新溫度數(shù)字顯示。
當溫度大于38度時,刷新數(shù)字顯示的同時,顏色顯示變?yōu)檎t色。
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)
現(xiàn)在我們就完成了一個可以測溫的portal gun的原型,更多的diy還可以添加其他測量的模塊。比如使用光譜模塊制作一個光譜儀,nfc讀卡識別模塊。