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

esp8266-wifi-arduino

ESP8266 WiFi - Arduino IDE
ESP8266 Module(WiFi)을 이용한 원격 제어(Telnet 환경) - Arduino IDE


  • 개발 환경
    • 이 페이지에서는 ESP8266 NodeMCU 개발 보드와 EPS-01 모듈를 사용하고, Arduino IDE를 개발 Tool로 사용한다.

    • ESP8266 NodeMCU 개발 보드
    • ESP8266 NodeMCU 개발 보드와 Arduino IDE를 개발 Tool로 사용하는 개발 환경 구성 예

        ESP8266 NodeMCU 개발 보드는 ESP-12E Module을 기반으로 PC와 직렬통신을 위한 USB - Serial 변환 모듈, ESP-12E Module에 필요한 전원 회로(USB 소켓으로 부터 공급되는 전압 5V를 3.3V로 변환하는 회로), Reset 신호와 Flash 제어를 위한 신호를 발생 시키기 위한 회로 등을 포함하여 ESP8266 모듈을 이용한 장치 개발에 용이하게 사용할 수 있는 보드이다.

      • ESP8266 NodeMCU는 ESP-12E를 기반으로 하기 때문에 ESP-01 부터 ESP-12E(ESP-01 ... ESP-12E는 모두 ESP8266 Microchip를 기반으로 하고 메모리 크기와 GPIO 수 등만 다르다) 모듈을 사용하는 장치 개발에 사용 할 수 있다.
      • ESP8266 모듈은 WiFi와 Full TCP/IP Stack을 포함하기 때문에 용이하게 WiFi Network으로 TCP/IP(Transmission Control Protocol/Internet Protocol)를 이용하여 Internet에 연결 할 수 있게 한다.
      • ESP-xx 시리즈는 GPIO Pins과 모델에 따라 ADC(Analog to Digital) Pin를 갖고 있기 때문에 IoT(Internet of Things)를 용이하게(별도의 Microcontroller 를 사용하지 않고) 구현 할 수 있다.
      • ESP8266 모듈을 Telnet으로 제어하는 경우 단말장치(Terminal)는 컴퓨터, 핸드폰 등을 사용 할 수 있다.
    • ESP-01을 개발 보드로 사용하는 예
    • ESP-01를 장치 제어에 사용하는 경우 NodeMCU 개발 보드를 이용하여 프로그램을 개발 할 수 있지만 개발한 프로그램을 ESP-01에 Upload 할 수 없기 때문에 아래와 같이 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 한 다음 분리하여 장치 제작에 사용한다.
    • PC에서 사용하는 개발 Tool
      • Hardware 장치: USB - Serial 변환 모듈
        • Port 번호 확인: PC와 USB - Serial 변환 모듈을 연결한 다음 제어판에서 이 모듈에 활당된 COM Port 번호를 확인하여 터미널 프로그램의 포트 설정에 이용 한다.
        • USB - Serial 변환 모듈과 ESP-01 사이의 전원 연결: USB 소켓으로 부터 공급되는 전압이 5V 이기 때문에 ESP-xx 모튤(3.3V)의 전원핀에 직접 연결하지 않도록 주의(5V를 3.3V로 변환하는 Regulator를 사용하여야 한다.) 하여야 한다. ESP8266 NodeMCU 개발 보드에 5V - 3.3V Regulator가 내장되어 있다.
        • USB - Serial 변환 모듈 TxD와 ESP8266 NodeMCU 개발 보드 RxD 신호 연결: USB - Serial 변환 모듈의 TxD 신호는 0-5V 이고 ESP-xx 모튤의 RxD 입력 신호는 0-3.3V 이기 때문에 이 신호를 직접 연결하면 ESP-xx 모듈이 손상될 수 있기 때문에 신호의 전압 레벨을 조정하는 회로가 필요하다. 윗 예에서는 1K 와 2K 저항을 이용하여 USB - Serial 변환 모듈의 TxD 신호를 낮추어 ESP-01 모듈 RxD에 연결하였다. NodeMCU 개발 보드 RxD 와 ESP-01 TxD 신호는 직접 연결 하여도 된다.
      • 사용하는 Software Tool
        • Arduino IDE: 프로그램 개발에 필요한 통합 개발 환경을 제공한다.
          • Arduino IDE에 ESP8266 보드 메니저가 설치되어 있어야 한다. "Arduino IDE에 ESP8266/32 Board Manager 설치하기"를 참고바람.
          • NodeMCU 개발 보드를 사용하는 경우: 툴 -> 보드: 에서 "NodeMCU 1.0(ESP-12E Module)"를 선택 한다.
          • ESP-01 개발 보드를 사용하는 경우: 툴 -> 보드: 에서 "Generic ESP8266 Module"를 선택 한다.
        • Serial 통신(UART)을 위한 터미널 프로그램: PC와 ESP8266 NodeMCU 개발 사이의 Serial 통신(위 개발 환경 예에서 USB-UART0, USB-UART1)에 사용 한다.
        • Telnet 통신(WiFi)을 위한 터미널 프로그램: PC와 ESP8266 NodeMCU 개발 보드 사이의 Telnet 통신(TCP/IP를 사용하는 인터넷 통신)에 사용 한다.
        • Serial 통신과 Telnet 통신에 서용하는 Terminal emulator는 "Terminal emulator(Terminal software)" 페이지를 참고 바람.

  • WiFi - Telnet 환경에서 LED(GPIO2), Switch(GPIO0) 제어
    • ESP8266 모듈을 WiFi Station으로 사용하고, Telnet으로 연결(WiFI)하여 ESP8266 모듈의 GPIO를 제어하는 예 이다.

    • ESP8266 모듈의 GPIO(LED, Switch) 제어를 위한 시스텀 구성 예
      • USB-UART0: TxD0를 Logger로 사용한다.
      • LED: GPIO2를 LED 제어 Port(Output port)로 사용한다.
      • Switch: GPIO0를 Switch 입력 Port로 사용한다. 프로그램 실행 시 에는 FLSH 기능을 사용하지 않기 때문에 FLSH Switch를 Switch 입력 Port으로 사용한다.
    • GPIO 제어 프로그램 예: "WiFiTelnet-LED-SW-control.ino"
    • 실험 방법
      • Arduino IDE를 실행하고 "파일 -> 새 파일"을 클릭한다.
      • 윗 WiFiTelnet-LED-SW-control.ino 프로그램을 프로그램 편집 창에 복사한다.
      • 무선 공유기의 ssid(STASSID), password(STAPSK)를 자신의 공유기 환경에 맞게 편집한다.
      • "툴 -> 보드: "보오드 이름" 에서 보드를 선택(Generic ESP8266 Module) 한다.
      • "툴 -> 포트: "에서 COM Port(제어판에서 ESP-01에 연결된 Port 번호를 확인)를 선택 한다.
      • "스케치 -> 확인/컴파일"을 클릭하여 프로그램이 정상으로 컴파일되는지 확인한다.
      • "업 로드"를 실행 한다. 컴파일이 완료되고 Arduino IDE와 개발 보드 사이에 연결이 시작되면 FLASH Switch를 먼저 누른 상태에서 RST Switch를 클릭 한다.
      • 주: ESP8266 NodeMCU 개발보드를 사용하는 경우에는 FLASH Switch와 RST Switch를 누르지 않아도 자동으로 업 로드 된다.

      • Upload 가 완료되면 PC의 USB 포트에 USB-UART0를 연결(Baud rate: 115200)하고 터미널 프로그램을 실행하고 한다. 터미널 프로그램은 프로그램 진행 상태를 모니터하는 Logger로 만 사용된다.
      • 주: Arduino IDE에 내장된 시리얼 모니터를 사용하는 경우에는 "툴 -> 시리얼 모니터"를 실행하여 시리얼 모니터 창을 Open 한다.

      • Reset Switch(RST)를 클릭하면 프로그램이 시작되고 터미널에 실행 메세지가 출력된다.
      • 터미널에 메세지(메세지 예: Ready! Use 'telnet 192.168.0.24 23' to connect)에서 IP Address(이 예에는 192.168.0.24)와 Port 번호(이 예에서는 23번)를 확인한다.
      • putty 프로그램(또는 휴대폰)에서 위에서 확인한 IP Address와 Port 번호를 사용하여 Telnet으로 연결한다.
      • Telnet으로 연결한 터미널에서 제어 명령을 입력하면 명령에 따른 동작이 실행된다.
        • U Command: LED Turn on
        • D Command: LED Turn off
        • C Command: GPIO0(FLSH) Switch의 상태가 LED에 출력 된다.
  • WiFi Serial Bridge
    • WiFi Serial Bridge는 인터넷(WiFi - Telnet) 환경에서 Telnet 터미널을 이용하여 Microcontroller를 제어할 수 있도록 한다.

      WiFi Serial Bridge(ESP8266 모듈을 WiFi Serial Bridge로 사용)를 이용하여 인터넷 환경에서 Microcontroller를 제어하는 시스템 구성 예

    • WiFi Serial Bridge를 이용한 Microcontroller 제어 시스템
      • PC 또는 휴대폰과 같이 Telnet 터미널 프로그램을 실행 할 수 있는 장비를 사용하여 인터넷 환경에서 무선(WiFi - Telnet)으로 장치(Microcontroller를 이용)를 제어하는 예 이다.

      • ESP8266 모듈을 WiFi Serial Bridge로 사용한다.
      • Microcontroller: AVR 등 Serial Port와 I/O Port를 갖고 있는 일반적인 Microcontroller(이 예에서는 ATmega128을 사용)를 사용 할 수 있다.
      • USB - UART Converter: 프로그램 실행 과정을 모니터 하기 위하여 TxD1(EP-01)을 Logger로 사용 하였다. 개발이 완료되면 실제 장비에서는 생략 될 수 있다.
      • RST, FLSH Switch도 실제 장비에서는 생략 될 수 있다. 이 경우 전원을 On 하면 바로 Reset 상태가 되어 프로그램이 시작 된다.
      • 5V - 3.3V Regulator 도 Microcontroller의 동작 전압이 3.3V 이면 생략 할 수 있다.
      • 이 실험을 위하여는 ATmega128 보드의 PORTF에 LED Array가 연결되어 있어야 한다.
      • 참고자료: "Bit 정보를 보기 위한 8 Bits LED Bar 만들기"

    • WiFi Serial Bridge를 이용한 Microcontroller 제어 프로그램 예:
      • ATmega128에 설치되는 프로그램 예: "cho-wifi-led-basic.zip"
      • ESP8266 모듈(ESP-01 or ESP8266 NodeMCU)에 설치되는 프로그램 예: "WiFiTelnetToSerial-AVR.ino"
    • ESP8266 모듈(ESP-01 or ESP8266 NodeMCU)과 ATmega128 보오드의 신호 연결
      • ATmega128 보오드 VCC(5V) -> 5V - 3.3V 변환 -> ESP-01 모듈 Vcc
      • 주: ESP8266 NodeMCU인 경우에는 USB Port를 통하여 직접 Vcc(5V)가 연결된다.

      • ATmega128 보오드 GND -> ESP8266 모듈 GND
      • ATmega128 보오드 RxD1(PD2: J2 -> 14) <-> ESP-01 모듈 TxD(GPIO1)
      • 주: ESP8266 NodeMCU인 경우에는 TxD2(GPIO15)

      • ATmega128 보오드 TxD1(PD3: J2 -> 15) <-> ESP-01 모듈 RxD(GPIO3)
      • 주: ESP8266 NodeMCU인 경우에는 RxD2(GPIO13)

        주: ESP8266 NodeMCU 개발보드를 사용하는 경우에는 RxD0, TxD0 Pin을 RxD2, TxD2 Pin으로 Swap 하여주는 Serial.swap(); 명령이 필요하다.

      • TxD1(ESP8266 모듈)을 Logger로 사용하기 때문에 프로그램 실행 과정을 모니터 하기 위하여 ESP8266 모듈의 TxD1(GPIO2)과 USB - UART Converter(PC의 USB 포트에 연결)의 RxD Pin, ESP8266 모듈의 GND와 USB - UART Converter의 GND를 연결하여야 한다. 이 신호는 Logger로 만 사용하기 때문에 실제 장비에는 사용하지 않아도 정상 동작 한다.
    • 실험 방법
      • "cho-wifi-led-basic.zip"을 다운로드하여 ATmega128 보드에 cho-wifi-led-basic.hex 파일을 업 로드 한다.
      • Arduino IDE를 실행하고 "파일 -> 새 파일"을 클릭한다.
      • 윗 WiFiTelnetToSerial-AVR.ino 프로그램을 프로그램 편집 창에 복사한다.
      • 무선 공유기의 ssid(STASSID), password(STAPSK)를 자신의 공유기 환경에 맞게 편집한다.
      • ESP-01 모듈인 경우에는 Serial.swap(); 명령을 Comment 처리하고, ESP8266 NodeMCU인 경우에는 Serial.swap(); 명령을 실행가능하게 한다.
      • "툴 -> 보드: "보오드 이름" 에서 보드를 선택(Generic ESP8266 Module) 한다.
      • 주: ESP8266 NodeMCU인 경우에는 "NodeMCU 1.0(ESP-12E Module)"을 선택한다.

      • "툴 -> 포트: "에서 COM Port(제어판에서 ESP8266 모듈에 연결된 Port 번호를 확인)를 선택 한다.
      • "스케치 -> 확인/컴파일"을 클릭하여 프로그램이 정상으로 컴파일되는지 확인한다.
      • "업 로드"를 실행 한다. ESP-01 모듈인 경우에는 컴파일이 완료되고 Arduino IDE와 개발 보드 사이에 연결이 시작되면 FLASH Switch를 먼저 누른 상태에서 RST Switch를 클릭 한다.
      • 주: ESP8266 NodeMCU 개발보드를 사용하는 경우에는 FLASH Switch와 RST Switch를 누르지 않아도 자동으로 업 로드 된다.

      • Upload 가 완료되면 PC의 USB 포트에 USB-UART를 연결(TxD1을 Logger로 사용, Baud rate: 19200)하고 터미널 프로그램을 실행하고 한다.
      • Reset Switch(RST)를 클릭하면 프로그램이 시작되고 터미널에 실행 메세지가 PC의 터미널 프로그램 창(Logger로 사용)에 출력된다.
      • TxD1을 Logger로 사용하는 경우에는 터미널 메세지(메세지 예: Ready! Use 'telnet 192.168.0.24 23' to connect)에서 IP Address(이 예에는 192.168.0.24)와 Port 번호(이 예에서는 23번)를 확인 할 수 있다.
      • putty 프로그램(PC 또는 휴대폰)에서 위에서 확인한 IP Address와 Port 번호를 사용하여 Telnet으로 연결한다.
      • Telnet으로 연결한 터미널에서 아래 제어 명령을 입력하면 명령에 따른 동작이 실행된다.
        • S Command: LED Turn Off
        • L Command: LED Shift Left
        • R Command: LED Shift Right
        • B Command: LED Blinking
        • 주: ATmega128 보드에 cho-wifi-led-basic 프로그램이 실행되고 있어야 한다.


  • ESP8266 Module(WiFi)을 이용한 원격 제어(Telnet 환경) - 관련 페이지 보기