ESP8266 MAX6675 열전대 모듈
다른 튜토리얼에서 다루는 대부분의 온도 센서(DHT11/DHT22, DS18B20, LM35)는 최대 100°C에서 150°C 사이까지만 측정합니다. 기상 관측소, 인큐베이터, 주방 기기에는 충분하지만, 도자기 가마, 장작 화덕, 금속 주조로, 소형 엔진의 배기가스를 감시해야 한다면 쓸모가 없습니다. 이것들은 모두 그런 칩이 견딜 수 있는 온도보다 훨씬 뜨겁기 때문입니다.
그런 작업에는 완전히 다른 종류의 센서, 즉 열전대가 필요합니다. 이 튜토리얼에서는 MAX6675 열전대 모듈을 ESP8266 보드에 배선하고 3선 디지털 인터페이스로 온도를 읽는 방법을 차근차근 설명합니다.

필요한 하드웨어
| 1 | × | Micro USB Cable | 아마존 | |
| 1 | × | ESP8266 NodeMCU | 쿠팡 | 아마존 | |
| 1 | × | USB 케이블 타입-A to 타입-C (USB-A PC용) | 쿠팡 | 아마존 | |
| 1 | × | USB 케이블 타입-C to 타입-C (USB-C PC용) | 아마존 | |
| 1 | × | MAX6675 Thermocouple Module | 아마존 | |
| 1 | × | 점퍼케이블 | 쿠팡 | 아마존 | |
| 1 | × | (추천) ESP8266용 스크루 터미널 확장 보드 | 쿠팡 | 아마존 |
열전대의 작동 원리
열전대는 서로 다른 두 금속 선의 한쪽 끝을 용접해 붙인 것에 불과합니다. 그 접합부를 열접점이라고 부르며, 뜨거워지면 온도에 따라 오르내리는 아주 작은 전압을 만들어 냅니다. 단순한 방법이지만 매우 효과적입니다. 열 속에 민감한 실리콘 부품이 없으므로, 열전대는 일반 전자 센서라면 즉시 망가질 온도에서도 견딜 수 있습니다.
열전대에는 여러 종류가 있으며, 어떤 두 금속을 용접했는지에 따라 문자(J, K, E, T 등)로 이름이 붙습니다. Type-K가 단연 가장 흔하며, 크로멜과 알루멜 선으로 만들어지고 약 -328°F에서 +2300°F까지의 매우 넓은 범위를 다룹니다.
문제는 열전대 접합부에서 나오는 전압이 몇 밀리볼트에 불과할 정도로 아주 작다는 것이며, 이를 쓸 만한 온도 값으로 바꾸려면 전용 칩이 필요합니다. 그것이 바로 MAX6675의 역할입니다.
MAX6675 모듈에 대하여
온라인에서 판매되는 MAX6675 모듈은 MAX6675 IC를 중심으로 만든 작은 브레이크아웃 보드이며, Type-K 열전대 프로브와 함께 제공됩니다.
MAX6675 모듈 핀아웃

