ESP32 MAX6675 열전대 모듈
다른 튜토리얼에서 다루는 대부분의 온도 센서 - DS18B20, DHT22, LM35 등 - 는 최대 측정 온도가 약 100-150°C 정도입니다. 방, 냉장고, 화단에는 충분하지만, 용광로나 납땜 인두 팁, 또는 피자 오븐 내부가 실제로 얼마나 뜨거운지 알아야 할 때는 쓸모가 없습니다. 이런 작업에는 취미가들이 대신 열전대를 사용하며, MAX6675라는 작은 디지타이저 칩과 함께 사용합니다.
이 튜토리얼에서는 ESP32를 MAX6675 브레이크아웃 보드 및 K형 열전대 프로브와 연결한 다음, 시리얼 모니터에서 섭씨와 화씨 두 가지로 온도를 읽어봅니다.

준비물
| 1 | × | 38-pin ESP32 ESP-WROOM-32 Dev Module - Narrow | 쿠팡 | 아마존 | |
| 1 | × | (또는) 38-pin ESP32 ESP-WROOM-32 Dev Module - Wide | 쿠팡 | 아마존 | |
| 1 | × | (또는) 30-pin ESP32 ESP-WROOM-32 Dev Module - Wide | 아마존 | |
| 1 | × | (또는) ESP32 Uno-form board | 아마존 | |
| 1 | × | (또는) ESP32 S3 Uno-form board | 아마존 | |
| 1 | × | USB 케이블 타입-A to 타입-C (USB-A PC용) | 쿠팡 | 아마존 | |
| 1 | × | USB 케이블 타입-C to 타입-C (USB-C PC용) | 아마존 | |
| 1 | × | MAX6675 Thermocouple Module | 아마존 | |
| 1 | × | 브레드보드 | 쿠팡 | 아마존 | |
| 1 | × | 점퍼케이블 | 쿠팡 | 아마존 | |
| 1 | × | (추천) ESP32용 스크루 터미널 확장 보드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) Breakout Expansion Board for ESP32 | 쿠팡 | 아마존 | |
| 1 | × | (추천) ESP32용 전원 분배기 | 쿠팡 | 아마존 |
열전대란 정확히 무엇인가요?
열전대는 서로 다른 두 금속 전선의 한쪽 끝을 용접하여 만든 것으로, 이 접합부를 열접점(hot junction)이라고 합니다. 이 접합부가 뜨거워지거나(또는 차가워지면) 전선 양단에 아주 작은 전압이 나타나며, 이 전압은 온도에 따라 오르내립니다. 섬세한 실리콘 센서가 아니라 그저 두 가닥의 전선이기 때문에, 열전대는 일반 센서라면 즉시 망가질 곳에서도 견디며 측정할 수 있습니다. 크로멜(Chromel)과 알루멜(Alumel) 전선으로 만든 K형이 단연 가장 흔하며, 대략 -328°F부터 +2300°F까지 측정할 수 있습니다.
MAX6675 모듈에 대하여
열전대에서 나오는 밀리볼트 수준의 신호는 그 자체로는 너무 작고 불안정해서 마이크로컨트롤러가 직접 읽을 수 없습니다. MAX6675 모듈이 이 문제를 해결합니다: MAX6675 IC를 중심으로 만든 작은 브레이크아웃 보드로, K형 프로브가 이미 연결된 상태로 함께 판매됩니다.
MAX6675 모듈 핀아웃

