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

google-gauge-chart-arduino

ESP8266/ESP32(Google gauge) - Arduino
ESP8266/ESP32 Module - Google gauge chart


  • Google gauge chart
    • Google gauge chart basic
      • Google Charts는 웹 사이트에서 데이터를 시각화하는 방법을 제공한다. 단순한 라인 차트에서 복잡한 계층 구조 트리 맵에 이르기까지 차트 갤러리는 즉시 사용할 수있는 다양한 차트(30여종의 차트중 여기서는 측정 결과를 표시할 수 있는 Gauge chart에 대하여 설명함) 유형을 제공한다.

        참고자료: Google Charts Guides

      • Google 차트를 사용하는 가장 일반적인 방법
        • Google 차트를 사용하는 가장 일반적인 방법은 차트를 웹 페이지에 삽입하는 자바 스크립트를 사용하는 것이다.

        • 사용할 Google 차트 라이브러리를 로드하고,
        • 차트에 표시할 데이터를 나열(List)하고,
        • 차트의 사용자 정의 옵션을 설정하고,
        • 선택한 ID로 차트 개체를 만든다.
        • 그런 다음 웹 페이지에서 해당 ID로 <div>를 만들어 Google 차트를 표시한다.
      • Googl의 Gauge chart 예
        • 아래 HTML 문서는 Google에서 제공하는 Gauge chart 예이다.



          위 웹문서(Googl의 Gauge chart)를 웹 브라우저에 브라우징한 예

        • Gauge chart(google-gauge-chart-basic.html)를 웹 브라우저에 브라우징 하기
          • 이 예에서는 실험 시간을 줄이기 위하여 Web server를 사용하지 않고 PC에 저장된 HTML 문서를 직접 브라우저에 브라우징 한다. ESP Web server를 사용하는 예는 아래에서 설명함.

          • "google-gauge-chart-basic.html"를 Download 하여 PC에 저장 한다.
          • "google-gauge-chart-basic.html"을 더블 클릭하면 Web browser에 위 "웹문서(Googl의 Gauge chart)를 웹 브라우저에 브라우징한 예"와 같이 웹 브라우저에 Googl gauge chart가 브라우징 된다.
          • "google-gauge-chart-basic.html" 내의 data, option, setInterval 등을 변경하며 실험한다.

    • Google gauge customization
      • 이 예에서는 Chart의 옵션 설정을 변경하여 Gauge의 모양을 변경(Customize)한다.

      • 옵션 설정으로 Gauge 모양 변경(Customize)하기
        • 옵션 설정 예

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

        • Animation: animation.duration, animation.easing,
        • Frame: forceIFrame
        • Size: height, width
        • Value range: min, max
        • Green section: greenColor, greenFrom, greenTo
        • Yellow section: yellowColor, yellowFrom, yellowTo
        • Red section: redColor, redFrom, redTo
        • Tick section: majorTicks, minorTicks
        • 아래 참고자료를 참고하여 위에 나열한 옵션을 변경하며 실험하여 보기 바람.

          참고자료: Visualization: Gauge

      • Chart Style 속성 설정을 이용하여 Gauge 모양 변경(Customize)하기
        • 아래 HTML 문서는 Style 속성 설정을 이용하여 Gauge의 모양 변경(Customize)하는 예이다.


          Style 속성을 이용하여 Gauge 모양을 변경(Customize)한 예

        • Gauge chart(google-gauge-style-customize.html)를 웹 브라우저에 브라우징 하기
          • 이 예에서는 실험 시간을 줄이기 위하여 Web server를 사용하지 않고 PC에 저장된 HTML 문서를 직접 브라우저에 브라우징 한다.

          • "google-gauge-style-customize.html"를 Download 하여 PC에 저장 한다.
          • "google-gauge-style-customize.html"을 더블 클릭하면 Web browser에 Gauge chart가 브라우징 된다.
          • "google-gauge-style-customize.html" 내의 style 속성을 변경하며 실험한다.

    • 하나의 웹 페이지에 여러개의 차트를 그리기
      • 각각의 차트에 별도의 콜백을 사용하여 여러개의 Gauge chart 그리기
        • 이 예는 별도의 콜백(2개)을 사용하여 2개의 Gauge chart를 그리는 예이다.

          별도의 콜백(2개)을 사용하여 2개의 Gauge chart(온도, 습도)를 그리는 예

        • Gauge chart(google-gauge-2-chart-2-callback.html)를 웹 브라우저에 브라우징 하기
          • 이 예에서는 실험 시간을 줄이기 위하여 Web server를 사용하지 않고 PC에 저장된 HTML 문서를 직접 브라우저에 브라우징 한다.

          • "google-gauge-2-chart-2-callback.html"를 Download 하여 PC에 저장 한다.
          • "google-gauge-2-chart-2-callback.html"을 더블 클릭하면 Web browser에 Gauge chart가 브라우징 된다.
      • 하나의 콜백을 사용하여 여러개의 Gauge chart 그리기
        • 이 예는 하나의 콜백을 사용하여 2개의 Gauge chart를 그리는 예이다.

          하나의 콜백을 사용하여 2개의 Gauge chart(온도, 습도)를 그리는 예

        • Gauge chart(google-gauge-2-chart-1-callback.html)를 웹 브라우저에 브라우징 하기
          • 이 예에서는 실험 시간을 줄이기 위하여 Web server를 사용하지 않고 PC에 저장된 HTML 문서를 직접 브라우저에 브라우징 한다.

          • "google-gauge-2-chart-1-callback.html"를 Download 하여 PC에 저장 한다.
          • "google-gauge-2-chart-1-callback.html"을 더블 클릭하면 Web browser에 Gauge chart가 브라우징 된다.

  • ESP8266/ESP32를 이용한 온습도(DHT11 센서 사용) 측정 Web server - Google gauge
    • ESP8266/ESP32과 DHT11 센서를 사용한 온습도 측정
      • Web 환경에서 ESP 모듈을 이용한 온도 측정(DHT11/DHT22) 구성도

      • ESP8266/ESP32를 Web server와 온도/습도 센서(DHT11/DHT22) 제어에 사용한다.
      • 온도/습도 센서(DHT11/DHT22) 모듈은 측정한 온도/습도 값을 Single-Wire 통신 프로토콜로 ESP8266/ESP32에 전송한다.
      • AJAX를 이용하여 Web 페이지에서 필요한 측정 결과만 Update 한다.
      • 측정 결과는 Web 페이지의 Google gauge에 출력(표시)된다.
    • 온도/습도 센서(DHT11/DHT22) 측정 결과를 Web Page(Google gauge)에 출력하는 예
      • 참고 자료
      • 온도/습도 측정 결과를 Web Page(Google gauge)에 출력하는 프로그램 예
        • Web Browser에 출력되는 Web page(HTML 문서)를 아래와 같이 별도로 작성하여 Arduino IDE 프로그램(web_AJAX_DHT11_google_gauge.ino)과 동일한 폴더에 index.h 이름으로 저장한다.

          Web Browser에서 ESP 웹 서버에 접속하면 이 문서가 Web Browser에 전송되어 출력된다.

        • Web Browser에 출력되는 Web page(HTML): index.h



        • ESP8266/ESP32 Web Server 프로그램: web_AJAX_DHT11_google_gauge.ino

        위 프로그램의 실행 결과 예

      • 실험을 위한 준비
        • ESP8266/ESP32 개발보드와 센서 모듈 연결
          • ESP8266/ESP32 개발보드 Data input pin(GPIO14) <-> 센서의 data pin
          • Data input line Pull up 저항(1K - 10K): DHT11/DHT22 모듈에 Pull up 저항이 내장된 경우 생략하여도됨.
          • ESP8266/ESP32 개발보드 VDD(3.3V or 5V} <-> 센서 Vcc pin.
          • 주: 센서에 따라 전원 전압은 5V 또는 3.3V 일 수 있으니 확인 바람.

          • ESP8266/ESP32 개발보드 GND <-> 센서 GND
      • 실험 방법
        • Text 편집기에서 새 파일을 만들고 위 index.h 파일을 복사하여 Arduino IDE 프로그램(web_AJAX_DHT11_google_gauge.ino)과 동일한 폴더에 index.h 이름으로 저장한다.
        • Arduino IDE를 실행하고 "파일 -> 새 파일"을 클릭한다.
        • 윗 web_AJAX_DHT11_google_gauge.ino 프로그램을 프로그램 편집 창에 복사한다.
        • 무선 공유기의 ssid(STA_SSID), password(STA_PASSWORD)를 자신의 공유기 환경에 맞게 편집한다.
        • 사용하는 보드에 따라 Library(WiFi.h, WebServer.h or ESP8266WiFi.h, ESP8266WebServer.h) 설정을 편집한다.
        • 사용하는 보드에 따라 "WebServer server(80); or ESP8266WebServer server(80);" 설정을 편집하고 저장한다.
        • "툴 -> 보드: "보오드 이름" 에서 보드를 선택("NodeMCU-32S인 경우에는 "NodeMCU-32S" , ESP8266 NodeMCU인 경우에는 "NodeMCU 1.0(ESP-12E Module)) 한다.
        • "툴 -> 포트: "에서 COM Port(제어판에서 ESP에 연결된 Port 번호를 확인)를 선택 한다.
        • "스케치 -> 확인/컴파일"을 클릭하여 프로그램이 정상으로 컴파일되는지 확인한다.
        • "툴 -> 시리얼 모니터"를 실행하여 시리얼 모니터 창을 Open 한다.
        • "업 로드"를 실행 한다. 컴파일이 완료되고 Arduino IDE와 개발 보드 사이에 연결이 시작되면 FLASH Switch를 약 2초 동안 누른다.
        • 주: ESP8266 NodeMCU 개발보드를 사용하는 경우에는 FLASH Switch와 RST Switch를 누르지 않아도 자동으로 업 로드 된다.

        • 실험
          • 업로드가 완료되면 프로그램이 자동으로 실행되고 시리얼 모니터 창에 아래 예와 같이 WiFi 연결 메세지와 IP address가 아래 예와 같이 출력된다.
          • IP address: 192.168.0.21

          • 시리얼 모니터 창에서 IP Address(예: 192.168.0.21)를 확인한다. 자신의 WiFI Router(공유기)에 관리자로 접속하여 "고급설정 -> 네트워크 관리 -> 내부 네트워크 설정"에서 사용중인 IP 주소 정보 창에서 확인 하여도 된다.
          • PC(또는 휴대폰)의 웹 부라우저에서 ESP Web server에 연결(위 예에서 '192.168.0.21'이 ESP Web server의 IP Address 임)하면 윗 예와 같이 온도 측정 결과가 표시된다.
          • 외부(WiFI Router 외부)에서 접속하고자 하는 경우에는 자신의 WiFI Router에서 포트포워드 설정(ip-TIME 과 같이 공유기를 제공하는 회사 자료에서 공유기 포트포워드 설정을 참고 바람)을 하여야 한다.
          • 실험: 프로그램이 실행되면 2초 간격으로 측정된 온도와 습도 값이 출력된다. 센서에 손가락을 대고 있으면 습도가 변동한다. 유사한 방법으로 온도를 변동 시키며 측정 결과와 비교한다.

          주: 개발이 완료되면 handleDHT()에서 온도와 습도를 시리얼 모니터에 출력하는 코드를 Comment 처리한다.


  • ESP8266/ESP32 Module - Google gauge chart - 관련 페이지 보기