์•ž์—์„œ ์•„๋‘์ด๋…ธ IDE ๋ฅผ ์‚ฌ์šฉํ•œ ESP8266 ๊ฐœ๋ฐœ์€ ์ฝ”๋“œ ํ•˜๋‚˜ ๊ณ ์น ๋•Œ๋งˆ๋‹ค ์ปดํŒŒ์ผ, ํŽŒ์›จ์–ด ์—…๋กœ๋“œ, ๋””๋ฐ”์ด์Šค ์žฌ๋ถ€ํŒ… ๋ฐ ์‹คํ–‰ ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  IDE ์—์„œ ๋งŽ์€ ๋ถ€๋ถ„์„ ๋Œ€์‹ ํ•ด์ฃผ๊ธฐ๋Š” ํ•˜์ง€๋งŒ, ๋น ๋ฅธ ๊ฐœ๋ฐœ๊ณผ ํ…Œ์ŠคํŠธ๊ฐ€ ๋ฐ˜๋ณต๋˜์–ด์•ผ ํ•˜๋Š” IoT ์˜ ์ƒ์‚ฐ์„ฑ ์ธก๋ฉด์—์„œ ๋ณด์ž๋ฉด ํฐ ๋‹จ์ ์ž…๋‹ˆ๋‹ค. ์›น ๊ฐœ๋ฐœ์—์„œ Ruby, Python, Node.js ๋“ฑ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด ๋ฐ ํ”„๋ ˆ์ž„์›์ด ๋„์ž…๋˜์–ด ์ƒ์‚ฐ์„ฑ์„ ๋†’์ธ ๊ฒƒ์ฒ˜๋Ÿผ, ESP8266 ๊ฐœ๋ฐœ์—์„œ๋„ MicroPython ์„ ์‚ฌ์šฉํ•˜๋ฉด ์‰ฝ๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ESP8266 ์„ ํ™œ์šฉํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณธ ์—ฐ์žฌ๊ธ€์—์„œ๋Š” ESP8266 ๊ฐœ๋ฐœ๋ณด๋“œ์ธ NodeMCU V2 ์™€ MicroPython ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์Œ ์ฃผ์ œ๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

  1. MicroPython ์„ ESP8266 ์— ์„ค์น˜
  2. MicroPython ํ…Œ์ŠคํŠธ์™€ ๋„คํŠธ์›Œํฌ ๋ฐ WebRepl ์„ค์ •
  3. ๊ธฐ๋ณธ GPIO ์ œ์–ด ๋ฐ ์˜จ๋„ ์„ผ์„œ ์ธ์‹
  4. ESP8266 ์„ Watson IoT ์— ์—ฐ๋™ํ•˜์—ฌ NodeMCU ๋กœ ์ œ์–ด

MicroPython ์„ค์น˜

MicroPython ํŽŒ์›จ์–ด ๋‹ค์šด๋ฐ›๊ธฐ

MicroPython ์€ ์˜คํ”ˆ์†Œ์Šค๋กœ ๊ณต๊ฐœ๋˜์–ด ์žˆ์–ด ์›ํ•˜๋Š”๋Œ€๋กœ ์ง์ ‘ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋‹จ ํŠœํ† ๋ฆฌ์–ผ์„ ์œ„ํ•ด์„œ ๋‹ค์Œ ๋งํฌ์— ๋ฏธ๋ฆฌ ๋นŒ๋“œ๋˜์–ด ์žˆ๋Š” ํŽŒ์›จ์–ด๋ฅผ ๋‹ค์šด๋ฐ›์•„๋„ ๋ฉ๋‹ˆ๋‹ค.

  • http://micropython.org/download#esp8266 ๋งํฌ์—์„œ ๊ฐ€์žฅ ์œ„์˜ ํŽŒ์›จ์–ด๋ฅผ ๋‹ค์šด๋ฐ›์Šต๋‹ˆ๋‹ค. 2017๋…„ ๋ง ๊ธฐ์ค€์œผ๋กœ http://micropython.org/resources/firmware/esp8266-20171101-v1.9.3.bin ํŽŒ์›จ์–ด๊ฐ€ ๊ฐ€์žฅ ์ตœ์‹ ์˜ ์•ˆ์ • ํŽŒ์›จ์–ด ์ž…๋‹ˆ๋‹ค.
  • ์ตœ์‹  ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์œผ๋ฉด ๋งค์ผ ๋นŒ๋“œ๋˜๋Š” ๋‚ ์งœ๋ณ„ ๋นŒ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ”Œ๋ž˜์‹œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ 512KB ์ธ ๋ชจ๋“ˆ์„ ์œ„ํ•œ 512k ํŽŒ์›จ์–ด๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‹œ๋ฆฌ์–ผ ์—ฐ๊ฒฐ์„ ํ•˜์ง€ ์•Š์•„๋„ ๋„คํŠธ์›Œํฌ๋กœ ํŽŒ์›จ์–ด๋ฅผ ์—…๋ฐ์ดํŠธ ๊ฐ€๋Šฅํ•œ OTA ํŽŒ์›จ์–ด๋„ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์•„์ง ๊ฐœ๋ฐœ๋‹จ๊ณ„๋ผ ์•ˆ์ •์ ์ด์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

