- d3 - Pie chart gauge
- Web 환경에서 ESP 모듈을 이용한 온도/습도 측정(DHT11)
- d3 - Pie chart gauge 시험을 위한 시스템 구성과 설정
- 온도/습도 센서(DHT11/DHT22) 측정 결과를 Web Page(Pie chart gauge)에 출력하는 예
- ESP8266/ESP32 - 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 프로그램 실행하기
- 위 HTML 문서를 복사하여 d3-gauge-pie-chart-basic.html 파일을 만들고 실행(더블 클릭)하면 웹브라우저에 "Pie chart gauge 프로그램 실행 결과 예"와 같은 Gauge가 출력된다.
- Pie chart gauge customization
- Gauge 모양 설정(Customize)에 사용하는 옵션
- Gauge 이름과 위치(X, Y) 설정
- Gauge(Pie chart) size
- Gauge 출력창 크기
- Gauge ring의 위치와 폭
- Pointer 모양
- Gauge에 표시되는 최소값과 최대값
- Gauge가 표시되는 Angle의 최소값과 최대값
- Major ticks 수
- Label format과 위치 설정
- 보간법으로 Gauge 색상을 구하는 함수와 색 데이터
- 2개의 Pie chart gauge 출력하기
- Pie chart gauge 프로그램 예
- 2개의 Pie chart gauge 프로그램 실행하기
- 위 HTML 문서를 복사하여 d3-gauge-pie-chart-two.html 파일을 만들고 실행(더블 클릭)하면 웹브라우저에 "2개의 Pie chart gauge 출력 예"와 같이 2개의 Gauge가 출력된다.
이 페이지에서는 ESP8266/ESP32 Web server와 D3.js Pie chart을 이용한 Gauge에 대하여 설명한다.
Pie chart gauge 프로그램 실행 결과 예
Pie chart gauge의 옵션 설정을 변경하여 Gauge의 모양을 변경(Customize)한다.
옵션 설정 예
Gauge chart에서 설정 가능한 옵션은 아래와 같다.
2개의 Pie chart gauge 출력 예
- d3 - Pie chart gauge 시험을 위한 시스템 구성과 설정
- 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 란?
- 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 통신 프로토콜에 잘 모르는 경우에도 쉽게 프로그램을 작성할 수 있다.
- 온도/습도 센서(DHT11/DHT22) 측정 결과를 Web Page(Pie chart gauge)에 출력하는 예
- 참고 자료
- 온도/습도 측정 결과를 Web Page(Google gauge)에 출력하는 프로그램 예
- Web Browser에 출력되는 Web page(HTML): index.h
- ESP8266/ESP32 Web Server 프로그램: web_AJAX_DHT11_pie-chart_gauge-arduino.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.
- ESP8266/ESP32 개발보드 GND <-> 센서 GND
- 실험 방법
- Text 편집기에서 새 파일을 만들고 위 index.h 파일을 복사하여 Arduino IDE 프로그램(web_AJAX_DHT11_pie-chart_gauge-arduino.ino)과 동일한 폴더에 index.h 이름으로 저장한다.
- Arduino IDE를 실행하고 "파일 -> 새 파일"을 클릭한다.
- 윗 web_AJAX_DHT11_pie-chart_gauge-arduino.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초 동안 누른다.
- 실험
- 업로드가 완료되면 프로그램이 자동으로 실행되고 시리얼 모니터 창에 아래 예와 같이 WiFi 연결 메세지와 IP address가 아래 예와 같이 출력된다.
- 시리얼 모니터 창에서 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초 간격으로 측정된 온도와 습도 값이 출력된다. 센서에 손가락을 대고 있으면 습도가 변동한다. 유사한 방법으로 온도를 변동 시키며 측정 결과와 비교한다.
- google chrome의 "DNS_PROBE_FINISHED_BAD_CONFIG" Error 문제 해결하기
- "DNS_PROBE_FINISHED_BAD_CONFIG" Error 가 발생하면 Chrome 개발자 도구 Console 창에 아래와 같은 Error message 가 출력된다.
- 문제 해결하기: DOS 명령창을 열고(> Command Prompt 상태에서) 아래 명령을 순서대로 실행한다.
- ESP8266/ESP32 - d3.js Pie chart gauge - 관련 페이지 보기
Web 환경에서 ESP 모듈을 이용한 온도 측정(DHT11) 구성도
Ajax(Asynchronous Javascript And Xml)는 브라우저가 가지고있는 XMLHttpRequest 객체를 이용하여 전체 페이지를 새로 고치지 않고 페이지의 일부만 Update 할 수있는 라이브러리 이다.
Web Browser에 출력되는 Web page(HTML 문서)를 아래와 같이 별도로 작성하여 Arduino IDE 프로그램(web_AJAX_DHT11_pie-chart_gauge-arduino.ino)과 동일한 폴더에 index.h 이름으로 저장한다.
Web Browser에서 ESP 웹 서버에 접속하면 이 문서가 Web Browser에 전송되어 출력된다.
온도 측정 결과와 현재 시간을 보여주는 Web page 예
주: 센서에 따라 전원 전압은 5V 또는 3.3V 일 수 있으니 확인 바람.
주: ESP8266 NodeMCU 개발보드를 사용하는 경우에는 FLASH Switch와 RST Switch를 누르지 않아도 자동으로 업 로드 된다.
IP address: 192.168.0.21
주: 개발이 완료되면 handleDHT()에서 온도와 습도를 시리얼 모니터에 출력하는 코드를 Comment 처리한다.
WEb server를 반복하여 실험하는 경우 "DNS_PROBE_FINISHED_BAD_CONFIG" Error가 발생하여 Server 접속에 문제가 발생할 수 있다.
crbug/1173575, non-JS module files deprecated.
(anonymous) @ (index):5551
ipconfig /release
ipconfig /flushdns
ipconfig /renew