이 키트는 책 ‘마이크로파이썬을 활용한 사물인터넷-챗GPT로 코딩하기‘를 기준으로 준비되었지만, 아두이노 환경에서도 사용 가능합니다.
이 키트에는 다음의 부품이 포함됩니다. 모든 부품은 미리 납땜이 되어 있으므로 즉시 연결하여 사용할 수 있습니다.
- 옥토보드(OctoBoard)
- 멀티원(Multi-one) 실드
- ESP32 S3 mini 개발 보드
- BH1730(조도) 실드
- DHT22 온습도 실드
- OLED(SSD1306) 실드
- 릴레이 실드
- PIR(동작감지) 실드
- DS18B20 온도 센서
- SD 카드/RTC 실드
- 프로토(Proto) 실드
- MQ-9 가스 센서
- USB-C 케이블

{끝:(1)부품 전체 구성}
- 실드 장착 슬롯이 8개입니다.
- ESP32 S3/S2 mini의 대부분의 핀에 연결 가능합니다.
- 하단 맨 좌측 슬롯에는 마이크로 컨트롤러가 장착됩니다.
- 하단 슬롯에는 ESP32 S3/S2 mini의 바깥 핀이 연결됩니다.
- 상단 슬롯에는 ESP32 S3/S2 mini의 안쪽 핀이 연결됩니다.

{끝:(2)옥토보드(OctoBoard)}
- 디지털 입출력과 아나로그 입출력을 학습하기 위하여 준비되었습니다.
- 장착된 부품: 버튼 두 개, LED 두 개, 부저, 포텐시오미터, 가스 센서 장착 핀, 선택 스위치
- 선택 스위치 위치: POT 방향으로 밀어서 연결하면 L2 핀이 포텐시오미터와 연결되고,GAS 방향으로 밀면 GAS 센서에 연결됩니다. 따라서 포텐시오미터와 GAS 센서는 선택적으로 사용됩니다.
- GAS 센서 연결: 극성에 주의해야 연결해야 합니다.
- L2 핀: 아나로그 입력. 포텐시오미터와 GAS 센서를 선택적으로 연결하여 사용합니다.
- L3 핀: 디지털 입력. 버튼1. 누르면 low(0,False), 떼면 high(1,True). INPUT_PULLUP 지정해야 합니다.
- L4 핀: 디지털 입력. 버튼2. 누르면 high(1,True), 떼면 low(0,False). INPUT_PULLDOWN 지정해야 합니다.
- L5 핀: 디지털 출력. LED1. high(1,True) 값을 주면 켜집니다.
- L6 핀: 디지털 출력. LED2. low(0,False) 값을 주면 켜집니다.
- L7 핀: 디지털 출력. 액티브 부저

{끝:(3)멀티원(Multi-one) 실드}
<주요 사양>
- ESP32-S3FH4R2 마이크로컨트롤러 장착
- 2.4 GHz Wi-Fi
- Bluetooth LE
- Type-c USB
- 디지털 입출력핀 27개, 모든 핀에서 interrupt/pwm/I2C/one-wire 지원
- ADC, DAC, I2C, SPI, UART, USB OTG
- MicroPython, Arduino 지원
- 초기 설치 펌웨어: MicroPython
- LOLIN(Wemos) D1 mini 실드와 호환

{끝:(4)ESP32 S3 mini 개발 보드}
- 주변광의 조도를 알려 주는 실드입니다.
- 센서 부분이 분리되지 않도록 글루건으로 접합되어 있습니다.
- I2C 번지: 0x23(기본값)
- I2C 핀: SCL(D1,R3),SDA(D2,R4)

{끝:(5)BH1730(조도) 실드}
- 온습도를 알려주는 실드입니다.
- 습도 범위: 0-100% , ±2% 오차
- 온도 범위: -40 ~ 80 °C, ±0.5 °C 오차
- 데이터 핀: D4(R6)

