1. 시작하기
오늘은 비접촉 온도센서인 MLX90614 를 가지고 놀아봅니다.
미키마우스같이 생겼네요.
뒷부분에 여러 보조 부품이 같이 실장되어 있어, Arduino 연결 시, 따로 콤포넌트를 추가하지 않아도 됩니다.
2. Library 추가하기
구동하기 위해서는 관련 library 를 추가해야 합니다.
- https://learn.adafruit.com/using-melexis-mlx90614-non-contact-sensors/wiring-and-test
3. 레이아웃
핀 연결은 다음과 같습니다.
- VIN : +3.3V
- GND : GND
- SCL : A5
- SDA : A4
4. 소스
Library 를 설치했으면, File > Example > Adafruit MXL90614 Library > mlxtest 를 가지고 이용할 수 있습니다.
/*************************************************** This is a library example for the MLX90614 Temp Sensor Designed specifically to work with the MLX90614 sensors in the adafruit shop ----> https://www.adafruit.com/products/1748 ----> https://www.adafruit.com/products/1749 These sensors use I2C to communicate, 2 pins are required to interface Adafruit invests time and resources providing this open source code, please support Adafruit and open-source hardware by purchasing products from Adafruit! Written by Limor Fried/Ladyada for Adafruit Industries. BSD license, all text above must be included in any redistribution ****************************************************/ #include#include Adafruit_MLX90614 mlx = Adafruit_MLX90614(); void setup() { Serial.begin(9600); Serial.println("Adafruit MLX90614 test"); mlx.begin(); } void loop() { Serial.print("Ambient = "); Serial.print(mlx.readAmbientTempC()); Serial.print("*C\tObject = "); Serial.print(mlx.readObjectTempC()); Serial.println("*C"); Serial.print("Ambient = "); Serial.print(mlx.readAmbientTempF()); Serial.print("*F\tObject = "); Serial.print(mlx.readObjectTempF()); Serial.println("*F"); Serial.println(); delay(500); }
5. 결과
성공입니다.
다만, 다른 component 와 비교하여 단순히 온도만 내 주는건 좀 아쉽습니다.
특히 BMP280은 온도 외에, 기압, 고도도 나타내 주거든요.
6. 확장
아래 사이트를 보니, OLED 를 이용해서 표시해주는 코드를 발견했습니다.
이제 좀 있어 보이네요.
- http://www.arduinoprojects.net/lcd-projects/mlx90614-and-oled-display-example.php#codesyntax_1
바로 따라해 봅니다.
#include#include #include #include #include #include #define OLED_RESET 4 Adafruit_SSD1306 display(OLED_RESET); Adafruit_MLX90614 mlx = Adafruit_MLX90614(); //if (SSD1306_LCDHEIGHT != 32) //error("Height incorrect, please fix Adafruit_SSD1306.h!"); //endif void setup() { Serial.begin(57600); Serial.println("Adafruit MLX90614 test"); mlx.begin(); display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3C (for the 128x32) } void loop() { // Clear the buffer. display.clearDisplay(); // text display tests display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0,0); display.print("Ambient: "); display.print(mlx.readAmbientTempC()); display.print(" c"); display.setCursor(0,10); display.print("Object: "); display.print(mlx.readObjectTempC()); display.print(" c"); display.display(); delay(2000); }
잘 나오네요.
부품 2개를 연결하여 작동시킨 처음 케이스 입니다.
온도 센서 근처에 손가락을 가져가면 온도변화를 화면에 표시해 줍니다.
FIN
이제 뭘하지?
'Hardware' 카테고리의 다른 글
Hardware | DSO150 Oscilloscope (0) | 2017.03.07 |
---|---|
Hardware | Arduino BMP280 고도/온도/기압 센서 (0) | 2017.03.06 |
Hardware | Arduino Ambient Light TEMT6000 Sensor (0) | 2017.03.05 |
Hardware | Arduino 로 buzzer 소리내기 (0) | 2017.03.05 |
Hardware | Arduino 구입기 (0) | 2017.02.27 |