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

wifi-esp8266-basic

WiFi
ESP8266 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로는 LUA Interpreter를 사용하는 Tool(ESPlore IDE 등)과
      • Python에 기반한 MicroPython Interpreter를 사용하는 Tool(ESPlore IDE, Thonny MicroPython IDE, uPyCraft 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를 업그레이드 하는 경우에도 사용할 수 있다.

  • Firmware flashing tool
    • 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 하여야 한다.

    • NodeMCU firmware를 사용하는 경우: Flashing Tool(esptool.py)
      • esptool.py은 DOS 명령 창에서 실행(Python 이 설치되어 있어야 함)하는 Flashing Tool로 다양한 기능을 실행 하는 Tool 이다.

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

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

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

        • firmware Binary file Download 하기(NodeMCU Lua를 사용하는 경우): 아래 Website에서 firmware Binary file를 준비 한다.
        • "https://nodemcu-build.com/"에서 firmware을 custom build 하여 email로 받는다.

          주의: MicroPython을 이용하는 경우 다른 firmware를 사용하여야 한다. Arduino IDE 개발 환경을 사용하는 경우에는 별도로 firmware를 설치 하지 않아도 된다.

        • DOS Command 창에서 아래 명령으로 firmware를 설치 한다.
        • esptool.py --port <serial-port-of-ESP8266> write_flash -fm <flash-mode> 0x00000 <nodemcu-firmware>.bin

          위에서 <serial-port-of-ESP8266>는 이 예에서는 COM6 가 된다. <flash-mode>는 ESP8266 ESP-12(Flash 가 4 MByte 이상인 modules)인 경우에는 dio, ESP8266 ESP-01/07 (512 kByte modules)인 경우 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)
      • flash_download_tools 설치하기
      • firmware 설치하기
        • ESP8266에 firmware를 설치하기 위하여는 Reset 전에 GPIO0 pin을 Low 상태로 놓아야 한다. 정상적인 Boot를 위하여는 High(or Floating 상태)로 하여야 한다. NodeMCU 개발 보드를 사용하는 경우에는 Software에서 제어 하기 때문에 GPIO0 pin 상태를 별도로 설정하지 않는다.
        • firmware Binary file Download 하기: 아래 Website에서 firmware Binary file를 준비 한다.
        • "www.espressif.com"에서 Binary firmware(ESP8266_AT_Bin_V1.6.2)을 Download 한다. ESP8266 NonOS AT Bin V1.7은 ESP-01 모듈을 지원하지 않는다.

        • Flashing Tool(ESP8266Flasher.exe)을 실행한다.
          • Flashing Tool의 Operation 창에서 COM Port를 설정한다.
          • ESP8266Flasher 실행 화면(Config 창) 예

          • ESP-01 모듈(8Mbit(1MByte))인 경우 Config 창에서 아래와 같이 설정한다.
            • ESP8266_AT_BIN_V1.6.2/bin/boot_v1.7.bin address:0x00000
            • ESP8266_AT_BIN_V1.6.2/bin/at/512+512/user1.1024.new.2.bin address:0x01000
            • ESP8266_AT_BIN_V1.6.2/bin/esp_init_data_default_v05.bin address:0xFC000
            • ESP8266_AT_BIN_V1.6.2/bin/blank.bin address:0xFE000
          • NodeMCU(32Mbit(4MByte))인 경우 Config 창에서 아래와 같이 설정한다.
            • ESP8266_AT_BIN_V1.6.2/bin/boot_v1.7.bin address:0x00000
            • ESP8266_AT_BIN_V1.6.2/bin/at/512+512/user1.1024.new.2.bin address:0x01000
            • ESP8266_AT_BIN_V1.6.2/bin/esp_init_data_default_v05.bin address:0x3FC000
            • ESP8266_AT_BIN_V1.6.2/bin/blank.bin address:0x3FE000
          • Advanced 창에서 아래와 같이 설정한다.
            • Baudrate: 116200
            • Flash size: 1MByte(ESP-01 모듈인 경우), 4MByte(NodeMCU 모듈인 경우)
            • Flash speed: 26.7Mhz
            • SPI Mode: QIO(ESP-01 모듈인 경우), DIO(NodeMCU 모듈인 경우)
          • Operation 창에서 Flash(F)를 버튼을 클릭하고 FLASH SW(GPIO0) 버튼을 누른 상태에서, Reset SW를 클릭하면 Flashing 이 진행된다.
          • Flashing이 정상으로 완료되면 창 아래에 Ready 메세지가 출력된다.
        • 터미널 프로그램을 사용하여 Firmware 설치 상태를 확인하기
          • 터미널 프로그램을 실행하고 Reset SW를 누르면 터미널 창에 "ready" 메세지가 출력 된다.
          • 터미널 창에서 AT 를 입력한 경우 OK 메세지가 출력되면 Firmware가 정상으로 설치된 것 이다.
          • 터미널 창에서 AT 와 AT+GMR Command를 실행한 경우 예


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

  • 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 Board 설치하기
      • Arduino IDE에서 파일 -> 환경설정을 클릭하면 환경설정 창이 열린다.
      • 환경설정 창의 "추가적인 보드 매니저 URLs" 란에 "http://arduino.esp8266.com/stable/package_esp8266com_index.json"을 입력하고 "확인" 버튼을 누른다.
      • 툴 -> 보드: "보오드 이름" -> 보드 메니저... 를 클릭하면 "보드 메니저 창"이 열린다.
      • "보드 메니저 창"을 Scroll down하여 “esp8266 by ESP8266 Community”를 선택하고 "설치" 버튼을 누르면 설치가 진행 된다.
      • 툴 -> 보드: "보오드 이름" -> NodeMCU 1.0(ESP-12E Module) 를 선택 한다.
      • Arduino IDE를 종료 하고 다시 시작하고 툴 -> 보드 메뉴를 선택하면 보드 이름이 "NodeMCU 1.0(ESP-12E Module)"로 설정된 것을 확인 할 수 있다.
    • 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에 Code Uploading 하기
      • ESP-12E NodeMCU Kit에 USB 케이블을 연결한다.
      • 툴 -> 보드: "보오드 이름" 에서 보드가 바르게 선택(보드: NodeMCU 1.0(ESP-12E Module))되었는지 확인 한다.
      • 툴 -> 포트: 에서 COM Port(제어판에서 ESP-12E NodeMCU Kit에 연결된 Port 번호를 확인)를 선택 한다.
      • Upload 버튼을 누른다.
      • Arduino IDE 아래 메세지 창에 컴파일 진행과 Upload 진행 사항이 표시되고 정상으로 Upload 되면 "업로드 종료" 메세지가 표시 되고, 프로그램이 실행되어 NodeMCU Kit의 LED가 2초 간격으로 점멸 한다..

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

      • firmware 설치하기
      • 위에 있는 "esptool.py를 이용하여 firmware 설치하기"를 참고하여 스크립트를 사용 할 수 있는 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 프로그램 언어를 사용 할 수 있는 IDE 이다.

      • 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에서 유용하다.

  • MicroPython를 프로그래밍 언어로 사용하기
    • MicroPython은 Python 3 프로그램 언어(Standard library의 일부만 포함)를 사용하고 ESP micro-controller에 최적화된 프로그래밍 언어 이다.

      참고자료: "http://docs.micropython.org/

    • firmware 설치하기
      • firmware Binary file Download 하기
      • "http://micropython.org/download/esp8266/"에서 Download 한다.

      • DOS Command 창에서 아래 명령(개발보드가 COM6에 연결된 경우의 예)으로 Flash를 지운 다음 firmware를 설치 한다.
      • esptool.py --port COM6 erase_flash

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

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

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

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

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

      • ampy(Adafruit MicroPython tool)를 이용한 File 관리와 프로그램 실행
        • ampy 설치
          • PC의 명령창에서 아래 명령(Python 3.x 가 설치되어 있어야 함)을 실행한다.
          • pip3 install adafruit-ampy

          • PC의 명령창에서 아래 명령(help)을 실행하여 ampy가 정상으로 설치되었는지 확인 한다.
          • ampy --help

        • ampy를 이용한 File 관리와 프로그램 실행 예
          • File을 개발보드로 Copy 하는 명령(PC의 명령창에서 실행) 예는 아래와 같다.
          • ampy --port /serial/port put test.py

          • File을 개발보드로 부터 PC로 Copy 하는 명령(PC의 명령창에서 실행) 예는 아래와 같다.
          • ampy --port /serial/port get test.py

          • 개발보드 Root Directory 내의 File list를 출력하는 명령(PC의 명령창에서 실행) 예는 아래와 같다.
          • ampy --port /serial/port ls

          • 개발보드 내의 File를 제거하는 명령(PC의 명령창에서 실행) 예는 아래와 같다.
          • ampy --port /serial/port rm test.py

          • 개발보드 내의 Code(Script)를 실행하는 명령(PC의 명령창에서 실행) 예는 아래와 같다.
          • ampy --port /serial/port run test.py

            참고자료: "https://learn.adafruit.com

        • 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로 한다.
      • ESPlore IDE
        • 위 "ESPlore IDE 개발 환경을 이용한 프로그램 개발"을 참고하여 ESPlore IDE를 설치하고 실행 한다. "Settings" tab을 클릭하여 Settings 창을 열고 "Select firmware"에서 "MicroPython"을 선택한다.
        • "Settings" tab을 클릭하여 Settings 창을 열고 "Select firmware"에서 "MicroPython"을 선택하면 MicroPython 개발 환경으로 설정 된다.
        • 주: 프로그램 작성과 실행은 "MicroPython의 이해와 개발 환경" 페이지의 "ESPlore를 사용한 프로그램 개발 예를 참고 바람. 본인은 MicroPython 언어를 시용하는 개발 환경으로 ESPlore IDE와 ampy(Adafruit MicroPython tool)를 주로 사용함.

      • Thonny MicroPython IDE
      • "https://thonny.org/에서 Download 한다.

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

        uPyCraft IDE는 ESP8266/ESP32 지원 보드를 위하여 설계되어 Firmware flash와 Upload 기능 등 기능을 갖고 있다.

    • 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 간격으로 점멸 한다.

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