IBM Developer Day 2018μ—μ„œ λ°°ν¬ν•œ IoT λ±ƒμ§€λŠ” ESP32 Devkit을 기반으둜 κ΅¬μ„±λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 배포 λ‹Ήμ‹œ μ„€μΉ˜λœ ν–‰μ‚¬μš© μ†Œν”„νŠΈμ›¨μ–΄ λŒ€μ‹  마이크둜 파이썬이 ν¬νŒ…λœ νŽŒμ›¨μ–΄λ₯Ό μ„€μΉ˜ν•˜λ©΄ IoT 뱃지λ₯Ό 개발 λ³΄λ“œλ‘œ ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 νŠœν† λ¦¬μ–Όμ—μ„œλŠ” κ°œλ°œλ³΄λ“œ 연결을 μœ„ν•œ μ€€λΉ„ 사항과 νŽŒμ›¨μ–΄ μ„€μΉ˜ 방법에 λŒ€ν•΄ ν•™μŠ΅ν•©λ‹ˆλ‹€.

ν•™μŠ΅ λͺ©ν‘œ

이 νŠœν† λ¦¬μ–Όμ„ 마치게 되면 λ‹€μŒκ³Ό 같은 것을 ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

  • ESP32용 λ“œλΌμ΄λ²„ μ„€μΉ˜
  • Developer Day 2018 IoT Badgeκ³Ό USB μ—°κ²°
  • Developer Day 2018 IoT Badge에 νŽŒμ›¨μ–΄ μ„€μΉ˜

사전 μ€€λΉ„ 사항

  1. IBM Developer Day 2018 IoT Badge
  2. 데이터 ν†΅μ‹ μš© USB 2.0 Micro B Type 케이블 (마이크둜 5ν•€)
  3. Developer Day 2018 νŽŒμ›¨μ–΄ λ‹€μš΄λ‘œλ“œ

μ†Œμš” μ‹œκ°„

이 νŠœν† λ¦¬μ–Όμ„ μ™„λ£Œν•˜κΈ°κΉŒμ§€ λŒ€λž΅ 30λΆ„ 정도가 μ†Œμš”λ©λ‹ˆλ‹€.

단계

USB λ“œλΌμ΄λ²„ μ„€μΉ˜ν•˜κΈ°

USB λ“œλΌμ΄λ²„λŠ” 컴퓨터에 μ„€μΉ˜λœ OS에 따라 λ‹€λ₯΄κ²Œ μ œκ³΅λ©λ‹ˆλ‹€. μ•„λž˜ λ§ν¬μ—μ„œ μžμ‹ μ˜ μš΄μ˜μ²΄μ œμ— λ§žλŠ” CP210xUSB to UART Bridge VCP λ“œλΌμ΄λ²„λ₯Ό λ‹€μš΄λ‘œλ“œ ν•©λ‹ˆλ‹€.

https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers

IoT뱃지 μ—°κ²° ν›„ 포트 ν™•μΈν•˜κΈ°

데이터 전솑이 κ°€λŠ₯ν•œ USB 2.0 Micro B Type 케이블 (마이크둜 5ν•€)을 μ΄μš©ν•΄ IoT뱃지와 컴퓨터λ₯Ό μ—°κ²°ν•©λ‹ˆλ‹€.

Windows인 경우

USB둜 μ—°κ²°λœ μ‹œλ¦¬μ–Ό ν¬νŠΈλŠ” λ‚΄ μ»΄ν“¨ν„°μ˜ μž₯μΉ˜κ΄€λ¦¬μžμ—μ„œ 확인 ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ‹€ν–‰ λͺ…λ Ήμ°½μ—μ„œ devmgmt.msc λ‚˜ hdwwiz.cpl λͺ…령을 μ‹€ν–‰ν•©λ‹ˆλ‹€.

μž₯μΉ˜κ΄€λ¦¬μžμ—μ„œ 포트(COM & LPT) ν•­λͺ©μ„ 클릭해 Sillicon Labs CP210x USB to UART Bridge 에 ν• λ‹Ήλœ COM 숫자 값을 ν™•μΈν•©λ‹ˆλ‹€.

