国产精品久久久久永久免费看,大地资源网更新免费播放视频,国产成人久久av免费,成人欧美一区二区三区黑人免费,丁香五月天综合缴情网

  • 正文
  • 相關推薦
申請入駐 產(chǎn)業(yè)圖譜

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

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

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

1、器件選型

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

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

最開始我選擇的是MI0802這款熱成像傳感器:

它的分辨率達到80*62,比較滿足我的要求。不過MI0802居然是不開源的。于是只能選擇其他的傳感器了。

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

2、程序開發(fā)

Arduino IDE有MLX90640的庫,因此開發(fā)起來很簡單,只需要調(diào)用相應的庫。

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

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

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

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

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

? 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是將溫度轉化為不同顏色來顯示。

可以看到也是能成功的顯示出來,不過由于分辨率問題,像素感太強,因此我對他進行雙線性插值偽彩顯示。

3、雙線性插值偽彩顯示

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

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

雙線性插值偽彩處理

接下來讓我們看看效果

4、后續(xù)安排

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

相關推薦