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

wifi-esp32-basic

ESP32 Introduction
ESP32 Module의 이해와 개발 환경


  • 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로는 LUA Interpreter를 사용하는 Tool(ESPlore IDE 등)과
      • Python에 기반한 MicroPython Interpreter를 사용하는 Tool(Thonny MicroPython IDE, uPyCraft 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 포트에 개발 보드를 연결 한다.
  • Firmware flashing tool
    • Arduino IDE는 기존의 firmware(NodeMCU firmware 또는 AT command firmware)를 완전히 삭제하고 Arduino 실행 File을 Upload 하기 때문에 별도의 Firmware flashing tool이 필요하지 않다.

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

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

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

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

          위에서 <flash-mode>는 ESP32 Flash 용량이 4 MByte 이상인 경우는 dio, 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를 준비 한다.
        • ESP32 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는 ESP32 Flash 용량이 4 MByte 이상인 경우는 dio, 512 kByte modules인 경우는 qio를 선택 하고,
          • Erase flash에서 "no"(firmware 설치 전에 Flash memory를 지우지 않기)와 "yes, wipes all data"(전부 지우기) 중 하나를 선택 한 다음
          • "Flash NodeMCU" 버튼을 클릭하면 firmware 설치가 시작 된다.

    이 페이지에서는 ESP32을 이용한 장치 개발에 사용하는 프로그램 언어 중 "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에 ESP32 Board 설치하기
      • Arduino IDE에서 파일 -> 환경설정을 클릭하면 환경설정 창이 열린다.
      • 환경설정 창의 "추가적인 보드 매니저 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를 함께 입력한다.

      • 툴 -> 보드: "보오드 이름" -> 보드 메니저... 를 클릭하면 "보드 메니저 창"이 열린다.
      • "보드 메니저 창"을 Scroll down하여 "ESP32 by Espressif Systems"를 선택하고 "설치" 버튼을 누르면 설치가 진행 된다.
      • 툴 -> 보드: "보오드 이름" -> NodeMCU-32S 를 선택(본인이 사용하는 보드에 따라 다른 이름을 선택한다. 예: DOIT ESP32 DEVKIT V1 등 ) 한다.
      • Arduino IDE를 종료 하고 다시 시작하고 툴 -> 보드 메뉴를 선택하면 보드 이름이 "NodeMCU-32S"로 설정된 것을 확인 할 수 있다.
    • Arduino IDE를 이용하여 LED Blinking 프로그램 작성 하기
      • Arduino IDE에서 아래와 같은 Arduino Sketch를 작성 한다.
      • 
          // Nodemcu ESP-32S 개발보드는 GPIO2에 LED가 연결되어 있기 때문에
          // 별도의 부가 회로 없이 LED 실험을 할 수 있다.
          int pin = 2;
          void setup() {
          // initialize GPIO 2 as an output
          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
          }
            

    • ESP32에 Code Uploading 하기
      • Nodemcu ESP-32S 개발보드에 USB 케이블을 연결한다.
      • 툴 -> 보드: "보오드 이름" 에서 보드가 바르게 선택(보드: NodeMCU-32S)되었는지 확인 한다.
      • 툴 -> 포트: 에서 COM Port(제어판에서 NodeMCU-32S에 연결된 Port 번호를 확인 한다. Port 설명: Silicon Labs CP210x USB to UART Bridge)를 선택 한다.
      • Upload 버튼을 누른다.
      • Arduino IDE 아래 메세지 창에 컴파일 진행과 Upload 진행 사항이 표시되고 정상으로 Upload 되면 "업로드 종료" 메세지가 표시 되고, 프로그램이 실행되어 Nodemcu ESP-32S 개발보드의 LED가 2초 간격으로 점멸 한다..

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

    • firmware 설치하기
    • 위에 있는 "Firmware flashing tool -> NodeMCU 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 프로그램 언어를 사용 할 수 있는 IDE 이다.

      • ESPlore 설치하기
        • ESPlorer Download
          • "https://ESP32.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" 버튼을 클릭 한다.
          • ESP32보드의 USB 포트 옆에 있는 리셋버튼을 누르면 메세지 창(Output window)에 메세지가 출력되고, "init.lua" 프로그램이 실행(init.lua" 프로그램이 없는 경우에는 "lua: cannot open init.lua" 메세지가 출력 됨) 된다.
        • ESP32 프로그래밍 하기 예
          • NodeMCU ESP32가 탑재된 장치가 부팅이 되면 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" 버튼을 이용하여 ESP32의 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" 버튼에 녹색 표시등이 켜있는 상태(Turn on)에서 RST 버튼을 누른다. 보통 "RTS" 버튼 표시등이 Turn off된 상태에서 RST 버튼을 누르면 표시등이 Turn on 되고 한번더 누르면 Reset 이 실행된다.
          • "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/esp32/에서 Download 한다.

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

        esptool.py --chip esp32 --port COM6 --baud 115200 write_flash -z 0x1000 <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를 사용한 프로그램 개발(MicroPython 사용) 예
    • uPyCraft IDE(uPyCraft.exe)를 실행한다.

      uPyCraft IDE를 실행한 예

      • 다음과 같은 프로그램을 오쪽 창(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 간격으로 점멸 한다.

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