{끝:(6)5. DHT22 온습도 실드}
- 64×48 픽셀을 가진 표시 장치입니다.
- SSD1306 드라이브를 사용합니다.
- I2C 번지: 0x3d(기본값),0x3c. 제품에 따라 기본값이 다를 수 있으므로 I2C번지를 스캔 프로그램 (scan_i2c_addr.py)으로 미리 확인해야 합니다.
- I2C 핀: SCL(D1,R3),SDA(D2,R4)

{끝:(7)6. OLED(SSD1306) 실드}
- 1 채널 릴레이가 장착되어 있습니다.
- 데이터 핀: D1(R3). I2C의 SCL핀과 중복되므로 조심하여야 합니다.

{끝:(8)릴레이 실드}
- 열을 가진 사물의 움직임을 감지하는 실드입니다.
- 데이터 핀: D3(R5)

{끝:(9)PIR 실드}
- OneWire 방식으로 연결되는 온도 센서가 장착되어 있습니다.
- 데이터 핀: D2(R4). I2C의 SDA핀과 중복되므로 조심하여야 합니다.

{끝:(10)DS18B20 온도 실드}
- 앞면에 SPI 방식으로 연결되는 마이크로 SD카드 슬롯이 있습니다.
- 마이크로 SD 카드는 제품에 포함되어 있지 않습니다.
- DS1307 RTC 부품은 I2C 방식으로 연결됩니다.
- 뒷면의 CR1220 배터리 홀더에는 제품 출고시 배터리를 장착하여 발송합니다.
- 배터리는 +극(편평한 면)이 실드의 외부 방향으로 오도록 장착해야 합니다.
- [RTC] I2C 번지: 0x68(기본값)
- [RTC] I2C 핀: SCL(D1,R3),SDA(D2,R4)
- [SD카드] SPI핀: SCK(D5,L4), MISO(D6,L5), MOSI(D7,L6), CS(D8,L7)
- 이 실드와 멀티원 실드는 핀이 중복되지 않도록 분리하여 장착하여야 합니다.


{끝:(11)SD 카드/RTC 실드}
- 부품을 납땜하여 장착할 수 있는 실드입니다.
- 롱헤더 핀이 미리 납땜되어 있습니다.

- ESP32 S3 mini를 브레드보드에 장착할 때는 중간에 이 실드를 끼워야 합니다.

{끝:(12)프로토(Proto) 실드}
- 가연성 가스와 일산화 탄소의 공기중 농도를 알려 주는 센서입니다.
- 이 센서는 멀티원 실드의 가스 핀에 장착하고, 셀렉터를 GAS로 옮겨야 합니다. (극성에 유의하세요)


{끝:(13)MQ-9 가스센서}
- 양끝에 USB-A와 USB-C 단자를 가진 케이블입니다.
- 케이블 길이와 제품 색깔은 상황에 따라 달라질 수 있습니다.

