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

python-web-server

ESP8266/ESP32(Web server) - MicroPython
ESP8266/ESP32 Module(WiFi)을 이용한 원격 제어(Web server) - MicroPython


  • ESP8266/ESP32 Server 동작 모드
    • Web server 개요
      • Web server는 Web clients(예: PC나 휴대폰에서 실행되는 Web browser)로 부터 요청을 받아들이고, HTML 문서와 같은 웹 페이지 또는 데이터를 반환하는 컴퓨터 프로그램 이다.

        Web server와 Web client 사이 통신에는 HTTP(Hypertext Transfer Protocol)를 사용 한다.

        이 Protocol에서는 먼저 Web browser의 Web page가 HTTP를 사용하여 Web server에게 원하는 Web page 또는 자료를 Request 하면 Server 가 응답(Responds: 요구에 맞는 Web page 또는 데이터를 전송) 한다. 만약 Server가 응답 불가능한 Request인 경우에는 Error message(예: 404 Error)를 전송한다. Server로 부터 전송되는 Page는 대부분 HTML(HyperText Markup Language) 문서 이다.

    • Station (STA) Mode
      • ESP8266/ESP32이 제공하는 가장 큰 기능 중 하나는 기존 WiFi 네트워크에 연결하여 웹 서버로 작동 할 수 있고, 자체 네트워크를 설정하여 다른 장치가 직접 연결하여 웹 서버에 액세스 할 수 있도록하는 것이다.

        ESP8266/ESP32의 이런 기능은 ESP8266/ESP32가 스테이션(Station) 모드, 소프트 액세스 포인트(Soft Access Point) 모드 및 동시에 두 가지 모드로 작동 할 수 있기 때문에 가능하다.

      • 기존 WiFi 네트워크(Wireless router network)에 ESP8266/ESP32를 Server로 연결하는 경우 Station(STA) 이라고 한다.
      • WiFi Router에 ESP8266/ESP32 Server를 STA(Station) 모드로 시용하는 예

      • STA 모드에서 ESP8266/ESP32는 연결된 무선(WiFi) 라우터에서 IP를 부여 받는다.
      • 기존 WiFi 네트워크에 연결된 모든 장치는 이 IP를 이용하여 ESP8266 Server에 접속하고, 웹 페이지 또는 데이터를 전달 받을 수 있다.

    • AP(Soft Access Point) Mode
    • AP Mode인 경우 ESP8266/ESP32는 자신의 WiFi network를 구성하고 하나 이상의 Station을 위한 Hub(WiFI router 처럼 동작)로 동작 한다.

      ESP8266/ESP32 Server를 WiFi AP(Access Point) 모드로 시용하는 예

      • AP Mode로 동작하는 ESP8266/ESP32 Server는 WiFi router와 다르게 Wired network를 갖지 않기 때문에 Soft-AP(Soft Access Point)라고 한다.
      • 또한 최대 연결 가능한 Station 수가 5개로 제한된다.
      • AP mode로 WiFi network을 구성할 때는 SSID(Name of the network)와 IP address를 설정하여야 한다.
      • 이 IP address를 이용하여 자신의 Network에 연결된 모든 장치(Devices)에게 Web page를 전송한다.

  • ESP8266/ESP32 Web Server를 이용한 원격제어
    • ESP8266/ESP32 Web Server를 이용한 원격제어 시스템(IoT(Internet of things))의 동작 흐름
      • 웹 브라우저에 URL을 입력하고 Enter 키를 누르면 Browser가 HTTP Request(예 : GET Request)을 웹 서버로 전송한다.
      • Web Server는 이 요청을 아래와 같이 처리한다.
        • 예를 들어 Web browser에 http://192.168.1.1/ledON과 같은 URL을 입력하는 경우, Web browser는이 요청을 처리하기 위한 HTTP Request를 ESP8266/ESP32 Server로 전송한다.
        • ESP8266/ESP32 Server는 이 Request를 읽을 때 사용자가 LED를 켜고 싶어한다는 것을 알고, Request에 대응하여 LED를 켜고 LED 상태를 보여주는 Web page를 작성(Dynamic webpage)하여 Browser로 전송한다.
    • ESP8266/ESP32를 이용한 LED 제어(STA mode) 예
      • Internet 환경에서 LED를 제어하는 구성도 예

      • 시스템 구성과 설정
        • STA Mode 예이기 때문에 자신이 사용하는 WiFI Router 가 있어야 한다. WiFI Router 가 없는 경우에는 아래 AP Mode를 참고 바람.
        • 외부(WiFI Router 외부)에서 접속하고자 하는 경우에는 자신의 WiFI Router에서 포트포워드 설정(ip-TIME 과 같이 공유기를 제공하는 회사 자료에서 공유기 포트포워드 설정을 참고 바람)을 하여야 한다.
        • 자신이 사용하는 WiFI Router의 SSID(Service Set IDentifier)와 PASSWORD를 프로그램에 설정한다.
        • USB-UART0: TxD0를 Logger로 사용한다.
        • LED: NodeMCU 보드인 경우에는 GPIO2를 LED 제어 Port로 사용하고, ESP-01 모듈인 경우에는 GPIO2, GPIO3를 LED 제어 Port로 사용한다.
        • NodeMCU 보드인를 사용하고 LED Port로 GPIO2를 사용하는 경우에는 외부에서 LED를 연결(보드내에 LED가 내장되어 있음)하지 않는다.

      • LED 제어하는 프로그램 예
        • 프로그램 이해에 필요한 배경 지식
          • Python: 제어를 위한 기본 프로그래밍 언어
          • HTML(HyperText Markup Language): ESP8266/ESP32 Web Server에서 Client에 전송하는 Web page 작성에 사용한다.
          • HTML 참고자료: https://www.w3schools.com

        LED 제어를 위한 Web page 예

        LED 제어를 위한 MicroPython 프로그램 예: python_web_server_STA_led_basic.py

      • 실험을 위한 준비
        • STA Mode 예이기 때문에 자신이 사용하는 WiFi Router 가 있어야 한다.
        • 이 예에서는 실험을 쉽게하기 위하여 ESP 개발보드에 내장된 LED(GPIO2)를 이용한다.
      • 실험 방법
        • LED 제어하는 프로그램 "python_web_server_STA_led_basic.py"를 Download 하여 저장 한다.
        • Thonny IDE를 실행하고 Thonny IDE의 사용 환경(Thonny 실행에 사용할 장치와 COM Port 선택)이 바르게 되어 있는지 확인한다.
        • Thonny IDE의 Python shell 창에 prompt( >>> )가 출력되었는 확인한다.
        • Thonny IDE의 "파일 -> 열기"를 실행하여 python_wev_server_STA_led_basic.py 파일을 Open 한다.
        • Router 연결에 필요한 정보(네트워크 자격 증명: ssid, password)를 아래예를 참고하여 본인의 공유기에 맞게 편집하여 프로그램을 저장한다.
        • 네트워크 자격 증명: ssid, password 편집 예

          ssid = 'iptime-home'

          password = 'a12341234'

        • 실험
          • "실행 -> 현재 스크립트 실행"을 실행하거나 Toolbar의 "실행" Icon을 클릭하면 스크립트가 개발보드에 전송되고 프로그램이 실행된다.
          • 프로그램이 실행되면 Thonny IDE의 Python shell 창에 아래와 같이 네트워크 연결에 성공하였음을 알리는 메세지와 Network interface parameters가 출력(약간의 시간 지연이 있음)된다.
          • Connection successful

            ('192.168.0.30', '255.255.255.0', '192.168.0.1', '210.220.163.82')

          • 이 예를 참고하여 STA Mode로 설정한 ESP 모듈이 WiFI Router로 부터 자동으로 부여 받은 IP Address(이 예에서는 192.168.0.30)를 확인한다. 자신의 WiFI Router(공유기)에 관리자로 접속하여 "고급설정 -> 네트워크 관리 -> 내부 네트워크 설정"에서 사용중인 IP 주소 정보 창에서 확인 하여도 된다.
          • 웹 브라우저에서 192.168.0.30 번지에 연결하면 윗 "LED 제어를 위한 Web page 예"와 같은 LED 제어 Web Page가 출력된다.
          • 외부(WiFI Router 외부)에서 접속하고자 하는 경우에는 자신의 WiFI Router에서 포트포워드 설정(ip-TIME 과 같이 공유기를 제공하는 회사 자료에서 공유기 포트포워드 설정을 참고 바람)을 하여야 한다.
          • LED 제어 Web Page의 버튼을 클릭하여 개발보드의 LED가 제어되는 것을 확인한다.
          • 주: 여러번 반복 실험을 하는 경우(공유기와 연결이 해제되지 않은 상태에서 반복 연결) 공유기 연결에 문제가 생길 수 있다. 이 경우는 공유기의 초기화 또는 일정 시간이 지난 후 다시 시도하여야 한다.

        • google chrome의 "DNS_PROBE_FINISHED_BAD_CONFIG" Error 문제 해결하기
          • WEb server를 반복하여 실험하는 경우 "DNS_PROBE_FINISHED_BAD_CONFIG" Error가 발생하여 Server 접속에 문제가 발생할 수 있다.

          • "DNS_PROBE_FINISHED_BAD_CONFIG" Error 가 발생하면 Chrome 개발자 도구 Console 창에 아래와 같은 Error message 가 출력된다.
          • crbug/1173575, non-JS module files deprecated.

            (anonymous) @ (index):5551

          • 문제 해결하기: DOS 명령창을 열고(> Command Prompt 상태에서) 아래 명령을 순서대로 실행한다.
          • ipconfig /release

            ipconfig /flushdns

            ipconfig /renew


    • ESP8266/ESP32를 이용한 LED 제어(AP mode) 예
      • Internet 환경에서 LED를 제어하는 구성도: 위 "ESP8266/ESP32를 이용한 LED 제어(STA mode) 예"를 참고 바람.

      • 시스템 구성과 설정
        • ESP32 또는 ESP8266을 AP(Access point)로 설정하면 ESP 보드가 자체 WiFi 네트워크를 생성하여 근처에 있는 WiFi 장치(휴대폰 또는 PC)에서 연결할 수 있다.
        • 가까운 위치에 라우터가없는 경우 ESP 보드를 AP(핫스팟)로 설정하면 별도의 라우터에 연결할 필요없이 WiFi 기능이있는 모든 장치를 사용하여 연결할 수 있다. 위 "ESP8266/ESP32 Server를 WiFi AP(Access Point) 모드로 시용하는 예" 참고요
        • 이 예는 ESP32 또는 ESP8266을 AP로 설정하는 예 이다. 이렇게하면 WiFI 장치를 제어하기 위하여 별도의 라우터에 연결하지 않아도 된다.
        • LED: NodeMCU 보드인 경우에는 GPIO2를 LED 제어 Port로 사용하고, ESP-01 모듈인 경우에는 GPIO2, GPIO3를 LED 제어 Port로 사용한다.
        • NodeMCU 보드인를 사용하고 LED Port로 GPIO2를 사용하는 경우에는 외부에서 LED를 연결(보드내에 LED가 내장되어 있음)하지 않는다.

      • LED 제어하는 프로그램(AP mode) 예
      • LED 제어를 위한 Web page: 위 "ESP8266/ESP32를 이용한 LED 제어(STA mode) 예"를 참고 바람.

      • 실험을 위한 준비
        • AP Mode 예이기 때문에 별도의 WiFI Router 가 없어도 된다.
        • 아래 실험 방법의 순서에 따라 프로그램을 작성하고 실행하면 ESP 보드가 AP(핫스팟)으로 동작한다.
      • 실험 방법
        • LED 제어하는 프로그램(AP mode) "python_web_server_AP_led_basic.py"를 Download 하여 저장 한다.
        • Thonny IDE를 실행하고 Thonny IDE의 사용 환경(Thonny 실행에 사용할 장치와 COM Port 선택)이 바르게 되어 있는지 확인한다.
        • Thonny IDE의 Python shell 창에 prompt( >>> )가 출력되었는 확인한다.
        • Thonny IDE의 "파일 -> 열기"를 실행하여 python_web_server_AP_led_basic.py 파일을 Open 한다.
        • 실험
          • "실행 -> 현재 스크립트 실행"을 실행하거나 Toolbar의 "실행" Icon을 클릭하면 스크립트가 개발보드에 전송되고 프로그램이 실행된다.
          • 프로그램이 실행되면 Thonny IDE의 Python shell 창에 아래와 같이 네트워크 연결에 성공하였음을 알리는 메세지와 Network interface parameters가 출력(약간의 시간 지연이 있음)된다.
          • Connection successful

            ('192.168.4.1', '255.255.255.0', '192.168.4.1', '0.0.0.0')

          • ESP 보드를 사용한 AP(핫스팟))의 IP Address는 기본적으로 192.168.4.1로 설정되어 있다.
          • Access Point (AP)에 연결하기
          • 아래 설명은 안드로이드 휴대폰에서 AP에 연결하는 예이다. PC에 연결된 AP(공유기)를 변경하는 것은 불편하기 때문에 휴대폰에서 AP에 연결하는 것이 좋다.

            • 휴대폰 설정에서 -> 연결 -> WiFI를 선택하여 WiFi 설정 창을 Open 하면 아래와 같은 창이 열린다.
            • AP(Access Point) 연결 창 예

            • 프로그램이 정상으로 실행되고 있으면 "사용 가능한 네트워크"에 "MicoPython-AP" 가 보인다.
            • MicoPython-AP를 클릭하면 현재 네트워크로 MicoPython-AP가 센택된다.
            • 주의: MicoPython-AP가 WiFI 네트워크로 선택된 상태에서는 휴대폰에서 WiFI로 외부 인터넷에 접속을 할 수 없다.

          • 휴대폰의 웹 브라우저에서 192.168.4.1 번지에 연결하면 윗 "LED 제어를 위한 Web page 예"와 같은 LED 제어 Web Page가 출력된다.
          • LED 제어 Web Page의 버튼을 클릭하여 개발보드의 LED가 제어되는 것을 확인한다.

    • Web(AJAX 이용) 환경에서 ESP 모듈을 이용한 온도 측정(DHT11) 예
      • Web 환경에서 ESP 모듈을 이용한 온도 측정(DHT11) 구성도

      • 시스템 구성과 설정
        • Web 환경에서 ESP 모듈과 DHT11(온도센서 모듈)을 이용한 온도측정 시스템 예이다. AJAX를 이용하여 Web 페이지에서 필요한 측정 결과만 Update 한다.
        • AJAX 란?
          • Ajax(Asynchronous Javascript And Xml)는 브라우저가 가지고있는 XMLHttpRequest 객체를 이용하여 전체 페이지를 새로 고치지 않고 페이지의 일부만 Update 할 수있는 라이브러리 이다.

            참고자료: w3schools.com: AJAX Introduction

        • STA Mode를 사용하기 때문에 자신이 사용하는 WiFI Router 가 있어야 한다. WiFI Router 가 없는 경우에는 아래 AP Mode를 참고 바람.
        • 외부(WiFI Router 외부)에서 접속하고자 하는 경우에는 자신의 WiFI Router에서 포트포워드 설정(ip-TIME 과 같이 공유기를 제공하는 회사 자료에서 공유기 포트포워드 설정을 참고 바람)을 하여야 한다.
        • 자신이 사용하는 WiFI Router의 SSID(Service Set IDentifier)와 PASSWORD를 프로그램에 설정한다.
        • DHT11 온도센서 모듈(Single-Wire Two-Way 방식의 통신을 이용)을 사용한다. MicroPython이 DHT 리이브러리를 제공하기 때문에 DHT11 통신 프로토콜에 잘 모르는 경우에도 쉽게 프로그램을 작성할 수 있다.

        온도 측정 결과와 현재 시간을 보여주는 Web page 예

      • 실험을 위한 준비
        • STA Mode 예이기 때문에 자신이 사용하는 WiFi Router 가 있어야 한다.
        • 위 "Web 환경에서 ESP 모듈을 이용한 온도 측정(DHT11) 구성도"를 참고하여 ESP 모듈과 DHT11 통신에 필요한 회로를 구성한다.
          • ESP8266/ESP32의 GPIO14와 DHT11의 Data 핀을 연결한다.
          • 10K 저항을 DHT11 Data 선에 연결한다.
          • DHT11 Vcc 단자에 3.3V(or 5V) 전원을 연결한다.
          • ESP8266/ESP32 GND 와 DHT11 GND를 연결한다.
      • 실험 방법
        • Web 환경에서 ESP 모듈과 DHT11(온도센서 모듈)을 이용한 온도측정 프로그램 "python_web_server_STA_AJAX_DHT11.py"를 Download 하여 저장 한다.
        • Thonny IDE를 실행하고 Thonny IDE의 사용 환경(Thonny 실행에 사용할 장치와 COM Port 선택)이 바르게 되어 있는지 확인한다.
        • Thonny IDE의 Python shell 창에 prompt( >>> )가 출력되었는 확인한다.
        • Thonny IDE의 "파일 -> 열기"를 실행하여 python_web_server_STA_AJAX_DHT11.py 파일을 Open 한다.
        • Router 연결에 필요한 정보(네트워크 자격 증명: ssid, password)를 본인의 공유기에 맞게 편집하여 프로그램을 저장한다.
        • 실험
          • "실행 -> 현재 스크립트 실행"을 실행하거나 Toolbar의 "실행" Icon을 클릭하면 스크립트가 개발보드에 전송되고 프로그램이 실행된다.
          • 프로그램이 실행되면 ESPlorer 콘솔 창에 아래와 같이 네트워크 연결에 성공하였음을 알리는 메세지와 Network interface parameters가 출력(약간의 시간 지연이 있음)된다.
          • Connection successful

            ('192.168.0.30', '255.255.255.0', '192.168.0.1', '210.220.163.82')

          • 이 예를 참고하여 STA Mode로 설정한 ESP 모듈이 WiFI Router로 부터 자동으로 부여 받은 IP Address(이 예에서는 192.168.0.30)를 확인한다. 자신의 WiFI Router(공유기)에 관리자로 접속하여 "고급설정 -> 네트워크 관리 -> 내부 네트워크 설정"에서 사용중인 IP 주소 정보 창에서 확인 하여도 된다.
          • 웹 브라우저에서 192.168.0.30 번지에 연결하면 윗 "온도 측정 결과와 현재 시간을 보여주는 Web page 예"와 같이 온도 측정 결과와 현재 시간이 출력된다.
          • 외부(WiFI Router 외부)에서 접속하고자 하는 경우에는 자신의 WiFI Router에서 포트포워드 설정(ip-TIME 과 같이 공유기를 제공하는 회사 자료에서 공유기 포트포워드 설정을 참고 바람)을 하여야 한다.

    • Web(AJAX 이용) 환경에서 ESP 모듈과 ATmega128을 이용한 LED 제어 예
      • Web 환경에서 ESP 모듈과 ATmega128을 이용한 LED 제어 구성도

      • 시스템 구성과 설정
        • Web 환경에서 ESP 모듈과 ATmega128을 이용(I2C 통신 이용)한 LED 제어 시스템 예이다. AJAX를 이용하여 Web 페이지에서 필요한 제어 입력과 결과만 Update 한다.
        • STA Mode를 사용하기 때문에 자신이 사용하는 WiFI Router 가 있어야 한다. WiFI Router 가 없는 경우에는 아래 AP Mode를 참고 바람.
        • 외부(WiFI Router 외부)에서 접속하고자 하는 경우에는 자신의 WiFI Router에서 포트포워드 설정(ip-TIME 과 같이 공유기를 제공하는 회사 자료에서 공유기 포트포워드 설정을 참고 바람)을 하여야 한다.
        • 자신이 사용하는 WiFI Router의 SSID(Service Set IDentifier)와 PASSWORD를 프로그램에 설정한다.
        • ESP 모듈과 ATmega128 사이의 통신은 I2C를 사용한다.

        Web 환경에서 LED를 제어하기 위한 Web page 예

      • Web 환경에서 ESP 모듈과 ATmega128을 이용한 LED 제어 프로그램 예:"python_web_server_STA_AJAX_avr_led.py"를 Download 하여 저장 한다.
      • ATmega128 보드 프로그램(c 언어): cho_avr_i2c_slave_led.zip
      • 실험을 위한 준비
        • STA Mode 예이기 때문에 자신이 사용하는 WiFi Router 가 있어야 한다.
        • 위 "Web 환경에서 ESP 모듈과 ATmega128을 이용한 LED 제어 구성도"를 참고하여 ESP 모듈과 ATmega128 I2C 통신에 필요한 회로를 구성한다.
          • ESP8266/ESP32의 sda Pin(GPIO4)과 ATmega128의 TWI DATA Pin(PD1)을 연결한다.
          • ESP8266/ESP32의 scl Pin(GPIO5)와 ATmega128의 TWI CLOCK Pin(PD0)을 연결한다.
          • ESP8266/ESP32 GND 와 ATmega128 GND를 연결한다.
      • 실험 방법
        • "python_web_server_STA_AJAX_avr_led.py" 프로그램 파일을 Download하여 저장한다.
        • cho_avr_i2c_slave_led.zip 파일을 Download 하여 여기에 포함된 cho_avr_i2c_slave_led.hex을 ATmega128 보드에 설치한다.
        • ATmega128 보드의 UART0를 PC에 연결(USB - UART 변환 모듈 사용)하고 프로그램을 실행한다. PC에서 터미널 프로그램을 실행(ATmega128 보드의 COM 포트 번호 확인이 필요함. Baud rate: 19200)하고 ATmega128 보드의 Reset 버튼을 누르면 "I2C LED control" 메세지가 출력된다.
        • Thonny IDE를 실행하고 Thonny IDE의 사용 환경(Thonny 실행에 사용할 장치와 COM Port 선택)이 바르게 되어 있는지 확인한다.
        • Thonny IDE의 Python shell 창에 prompt( >>> )가 출력되었는 확인한다.
        • Thonny IDE의 "파일 -> 열기"를 실행하여 python_web_server_STA_AJAX_avr_led.py 파일을 Open 한다.
        • Router 연결에 필요한 정보(네트워크 자격 증명: ssid, password)를 본인의 공유기에 맞게 편집하여 프로그램을 저장한다.
        • 실험
          • 프로그램이 실행되면 Thonny IDE의 Python shell 창에 아래와 같이 네트워크 연결에 성공하였음을 알리는 메세지와 Network interface parameters가 출력(약간의 시간 지연이 있음)된다.
          • Connection successful

            ('192.168.0.30', '255.255.255.0', '192.168.0.1', '210.220.163.82')

            주: WiFi 신호가 약한 경우(라우터의 위치가 적절하지 못한 경우 등) AVR 보드 잡음 때문에 WiFi 접속이 안될 수 있다. 이 경우 잠시 AVR 전원을 차단하고 WiFi를 접속한 다음 AVR 전원을 인가 한다.

          • 이 예를 참고하여 STA Mode로 설정한 ESP 모듈이 WiFI Router로 부터 자동으로 부여 받은 IP Address(이 예에서는 192.168.0.30)를 확인한다. 자신의 WiFI Router(공유기)에 관리자로 접속하여 "고급설정 -> 네트워크 관리 -> 내부 네트워크 설정"에서 사용중인 IP 주소 정보 창에서 확인 하여도 된다.
          • 웹 브라우저에서 192.168.0.30 번지에 연결하면 윗 "Web 환경에서 LED를 제어하기 위한 Web page 예"와 같이 LED를 제어하기 위한 Web page가 출력된다.
          • LED를 제어하기 위한 Web page 버튼과 Checkbox를 이용하여 LED를 제어한다.

          주: 이 실험을 위하여는 ATmega128 보드의 PORTF에 LED Array가 연결되어 있어야 함.

          참고자료: Bit 정보를 보기 위한 8 Bits LED Bar 만들기


    • ESP32를 이용한 텃밭(or 베란다) 급수 제어 예
      • Web 환경에서 급수 제어를 위한 구성도

      • 시스템 구성과 설정
        • 필요한 부품과 Interface 모듈
        • ESP32

          전자 밸브 예

          Trasformer 예

          • ESP32: Web server와 Valve controller로 사용한다. ESP32가 Web server로 동작하기 때문에 Client(PC or 휴대폰 등)에 별도의 프로그램을 설치하지 않고 Web server에 접속하는 것만으로 장치를 제어할 수 있다.
          • 전자 밸브: AC 24V(비교적 안전하고 제어 장치로 부터 먼거리에 설치가 가능함)로 동작하는 농업용 전자 밸브이기 때문에 야외에 설치가 용이하다. 가정용 수도에는 20mm 사이즈가 적당하다. 24V 60Hz 전원을 사용하는 경우 Inrush 전류(A): 0.2A, Holding(A): 0.14A
          • Trasformer: AC 220V 입력을 AV 24V(전자 밸브 제어 전원)로 변환한다. 전자 밸브 하나만 구동하는 경우에는 40VA 정도 용량도 사용 가능하다.

        • 전자 개폐기(AC24V) 제어를 위한 Interface circuits
        • AC Power control Interface circuit: ESP32 GPIO 신호를 이용하여 AC 전력을 제어하기 위한 전자회로 이다. AC 24V 전자 밸브를 제어 한다.

          AC 전력 스위치(AC Power Switch) 회로 예

          윗 회로는 컴퓨터 GPIO 측에 광 결합 Triac(MOC3063)을 사용하여 부하 측에서 발생 할 수 있는 높은 순간 전압으로 부터 컴퓨터를 안전하개 보호 한다. 출력 측은 큰 전류를 제어 할 수 있는 전력 제어용 Triac(B1A16-600B)을 사용하여 다양한 교류 부하를 제어 할 수 있도록 하였다.


        • 텃밭(or 베란다) 급수 제어를 위한 제어 보드와 전자 밸브 배관 예
        • 급수 제어보드 예

          수도와 전자 밸브 배관 예


        • Web 환경에서 급수 제어를 위한 Web page 예
      • 실험을 위한 준비
        • Web 환경에서 급수 제어를 위한 제어 프로그램 예:"python-web-water-control-AJAX.py"를 Download 하여 저장 한다.
        • STA Mode 예이기 때문에 자신이 사용하는 WiFi Router 가 있어야 한다.
        • 위 "Web 환경에서 급수 제어를 위한 구성도"를 참고하여 ESP32 모듈과 전자 밸브 제어에 필요한 회로를 구성한다.
        • 주: 프로그램을 테스트 하는 동안에는 ESP의 GPIO 포트에 LED(330Ω 과 LED를 직렬)를 연결하여 실험을 하고, 프로그램 개발이 완료되면 이 Pin을 AC 전력 스위치(AC Power Switch) 회로의 GPIO 단자에 연결한다.

      • 실험 방법
        • Thonny IDE를 실행하고 Thonny IDE의 사용 환경(Thonny 실행에 사용할 장치와 COM Port 선택)이 바르게 되어 있는지 확인한다.
        • Thonny IDE의 Python shell 창에 prompt( >>> )가 출력되었는 확인한다.
        • Thonny IDE의 "파일 -> 열기"를 실행하여 python-web-water-control-AJAX.py 파일을 Open 한다.
        • python-web-water-control-AJAX.py 프로그램에서 자신이 사용하는 WiFI Router의 SSID(Service Set IDentifier)와 PASSWORD를 프로그램에 설정한다.
          • Router 연결에 필요한 정보(네트워크 자격 증명)를 변수 설정하기
            • python-web-water-control-AJAX.py 프로그램의 Router 연결에 필요한 정보(네트워크 자격 증명)를 아래 예를 참고하여 변경한다.
            • ssid = 'iptime-my-router'

              password = 'a12345'

        • 실험
          • "실행 -> 현재 스크립트 실행"을 실행하거나 Toolbar의 "실행" Icon을 클릭하면 스크립트가 개발보드에 전송되고 프로그램이 실행된다.
          • 프로그램이 실행되면 ESPlorer 콘솔 창에 아래와 같이 네트워크 연결에 성공하였음을 알리는 메세지와 Network interface parameters가 출력(약간의 시간 지연이 있음)된다.
          • Connection successful

            ('192.168.0.30', '255.255.255.0', '192.168.0.1', '210.220.163.82')

            주: WiFi 신호가 약한 경우(라우터의 위치가 적절하지 못한 경우 등) WiFi 접속이 안될 수 있다.

          • 이 예를 참고하여 STA Mode로 설정한 ESP 모듈이 WiFI Router로 부터 자동으로 부여 받은 IP Address(이 예에서는 192.168.0.30)를 확인한다. 자신의 WiFI Router(공유기)에 관리자로 접속하여 "고급설정 -> 네트워크 관리 -> 내부 네트워크 설정"에서 사용중인 IP 주소 정보 창에서 확인 하여도 된다.
          • 웹 브라우저에서 192.168.0.30 번지에 연결하면 윗 "Web 환경에서 급수 제어를 위한 Web page 예"와 같이 Web page가 출력된다.
          • "Manual On" 버튼을 클릭하면 ESP32 보드의 LED(GPIO2)가 Turn On 된다.
          • "Manual Off" 버튼을 클릭하면 ESP32 보드의 LED(GPIO2)가 Turn Off 된다.
          • 주: 전자 밸브를 연결하지 않은 상태에서 ESP32 보드의 LED(전자 밸브와 같은 GPIO2에 연결됨)를 이용하여 먼저 실험하고 다음에 전자 밸브를 연결하여 실험하여야 한다.

          • 외부(WiFI Router 외부)에서 접속하고자 하는 경우에는 자신의 WiFI Router에서 포트포워드 설정(ip-TIME 과 같이 공유기를 제공하는 회사 자료에서 공유기 포트포워드 설정을 참고 바람)을 하여야 한다.
        • 개발을 완료한 다음 프로그램을 ESP32 보드의 Flash memory에 Upload 하기
          • Thonny IDE의 "...(으)로 저장"를 실행하여 현재 선택된 편집 창의 파일(python-web-water-control-AJAX.py)을 "MicroPython 장치"에 main.py로 이름을 변경하여 저장(Upload)한다.
          • 이제 개발 보드의 전원을 켜거나 재시작(Reset) 하면 프로그램이 자동으로 실행된다.

  • ESP8266/ESP32 Module(WiFi)을 이용한 원격 제어(Web server) - 관련 페이지 보기