이 블로그는 Web 환경을 이용한 원격 제어 기술에 필요한 지식을 공유 하기 위한 블로그 입니다.
실제 개발과 프로그램 예를 위하여 WiFi Module과 Raspberry Pi, Raspberry Pi Pico, ATmega128 보드, Arduino Mega 보드(ATmega2560)를 사용 합니다.

wifi-esp8266-32-basic

WiFi
ESP8266/32 Module의 이해와 개발 환경


  • ESP8266 개요
    • ESP8266 은?
      • ESP8266는 Espressif에서 만든 SoC(System on a Chip) 이다.
      • ESP8266(ESP8266EX) SoC는 Tensilica L106 32-bit RISC processor와 WiFi Transceiver로 구성되어 있고,
      • ESP8266는 32-bit MCU 기반 SoC 이기 때문에 일반 Microcontroller와 같이 Arduino IDE 등을 사용하여 프로그램 할 수 있고,
      • WiFi Transceiver를 포함하고 있기 때문에 WiFi Network에 연결하여 무선으로 Internet, Web server, Smartphone 등의 연결 가능하다.
    • 자주 사용하는 ESP8266 모듈
      •    ESP-01 ESP8266 모듈

           ESP-12E ESP8266 모듈

           Node MCU Lua WiFi ESP8266

        ESP8266 모듈(ESP-01, ESP-12E)은 ESP8266EX SoC를 사용한다. ESP8266 모듈은 ESP8266EX 칩에 외부 Crystal(ESP8266EX에서 사용하는 Clock를 발생 시키는데 필요), WiFI 안테나, SPI Flash Memory 기타 소자(R,L,C 등)를 하나의 모듈로 집적하여 제작한다.

      • ESP8266EX SoC(System on chip)
        • ESP8266EX Block Diagram

        • ESP8266EX Specifications
          • Processor : Tensilica L106 32-bit processor
          • External crystal: 24 MHz to 52 MHz
          • Processor speed : 80-160MHz
          • RAM : 32K(Instruction) + 80K(User-data RAM)
          • Flash size: up to 16 MB
          • Peripheral Interface: UART/SDIO/SPI/I2C/I2S/IR Remote Control, GPIO/ADC/PWM/LED Light & Button
          • 802.11 support : b/g/n
          • Wi-Fi 2.4 GHz, support WPA/WPA2
          • Wi-Fi Mode: Station/SoftAP/SoftAP+Station
          • Security: WPA/WPA2
          • Encryption: WEP/TKIP/AES
          • GPIOs : 17 (multiplexed with other functions)
          • ADC(Analog to Digital) : 10-bit ADC
          • Operating Voltage: 2.5 V ~ 3.6 V
          • Current consumption : 10uA – 170mA, Average value: 80 mA
        • ESP8266EX 응용 분야
          • Home appliances
          • Home automation
          • Smart plugs and lights
          • Industrial wireless control
          • IP cameras
          • Wearable electronics
          • Wi-Fi location-aware devices
          • Security ID tags
          • Wi-Fi position system beacons
          • 참고자료: ESP8266EX Datasheet:"esp8266ex_datasheet_en.pdf"

      • ESP-01 ESP8266 시리얼 와이파이 모듈
      • ESP8266EX 칩에 Crystal, WiFI 안테나, SPI Flash Memory 기타 소자(R,L,C 전원회로 등)를 하나의 모듈로 집적하여 제작하였기 때문에 최소한의 외부(인터페이스) 회로만 사용하여, WiFI 네트워크 환경을 이용한 각종 장치(IoT)의 제작에 이용할 수 있다.

        ESP-01은 간단한 장치의 제어만을 목적으로 회부 입출력 핀을 최소화(4개) 하였기 때문에 외부 입출력 단자를 사용하는 ESP8266EX 칩의 기능은 상당히 제한된다. 그러나 입출력 핀을 사용하지 않는 기능(WiFi 등)은 제한 없이 사용할 수 있다.

        • Chip: ESP8266EX
        • Crystal: 26MHz
        • Flash size: 4MB
        • GPIO : GPIO0, GPIO2, GPIO1(TxD), GPIO3(RxD)
        • UART : TxD(GPIO1), RxD(GPIO3),
        • 주: TxD, RxD 핀은 GPIO(GPIO1,GPIO3) Pin으로 사용 할 수 있다.

          참고자료: ESP-01 Datasheet:"esp01.pdf"

      • ESP-12E ESP8266 시리얼 와이파이 모듈
        • ESP-12E는 22개의 핀을 갖기 때문에 아래와 같이 ESP8266EX 칩의 기능을 대부분 사용할 수 있다.

        • Chip: ESP8266EX
        • Crystal: 40MHz
        • Flash size: 4MB
        • Interfaces : HSPI(Hardware SPI), PWM, IR Remote Control, ADC, I2C, UART, I2S(Transmission of audio data)
        • GPIO : Up to 13
        • 주: 다른 기능으로 가용하는 GPIO 핀은 GPIO로 사용 할 수 없다.

          참고자료: ESP-12E Datasheet:"ESP12E Datasheet.pdf"

      • Node MCU Lua WiFi ESP8266 개발보드
        • Node MCU Lua WiFi ESP8266 개발보드는 ESP-12E를 기반으로 개발 보드로 사용하기 위하여 필요한 기능(USB-to-UART, Rset Button, Flash Button, LED Indicator)을 포함하고 있기 때문에 별도의 부가회로 없이 기본적인 개발 보드의 기능을 실행할 수 있다.

        • Module: ESP-12E, ESP-12의 모든 기능을 사용할 수 있다.
        • Flash size: 4MB
        • Interfaces : HSPI(Hardware SPI), PWM, IR Remote Control, ADC, I2C, UART, I2S(Transmission of audio data)
        • GPIO : Up to 13
        • USB-to-UART : CP2102 USB-to-UART Bridge Controller
        • Switches : Rset Button, Flash Button
        • LED Indicator : Power LED, D2 Pin LED
        • Voltage regulator : 5V - 3.3V
        • External Power Supply Pin: 5V
    • ESP8266 프로그래밍 Tool
      • ESP8266는 32-bit MCU를 기반으로 하기 때문에 여러가지 개발 환경을 이용할 수 있지만,
      • MCU 개발 Tool로 사용하기 쉽고 다양한 Library와 예제 프로그램을 쉽게 구할 수 있는 Arduino IDE Tool 과,
      • Python에 기반한 MicroPython Interpreter를 사용하는 Tool(ESPlore IDE, Thonny MicroPython IDE, uPyCraft IDE 등),
      • 기타 개발 Tool로 LUA Interpreter를 사용하는 Tool(ESPlore IDE 등)을 사용 할 수 있다.
      • 주: 프로그래밍을 위한 설정과 예는 별도로 각 개발 Tool 설명을 참고 바람.


  • ESP8266 모듈 사용을 위한 준비
    • ESP8266 모듈
      • ESP-xx 모듈: ESP-1 부터 ESP-12E 까지 다양한 모듈이 있다. 모두 ESP8266 기반이기 때문에 속도, 메모리 용량, 필요한 연결 핀에 따라 적당한 모듈을 선택하여 사용한다. ESP-xx에는 USB-UART 변환회로가 없기 때문에 직접 컴퓨터와 UART 통신을 할 수 없다. 필요한 경우 USB-UART 변환 모듈 등을 사용하여야 한다.
        • ESP-01 모듈은 DIP(Dual in-line package) 8핀이기 때문에 만능기판에 사용하기 용이하다. 그러나 Dual 핀이기 때문에 브레이드보드(Breadboard)에는 그대로 사용(변환기판을 사용하여야 함))할 수 없다.
        • ESP-12E 모듈은 SMD(Surface Mount Device) 22핀 이기 때문에 만능기판 이나 Breadboard에 사용할 수 없다. 별도로 PCB를 설계하거나 변환기판을 사용하여야 한다.
        • USB-to-Serial 모듈: ESP-xx 모듈을 사용하는 경우 USB-to-Serial 모듈을 사용하여 Computer와 ESP8266 모듈 사이의 Serial 통신을 가능하게 하고, 전원(5V)을 공급한다.
        • 주의: USB로 부터 공급되는 전압은 5V 이고 ESP8266 모듈은 3.3V 전원을 사용하기 때문에 Voltage regulator를 사용하여야 한다.

      • NodeMCU ESP8266 개발보드: ESP-12E 모듈을 기반으로 만든 개발 보드로 USB-UART 변환 칩과 5V를 3.3V로 변환하는 전원회로, Reset 스위치 등을 포함하고 있기 때문에 USB 연결만으로 사용할 수 있다.
      • 개발 Tool: 컴퓨터(PC)에 개발 Tool(Arduino IDE, ESPlore IDE, uPyCraft IDE 등)를 설치하여야 한다. 자세한 설명은 개발 Tool 사용 설명을 참고 바람.
      • WiFi Network: WiFi 통신을 사용하는 실험을 위하여 무선 공유기 등이 필요할 수 있다.
    • NodeMCU ESP8266 개발보드 사용을 위한 준비
      • ESP-12E 모듈을 기반으로 만든 개발 보드로 USB-UART 변환 칩과 5V를 3.3V로 변환하는 전원회로, Reset 스위치 등을 포함하고 있기 때문에 USB 연결만으로 사용할 수 있다.
      • PC에 USB-serial 변환 모듈 드라이버 설치하기
        • NodeMCU ESP8266 개발보드의 버전에 따라 다른 USB-to-Serial 변환 칩을 사용할 수 있기 때문에 버전을 확인하고 적당한 드라이버를 설치하여야 한다.

        • NodeMCU v2를 사용하는 경우: NodeMCU v2 CP2102 칩을 사용하기 때문에 CP2102 드라이버를 설치 하여야 한다.
        • CP2102 드라이버: "CP2102 드라이버 다운로드하기"

        • NodeMCU v3를 사용하는 경우: NodeMCU v3 CH340 칩을 사용하기 때문에 CH340 칩을 위한 드라이버를 설치 하여야 한다.
        • CH340 드라이버: "CH340 드라이버 다운로드하기"

        • PC의 USB 포트 사이의 연결을 위한 Micro USB 케이블(Micro Type B)이 필요하다.
    • ESP-01 모듈 사용을 위한 준비
      • ESP-01를 장치 제어에 사용하는 경우 NodeMCU 개발 보드를 이용하여 프로그램을 개발 할 수 있지만 개발한 프로그램을 ESP-01에 다운로드 할 수 없기 때문에 아두이노 보드를 사용(아두이노를 USB - UART 변환 모듈과 같이 사용)하거나, 아래와 같이 ESP-01 개발 보드를 제작하여 사용할 수 있다.

      • ESP-01 개발 보드 회로와 제작 예
          • ESP-01를 위한 프로그램 개발과 개발한 프로그램을 ESP-01에 Upload 하는 기능을 위하여는 ESP-01 Module과 PC와 직렬통신을 위한 USB - Serial 변환 모듈, ESP-01 Module에 필요한 전원 회로(USB 소켓으로 부터 공급되는 전압 5V를 3.3V로 변환하는 회로), Reset 신호와 Flash 제어를 위한 신호를 발생 시키기 위한 회로 등을 포함하여야 한다.

          • USB-UART0: 프로그램 개발시 개발 Tool(Arduino IDE)과 통신에 사용한다. ESP-01을 장치제어에 사용하는 경우 TxD0(GPIO1)과 RxD0(GPIO3)는 장치 제어에 이용 할 수 있다. 경우에 따라 TxD0(GPIO1)를 Logger(ESP-01 Module의 동작 상태를 PC로 전송하는데 사용)로 사용할 수 있다.
          • USB-UART1: USB-UART0를 장치 제어에 사용하는 경우 USB-UART1의 TxD1(GPIO2)을 Logger로 사용 할 수 있다.
          • USB-UART1의 TxD1(GPIO2)을 Logger로 사용하지 않는 경우 GPIO2를 장치제어(Switch 로 선택, 윗 회로에서는 LED 제어에 사용)에 사용 할 수 있다. Logger 가 필요 없는 경우 이 모듈은 생략하여도 된다.
          • ESP-01는 소켓을 사용하여 장치 제작시 개발 보드에서 프로그램을 Upload 한 다음 분리하여 장치 제작에 사용한다.
          • 제작된 개발 보드는 ESP-01에 Firmware를 업그레이드 하는 경우에도 사용할 수 있다.

  • ESP32 개요
    • ESP32 chip 은?
      • ESP32는 Espressif에서 만든 SoC(System on a Chip) 이다.
      • ESP32-D0WD-V3 은 Xtensa® single-/dual-core 32-bit LX6 microprocessor를 사용 한다.
      • ESP32는 32-bit MCU 기반 SoC 이기 때문에 일반 Microcontroller와 같이 Arduino IDE 등을 사용하여 프로그램 할 수 있고,
      • WiFi, bluetooth가 built-in 되어 있기 때문에 WiFi Network에 연결하여 무선으로 장치를 제어하는(IoT) 장치의 개발에 적합하다.
    • ESP32 SoC 칩과 이 칩을 사용한 모듈과 개발보드
      • ESP32 SoC 칩과 이 칩을 사용한 모듈과 개발보드 예
      •    ESP32-D0WD-V3 칩

           ESP32-WROOM 모듈

           NodeMCU-32S ESP32 개발보드

          ESP32-WROOM-32E Module은 ESP32-D0WD-V3 Chip를 사용한다. ESP32-WROOM-32E Module 모듈은 ESP32-D0WD-V3 칩에 외부 Crystal(Clock를 발생 시키는데 필요), WiFI 안테나, SPI Flash Memory 기타 소자(R,L,C 등)를 하나의 모듈로 집적하여 제작한다. NodeMCU-32S 개발보드는 ESP32-WROOM-32E Module를 기반으로 개발 보드로 사용하기 위하여 필요한 기능(USB-to-UART, Rset Button, Flash Button, LED Indicator)을 포함하고 있다.

      • ESP32-D0WD-V3 Chip
        • ESP32-D0WD-V3 Block Diagram

        • ESP32-D0WD-V3 Specifications
          • Processor: Xtensa® single-/dual-core 32-bit LX6 microprocessor(s)
          • External crystal: 2 MHz ~ 60 MHz crystal oscillator (40 MHz only for Wi-Fi/BT functionality)
          • ROM: 448 KB ROM
          • RAM: 520 KB SRAM
          • QSPI(Quad SPI) supports multiple flash/SRAM chips
          • Peripheral Interface: SD card, UART, SPI, SDIO, I2C, LED, PWM, Motor PWM, I2S, IR, pulse counter, GPIO, capacitive touch sensor, ADC, DAC
          • 802.11 support: b/g/n
          • Wi-Fi: 802.11b/g/n
          • QSPI supports multiple flash/SRAM chips
          • Security: Secure boot, Flash encryption, 1024-bit OTP, up to 768-bit for customers, Cryptographic hardware acceleration
          • GPIOs : 34 × programmable GPIOs
          • Operating Voltage: 2.3 V ~ 3.6 V
        • ESP32-D0WD-V3 응용 분야
          • Generic Low-power IoT Sensor Hub, Generic Low-power IoT Data Loggers
          • Cameras for Video Streaming, Over-the-top (OTT) Devices
          • Speech Recognition, Image Recognition
          • Mesh Network, Home Automation, Smart Building
          • Industrial Automation, Smart Agriculture,
          • Audio Applications, Health Care Applications
          • Wi-Fi-enabled Toys, Wearable Electronics,
          • Retail & Catering Applications
          • 참고자료: ESP32 datasheet:"ESP32_datasheet_en.pdf"

      • ESP32-WROOM-32E Module
        • ESP32-D0WD-V3 Chip 칩에 Crystal, WiFI 안테나, SPI Flash Memory 기타 소자(R,L,C 전원회로 등)를 하나의 모듈로 집적하여 제작하였기 때문에 최소한의 외부(인터페이스) 회로만 사용하여, WiFI 네트워크 환경을 이용한 각종 장치(IoT)의 제작에 이용할 수 있다.

          I/O 핀을 사용하지 않는 ESP32-D0WD-V3 Chip의 기능은 모두 사용할 수 있다. 또한 ESP32-WROOM-32E Module은 38개의 핀을 갖기 때문에 아래와 같이 ESP32-D0WD-V3 Chip의 기능은 대부분 사용할 수 있다.

        • Chip: ESP32-D0WD-V3
        • Crystal: 40MHz
        • Flash size: 4MB
        • Wi-Fi: 802.11b/g/n
        • Bluetooth: Bluetooth V4.2 BR/EDR and Bluetooth LE specification
        • Interfaces: SD card, UART, SPI, SDIO, I2C, LED, PWM, Motor PWM, I2S, IR, pulse counter, GPIO, capacitive touch sensor, ADC, DAC
        • GPIO : 32개
        • Supply voltage: 3.0 ~ 3.6 V
        • Antenna: PCB는 antenna
        • 주의: USB로 부터 공급되는 전압은 5V 이고 ESP32 모듈은 3.3V 전원을 사용하기 때문에 Voltage regulator를 사용하여야 한다.

          참고자료: ESP32-WROOM-32E Module:"esp32-wroom-32e_esp32-wroom-32ue_datasheet_en.pdf"

      • NodeMCU-32S Lua WiFi - ESP32 개발보드
        • NodeMCU-32S 개발보드는 ESP32-WROOM-32E Module를 기반으로 개발 보드로 사용하기 위하여 필요한 기능(USB-to-UART, Rset Button, Flash Button, LED Indicator)을 포함하고 있기 때문에 별도의 부가회로 없이 기본적인 개발 보드의 기능을 실행할 수 있다.

        • Module: ESP32-WROOM-32E Module
        • Crystal: 40MHz
        • Flash size: 4MB
        • Wi-Fi: 802.11b/g/n
        • Bluetooth: Bluetooth V4.2 BR/EDR and Bluetooth LE specification
        • Interfaces: SD card, UART, SPI, SDIO, I2C, LED, PWM, Motor PWM, I2S, IR, pulse counter, GPIO, capacitive touch sensor, ADC, DAC
        • GPIO : 32개
        • Switches : Rset Button, Flash Button
        • LED Indicator : Power LED, D2 Pin LED
        • Voltage regulator : 5V - 3.3V
        • External Power Supply Pin: 5V
        • 참고: NodeMCU-32S 개발보드는 5V - 3V 변환 Regulator를 내장하고 있기 때문에 컴퓨터 USB 케이블을 직접 연결할 수 있다.

          참고자료: NodeMCU-32S 개발보드 :"nodemcu-32s_product_specification.pdf"

      • ESP32 DevKit v1 - ESP32 개발보드
        • ESP32 DevKit v1 - ESP32 개발보드도 ESP32-WROOM-32E Module를 기반으로 하기 때문에 기능은 NodeMCU-32S 개발보드와 동일하다. 다만 36핀을 사용하기 때문에 GND 단자가 1개(NodeMCU-32S 개발보드는 3개)이다.


    • ESP32 프로그래밍 Tool
      • ESP32는 32-bit MCU를 기반으로 하기 때문에 여러가지 개발 환경을 이용할 수 있지만,
      • MCU 개발 Tool로 사용하기 쉽고 다양한 Library와 예제 프로그램을 쉽게 구할 수 있는 Arduino IDE Tool 과,
      • Python에 기반한 MicroPython Interpreter를 사용하는 Tool(ESPlore IDE, Thonny MicroPython IDE, uPyCraft IDE 등),
      • 기타 개발 Tool로 LUA Interpreter를 사용하는 Tool(ESPlore IDE 등)을 사용 할 수 있다.
    • ESP32 개발보드
      • 대표적인 개발보드는 ESP32 DEVKIT DOIT board와 Nodemcu ESP-32S Development Board 이다. 두 개발보드는 모두 ESP WROOM 32 Module을 사용하기 때문에 기능은 동일하고 개발보드의 Pin 수만 다르다. Nodemcu ESP-32S Development Board에는 외부 장치와 연결이 편리 하도록 GND Pin이 두개 더 있다. 이 웹 페이지에서는 Nodemcu ESP-32S Development Board를 사용한다.

      • Nodemcu ESP-32S Development Board Pin
      • ESP32 DEVKIT V1-DOIT Board(36 GPIOs) Pin

  • NodeMCU ESP32 사용을 위한 준비
    • PC에 USB-serial 변환 모듈 드라이버 설치하기
      • Nodemcu ESP-32S 개발보드는 CP2102 칩을 사용하기 때문에 CP2102 드라이버를 설치 하여야 한다.
      • 개발보드의 종류에 따라 USB-serial 변환 칩을 확인하여 드라이버를 설치 하여야 한다. 최신 버전의 OS에는 USB-serial 변환 칩의 드라이버가 이미 내장되어 있을 수도 있다.
    • Micro USB 케이블(Micro Type B)을 사용하여 PC의 USB 포트에 개발 보드를 연결 한다.

    ESP8266/ESP32 Software 개발 환경

      ESP8266/ESP32 Software 개발 환경은 사용하는 프로그램 언어에 따라 서로 다른 Firmware와 개발 Tool을 사용한다. 현재 사용하는 언어는 c/c++(Arduino IDE 사용), MicroPython(Thonny IDE, ESPlorer, uPyCraft IDE 등 사용), Lua(ESPlore IDE 사용), AT 명령어 등 이다. 이 페이지에서는 Arduino IDE에 기반한 C/C++, Python에 기반한 MicroPython, Lua 프로그램 개발 환경에 대하여 설명 한다.

  • Firmware flashing tool과 Firmware 설치
    • Arduino IDE는 기존의 Firmware(NodeMCU firmware 또는 AT command firmware)를 완전히 삭제하고 Arduino 실행 File을 Upload 하기 때문에 별도의 Firmware flashing이 필요하지 않다.

      한번 Arduino file을 upload 한 다음 기존의 Firmware(NodeMCU firmware 또는 AT command firmware 등)를 다시 사용 하고자 하는 경우에는 Flashing tool를 사용하여 Firmware를 다시 Flashing 하여야 한다.

    • Thonny IDE를 사용하여 Firmware 설치하기
    • Thonny IDE는 Raspberry Pi 보드와 함께 사용되는 Raspbian OS에 기본적으로 설치되는 Python 개발 Tool이기 때문에 Upgrade가 지속적으로 이루어져서 현재는 신뢰할 수 있는 Tool로 발전하였다.

      이 블로그에서는 MicroPython 언어의 개발 Tool로 Thonny IDE를 사용한다.

      참고자료: "Thonny IDE를 이용하여 Firmware 설치하기"

      참고자료: Thonny IDE를 이용하는 경우 아래 부분을 생략하고 "MicroPython의 이해와 개발 환경 - Thonny IDE"를 참고하기 바람.

      주: MicroPython 언어의 개발 Tool로 Thonny IDE를 사용하는 경우에는 이 페이지의 아래 부분을 생략하여도 된다.

    • esptool.py Flashing tool
      • Espressif ESP8266 및 ESP32 시리즈 칩의 ROM 부트 로더와 통신하기 위한 Python 기반의 오픈 소스 유틸리티이다. esptool.py은 DOS 명령 창에서 실행(Python 이 설치되어 있어야 함)하는 Flashing tool로 다양한 기능을 실행 하는 Tool 이다.

      • Python 설치하기
      • Python이 설치되어 있어야 Python 기반의 유틸리티 프로그램(esptool, ampy 등)을 사용할 수있다.

        Python이 이미 설치되어 있는 경우 "Python 설치하기"는 생략한다.

        • "https://www.python.org/"에서 Python을 다운로드하여 설치한다.
        • Python 설치 시 아래 예와 같이 "Install for all user"와 "Add Python to environment variables" Option을 선택한다.
        • Python 설치 시 Option 선택 예

      • esptool.py 설치하기
        • DOS 명령창에서 다음 명령을 실행 한다. python 과 pip이 설치 되어 있어야 함.
        • pip3 install esptool

          참고자료: "https://github.com/espressif/esptool" 페이지를 참고 바람.

      • esptool.py를 이용하여 firmware 설치하기
        • ESP8266/32에 Firmware를 설치하기 위하여는 Reset 전에 GPIO0 pin을 Low 상태로 놓아야 한다. 정상적인 Boot를 위하여는 High(or Floating 상태)로 하여야 한다. NodeMCU 개발 보드를 사용하는 경우에는 Software에서 제어 하기 때문에 GPIO0 pin 상태를 별도로 설정하지 않는다.
        • 아래 명령은 DOS Command 창에서 ESP8266/32 File system(ESP8266/32 모듈이 COM6에 연결된 경우)을 모두(Remove all) 삭제하는 명령 예 이다.
        • esptool.py --port COM6 erase_flash

          주: 진행 상태 창에 Serial port 연결 메세지가 출력된 다음 잠시(1초 정도) GPIO0 pin을 Low 상태(개발 보드에 있는 BOOT SW를 잠시 누름)로 하여야 한다.

        • Firmware binary file download 하기: 아래 Website에서 firmware binary file를 준비 한다.
        • DOS Command 창에서 아래 명령으로 Firmware를 설치 한다.
        • ESP8266에 MicroPython firmware 설치 하기
          • esptool.py --port <serial-port> --baud 115200 write_flash --flash_size=detect -fm <flash-mode> 0x00000 <nodemcu-firmware>.bin

            위에서 <serial-port>는 이 예에서는 COM6(Baudrate: 115200) 가 된다. -fm <flash-mode>는 NodeMCU board(FlashROM 구조가 다름)인 경우에 사용한다. Flash 가 4 MByte 이상인 modules인 경우(ESP8266 ESP-12 등)에는 dio, 512 kByte modules(ESP8266 ESP-01/07 등)인 경우 qio 이다.

            Flash 메모리를 모두 지우고 다시 firmware를 설치하는 명령 예

            esptool.py --port COM6 erase_flash

            esptool.py --port COM6 --baud 115200 write_flash --flash_size=detect 0 <firmware>.bin

            NodeMCU board(FlashROM 구조가 다름)인 경우에는 아래와 같이 -fm dio를 추가하여야 한다.

            esptool.py --port COM6 --baud 115200 write_flash --flash_size=detect -fm dio 0 <nodemcu-firmware>.bin

        • ESP32에 MicroPython firmware 설치 하기
          • esptool.py --chip esp32 --port <serial-port> --baud 115200 write_flash -z 0x1000 <nodemcu-firmware>.bin

            위에서 <serial-port>는 이 예에서는 COM6 가 된다.

            DOS Command 창에서 개발보드가 COM6에 연결된 경우 Flash를 지운 다음 Firmware를 설치하는 예

            esptool.py --port COM6 erase_flash

            esptool.py --chip esp32 --port COM6 --baud 115200 write_flash -z 0x1000 <nodemcu-firmware>.bin

          주: MicroPython firmware는 아래 개발 환경에서 소개하는 "uPyCraft IDE"를 사용하여 설치할 수 있다.

        • MicroPython firmware가 정상으로 설치되었는지 확인하기
          • 터미널 프로그램(예: Putty)에서 Baudrate를 115200으로 설정하고, 장치관리자에서 개발 보드의 COM 포트 번호를 확인하여 Port 번호를 입력하고 "Open" 명령을 실행한다. 개발 보드의 Reset Switch를 누르면 Boot 메세지와 prompt(>>>) 가 출력된다.
          • 터미널 프로그램 Console 창에서 아래와 같이 print 명령을 입력하면 "Hello Python" 응답이 Console 창에 출력(Python는 스크립트 언어이기 때문에 명령(프로그램)이 바로 실행 됨) 된다.
          • print("Hello Python")

        • Lua firmware 설치 하기
          • esptool.py --port <serial-port> write_flash -fm <flash-mode> 0x00000 <nodemcu-firmware>.bin

            위에서 -fm <flash-mode>는 NodeMCU board(FlashROM 구조가 다름)인 경우에 사용한다. Flash 가 4 MByte 이상인 modules인 경우(ESP8266 ESP-12 등)에는 dio, 512 kByte modules(ESP8266 ESP-01/07 등)인 경우 qio 이다.

    • GUI(Graphical User Interface) 기반의 Flashing tool(NodeMCU-PyFlasher)
      • NodeMCU-PyFlasher은 GUI 기반의 Flashing Tool(Python 이 설치되어 있어야 함)로 esptool.py에 비교하여 사용하기 쉽지만 자주사용하는 제한된 기능만 실행 하는 Tool 이다.

      • NodeMCU-PyFlasher 설치하기
      • NodeMCU-PyFlasher를 이용하여 firmware 설치하기
        • 위 esptool.py를 이용하여 firmware 설치하기의 "firmware Binary file Download 하기"와 같이 firmware Binary file를 준비 한다.
        • ESP8266 firmware flashing을 하기 위하여는 Reset 전에 GPIO0 pin을 Low 상태로 놓아야 한다. 정상적인 Boot를 위하여는 High(or Floating 상태)로 하여야 한다. NodeMCU 개발 보드를 사용하는 경우에는 Software에서 제어 하기 때문에 GPIO0 pin 상태를 별도로 설정하지 않는다.
        • NodeMCU-PyFlasher.exe를 실행하면 NodeMCU-PyFlasher 창이 열린다.
          • NodeMCU-PyFlasher 창의 "SerialPort" Box에서 Serial Port를 선택(재어판 장치관리자에서 Port 번호를 확인) 한다.
          • NodeMCU-PyFlasher 창의 "NodeMCU firmware" Box 우측의 "Browse" 버튼을 이용하여 위에서 준비한 firmware Binary file을 선택 한다.
          • Baud rate 값(이 경우는 115200을 선택)을 선택 하고,
          • Flash mode(ESP8266 ESP-12(Flash 가 4 MByte 이상인 modules)는 dio, ESP8266 ESP-01/07 (512 kByte modules)인 경우 qio)을 선택 하고,
          • Erase flash에서 "no"(firmware 설치 전에 Flash memory를 지우지 않기)와 "yes, wipes all data"(전부 지우기) 중 하나를 선택 한 다음
          • "Flash NodeMCU" 버튼을 클릭하면 firmware 설치가 시작 된다.
    • AT command firmware를 사용하는 경우: Flashing Tool(NodeMCU Flasher: ESP8266Flasher.exe)
      • ESPRESSIF flash download tool
      • 터미널 프로그램을 사용하여 Firmware 설치 상태를 확인하기
        • 터미널 프로그램을 실행하고 Reset SW를 누르면 터미널 창에 "ready" 메세지가 출력 된다.
        • 터미널 창에서 AT 를 입력한 경우 OK 메세지가 출력되면 Firmware가 정상으로 설치된 것 이다.
        • 터미널 창에서 AT 와 AT+GMR Command를 실행한 경우 예


    이 페이지에서는 ESP8266/32을 이용한 장치 개발에 사용하는 프로그램 언어 중 "Arduino IDE에 기반한 C/C++" 언어와 "Python에 기반한 MicroPython" 프로그램 언어, "NodeMCU Lua 환경에서 사용하는 Lua" 프로그램 언어를 위한 개발 Tool에 대하여 설명 한다.

  • Arduino IDE 환경을 개발 도구로 이용하기
    • Arduino IDE에서 사용하는 언어는 C/C++에 기반한 프로그래밍 언어이기 때문에 많은 사람들이 접근하기 쉬운 언어 이다. 또한 전 세계적인 Arduino Community에서 많은 기술 자료와 Softwaer 자산을 제공하기 때문에 초보자도 유용한 프로그램을 쉽게 개발 할 수 있다.

    • Arduino IDE 설치하기
      • "www.arduino.cc"에서 "arduino-버전 번호.zip"을 Download 하여 압축을 푼다.
      • 압축이 해제하면 "arduino-버전 번호" 폴더가 만들어 생성 된다.
      • "arduino-버전 번호" 폴더에서 arduino.exe File을 실행하면 Arduino IDE가 열린다.
    • Arduino IDE에 ESP8266/32 Board Manager 설치하기
      • Arduino IDE에서 파일 -> 환경설정을 클릭하면 환경설정 창이 열린다.
      • ESP8266 보드를 사용하는 경우: 환경설정 창의 "추가적인 보드 매니저 URLs" 란에 "http://arduino.esp8266.com/stable/package_esp8266com_index.json"을 입력하고 "확인" 버튼을 누른다.
      • ESP32 보드를 사용하는 경우: 환경설정 창의 "추가적인 보드 매니저 URLs" 란에 "https://dl.espressif.com/dl/package_esp32_index.json"을 입력하고 "확인" 버튼을 누른다.
      • 주: 만약 이미 ESP8266 boards URL이 입력되어 있는 경우에는 " https://dl.espressif.com/dl/package_esp32_index.json, http://arduino.esp8266.com/stable/package_esp8266com_index.json " 과 같이 콤마 로 분리하여 ESP32 boards URL를 함께 입력한다.

      • 툴 -> 보드: "보드 이름" -> 보드 메니저... 를 클릭하면 "보드 메니저 창"이 열린다.
      • ESP8266 보드를 사용하는 경우: "보드 메니저 창"을 Scroll down하여 “esp8266 by ESP8266 Community”를 선택하고 "설치" 버튼을 누르면 설치가 진행 된다.
      • ESP32 보드를 사용하는 경우: "보드 메니저 창"을 Scroll down하여 "ESP32 by Espressif Systems"를 선택하고 "설치" 버튼을 누르면 설치가 진행 된다.
      • ESP8266 Node MCU 보드를 사용하는 경우: 툴 -> 보드: "보드 이름" -> NodeMCU 1.0(ESP-12E Module) 를 선택 한다.
      • NodeMCU-32S 보드를 사용하는 경우: 툴 -> 보드: "보드 이름" -> NodeMCU-32S 를 선택 한다.
      • 주: 기타 보드를 사용하는 경우 자신이 사용하는 보오드 이름을 확인 하여 바르게 보오드 이름을 선택하여야 한다. 예: DOIT ESP32 DEVKIT V1 등

      • ESP8266 Node MCU 보드를 사용하는 경우: Arduino IDE를 종료 하고 다시 시작하고 툴 -> 보드 메뉴를 선택하면 보드 이름이 "NodeMCU 1.0(ESP-12E Module)"로 설정된 것을 확인 할 수 있다.
      • NodeMCU-32S 보드를 사용하는 경우: Arduino IDE를 종료 하고 다시 시작하고 툴 -> 보드 메뉴를 선택하면 보드 이름이 "NodeMCU-32S"로 설정된 것을 확인 할 수 있다.
    • Arduino IDE를 이용하여 LED Blinking 프로그램 작성 하기
      • Arduino IDE에서 아래와 같은 Arduino Sketch를 작성 한다.
      • 
          // NodeMCU ESP8266 개발보드에는 GPIO 2에 LED가 연결되어 있다.
          int pin = 2;
          void setup() {
          // GPIO 2를 Output pin으로 설정한다.
          pinMode(pin, OUTPUT);
          }
          // The loop function runs over and over again forever
          void loop() {
          digitalWrite(pin, HIGH); // Turn the LED on (HIGH is the voltage level)
          delay(1000); // wait for a second
          digitalWrite(pin, LOW); // Turn the LED off by making the voltage LOW
          delay(1000); // Wait for a second
          }
            

    • ESP8266/32에 Code Uploading 하기
      • ESP 개발 보드에 USB 케이블을 연결한다.
      • 툴 -> 보드: "보오드 이름" 에서 보드가 바르게 선택(보드: NodeMCU 1.0(ESP-12E Module) or NodeMCU-32S)되었는지 확인 한다.
      • 툴 -> 포트: 에서 COM Port(제어판에서 ESP 개발 보드에 연결된 Port 번호를 확인)를 선택 한다.
      • Upload 버튼을 누르면 메시지 표시 줄에 "스케치를 컴파일 중..." 메세지가 출력되고 컴파일이 진행된다.
      • 컴파일이 종료되면 메시지 표시 줄에 "업로딩..." 상태 표시가 출력되고 아래 진행 상태 창에 "Connection....." 진행 메세지가 출력된다.
      • 진행 상태 창에 "Connecting... " 메세지가 출력된 다음 약 2Sec 동안 개발보드의 GPIO0 SW(NodeMCU-32S 인 경우 BOOT SW)를 누르고 있으면(NodeMCU ESP8266 개발보드는 GPIO0를 프로그램에서 제어하기 때문에 GPIO0 SW를 누르지 않아도 됨) 개발 보드에 업로드가 시작된다.
      • 정상으로 Upload가 종료 되면 메시지 표시 줄에 "업로드 완료" 메세지가 표시 되고,
      • 프로그램이 실행되어 NodeMCU Kit의 LED가 2초 간격으로 점멸 한다.

  • MicroPython 개발 환경
    • MicroPython은 마이크로 컨트롤러에서 효율적으로 실행되도록 Python 3의 기능을 일부 제한한 간결한 프로그래밍 언어이다.

      자주 사용하지 않는 표준 라이브러리의 일부 기능을 제거하여 마이크로 컨트롤러에 최적화하였다.

      MicroPython은 인터프리터 언어이기 때문에 컴파일러 언어(c, c++ 등)에 비교하여 실행 속도는 느리지만 프로그램 수정이 간단한 장점이 있다.

      참고자료: "MicroPython documentation"

      MicroPython을 사용하기 위하여는 MicroPython firmware 가 설치되어 있어야 한다. 이 페이지 위 "ESP8266에 MicroPython firmware 설치 하기" 와 "ESP32에 MicroPython firmware 설치 하기"를 참고할 것.

      MicroPython 언어는 ampy(Adafruit MicroPython tool), Thonny IDE, ESPlore IDE, uPyCraft IDE 개발 환경에서 사용 할 수 한다.

      주: 이 페이지에서는 MicroPython 개발 환경의 개요를 전체적으로 설명하고 본인이 개발에 사용하는 Tool(Thonny IDE)에 대하여는 "MicroPython의 이해와 개발 환경 - Thonny IDE"에서 자세히 설명한다.

    • Boot Scripts File
      • MicroPython Filesystem의 Root에 개발보드의 전원이 Turn on 되거나 Reset 신호가 발생할 때 실행되는 두개의 File을 놓을 수 있다.

      • boot.py: 전원이 Turn on 되거나 Reset 신호가 발생할 때 가장 먼저 실행 된다. 보통 이용자의 첫 시작 프로그램을 main.py로 한다.
      • main.py: 만약 main.py가 존재하면 boot.py 실행이 종료되고 바로 이 File이 실행된다. 보통 이용자의 첫 시작 프로그램을 main.py로 한다.
    • ampy(Adafruit MicroPython tool)를 이용한 File 관리와 프로그램 실행
      • Windows 환경에 ampy 설치하기
        • Python 3.x 버전이 설치되어 있는 경우 도스 명령창에서 아래 명령으로 ampy를 설치한다.
        • pip3 install adafruit-ampy

        • 도스 명령창에서 아래 명령으로 ampy이 정상으로 설치되었는지 확인한다.
        • ampy --help

        • 필요한 경우 아래 명령으로 ampy를 Upgrade 할 수 있다.
        • pip3 install adafruit-ampy --upgrade

      • 자주 사용하는 명령
        • 개발보드에 파일을 Download 하기
          • 도스 명령창에서 아래 명령으로 파일(Download 하는 파일이 test.py 인 경우)을 Download 한다.
          • ampy --port /serial/port put test.py

            위에서 "/serial/port"는 개발보드의 Serial port 번호로 장치관리자 창(장치관리자 -> 포트(COM & LPT))에서 확인 할 수 있다.

          • 아래 예와 같이 개발보드의 폴더를 지정하고 파일 이름을 변경하여 Download 할 수 있다.
          • ampy --port /serial/port put test.py /foo/test_1.py

        • 개발보드로 부터 파일을 PC로 읽어 오기
          • 개발보드의 boot.py 파일을 PC로 읽어오는 예
          • ampy --port /serial/port get boot.py

          • 아래 예와 같이 개발보드의 test.py 파일을 PC 내의 폴더를 지정하고 파일 이름을 변경하여 읽어 올 수 있다.
          • ampy --port /serial/port get test.py /foo/test_1.py

        • 도스 명령창에서 아래 명령으로 디렉토리(Directories)를 만들 수 있다.
        • ampy --port /serial/port mkdir foo

        • 아래 명령으로 디렉토리(Directories) 내의 폴더와 파일을 리스트 할 수 있다.
        • ampy --port /serial/port ls

        • 아래 명령으로 파일을 삭제 할 수 있다.
        • ampy --port /serial/port rm test.py

        • 아래 명령으로 디렉토리를 삭제(foo 폴더 내의 test 디렉토리 가 삭제됨) 할 수 있다.
        • ampy --port /serial/port rmdir /foo/test

        • 아래 명령으로 디렉토리를 삭제(foo 폴더 내의 test 디렉토리 가 삭제됨) 할 수 있다.
        • ampy --port /serial/port rmdir /foo/test

        • MicroPython 프로그램(Code) 실행하기
          • Text Editor로 아래와 같은 프로그램을 작성하여 저장(파일 이름: blinking_led.py)한다.
          • 아래 스크립트는 1초 간격으로 LED가 점멸하는 스크립트 이다. NodeMCU 보드에는 GPIO2 Pin에 LED 가 연결(다른 보드는 다른 Pin을 사용할 수 있음)되어 있다.

            
            from machine import Pin
            from time import sleep_ms
            
            # NodeMCU 보드는 GPIO2를 LED Pin으로 사용한다.
            led = Pin(2, Pin.OUT)
            
            # LED를 점멸하는 무한 Loop
            while True:
              # NodeMCU ESP8266 보드는 LED Pin이 High일 때 Off 되고 Low일 때 On 됨.
              # NodeMCU ESP32 보드는 LED Pin이 High일 때 On 되고 Low일 때 Off 됨.
              # 기타 보드는 다른 GPIO Pin을 LED Pin으로 사용할 수 있으니 확인이 필요하다.
              led.value(1)   # LED(pin2)-> High. ESP8266 -> Off, ESP32 -> On
              sleep_ms(500)  # Sleep for 500 milliseconds
              led.value(0)   # LED(pin2)-> Low. ESP8266 -> On, ESP32 -> Off
              sleep_ms(500)  # Sleep for 500 milliseconds
                      
          • 도스 명령창에서 아래 명령으로 프로그램을 보드에 Download 한다.
          • ampy --port /serial/port put blinking_led.py

          • 도스 명령창에서 아래 명령으로 프로그램을 실행한다.
          • ampy --port /serial/port run blinking_led.py

          • 터미널 프로그램 창(Python Prompt(>>>) 상태)에서 아래와 같이 스크립트를 실행하여 프로그램을 실행할 수 있다.
          • 만약 실행중인 프로그램이 있으면 Reset으로 실행을 중지 시키고, 터미널 프로그램을 실행하고 다시 Reset 하여 Python Prompt(>>>) 상태가 되도록 한 다음 아래 스크립트를 실행한다.

            import blinking_led

            터미널 프로그램은 "Terminal emulator(Terminal software)" 페이지를 참고 바람.

            주의: Python 모듈(파이썬 모듈은 하나의 파일을 의미하고 모듈 이름(파일 이름에서 py 확장자 제외)은 파일 이름과 동일 함)은 짧은 소문자 이름을 사용하여야 한다. 그러나 가독성을 위하여 밑줄(Underscores)을 포함 할 수 있다. 패키지의 경우에는 밑줄를 가능한 사용하지 않는 것이 좋다.

    • Thonny MicroPython IDE
      • Thonny에는 Python 3.7이 내장되어 있기 때문에 Python 프로그램을 배우는데 도움이 되는 Tool 이다.
      • 또한 Thonny에는 ESP8266, ESP32, Raspberry Pi Pico 개발 보드를 위한 기능이 포함되어 있기 때문에 MicroPython를 이용한 장치 개발에 유용한 Tool 이다.
      • Thonny IDE는 "https://thonny.org/에서 Download 할 수 있다.
      • 주: Thonny IDE의 설치와 사용에 필요한 설명은 "MicroPython의 이해와 개발 환경 - Thonny IDE"를 참고 바람.

      • Thonny IDE를 실행한 예
    • ESPlore IDE
      • ESPlore IDE 개발 환경은 Lua 프로그램 언어와 MicroPython를 위한 개발 환경이다. 그러나 초기에는 Lua에 중점을 두고 개발되었기 때문에 MicroPython 개발 Tool로 사용하기에는 부족하였으나 최근에는 ESP8266과 ESP32를 위한 기능이 개선되었다.
      • 본인은 초기 ESPlore IDE을 MicroPython에 적합하도록 Jos Verlinde이 개선한 ESPlorer - MT Fork(ESPlorer-MT-Build)를 주로 사용하였으나 최근에는 ESPlorer - MT 가 Upgrade 가 되지 않아 최신 Java 버전을 설치하는 경우 문제가 있기 때문에 이 Blogger에서는 Thonny IDE를 주로 사용한다.

        주: 프로그램 작성과 실행은 "MicroPython의 이해와 개발 환경" 페이지의 "ESPlorer를 사용한 프로그램 개발 예"를 참고 바람.

    • uPyCraft IDE
    • "https://github.com/DFRobot/uPyCraft/에서 uPyCraft IDE를 Dolwnload 한다.

      uPyCraft IDE는 MicroPython 언어(ESP8266/ESP32 지원)를 위하여 설계되어 프로그램 편집과 관리, Firmware flash와 Upload 기능을 갖고 있다. 그러나 이용자 GUI와 기능이 부족하여 본인은 Thonny IDE와 ESPlorer IDE를 주로 사용한다.

      • uPyCraft IDE를 사용한 프로그램 개발 예
      • uPyCraft IDE(uPyCraft.exe)를 실행한다.

        uPyCraft IDE를 실행한 예

        • 다음과 같은 프로그램을 ESPlorer의 왼쪽 창(Script 편집 창)에 입력 한다.
        • 
          import time
          from machine import Pin
          
          p2 = Pin(2, Pin.OUT)    # Create output pin on GPIO0
          
          while True:
            p2.value(0)           # Set NodeMCU LED(pin2) to "on" (Low) level
            time.sleep_ms(500)    # Sleep for 500 milliseconds
            p2.value(1)           # Set NodeMCU LED(pin2) to "off" (High) level
            time.sleep_ms(500)    # Sleep for 500 milliseconds
                  
        • File name "led-flashing.py"로 저장 한다.
        • Tools -> Serial 에서 COM Port를 선택한다.
        • Tools -> DownloadAndRun을 실행하면 개발 보드의 LED가 1Sec 간격으로 점멸 한다.

  • NodeMCU Lua 환경을 이용한 개발
    • Lua 스크립트를 프로그래밍 언어로 사용하기
      • Lua 스크립트를 사용하기 위하여는 Lua 스크립트를 위한 firmware를 설치하여야 한다.

      • firmware 설치하기
      • 위에 있는 "esptool.py를 이용하여 firmware 설치하기"를 참고하여 Lua 스크립트를 사용 할 수 있는 firmware를 설치한다.

      • firmware가 정상으로 설치되었는지 확인하기
        • 터미널 프로그램에서 NodeMCU에 연결하기 전에 Baudrate를 115200으로 설정하고 장치관리자에서 NodeMCU의 COM 포트 번호를 확인 한 다음 NodeMCU를 연결 한다. firmware 가 처음 설정된 다음 Console 프로그램을 연결하면 firmware는 NodeMCU의 초기화(File system formatting 등 초기화를 실행하고 System에 관한 메세지를 출력한다.)를 실행한다. NodeMCU의 초기화 메세지를 보기 위하여는 터미널 프로그램에서 Baudrate 가 바르게 설정되어 있어야 한다.
        • Console 창에서 다음 명령을 입력하면 "Hello LUA" 응답이 Console 창에 출력(LUA는 스크립트 언어이기 때문에 명령(프로그램)이 바로 실행 됨) 된다.
        • print("Hello LUA")

          firmware를 처음 설치 다음 터미널 프로그램을 연결하고 print("Hello LUA") 프로그램을 실행한 경우 예

    • ESPlore IDE 개발 환경을 이용한 프로그램 개발
      • GUI 환경에서 Lua와 MicroPython 프로그램 언어를 사용 할 수 있는 IDE 이다. 그러나 MicroPython 개발 도구로는 부족하기 때문에 본인은 MicroPython 개발환경으로는 MicroPython에 적합하도록 개선한 ESPlorer - MT Fork(ESPlorer-MT-Build)을 사용 한다.

      • ESPlore 설치하기
        • ESPlorer Download
          • "https://esp8266.ru/esplorer"에서 최신 버전을 Download 한다.
          • ESPlorer.zip의 압축을 풀면 ESPlorer 폴더가 만들어 진다.
          • ESPlorer 폴더 내의 ESPlorer.jar의 압축을 풀면 필요한 Liblary 가 만들어 진다.
        • ESPlorer.bat을 클릭하여 프로그램을 실행(Java 가 설치되어 있어야 함) 한다.
      • ESPlore를 사용한 프로그램 개발 예
        • ESPlore 실행 하기
        • ESPlore 실행 예

          • ESPlorer.bat을 클릭하여 프로그램을 실행 한다.
          • "Settings" tab을 클릭하여 Settings 창을 열고 "Select firmware"에 NodeMCU 가 선택되어 있는지 확인한다.
          • 개발 보드가 사용하는 COM포트를 선택(Window를 사용하는 경우 장치괸리자에서 확인) 한다.
          • Baudrate를 선택(115200) 한다.
          • Serial Port "Open" 버튼을 클릭 한다.
          • ESP8266보드의 USB 포트 옆에 있는 리셋버튼을 누르면 메세지 창(Output window)에 메세지가 출력되고, "init.lua" 프로그램이 실행(init.lua" 프로그램이 없는 경우에는 "lua: cannot open init.lua" 메세지가 출력 됨) 된다.
        • ESP8266 프로그래밍 하기 예
          • NodeMCU가 탑재된 ESP8266은 장치가 부팅이 되면 init.lua라는 이름의 파일을 찾아 이 파일을 실행한다.
          • 처음 NodeMCU를 사용하는 경우에는 ESPlorer의 포맷 버튼을 눌러 모든 이용자 파일을 지우고 세로운 init.lua 프로그램을 아래와 같이 작성하여 실행 한다. init.lua File 만 지우는 경우에는 Command 창에 file.remove("init.lua") 명령을 입력하고 "Send" 버튼을 클릭 한다.
          • 다음과 같은 프로그램을 ESPlorer의 왼쪽 창(Script 편집 창)에 입력 한다.
          • 
            print("Hello")
            print("LUA")
                      
          • "Save" 버튼을 클릭하여 File name "init.lua"로 저장 한다.
          • "Save to ESP" 버튼을 이용하여 ESP8266의 Flash memory에 Upload 한다.
          • Upload 가 끝나면 init.lua파일을 자동으로 로드하여 실행하기 때문에 아래 내용이 Terminal(Console) 창에 출력된다.
          • > dofile('init.lua');

            Hello

            LUA

      • 자주 사용하는 ESPlorer와 Lua 명령
        • File system으로 부터 File 제거하기: Command 창에 file.remove("init.lua") 명령을 입력하고 "Send" 버튼을 클릭 한다.
        • NodeMCU Reset 하기: 아래 3가지 방법 중 한가지로 NodeMCU 보드를 Reset 할 수 있다.
          • 개발 Board의 "Reset" 버튼을 누르거나,
          • ESPlorer의 우측 창 상단의 "RTS" 버튼을 2번 누른다.
          • "Command" Tab을 클릭하여 Command 창을 열고 "Restart ESP" 버튼을 클릭 한다.
        • ESPlorer 좌측에 있는 버튼
          • "Save to ESP" 버튼: 현재 Opened file을 Upload 한다. 현재 Opened file을 Disk와 ESP module에 저장한 다음 실행 한다.
          • "Send to ESP" 버튼: Scripts 창에 있는 프로그램을 한 줄씩 ESP에 전송하여 실행(전송된 프로그램과 실행 결과는 터미널 창에 출력 된다) 한다.
          • "Run" 버튼: 현재 Opened file을 실행 한다.
          • "Upload" 버튼: 여러개의 File을 한번에 선택하여 Upload 한다. 여러개의 File로 구성된 큰 Project에서 유용하다.

  • ESP8266/32 Module의 이해와 개발 환경 관련 페이지 보기