{끝:(14)USB-C 케이블}
- ⚠️ 안전: 실드의 남땜 부위는 날카로우므로 탈부착할 때는 반드시 보호 장구를 착용하여 부상을 입지 않도록 유의하시기 바랍니다.
- 🎓용도: 이 키트는 책 “마이크로파이썬을 활용한 사물인터넷”의 학습을 위하여 만들어진 제품이지만, 다른 용도로도 사용할 수 있습니다.
- 🔄구성품: 키트의 구성품은 설계 변경 또는 부품 수급 상황에 따라 유사한 기능을 갖는 다른 제품으로 교체될 수 있습니다.
- 🛠️보강: 키트의 내구성을 높이기 위하여 글루건 등으로 제품을 보강한 부분이 있으며, 이 과정에서 생긴 흠은 제품 하자가 아닙니다.
- 🚀부품 변경: 제품 성능 향상을 위하여 특정 실드는 일부 부품이 삭제되거나 변경되어 있습니다. 이러한 변경은 제품의 하자가 아닙니다.
- ⚙️펌웨어: 제공되는 마이크로컨트롤러에는 마이크로파이썬 펌웨어가 미리 설치되어 있습니다.
- 💾프로그램: 학습이나 키트의 테스트를 위한 프로그램이 미리 설치되어 있을 수 있습니다.
{끝:(15)유의사항}
▲모두 닫기 | {끝:()📦🛡️키트의 실드에 대한 설명}
학습에 필요한 라이브러리와 프로그램을 다운로드 받아서 설치할 수 있습니다. 만약 제공된 마이크로컨트롤러에 미리 프로그램이 설치되어 있으면, 이 과정은 불필요할 수도 있습니다.
학습 자료 다운로드하기▲모두 닫기 | {끝:()📥학습 자료 다운로드하기}
설치된 프로그램에서 iotmaker_esp32_kit_demo.py를 실행하면, KIT의 모든 실드를 단계별로 테스트할 수 있습니다. 각 단계의 내용은 OLED실드와 Thonny에 출력됩니다.
▲모두 닫기 | {끝:()🧰실습 키트 데모 프로그램}
I2C로 연결되는 실드(OLED 실드, BH1730 실드, SD 카드/RTC 실드)는 고유한 I2C 주소를 가지고 있고, 프로그램에서 이 주소를 지정해야 하는 경우도 있습니다. 연결된 실드의 I2C 주소는 다음 프로그램을 실행하여 확인할 수 있습니다. 이 프로그램은 다운로드 받은 학습 자료에 포함되어 있습니다.
file명: …\micropython\scan_i2c_addr.py
from machine import Pin, I2C
# 1) I2C 버스 핀 번호 지정하기
SCL = 36 # ESP32 S3 mini:36, S2 mini:35, C3 mini/Pico:10
SDA = 35 # ESP32 S3 mini:35, S2 mini:33, C3 mini/Pico:8
# 2) I2C 버스 초기화
# id=0 혹은 id=1 중 하나를 선택. 보드에 따라 다르니 확인하세요.
i2c = I2C(
0, # 하드웨어 I2C 버스 번호 (0 또는 1)
sda=Pin(SDA), # SDA 핀 번호
scl=Pin(SCL), # SCL 핀 번호
freq=400000 # 통신 속도(Hz)
)
# 3) 연결된 장치 주소 스캔
devices = i2c.scan()
# 4) 예상되는 번지와 이름 나열
i2c_addr = [0x23 , 0x3c , 0x3d , 0x68]
i2c_name = ['BH1750', 'OLED', 'OLED', 'RTC']
# 5) 결과 출력
if devices:
print(f"발견된 I2C 주소:{len(devices)}개")
for addr in devices:
try:
# 16진수 형태로 보기 편하게 변환
print(" - ",hex(addr), i2c_name[i2c_addr.index(addr)])
except ValueError:
# i2c_name에 없는 번지는 "Unknown"으로 출력
print(" - ",hex(addr), "Unknown")
else:
print("I2C 버스에서 장치를 찾을 수 없습니다.")
{끝:()📍I2C 주소 스캔 프로그램: scan_i2c_addr.py}
출력 결과 예시:
발견된 I2C 주소:3개 - 0x23 BH1750 - 0x3d OLED - 0x68 RTC
앞의 출력 결과에 따르면, OLED 실드의 I2C 번지는 0x3d입니다. 그래서 oled를 사용하는 프로그램에서는 다음과 같이 addr=0x3d를 지정해야 합니다.
# 중간 생략... oled = SSD1306_I2C(WIDTH, HEIGHT, i2c, addr=0x3d ) # 또는 addr=0x3c # 중간 생략...
▲모두 닫기 | {끝:()🔍I2C로 연결된 실드의 번호 확인하기 }
I2C로 연결되는 OLED실드는 I2C 주소를 0x3c와 0x3d중에서 선택할 수 있지만 기본값은 제품마다 다릅니다. 다음 함수를 사용하면 연결된 OLED 실드를 찾아서 자동으로 지정할 수 있습니다. 이 프로그램은 다운로드 받은 학습 자료에 포함되어 있습니다.
file명: …\micropython\lib\oled_i2c.py
oled_i2c.addr함수를 사용하는 예제:
from oled_i2c import addr # # 중간 생략... oled = SSD1306_I2C(WIDTH, HEIGHT, i2c, addr=addr(i2c)) # 중간 생략...
▲모두 닫기 | {끝:()🔎OLED의 I2C 번지를 자동으로 연결하기 }