μ•„λž˜ κ·Έλ¦Όμ—μ„œ ν™•μΈλœ 포트 λ²ˆν˜ΈλŠ” COM5μž…λ‹ˆλ‹€. μ„€μΉ˜λ˜λŠ” USB ν¬νŠΈλ³„λ‘œ λ‹€λ₯Έ λ²ˆν˜Έκ°€ 할당될 수 있고 λ“œλΌμ΄λ²„ μ„€μΉ˜μ— 따라 κΈ°κΈ° 인식 μ‹œκ°„μ΄ 지연 될 수 μžˆμŠ΅λ‹ˆλ‹€.

Linux인 경우

IoT 뱃지가 컴퓨터에 μ—°κ²°λ˜λ©΄ μ‹œλ¦¬μ–Ό ν¬νŠΈκ°€ ν• λ‹Ήλ˜λ©° 일반적으둜 /dev/ttyUSB0 ν˜•νƒœλ‘œ κ΅¬μ„±λ˜λ―€λ‘œ μ •μƒμ μœΌλ‘œ μƒμ„±λ˜μ—ˆλŠ”μ§€ 확인해 λ΄…λ‹ˆλ‹€.

MacOS인 경우

/dev/tty.SLAB_USBtoUART 둜 μƒμ„±λ©λ‹ˆλ‹€.

Mac OS의 버젼이 OSX Mojave 인 경우

λ³΄μ•ˆ κ°•ν™”λ‘œ 인해 λ“œλΌμ΄λ²„ μ„€μΉ˜ 직후 λ°”λ‘œ λ™μž‘ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ λ‹€μŒκ³Ό 같은 κ³Όμ •μœΌλ‘œ λ“œλΌμ΄λ²„λ₯Ό ν™œμ„±ν™” ν•΄ μ£Όμ–΄μ•Ό ν•©λ‹ˆλ‹€.

  1. μš°μ„  Macκ³Ό IoT Badgeλ₯Ό 데이터 ν†΅μ‹ μš© USB μΌ€μ΄λΈ”λ‘œ μ—°κ²°ν•œ ν›„ ν„°λ―Έλ„μ—μ„œ μ•„λž˜ λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•˜μ—¬ λ“œλΌμ΄λ²„ λ‘œλ”© μƒνƒœλ₯Ό ν™•μΈν•©λ‹ˆλ‹€.

    kextstat | grep silabs

    λ“œλΌμ΄λ²„κ°€ μ •μƒμ μœΌλ‘œ λ‘œλ”©λ˜μ–΄ μžˆλ‹€λ©΄ com.silabs.driver.CP210xVCPDriver κ°€ ν¬ν•¨λœ λ©”μ‹œμ§€κ°€ 좜λ ₯λ©λ‹ˆλ‹€.

  2. μœ„ λͺ…λ Ήμ—μ„œ λ§Œμ•½ μ–΄λ–€ λ©”μ‹œμ§€λ„ 좜λ ₯λ˜μ§€ μ•ŠλŠ”λ‹€λ©΄ μ‹œμŠ€ν…œ ν™˜κ²½μ„€μ •μ„ μ‹€ν–‰ν•˜μ—¬ λ³΄μ•ˆ 및 개인 정보 보호 λ©”λ‰΄λ‘œ μ§„μž…ν•©λ‹ˆλ‹€.

    일반 νƒ­ μ•„λž«λΆ€λΆ„μ— μ°¨λ‹¨λœ λ“œλΌμ΄λ²„μ— μ†Œν”„νŠΈμ›¨μ–΄μ— λŒ€ν•œ 정보가 ν‘œμ‹œλ˜λ©° ν—ˆμš© λ²„νŠΌμ„ ν΄λ¦­ν•©λ‹ˆλ‹€.

  3. λ‹€μ‹œ ν„°λ―Έλ„λ‘œ λŒμ•„κ°€ λ“œλΌμ΄λ²„κ°€ λ‘œλ”©λ˜μ–΄ μžˆλŠ”μ§€ 확인 ν•©λ‹ˆλ‹€.

    kextstat | grep silabs