esptool ์„ค์น˜

esptool ์€ ESP8266 ๋ถ€ํŠธ๋กœ๋”์™€ ํ†ต์‹ ํ•ด์„œ ํŽŒ์›จ์–ด๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ์ž…๋‹ˆ๋‹ค. Python ์œผ๋กœ ์งœ์—ฌ ์žˆ์œผ๋ฉฐ Python 2.7์ด์ƒ, Python 3.4 ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

  1. MicroPython ์„ ์œ„ํ•ด Python ์ด ๋ณ„๋„๋กœ ํ•„์š”ํ•˜์ง€๋Š” ์•Š์ง€๋งŒ, esptool ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด Python ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

    1. Windows ์—์„œ Python ์ด ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š์€ ๊ฒฝ์šฐ์—” https://www.python.org/downloads/ ์—์„œ ์ทจํ–ฅ์— ๋”ฐ๋ฅธ Python ์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ์ž˜
      ๋ชจ๋ฅด๊ฒ ์œผ๋ฉด Python 3.x ์ตœ์‹  ๋ฒ„์ „์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค. ์„ค์น˜์‹œ Add Python x.x to PATH ์˜ต์…˜์„ ์ฒดํฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

      python364_32bit.png

    2. MacOSX ์ด๋‚˜ Linux ๊ฒฝ์šฐ Python ์ด ์ด๋ฏธ ์„ค์น˜๋˜์–ด ์žˆ์–ด ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

  2. Python ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์ธ pip ๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    1. Windows ๊ฒฝ์šฐ ์œ„์˜ ์„ค์น˜ ๊ณผ์ •์—์„œ pip ๊ฐ€ ๊ฐ™์ด ์„ค์น˜๋ฉ๋‹ˆ๋‹ค.
    2. ๋งฅ OS X ๊ฒฝ์šฐ sudo easy_install pip ๋ช…๋ น์–ด๋กœ ์„ค์น˜ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
    3. Linix ๋Š” ๋‹ค์Œ ๋งํฌ๋ฅผ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค.
  3. cmd ํ”„๋กฌํ”„ํŠธ๋‚˜ ํ„ฐ๋ฏธ๋„์—์„œ ๋‹ค์Œ ๋ช…๋ น์–ด๋กœ esptool ์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

    • pip install esptool
    • ๊ถŒํ•œ ๋ฌธ์ œ๋กœ ์„ค์น˜๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด sudo pip install esptool ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  4. python -m esptool ๋ช…๋ น์–ด๋กœ esptool ์ด ์„ค์น˜๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    esptool.png

NodeMCU ์‹œ๋ฆฌ์–ผ ์—ฐ๊ฒฐ

