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

pie-chart-gauge

ESP8266/ESP32 - d3.js Pie chart gauge - MicroPython
ESP8266/ESP32 - d3.js Pie chart gauge - MicroPython


  • d3 - Pie chart gauge
    • 필요한 배경 지식
      • 이 페이지에서는 ESP8266/ESP32 Web server와 D3.js Pie chart을 이용한 Gauge에 대하여 설명한다.

      • 필요한 배경 지식
        • MicroPython과 JavaScript 언어
        • ESP8266/ESP32 Module(WiFi)
        • ESP8266/ESP32 Module(WiFi)을 이용한 원격 제어(Web server)
        • DHT11/12 온습도센서
        • D3.js Pie chart
    • d3 - Pie chart gauge basic
      • Pie chart gauge 프로그램 예
        • Pie chart gauge 프로그램 실행 결과 예

        • Pie chart gauge 프로그램 실행하기
          • 위 HTML 문서를 복사하여 d3-gauge-pie-chart-basic.html 파일을 만들고 실행(더블 클릭)하면 웹브라우저에 "Pie chart gauge 프로그램 실행 결과 예"와 같은 Gauge가 출력된다.
    • Pie chart gauge customization
      • Pie chart gauge의 옵션 설정을 변경하여 Gauge의 모양을 변경(Customize)한다.

      • Gauge 모양 설정(Customize)에 사용하는 옵션
        • 옵션 설정 예

          Gauge chart에서 설정 가능한 옵션은 아래와 같다.

        • Gauge 이름과 위치(X, Y) 설정
        • Gauge(Pie chart) size
        • Gauge 출력창 크기
        • Gauge ring의 위치와 폭
        • Pointer 모양
        • Gauge에 표시되는 최소값과 최대값
        • Gauge가 표시되는 Angle의 최소값과 최대값
        • Major ticks 수
        • Label format과 위치 설정
        • 보간법으로 Gauge 색상을 구하는 함수와 색 데이터
        • 참고자료: D3.js - Pie chart를 이용한 gauge


    • 2개의 Pie chart gauge 출력하기
      • Pie chart gauge 프로그램 예
        • 2개의 Pie chart gauge 출력 예

        • 2개의 Pie chart gauge 프로그램 실행하기
          • 위 HTML 문서를 복사하여 d3-gauge-pie-chart-two.html 파일을 만들고 실행(더블 클릭)하면 웹브라우저에 "2개의 Pie chart gauge 출력 예"와 같이 2개의 Gauge가 출력된다.

  • Web 환경에서 ESP 모듈을 이용한 온도/습도 측정(DHT11)
    • d3 - Pie chart gauge 시험을 위한 시스템 구성과 실험
      • Web 환경에서 ESP 모듈을 이용한 온도 측정(DHT11) 구성도

        • ESP8266/ESP32를 Web server와 온도/습도 센서(DHT11/DHT22) 제어에 사용한다.
        • 온도/습도 센서(DHT11/DHT22) 모듈은 측정한 온도/습도 값을 Single-Wire 통신 프로토콜로 ESP8266/ESP32에 전송한다.
        • AJAX를 이용하여 Web 페이지에서 필요한 측정 결과만 Update 한다.
        • 측정 결과는 Web 페이지의 Pie chart gauge에 출력(표시)된다.
      • 시스템 구성과 설정
        • 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 예
      • Web 환경에서 ESP 모듈과 DHT11(온도센서 모듈)을 이용한 온도측정 프로그램 예:"python_web_AJAX_DHT11_pie-chart_gauge.py"를 Download 하여 저장 한다.
      • 실험을 위한 준비
        • STA Mode 예이기 때문에 자신이 사용하는 WiFi Router 가 있어야 한다.
        • 위 "Web 환경에서 ESP 모듈을 이용한 온도 측정(DHT11) 구성도"를 참고하여 ESP 모듈과 DHT11 통신에 필요한 회로를 구성한다.
          • ESP8266/ESP32의 GPIO14와 DHT11의 Data 핀을 연결한다.
          • 10K 저항을 DHT11 Data 선에 연결한다. DHT11 모듈(10K 저항이 내부에 포함된 모듈)에 따라 이 저항은 생략할 수 있다.
          • DHT11 Vcc 단자에 3.3V(or 5V) 전원을 연결한다.
          • ESP8266/ESP32 GND 와 DHT11 GND를 연결한다.
      • 실험 방법
        • Thonny IDE를 실행하고 Thonny IDE의 사용 환경(Thonny 실행에 사용할 장치와 COM Port 선택)이 바르게 되어 있는지 확인한다.
        • Thonny IDE의 Python shell 창에 prompt( >>> )가 출력되었는 확인한다.
        • Thonny IDE의 "파일 -> 열기"를 실행하여 프로그램 파일(python_web_AJAX_DHT11_pie-chart_gauge.py)을 Open 한다.
        • Thonny IDE의 Scripts 편집 창 프로그램에서 본인의 무선 공유기 연결을 위한 네트워크 자격 증명(ssid와 password)를 설정하고 "이 컴퓨터"에 저장한다.
        • 실험
          • "실행 -> 현재 스크립트 실행"을 실행하거나 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 번지에 연결하면 윗 "온도 측정 결과와 현재 시간을 보여주는 Web page 예"와 같이 온도 측정 결과와 현재 시간이 출력된다.
          • 외부(WiFI Router 외부)에서 접속하고자 하는 경우에는 자신의 WiFI Router에서 포트포워드 설정(ip-TIME 과 같이 공유기를 제공하는 회사 자료에서 공유기 포트포워드 설정을 참고 바람)을 하여야 한다.
          • 주: 개발이 완료되면 프로그램 이름을 "main.py"로 변경한 다음 개발 보드에 저장한다.

        • 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 - d3.js Pie chart gauge - 관련 페이지 보기