λ§Œμ•½ μœ„μ™€ 같이 ν•œ κ²½μš°μ—λ„ 연결이 μ•ˆλ˜λŠ” 경우 USBλ₯Ό 뢄리후 λ‹€μ‹œ μ—°κ²°ν•˜κ±°λ‚˜, MacOSλ₯Ό μž¬λΆ€νŒ… ν›„ λ‹€μ‹œ μ‹œλ„ν•΄ λ³΄μ‹œκΈ° λ°”λžλ‹ˆλ‹€.

ESPTool μ„€μΉ˜

Windows인 경우

ESPTool λ‹€μš΄λ‘œλ“œ νŽ˜μ΄μ§€μ—μ„œ Flash Download Tools (ESP8266 & ESP32)을 λ‹€μš΄λ‘œλ“œ λ°›μ•„ 압좕을 ν•΄μ œ ν•©λ‹ˆλ‹€.

Linuxλ‚˜ MacOS인 경우

λͺ…λ Ήμ°½μ—μ„œ λ‹€μŒκ³Ό 같이 μ‹€ν–‰ν•˜μ—¬ μ΅œμ‹  λ²„μ Όμ˜ esptool.pyλ₯Ό μ„€μΉ˜ν•©λ‹ˆλ‹€.

pip install esptool

νŽŒμ›¨μ–΄ μ„€μΉ˜ν•˜κΈ°

νŽŒμ›¨μ–΄ μ„€μΉ˜λŠ” esptool을 μ΄μš©ν•©λ‹ˆλ‹€.

Windows인 경우

λ‹€μš΄λ‘œλ“œν•œ 폴더λ₯Ό μ—΄μ–΄ flash_download_tools_v3.6.5.exeλ₯Ό 클릭해 μ‹€ν–‰ν•©λ‹ˆλ‹€.

μž μ‹œ ν›„ λ‚˜νƒ€λ‚˜λŠ” νŒμ—…μ°½μ—μ„œ ESP32 DownloadTool을 ν΄λ¦­ν•©λ‹ˆλ‹€.

...을 눌러 νŽŒμ›¨μ–΄ bin νŒŒμΌμ„ λ‹€μš΄λ°›μ€ 경둜λ₯Ό μ§€μ •ν•΄μ€λ‹ˆλ‹€.

그리고 파일경둜 μ˜† @ λ‹€μŒ λΉˆμΉΈμ— 0x1000 값을 μž…λ ₯ν•©λ‹ˆλ‹€.

COM 값을 μ„€μ •ν•΄μ£ΌκΈ° μœ„ν•΄ μž₯치 κ΄€λ¦¬μžλ₯Ό μ—½λ‹ˆλ‹€.

포트(COM & LPT)λ₯Ό 클릭해 Sillicon Labs CP210x USB to UART Bridge의 COM 값을 ν™•μΈν•©λ‹ˆλ‹€.

제 PCμ—μ„œλŠ” ν˜„μž¬ COM값이 COM5둜 λ‚˜νƒ€λ‚˜κ³  μžˆμŠ΅λ‹ˆλ‹€. μ—¬λŸ¬λΆ„μ˜ PCμ—μ„œλŠ” λ‹€λ₯Έ 값이 λ‚˜νƒ€λ‚  수 μžˆμœΌλ‹ˆ κΌ­ ν™•μΈν•˜μ„Έμš”.

COM값을 선택해주고, BAUD 값은 921600으둜 μ„€μ •ν•©λ‹ˆλ‹€.

맨 μœ„μ˜ νŒŒμΌκ²½λ‘œμ— μ²΄ν¬λ°•μŠ€λ₯Ό 체크해쀀 ν›„ STARTλ²„νŠΌμ„ λˆ„λ¦…λ‹ˆλ‹€.