NodeMCU V2 ๋Š” CP2102 ์นฉ์…‹, V3 ๋Š” CH340 ์นฉ์…‹ ์œผ๋กœ ์‹œ๋ฆฌ์–ผ-USB ์—ฐ๊ฒฐ์ด ๊ตฌํ˜„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋“œ๋ผ์ด๋ฒ„ ์„ค์น˜ ๊ณผ์ •๊ณผ ์‹ค์ œ ๋ณด๋“œ ํฌ๊ธฐ ์™ธ์— ํฌ๊ฒŒ ์ฐจ์ด๋‚˜์ง€๋Š” ์•Š์œผ๋‚˜, ๋ณธ ๊ธ€์—์„œ๋Š” NodeMCU V2 ๊ธฐ์ค€์œผ๋กœ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

  1. ๋‹ค์Œ ๋งํฌ์—์„œ ์ ์ ˆํ•œ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๋‹ค์šด๋ฐ›๊ณ  ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. Linux ๋Š” ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๋ณ„๋„๋กœ ์„ค์น˜ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

  2. NodeMCU ๋ฅผ ๋žฉํƒ‘๊ณผ ์—ฐ๊ฒฐํ•˜๊ณ  ์ธ์‹๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    1. Windows ๋Š” ์žฅ์น˜ ๊ด€๋ฆฌ์ž์—์„œ ์‹œ๋ฆฌ์–ผ ํฌํŠธ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜ ์˜ˆ์ œ์—์„œ๋Š” COM3 ๋กœ ์ธ์‹๋˜์—ˆ๊ณ , ์ด ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ๊ธฐ์–ตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

      cp2102_windows.png

    2. ๋งฅ OS X ์—์„œ๋Š” /dev/cu.SLAB_USBtoUART ๋””๋ฐ”์ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

      cp2102_mac.png

    3. Linux ์—์„œ๋Š” /dev/ttyUSB0 ๋””๋ฐ”์ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

      cp2102_linux.png

  3. python -m esptool --port <์žฅ์น˜์ด๋ฆ„> flash_id ๋ช…๋ น์–ด๋กœ ๊ฐ€๋Šฅํ•œ flash ํฌ๊ธฐ์™€ ์žฅ์น˜ ๋ฒˆํ˜ธ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    1. Windows: python -m esptool --port COM3 flash_id (์žฅ์น˜ ๊ด€๋ฆฌ์ž์—์„œ ๋ณด์ด๋Š” COM ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.)

      flash_id_win.png

    2. ๋งฅ OS X: python -m esptool --port /dev/cu.SLAB_USBtoUART flash_id

      flash_id_mac.png

    3. Linux: python -m esptool --port /dev/ttyUSB0 flash_id

      flash_id_linux.png

  • ํ˜น์‹œ ์‹œ๋ฆฌ์–ผ ์—ฐ๊ฒฐ์ด ์ž˜ ์ง„ํ–‰๋˜์ง€ ์•Š์„ ๋•Œ๋Š” USB ์ผ€์ด๋ธ”์„ ๋ฐ”๊ฟ”๋ณด๋Š” ๊ฒƒ๋„ ์ข‹์Šต๋‹ˆ๋‹ค.

MicroPython ํŽŒ์›จ์–ด ์„ค์น˜

