之前我們有在FB分享防疫小尖兵-用Arduino來做溫度計吧!
我們使用MLX90615紅外線非接觸溫度計感測器連接Arduino與OLED,就能夠即時看到偵測到的溫度呢,當身體接近感測器時就能夠明顯看出溫度的變化喔!
今天就來完整教學如何製作吧!
作者/攝影 | 郭俊廷 |
時間 |
3HR |
難度 |
★★☆☆☆ |
材料表 |
|
關於MLX90615紅外線非接觸溫度計感測器(以下簡稱MLX90615)如何連接Arduino與OLED,我們今天就來分享如何自己製作呢!
首先先來看看我們執行的成果影片:
一、硬體接線
首先要先查看我們的硬體的腳位是什麼?如何接線到Arduino呢?
我們先來查看MLX90615的Datasheet(相關檔案請至下方連結下載)
MLX90615-Datasheet-Melexis.pdf
根據MLX90615的Datasheet的圖表(如下圖) 查看我們需要在SDA跟SCL腳位放一個300K的提升電阻,VSS接地,VDD接電源
這個提升電阻是由於這個電路是使用開汲極設計的,是為了提供導通電流,確保高低電位的電壓準位而使用的。
而在大部份的 Arduino板子上,SDA接在analog pin 4,而SCL接在 analog pin 5。
OLED的部分我們採用I2C的介面,一樣接在A4跟A5。
MLX90615腳位圖表(引用自MLX90615-Datasheet-Melexis.pdf)
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 |
接下來,請新增了一個按鈕的功能,當按下按鈕時OLED畫面才會顯示目前增測到的溫度,顯示五秒後即清除顯示畫面,直到再按下按鈕才會再次顯示溫度。
按鈕的部分我們使用按下去狀態為0的按鈕。
按鈕跟Arduino接腳對應表:
按鈕 | Arduino |
V | 3.3V |
G | GND |
S | D3 |
根據腳位圖表所提供的資訊我們的電路圖設計如下:

實際使用按鈕時的影片如下:
二、程式設計
首先我們要匯入相關的程式庫
第一個是MLX90615的程式庫 根據下列網址把函式庫下載完解壓縮至自己使用的Arduino所在的libraries資料夾( 如下圖) ,或是使用ZIP檔匯入程式庫
https://github.com/skiselev/MLX90615

接著還要下載OLED顯示功能的程式庫U8g2,可以在管理程式庫裡搜尋U8g2 by oliver的程式庫( 如下圖)


下載完成開始設計我們的程式
以上我們的程式碼解說到這裡
三、執行成果
我們使用KEYES Arduino UNO R3超夠力版(商品連結,請點我)來當我們的Arduino開發板,
它有另外把I2C腳位拉出來方便我們接線,
實際測量的畫面如下:




以上就是我們使用MLX90615、OLED、按鈕、Arduino實作溫度計的教學,喜歡DIY的朋友們也可以嘗試看看自己焊在麵包板上讓它移動更方便更容易測量其他地方的溫度歐。
*注意此專題為Maker專題分享,非醫療用途。
參考資源:
U8g2 相關教學:https://www.twblogs.net/a/5d207eeabd9eee1e5c83a6bb
補充說明:
- 有人反映編譯時會出現以下警告,這是因為原本在使用full buffer模式顯示OLED上的文字可以讓文字顯示的頻率更快,但也會使用到較多記憶體,因此改成使用page buffer模式顯示即可使用較少記憶體。
- 草稿碼使用了 17874 bytes (58%) 的程式儲存空間。上限為 30720 bytes。
- 全域變數使用了 1831 bytes (89%) 的動態記憶體,剩餘 217 bytes 給區域變數,上限為 2048 bytes 。
可用記憶體低下,可能會出現穩定性問題。
相關參考資料可以查看u8g2套件作者github網站說明:
https://github.com/olikraus/u8g2/wiki/setup_tutorial#u8g2-full-buffer–page-buffer-and-u8x8-mode
老師請問如果是用MLX90614可以直接套用您的方法嗎?
基本上的架構是一樣的,可是您的函式庫需要另外尋找兩個是不一樣的。另外要注意腳位接腳位置一不一樣的問題。
也可以直接購買我們的額溫量測材料包,如須購買請查看網頁最上方有額溫量測材料包商品連結。
https://robotkingdom.com.tw/product/mlx90615-kit/