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