λ‹€μš΄λ‘œλ“œκ°€ μ™„λ£Œλ˜μ–΄ FINISH둜 μƒνƒœκ°€ λ³€κ²½λ˜λ©΄ IoT뱃지λ₯Ό μž¬λΆ€νŒ…ν•©λ‹ˆλ‹€.

Failλ©”μ‹œμ§€κ°€ 뜰 경우, bin 파일이 μ €μž₯된 경둜의 폴더λͺ… 등이 ν•œκΈ€λ‘œ λ˜μ–΄μžˆμ§€ μ•Šμ€μ§€ ν™•μΈν•©λ‹ˆλ‹€.

Linux/MacOS의 경우

pip둜 μ„€μΉ˜λœ esptool.py νŒŒμΌμ€ μ‹€ν–‰ κ°€λŠ₯ν•œ νŒŒμΌμ΄λ―€λ‘œ 터미널

Command Line Shell(Terminal Console)을 μ‹€ν–‰ν•˜κ³  μ•žμ„œ μ„€μΉ˜ν•œ esptool.py이 정상 λ™μž‘ν•˜λŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.

μ •μƒμ μœΌλ‘œ μ„€μΉ˜λ˜μ—ˆλ‹€λ©΄ νŒŒλΌλ©”ν„° 없이 μ‹€ν–‰ μ‹œ μ•„λž˜μ™€ 같이 였λ₯˜ λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

$ esptool.py
usage: esptool [-h] [--chip {auto,esp8266,esp32}] [--port PORT] [--baud BAUD]
               [--before {default_reset,no_reset,no_reset_no_sync}]
               [--after {hard_reset,soft_reset,no_reset}] [--no-stub]
               [--trace] [--override-vddsdio [{1.8V,1.9V,OFF}]]
               {load_ram,dump_mem,read_mem,write_mem,write_flash,run,image_info,make_image,elf2image,read_mac,chip_id,flash_id,read_flash_status,write_flash_status,read_flash,verify_flash,erase_flash,erase_region,version}
               ...
esptool: error: too few arguments

이제 νŽŒμ›¨μ–΄λ₯Ό μ€€λΉ„ν•©λ‹ˆλ‹€. μ•žμ„œ νŽŒμ›¨μ–΄λ₯Ό λ‹€μš΄λ‘œλ“œ ν•œ 경둜둜 μ΄λ™ν•˜κ³  μ•„λž˜ λͺ…λ ΉμœΌλ‘œ νŽŒμ›¨μ–΄λ₯Ό μ—…λ°μ΄νŠΈ ν•©λ‹ˆλ‹€.

이 경우 μ‹œλ¦¬μ–Ό ν¬νŠΈκ°€ /dev/tty.SLAB_USBtoUART둜 ν• λ‹Ήλ˜μ—ˆμœΌλ©° ν•΄λ‹Ή 디렉토리에 firmware_badge_full_2.3_20181221.bin 파일이 μžˆλŠ” 것을 κ°€μ •ν•©λ‹ˆλ‹€.

esptool.py --port /dev/tty.SLAB_USBtoUART --baud 921600 write_flash --verify --flash_size=detect 0x1000 firmware_badge_full_2.3_20181221.bin

맺음말

이 νŠœν† λ¦¬μ–Όμ€ Develper Day 2018 IoT 뱃지λ₯Ό κ°œλ°œλ³΄λ“œλ‘œ ν™œμš©ν•˜κ³  또 μ–΄λ–»κ²Œ 컴퓨터와 μ—°κ²°ν•˜λŠ”μ§€μ— λŒ€ν•΄ μ„€λͺ…ν–ˆμŠ΅λ‹ˆλ‹€. μ„€μΉ˜λœ 마이크둜 νŒŒμ΄μ¬μ„ ν™œμš©ν•˜μ—¬ 보닀 쉽고 νŽΈλ¦¬ν•œ IoT 개발 λ³΄λ“œλ‘œ ν™œμš©ν•΄ λ³΄μ‹œκΈ° λ°”λžλ‹ˆλ‹€.