作者/圖片來源:CAVEDU 教育團隊
我們使用MLX90615紅外線非接觸溫度計感測器連接Arduino與OLED,就能夠即時看到偵測到的溫度呢,當身體接近感測器時就能夠明顯看出溫度的變化喔!
今天就來完整教學如何製作吧!
材料表
- KEYES Arduino UNO R3 (機器人王國購物連結,請點我)
- MLX90615 非接觸紅外線溫度計感測器
- OLED
- 300K電阻*2
關於MLX90615紅外線非接觸溫度計感測器(以下簡稱MLX90615)如何連接Arduino與OLED我們今天就來分享如何自己製作呢!
首先先來看看我們執行的成果影片:
https://www.facebook.com/CAVEEducation/videos/2824450780981764/?v=2824450780981764
硬體接線
首先要先查看我們的硬體的腳位是什麼?如何接線到Arduino呢?
我們先來查看MLX90615的Datasheet(相關檔案連結),根據MLX90615的Datasheet的圖表(如下圖)查看我們需要在SDA跟SCL腳位放一個300K的提升電阻,VSS接地,VDD接電源這個提升電阻是由於這個電路是使用開極集設計的,是為了提供導通電流,確保高低電位的電壓準位而使用的。
而在大部份的 Arduino板子上,SDA接在analog pin 4,而SCL接在 analog pin 5。OLED的部分我們採用I2C的介面,一樣接在A4跟A5。

MLX90615腳位圖表(Source)
MLX90615跟Arduino接腳對應表
- MLX90615—Arduino
- VCC—3.3V
- SDA—A4
- SCL—A5
- GND—GND
OLED跟Arduino接腳對應表
- OLED—Arduino
- VCC—5V
- SDA—A4
- SCL—A5
- GND—GND
根據腳位圖表所提供的資訊我們的電路圖設計如下:
程式設計
首先我們要匯入相關的程式庫,第一個是MLX90615的程式庫,根據下列網址把函式庫下載完解壓縮後,到自己使用的Arduino所在的libraries資料夾(如下圖),或是使用ZIP檔匯入程式庫。
https://github.com/skiselev/MLX90615
接著還要下載OLED顯示功能的程式庫U8g2,可以在管理程式庫裡搜尋U8g2 by oliver的程式庫(如下圖)。
下載完成開始設計我們的程式。
//首先定義會使用到的程式庫 #include #include #include //這裡是定義MLX90615所得到的值跟U8G2使用什麼型號尺寸的OLED MLX90615 mlx = MLX90615(); U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); //這裡開始定義OLED上要即時顯示的畫面有什麼 void draw(void) { u8g2.setFont(u8g2_font_helvB24_tf );//定義要顯示什麼字型 u8g2.drawStr(10,30,"TEMP:"); //設定在10行30列的位置顯示TEMP: u8g2.setCursor(10, 60); //設定在10行60列的位置 u8g2.print(mlx.get_object_temp(),1); //顯示得到的目標溫度數值到小數點一位 u8g2.drawStr(80,60,"\260C"); //設定在80行60列的位置顯示℃ } //這裡定義u8g2開始設定序列埠鮑率跟偵測MLX90615有無正常讀取顯示它的ID void setup() { u8g2.begin(); Serial.begin(9600); Serial.println("Melexis MLX90615 infra-red temperature sensor test"); mlx.begin(); Serial.print("Sensor ID number = "); Serial.println(mlx.get_id(), HEX); } //重覆執行的部分設定在序列埠上顯示MLX90615內部環境溫度跟測量目標溫度,還有設定一直更新OLED的顯示畫面 void loop() { Serial.print("Ambient = "); Serial.print(mlx.get_ambient_temp()); //ambient temperature Serial.print(" *C\tObject = "); Serial.print(mlx.get_object_temp()); //object temperature Serial.println(" *C"); delay(500); u8g2.firstPage(); do { draw(); } while( u8g2.nextPage() ); delay(100); }
以上我們的程式碼解說到這裡。
執行成果
我們使用KEYES Arduino UNO R3來當我們的Arduino開發板,它有另外把I2C腳位拉出來方便我們接線。
實際測量的畫面如下:
以上就是我們使用MLX90615、OLED、Arduino實作溫度計的教學,喜歡DIY的朋友們也可以嘗試看看自己焊在麵包板上讓它移動更方便更容易測量其他地方的溫度歐。
*注意此專題為Maker專題分享,非醫療用途。
參考資源:
- 【CAVEDU講堂】NVIDIA Jetson AI Lab 大解密!範例與系統需求介紹 - 2024/10/08
- 【CAVEDU講堂】Google DeepMind使用大語言模型LLM提示詞來產生你的機器人操作程式碼 - 2024/07/30
- 【CAVEDU講堂】《Arduino首次接觸就上手》新手村教學:LED燈閃爍 - 2024/04/18
訂閱MakerPRO知識充電報
與40000位開發者一同掌握科技創新的技術資訊!