๋‹ค์šด๋ฐ›์•˜๋˜ ํŽŒ์›จ์–ด๋ฅผ esptool ์„ ์ด์šฉํ•˜์—ฌ NodeMCU ์— ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. Windows ๋‚˜ Linux ์—์„œ๋„ ์‹œ๋ฆฌ์–ผ USB ์žฅ์น˜ ์ด๋ฆ„๋งŒ ๋ณ€๊ฒฝํ•˜๋ฉด ๋˜๋ฏ€๋กœ, ๊ณตํ†ต ๋ถ€๋ถ„์€ ๋งฅ OS X ๊ธฐ์ค€์œผ๋กœ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

  1. ๋‹ค์Œ ๋ช…๋ น์–ด๋กœ ๊ธฐ์กด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

    • python -m esptool --port /dev/cu.SLAB_USBtoUART erase_flash
    • ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ์žฅ์น˜์ด๋ฆ„์€ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋‹ค์Œ ๋ช…๋ น์–ด๋กœ ๋‹ค์šด๋ฐ›์€ MicroPython ํŒŒ์ผ์„ NodeMCU ์— ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

    • python -m esptool --port /dev/cu.SLAB_USBtoUART --baud 230400 write_flash -fm dio 0 esp8266-20171101-v1.9.3.bin
    • ์ž์ฃผ ๊ธฐ๋กํ•œ๋‹ค๋ฉด --baud 230400 ์„ --baud 460800 ํ˜น์€ --baud 921600 ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด ๋” ๋นจ๋ฆฌ ๊ธฐ๋ก์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์—๋Ÿฌ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜น์‹œ ์—ฐ๊ฒฐ์ด ๋ถˆ์•ˆ์ •ํ•œ ์ƒํ™ฉ์ด๋ฉด --baud 115200 ์œผ๋กœ ์‹œ๋ฆฌ์–ผ ์†๋„๋ฅผ ๋” ๋‚ฎ์ถœ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

    write_flash.png

  3. NodeMCU ์— ์‹œ๋ฆฌ์–ผ ์ฝ˜์†”๋กœ ์ ‘์†ํ•ด ๋ณธ ํ›„ Enter ํ‚ค๋ฅผ ๋ˆŒ๋Ÿฌ >>> ํ”„๋กฌํ”„ํŠธ๊ฐ€ ํ‘œ์‹œ๋˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋ณด๋“œ์˜ RST ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ๋ถ€ํŒ… ํ™”๋ฉด์„ ํ™•์ธํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

    1. Windows ์—์„œ๋Š” putty ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ ‘์†ํ•˜๋Š” ๊ฒƒ์ด ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

      1. ๋‹ค์Œ ๋งํฌ์—์„œ putty ๋ฅผ ๋‹ค์šด๋ฐ›์•„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

      2. putty ๋ฅผ ์‹คํ–‰ ํ›„ Connection type ์€ Serial ์„ ์„ ํƒํ•˜๊ณ  Serial line ์—๋Š” ์žฅ์น˜ ์ด๋ฆ„์„, Speed ์—๋Š” 115200 ์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

        putty_config.png

      3. Category ์˜ ConnectionSerial ํƒญ์—์„œ Flow control ์„ None ์œผ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

        putty_serial.png

      4. Open ์„ ๋ˆŒ๋Ÿฌ ์ฝ˜์†”์„ ์—ฝ๋‹ˆ๋‹ค.

        putty_nodemcu.png

    2. ๋งฅ OS X, Linux ๋Š” ๋‹ค์Œ screen ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

      • screen /dev/tty.SLAB_USBtoUART 115200
      • screen ์ด ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋ฉด, sudo yum install screen ํ˜น์€ sudo apt install screen ๋“ฑ์œผ๋กœ ์„ค์น˜ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
      • screen ์„ ์ข…๋ฃŒํ•˜๋ ค๋ฉด CTRL-A, K ํ‚ค๋ฅผ ์ฐจ๋ก€๋กœ ์ž…๋ ฅ ํ›„, Really kill this window [y/n] ๋ผ๊ณ  ๋ฌผ์–ด๋ณผ ๋•Œ y ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
      • ๋งฅ OS X ๋Š” screen ์ž‘๋™ ์ค‘ RST ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ํ™”๋ฉด์€ ํ‘œ์‹œ๋˜์ง€๋งŒ ํ‚ค ์ž…๋ ฅ์ด ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ๋Š” screen ์„ ์ข…๋ฃŒํ•˜๊ณ  ๋‹ค์‹œ ์‹คํ–‰ํ•˜๋ฉด ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.
      • screen ์ด ๋™์ž‘ํ•˜๋Š” ๋„์ค‘ USB ์ผ€์ด๋ธ”์„ ๋ถ„๋ฆฌํ•˜๋ฉด screen ์ด ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ๋งฅ OS X ์˜ ํ„ฐ๋ฏธ๋„์€ ์ด๋Ÿฐ ๊ฒฝ์šฐ ํ‚ค ์ž…๋ ฅ์ด ์ œ๋Œ€๋กœ ํ‘œ์‹œ๋˜์ง€ ์•Š์œผ๋‹ˆ, ํ„ฐ๋ฏธ๋„์„ ๋‹ซ๊ณ  ๋‹ค์‹œ ์—ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
        boot_mac.png

ํ† ๋ก  ์ฐธ๊ฐ€

์ด๋ฉ”์ผ์€ ๊ณต๊ฐœ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•„์ˆ˜ ์ž…๋ ฅ์ฐฝ์€ * ๋กœ ํ‘œ์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.