브레이크아웃 보드의 MAX6675 칩은 프로브의 신호를 계속 샘플링하고, 내부에서 냉접점 보상을 한 뒤, 간단한 3선 버스를 통해 바로 사용할 수 있는 12비트 온도 값을 ESP32에 전달합니다. 핀은 다음과 같습니다:
- VCC: 전원 입력, 3.0V ~ 5.5V.
- GND: 접지.
- SCK: 시리얼 클럭 입력, ESP32가 구동합니다.
- CS: 칩 선택 - ESP32가 샘플을 읽는 동안 이 핀을 LOW로 내립니다.
- SO: 시리얼 데이터 출력 전용 (데이터 입력 핀은 없습니다. 모듈은 명령을 받지 않고 데이터를 보내기만 합니다).
보드 반대쪽 가장자리에 있는 작은 나사 단자대에 프로브를 연결하며, +와 -로 표시되어 있습니다. 프로브의 빨간색 리드는 +에, 파란색 리드는 -에 연결합니다.
사양을 마저 정리하면: 브레이크아웃 보드 자체는 0°C부터 1024°C까지의 온도를 디지털로 변환할 수 있고, 약 ±3°C의 정확도를 가지며, 약 0.25°C 단위까지 측정값을 구분합니다 - 다만 다음에 설명할 기본 제공 프로브가 실제 제약 요인입니다.
기본 제공 K형 프로브
모듈과 함께 제공되는 프로브는 끝이 스테인리스강으로 된 얇은 케이블로, 길이는 약 18인치이며 정격 측정 범위는 0°C부터 80°C까지입니다 - 커피 한 잔이나 테라리움에는 괜찮지만, 가마를 측정하려면 더 높은 정격의 프로브가 필요합니다. 브레이크아웃의 단자대에 연결하는 끝부분에서 빨간색(양극)과 파란색(음극) 전선을 찾으세요.
배선도
ESP32에서 모듈에 전원을 공급합니다: VCC는 5V에(3.3V도 동작합니다), GND는 GND에 연결합니다. 나머지 세 핀 - SCK, CS, SO - 는 각각 ESP32의 아무 여유 GPIO에나 연결하면 됩니다. 라이브러리가 하드웨어 SPI 주변장치가 아니라 간단한 비트뱅잉으로 이 핀들을 구동하기 때문입니다. 마지막으로 열전대 프로브의 빨간색과 파란색 리드를 모듈의 +와 - 단자에 끼웁니다.

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
ESP32 및 다른 구성 요소에 전원을 공급하는 방법에 대해 잘 알지 못하는 경우, 다음 튜토리얼에서 안내를 찾을 수 있습니다: ESP32 전원 공급 방법.
MAX6675 모듈과 ESP32 간의 배선표
| MAX6675 모듈 | ESP32 |
|---|---|
| VCC | → 5V |
| GND | → GND |
| SCK | → GPIO19 |
| CS | → GPIO18 |
| SO | → GPIO5 |
ESP32 코드
빠른 단계
- ESP32가 처음이신가요? 먼저 ESP32 - 소프트웨어 설치부터 시작하세요.
- 위의 배선도와 같이 MAX6675 모듈과 열전대 프로브를 ESP32에 연결합니다.
- USB 케이블로 ESP32를 컴퓨터에 연결합니다.
- Arduino IDE를 엽니다.
- Tools 메뉴에서 맞는 ESP32 보드(예: ESP32 Dev Module)와 올바른 COM 포트를 선택합니다.
- 왼쪽 아이콘 막대에서 Libraries 패널을 엽니다.
- 검색 상자에 "MAX6675"를 입력하고 Adafruit에서 게시한 라이브러리를 찾습니다.
- Install을 누릅니다.
- Search for MAX6675 library created by Adafruit and click the Install button.
- 위의 코드를 IDE에 붙여넣습니다.
- Upload를 눌러 스케치를 ESP32에 업로드합니다.
- 열전대 끝을 따뜻하게 하거나(손으로 잡거나, 입김을 불거나, 따뜻한 물에 담그기) 식힙니다.
- 시리얼 모니터를 열어 측정값이 들어오는 것을 확인합니다.
※ 주의:
측정값이 멈춰 있거나 분명히 잘못된 값이 보이나요? 먼저 SCK/CS/SO 배선을 다시 확인한 다음, 열전대의 빨간색과 파란색 리드가 모듈의 나사 단자에 단단히 끼워져 있는지 확인하세요 - 느슨한 리드가 값이 멈추거나 말이 안 되는 측정값의 가장 흔한 원인입니다.
코드 설명
스케치는 MAX6675 라이브러리 헤더를 포함하는 것으로 시작하며, 이를 통해 ESP32 스케치에서 MAX6675 클래스를 사용할 수 있습니다.
세 개의 상수는 모듈의 SCK, CS, SO 핀이 연결된 ESP32 GPIO를 기록합니다.
그런 다음 이 세 핀으로 thermocouple이라는 MAX6675 객체 하나를 생성합니다 - 스케치의 나머지 부분에서 측정값을 얻을 때 호출하는 것이 바로 이 객체입니다.
setup()에서는 결과를 출력할 곳이 필요하므로 시리얼 포트만 시작하고, 첫 번째 측정 전에 MAX6675가 전원 공급을 마칠 수 있도록 잠시 지연을 둡니다.
loop() 안에서 중요한 라이브러리 호출은 두 가지입니다:
- Thermocouple.readCelsius(): 최신 측정값을 섭씨 온도로 가져옵니다.
- Thermocouple.readFahrenheit(): 같은 측정값을 화씨로 변환하여 가져옵니다.
loop 끝의 1초 delay() 덕분에 측정값이 시리얼 모니터를 가득 채우지 않고 보기 편한 속도로 스크롤됩니다.
동영상
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.