成人免费无码不卡毛片,亚洲AⅤ无码精品一区二区三区,国产尤物精品视频,久久精品日本亚洲,欧美成人一区三区无码乱码A片,中文字日产幕码一区二区色哟哟,亞洲日韓中文字幕網AV

  • 正文
    • 1、器件選型
    • 2、程序開(kāi)發(fā)
    • 3、雙線性插值偽彩顯示
    • 4、后續(xù)安排
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

兩百元不到的熱成像裝置?DIY熱成像的絕佳方案!

04/21 09:25
902
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

之前一直有一個(gè)想法想做一個(gè)熱成像儀,正好最近有一個(gè)項(xiàng)目需要用到熱成像,于是在琢磨如何制作使用一款具有無(wú)線功能的熱成像裝置。

1、器件選型

由于需要涉及無(wú)線傳輸,還要求使用WIFI,那么主控就是優(yōu)先考慮ESP32作為主控。

但是關(guān)于熱成像傳感器的選擇就需要我頭疼了,如何在保證開(kāi)發(fā)效率以及成本的情況下選擇合適的傳感器。

最開(kāi)始我選擇的是MI0802這款熱成像傳感器:

它的分辨率達(dá)到80*62,比較滿(mǎn)足我的要求。不過(guò)MI0802居然是不開(kāi)源的。于是只能選擇其他的傳感器了。

后來(lái)看到了MLX90640,百元級(jí)別的價(jià)格能實(shí)現(xiàn)32*24像素的分辨率,就先買(mǎi)了一塊模塊來(lái)試試開(kāi)發(fā)難度。

2、程序開(kāi)發(fā)

Arduino IDE有MLX90640的庫(kù),因此開(kāi)發(fā)起來(lái)很簡(jiǎn)單,只需要調(diào)用相應(yīng)的庫(kù)。

Adafruit_MLX90640?mlx;float?frame[32*24]; ? ? ? ? ?// 原始溫度數(shù)據(jù)

創(chuàng)建90640的實(shí)例對(duì)象和幀緩存區(qū)

??// 讀取熱像儀數(shù)據(jù)??if(mlx.getFrame(frame) !=?0) {? ??//錯(cuò)誤? ??return;? }

讀取攝像頭的原始數(shù)據(jù)

為了能夠顯示出來(lái),這里使用一塊240*240的TFTLCD來(lái)顯示。

? tft.startWrite();??for(int?y=0; y<24; y++) {? ??for(int?x=0; x<32; x++) {? ? ??uint16_t?color =?tempToColor(frame[y*32?+ x]);? ? ? tft.fillRect(x*7, y*10,?7,?10, color);? ? }? }? tft.endWrite();

tempToColor是將溫度轉(zhuǎn)化為不同顏色來(lái)顯示。

可以看到也是能成功的顯示出來(lái),不過(guò)由于分辨率問(wèn)題,像素感太強(qiáng),因此我對(duì)他進(jìn)行雙線性插值偽彩顯示。

3、雙線性插值偽彩顯示

雙線性插值的原理不做過(guò)多贅述,總體而言就是根據(jù)已知的像素對(duì)中間的區(qū)域進(jìn)行估計(jì)。

for(int?screenY =?0; screenY <?240; screenY++) {? ??// 計(jì)算對(duì)應(yīng)的原始數(shù)據(jù)行(保留右側(cè)16像素顯示信息)? ??for(int?screenX =?0; screenX <?224; screenX++) {?? ? ??// 將屏幕坐標(biāo)映射到原始數(shù)據(jù)坐標(biāo)(32x24 → 224x240)? ? ??float?srcX = (screenX *?31.0) /?223.0; ?// 0-31? ? ??float?srcY = (screenY *?23.0) /?239.0; ??// 0-23
? ? ??// 確定四個(gè)相鄰采樣點(diǎn)? ? ??int?x0 =?floor(srcX);? ? ??int?y0 =?floor(srcY);? ? ??int?x1 =?min(x0 +?1,?31);? ? ??int?y1 =?min(y0 +?1,?23);? ? ??? ? ??// 計(jì)算插值權(quán)重? ? ??float?xWeight = srcX - x0;? ? ??float?yWeight = srcY - y0;
? ? ??// 獲取四個(gè)點(diǎn)的溫度值? ? ??float?temp00 = frame[y0*32?+ x0];? ? ??float?temp01 = frame[y0*32?+ x1];? ? ??float?temp10 = frame[y1*32?+ x0];? ? ??float?temp11 = frame[y1*32?+ x1];
? ? ??// 雙線性插值計(jì)算? ? ??float?temp =?? ? ? ? temp00 * (1?- xWeight) * (1?- yWeight) +? ? ? ? temp01 * xWeight * (1?- yWeight) +? ? ? ? temp10 * (1?- xWeight) * yWeight +? ? ? ? temp11 * xWeight * yWeight;
? ? ??// 繪制像素? ? ? tft.drawPixel(screenX, screenY,?tempToColor(temp));? ? }? }

雙線性插值偽彩處理

接下來(lái)讓我們看看效果

4、后續(xù)安排

后面應(yīng)該會(huì)對(duì)這個(gè)項(xiàng)目繼續(xù)更近,打算將其制作成PCB,總成本大概不到200元并且設(shè)計(jì)相應(yīng)的手機(jī)APP,期待以后的文章吧!

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計(jì)資源下載
  • 產(chǎn)業(yè)鏈客戶(hù)資源
  • 寫(xiě)文章/發(fā)需求
立即登錄
五家渠市| 杂多县| 嘉鱼县| 镇安县| 宜都市| 湘乡市| 阿瓦提县| 武冈市| 咸阳市| 合山市| 锦屏县| 乌拉特前旗| 曲松县| 廊坊市| 乌兰浩特市| 靖西县| 承德县| 海丰县| 澄迈县| 赤壁市| 安达市| 航空| 固始县| 康保县| 榆林市| 镇坪县| 金沙县| 塔城市| 广宗县| 曲沃县| 会泽县| 年辖:市辖区| 巴楚县| 祁门县| 新营市| 孝义市| 旬阳县| 开江县| 绥化市| 云浮市| 临沭县|