ESP32 마이크로파이썬 온도 센서 OLED
이 튜토리얼은 ESP32와 MicroPython 코드를 사용하여 DS18B20 온도 센서에서 온도를 읽고 OLED I2C 디스플레이에 표시하는 방법을 안내합니다.

준비물
1 | × | ESP32 ESP-WROOM-32 개발 모듈 | 쿠팡 | 아마존 | |
1 | × | USB 케이블 타입-A to 타입-C (USB-A PC용) | 쿠팡 | 아마존 | |
1 | × | USB 케이블 타입-C to 타입-C (USB-C PC용) | 아마존 | |
1 | × | SSD1306 I2C OLED 디스플레이 128x64 | 쿠팡 | 아마존 | |
1 | × | SSD1306 I2C OLED 디스플레이 128x32 | 아마존 | |
1 | × | DS18B20 온도 센서 (어댑터 포함) | 쿠팡 | 아마존 | |
1 | × | DS18B20 온도 센서(어댑터 없음) | 아마존 | |
1 | × | 점퍼케이블 | 쿠팡 | 아마존 | |
1 | × | (추천) ESP32용 스크루 터미널 확장 보드 | 쿠팡 | 아마존 | |
1 | × | (추천) ESP32용 전원 분배기 | 쿠팡 | 아마존 |
공개: 이 포스팅 에 제공된 일부 링크는 아마존 제휴 링크입니다. 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
온도 센서 및 OLED에 대하여
DS18B20 온도 센서, OLED I2C 또는 ESP32용 MicroPython 프로그래밍에 처음이시라면, 다음의 튜토리얼들을 확인해보시기 바랍니다:
- ESP32 마이크로파이썬 - 시작하기 튜토리얼
- ESP32 마이크로파이썬 - OLED 튜토리얼
이 튜토리얼은 DS18B20 온도 센서와 OLED에 대해 포괄적인 이해를 제공하며, 이러한 부품들을 ESP32에 연결하는 방법과 MicroPython 코드를 사용하여 이들의 동작을 효과적으로 제어하는 방법을 안내합니다.
선연결
- 브레드보드를 사용하여 ESP32와 온도 센서 및 OLED를 연결하는 방법

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
- 나사 터미널 블록 브레이크아웃 보드를 사용하여 ESP32와 온도 센서 및 OLED를 연결하는 방법

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
ESP32 마이크로파이썬 코드
/*
* 이 ESP32 마이크로파이썬 코드는 newbiely.kr 에서 개발되었습니다
* 이 ESP32 마이크로파이썬 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다.
* 상세한 지침 및 연결도에 대해서는 다음을 방문하세요:
* https://newbiely.kr/tutorials/esp32-micropython/esp32-micropython-temperature-sensor-oled
*/
import machine
import onewire
import ds18x20
import time
from machine import I2C, Pin
from DIYables_MicroPython_OLED import OLED_SSD1306_I2C
ds_pin = machine.Pin(23) # The ESP32 pin GPIO23 connected to the DS18B20 sensor
# Create the onewire object
OneWire = onewire.OneWire(ds_pin)
# Create the DS18X20 object
DS18B20 = ds18x20.DS18X20(OneWire)
# Scan for devices on the bus
sensor_addresses = OneWire.scan()
if not sensor_addresses:
raise Exception("No DS18B20 sensor found!")
sensor_address = sensor_addresses[0]
print('Found DS18B20 sensor with address: ', sensor_address)
# Initialize I2C
i2c = I2C(0, scl=Pin(22), sda=Pin(21), freq=400000) # Adjust ESP32 pins according to your setup
# Initialize the OLED display
oled = OLED_SSD1306_I2C(128, 64, i2c)
# Clear the display
oled.clear_display()
oled.set_text_size(3)
oled.display()
def oled_display_center(oled, text):
# Get the text bounds (width and height) of the string
oled.clear_display()
x1, y1, width, height = oled.get_text_bounds(text, 0, 0)
# Set cursor to the calculated centered position
cursor_x = (oled.WIDTH - width) // 2
cursor_y = (oled.HEIGHT - height) // 2
oled.set_cursor(cursor_x, cursor_y)
# Print the text on the display
oled.println(text)
# Refresh the display to show the text
oled.display()
# Main loop to read and print the temperature every second
while True:
DS18B20.convert_temp()
time.sleep_ms(750)
temperature = DS18B20.read_temp(sensor_address)
print('Temperature: {:.2f} °C'.format(temperature))
oled_display_center(oled, "{:.2f}".format(temperature) + OLED_SSD1306_I2C.DEGREE_SYMBOL + "C")
time.sleep(1)
자세한 사용 방법
다음은 Thonny IDE를 사용하여 ESP32에서 MicroPython 코드를 설정하고 실행하는 방법에 대한 지침입니다:
- 컴퓨터에 Thonny IDE가 설치되어 있는지 확인하세요.
- ESP32 보드에 MicroPython 펌웨어가 로드되어 있는지 확인하세요.
- MicroPython을 사용하는 ESP32를 처음 사용한다면, 단계별 지침을 위해 ESP32 마이크로파이썬 - 시작하기 가이드를 참고하세요.
- 제공된 다이어그램에 따라 ESP32 보드를 DS18B20 온도 센서와 OLED I2C에 연결하세요.
- ESP32 보드를 USB 케이블로 컴퓨터에 연결하세요.
- 컴퓨터에서 Thonny IDE를 실행하세요.
- Thonny IDE에서 도구 옵션으로 이동하세요.
- 인터프리터 탭에서 드롭다운 메뉴에서 MicroPython (ESP32)를 선택하세요.
- 올바른 포트가 선택되었는지 확인하세요. Thonny IDE는 보통 자동으로 감지하지만, 경우에 따라 수동으로 선택해야 할 수 있습니다(예: Windows의 COM12 또는 Linux의 /dev/ttyACM0).
- Thonny IDE에서 도구 패키지 관리로 이동하세요.
- “DIYables-MicroPython-OLED”를 검색한 후, DIYables가 만든 OLED 라이브러리를 찾으세요.
- DIYables-MicroPython-OLED를 클릭한 다음, OLED 라이브러리를 설치하기 위해 Install 버튼을 클릭하세요.

- 제공된 MicroPython 코드를 복사하여 Thonny의 편집기에 붙여넣습니다.
- ESP32에 코드를 저장하려면:
- Save 버튼을 클릭하거나 Ctrl+S를 누릅니다.
- 저장 대화 상자에서 MicroPython device를 선택합니다.
- 파일 이름을 main.py로 지정합니다.
- 스크립트를 실행하려면 녹색 Run 버튼을 클릭하거나 (또는 F5 키를 눌러) 실행합니다.
Shell x
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot
MPY: soft reboot
Found DS18B20 sensor with address: bytearray(b'(\xffP\x05.\x04\x00\x07')
Temperature: 26.07 °C
Temperature: 26.11 °C
Temperature: 26.11 °C
Temperature: 26.24 °C
Temperature: 27.44 °C
Temperature: 29.10 °C
Temperature: 29.86 °C
Temperature: 30.24 °C
Temperature: 30.39 °C
MicroPython (ESP32) • CP2102 USB To UART Bridge Controller @ COM12 ≡
- 센서를 뜨거운 물이나 차가운 물에 담거나 손에 쥐어 보세요.
- OLED 화면에 표시되는 값을 확인해 보세요. 아래 이미지와 같이 나옵니다.

코드 설명
각 줄에 대한 설명은 소스 코드의 주석을 확인하세요!
동영상
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.