내부적으로 MAX6675는 열전대의 전압을 샘플링하고, 12비트 아날로그-디지털 변환기를 거친 다음, 그 결과를 간단한 3선 읽기 전용 인터페이스로 제공합니다. ESP8266이 칩에 데이터를 보낼 일이 없고 읽기만 하므로 MOSI 라인은 없습니다:
- VCC: 전원 핀, 3.0V에서 5.5V까지 받을 수 있습니다.
- GND: 접지 핀.
- SCK: 시리얼 클럭, 각 측정값을 시프트 출력하기 위해 ESP8266이 구동합니다.
- CS: 칩 선택 - ESP8266이 측정값을 읽으려 할 때마다 LOW로 내려갑니다.
- SO: 시리얼 데이터 출력(모듈의 MISO 라인) - 12비트 측정값을 ESP8266으로 돌려보냅니다.
보드의 반대쪽 가장자리에는 프로브용 작은 스크류 터미널이 있습니다. 빨간 선은 + 슬롯에, 파란 선은 - 슬롯에 고정합니다.
프로브 자체는 약 18인치 길이의 케이블 끝에 금속 팁이 달린 형태입니다. MAX6675 칩은 1024°C까지 측정값을 디지털화할 수 있지만, 모듈에 함께 제공되는 프로브는 0-80°C까지만 정격입니다. 프로젝트에서 그보다 높은 온도를 측정해야 한다면, 별도로 판매되는 고온 정격 Type-K 프로브를 MAX6675 브레이크아웃과 함께 사용해야 합니다.
간단한 사양:
- 동작 전압: 3.0V - 5.5V
- 인터페이스: 3선 디지털 (SCK / CS / SO)
- 디지털화 범위: 0°C ~ 1024°C (기본 제공 프로브는 0-80°C로 제한)
- 정확도: ±3°C
- 분해능: 약 0.25°C
배선도
MAX6675 모듈은 3.3V-5V 부품이지만, ESP8266 자체는 엄격하게 3.3V 보드이며 GPIO가 5V 톨러런트가 아닙니다. 따라서 모듈의 VCC 핀은 5V가 아니라 반드시 ESP8266의 3.3V 핀에서 전원을 공급하고, GND는 GND에 연결하세요. 그런 다음 SCK, CS, SO에 비어 있는 GPIO 세 개를 아무거나 선택하세요.

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
ESP8266 핀배열 및 ESP8266 전원을 켜는 방법에 대해 더 많이 보십시오.
MAX6675 모듈과 ESP8266 NodeMCU의 배선표
| MAX6675 모듈 | ESP8266 NodeMCU |
|---|---|
| VCC | → 3.3V |
| GND | → GND |
| SCK | → D5 |
| CS | → D6 |
| SO | → D7 |
ESP8266 코드
빠른 단계
- ESP8266을 처음 사용한다면, ESP8266 - 소프트웨어 설치 튜토리얼부터 시작하세요.
- 위의 표와 배선도에 따라 MAX6675 모듈을 ESP8266 NodeMCU에 배선하세요.
- 아직 하지 않았다면 열전대 프로브의 +와 - 선을 모듈의 터미널 블록에 고정하세요.
- USB 케이블로 ESP8266을 컴퓨터에 연결하세요.
- Arduino IDE를 열고 올바른 ESP8266 보드 항목(예: NodeMCU 1.0 (ESP-12E Module))과 맞는 COM 포트를 선택하세요.
- 왼쪽 사이드바에서 Libraries 패널을 여세요.
- "MAX6675"를 검색하여 Adafruit에서 게시한 라이브러리를 찾으세요.
- Install을 클릭하여 IDE에 추가하세요.
- Search for MAX6675 library created by Adafruit and click the Install button.
- 위의 코드를 새 스케치에 붙여넣으세요.
- Upload를 눌러 스케치를 ESP8266에 업로드하세요.
- 프로브 팁을 따뜻한 것(커피 머그, 손가락 끝, 안전한 거리의 헤어드라이어)에 대고 숫자가 변하는 것을 확인하세요.
- 시리얼 모니터를 열어 실시간 측정값을 확인하세요.
※ 주의:
측정값이 나오지 않거나, 값이 멈춰 있거나, 온도가 크게 틀린 경우는 거의 항상 배선 문제입니다. SCK/CS/SO가 스케치의 핀과 일치하는지 다시 확인하고, 프로브의 +와 - 선이 터미널 블록에 그냥 닿아 있는 것이 아니라 단단히 고정되어 있는지 확인하세요.
코드 설명
스케치는 MAX6675 라이브러리를 불러오며, 이 라이브러리가 칩과의 비트뱅잉 통신을 모두 처리해 줍니다.
ESP8266 측에서 사용할 세 개의 핀을 정의합니다. 클럭 라인, 칩 선택 라인, 그리고 모듈에서 오는 데이터 출력 라인입니다.
thermocouple이라는 이름의 MAX6675 객체 하나를 생성하여, 어느 핀이 어떤 역할을 하는지 라이브러리에 알려 줍니다.
setup()은 시리얼 연결을 열고 잠시 멈춰서, 첫 번째 변환을 요청하기 전에 모듈이 안정될 시간을 줍니다.
loop() 안에서 두 라이브러리 함수 readCelsius()와 readFahrenheit()는 각각 칩에서 새로 읽기를 수행하고 요청한 단위로 온도를 돌려줍니다.
그런 다음 두 값을 시리얼 모니터에 한 줄로 출력하고 1초간 멈춥니다. 이는 MAX6675 자체의 내부 변환 속도와 잘 맞으므로, 칩이 실제로 새 데이터를 만들어 내는 것보다 더 빠르게 읽지 않게 됩니다.
동영상
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.