发布时间:2023-04-25 06:35:30 人气:
热成像技术在现代工业、航空、医疗等各个领域均有广泛的应用,而随着Arduino等开源硬件的流行,我们可以便捷地自行搭建一个低成本的热成像仪。本文将介绍如何使用Arduino、热像传感器和LCD显示屏构建一个能够测量温度分布的热成像仪。
- Arduino Uno控制板 x1
- 热像传感器 MLX90640 x1
- 2.2寸TFT LCD显示屏 x1
- 20P Pin插头 x2
- 面包板 x1
- 杜邦线若干
- 3D打印外壳 x1
首先将Arduino Uno控制板插在面包板上,然后连接热像传感器。热像传感器MLX90640有24个Pin,我们只需要连接其中GND、3.3V和SDA、SCL四个Pin。将热像传感器的GND连接到Arduino控制板的GND,将3.3V连接到3.3V,SDA连接到A4,SCL连接到A5。接下来连接LCD显示屏,将Pin插头焊接到Arduino控制板上,然后将LCD屏幕插到Pin插头上即可。
接下来我们需要写一个能够读取热像传感器数据并将其在LCD屏幕上显示出来的代码。我们可以使用Adafruit提供的MLX90640库来读取热像传感器数据,并利用Adafruit_GFX库和Adafruit_ST7789库来显示图像。具体代码如下:
```
include
include
include
include
define BL_PIN 13
define SCREEN_WIDTH 240
define SCREEN_HEIGHT 320
Adafruit_MLX90640 mlx = Adafruit_MLX90640();
Adafruit_ST7789 tft = Adafruit_ST7789(10, 9, 8);
void setup() {
Serial.begin(115200);
mlx.begin();
mlx.setMode(MLX90640_CHESS);
tft.init(SCREEN_WIDTH, SCREEN_HEIGHT);
tft.setRotation(1);
pinMode(BL_PIN, OUTPUT);
digitalWrite(BL_PIN, HIGH);
}
void loop() {
mlx.getFrame();
float* frame = mlx.getFrameData();
tft.fillScreen(ST77XX_BLACK);
for (int y = 0; y < 24; y++) {
for (int x = 0; x < 32; x++) {
int i = y * 32 + x;
float temp = frame[i];
tft.fillRect(x * 8, y * 8, 8, 8, getColor(temp));
}
}
}
uint16_t getColor(float temp) {
if (temp < 20) {
return ST77XX_BLUE;
} else if (temp < 30) {
return ST77XX_CYAN;
} else if (temp < 40) {
return ST77XX_GREEN;
} else if (temp < 50) {
return ST77XX_YELLOW;
} else if (temp < 60) {
return ST77XX_ORANGE;
} else {
return ST77XX_RED;
}
}
```
代码的主要作用是获取热像传感器的温度数据并将其绘制在LCD显示屏上。其中getFrame函数获取一帧温度数据,getFrameData函数返回一个长度为768的float数组,代表24行32列的温度矩阵。我们将这个温度矩阵绘制在LCD屏幕上,使用getColor函数将温度值映射成颜色,并使用fillRect函数绘制矩形。
将Arduino控制板连接到电脑,打开串口监视器并上传代码。如果一切正常,串口监视器应该会输出一些调试信息,并在LCD显示屏上显示一个温度分布图像。我们可以用手或者吹风机等热源测试一下热成像仪的性能。
最后我们可以使用3D打印技术制作一个外壳,将Arduino控制板、热像传感器和LCD显示屏组装在一起。这样我们就完成了一个基于Arduino的热成像仪的制作。
通过简单的硬件组装和代码编写,我们可以制作出一个低成本、实用的热成像仪。这个热成像仪在工业、航空、医疗等领域都有广泛的应用,可以帮助我们更好地了解温度分布情况,从而更好地进行热工调节和维护。
TAG标签:arduino 热成像仪 temp 传感器