ESP32

ESP32 Espruino DHT22: Getting temperature and humidity

기하 2021. 8. 16. 04:29

이 튜토리얼에서는 ESP32에서 실행되는 Espruino를 사용하여 DHT22 센서에서 온도 및 습도 측정값을 얻는 방법을 확인합니다. 테스트는 ESP32 개발 보드에  통합된  DFRobot의 ESP32 모듈을 사용하여 수행되었습니다  .

 

 

소개

이 튜토리얼에서는 ESP32에서 실행되는 Espruino를 사용하여 DHT22 센서에서 온도 및 습도 측정값을 얻는 방법을 확인합니다.

지원하는 단일 와이어 프로토콜을 사용하여 DHT22와 상호 작용하는 복잡성을 추상화하는 간단한 인터페이스를 사용하기 위해 Espruino의 DHT22 모듈을 사용 합니다 .

중요 :  DHT 라이브러리는 일부 이전 Espruino 펌웨어 버전에서 작동하지 않습니다. Espruino 다운로드 페이지 에서 사용 가능한 최신 버전으로 업데이트하는 것이 좋습니다 . 이 테스트를 위해 버전 1.99를 사용하고 있습니다.

센서와의 상호 작용을 용이하게 하기 위해  이미 필요한 모든 전자 장치가 있고 연결을 용이하게 하는 배선 터미널을 노출하는 DFRobot DHT22 모듈  사용  하고 있습니다.

테스트는 ESP32 개발 보드에  통합된  DFRobot의 ESP32 모듈을 사용하여 수행되었습니다  .


전기 다이어그램

소개 섹션에서 언급했듯이 모든 것이 작동하는 데 필요한 모든 전자 장치가 포함된 바로 사용할 수 있는 DHT22 센서 모듈을 사용한다고 가정합니다. 따라서 이러한 모듈을 사용할 때 그림 1과 같이 데이터 핀을 ESP32의 GPIO에 직접 연결할 수 있습니다.

그림 1 - ESP32와 DHT22 모듈 간의 연결 다이어그램.

모듈에 따라 레이블이 다를 수도 있고 전혀 레이블이 지정되지 않을 수도 있습니다. 필자의 경우 사용 중인 모듈의 경우 보드에 레이블이 없으며 연결된 전선의 색상을 고려해야 합니다.

  • 블랙:  GND
  • 빨간색:  VCC
  • 녹색:  데이터

ESP32 보드에 따라 DHT22가 전원 핀에서 작동하는 데 필요한 전원을 공급할 수 있습니다. 보드 하나가있는 경우 확실하지 않은 경우, 내 추천과 같은 외부 전원 공급 장치를 사용하는 것입니다   .


코드

평소와 같이 측정값을 얻는 데 필요한 코드는 더 높은 수준의 프레임워크를 사용하고 있기 때문에 매우 간단하고 간결합니다.

DHT22 모듈에 연결된 ESP32 GPIO의 번호를 선언하는 것으로 시작합니다. 나는 핀 25를 사용했지만 다른 사람들과 함께 테스트할 수 있습니다.

1 var dhtPin =25;

마이크로컨트롤러와 ESP32 간의 통신 프로토콜의 하위 수준 세부 정보에 대해 걱정할 필요가 없도록 하기  위해 해당 상호 작용을 처리할 Espruino 모듈  사용할 것입니다.

모듈을 로드하려면 모듈 의 이름을 입력으로 전달 하는 require 함수를 사용합니다 [1]. require 함수를 사용할 때 코드를 보드에 보낼 때 Espruino IDE는 자동으로 모듈을 온라인에서 찾아 다운로드하고 보드에 로드합니다[1].

모듈을 로드한 후 반환된 객체 에서 connect  메서드를 호출 하여 센서에 연결된 ESP32 핀의 번호를 입력으로 전달하면 됩니다[2]. 이것은 측정값을 얻을 수 있는 DHT22 객체를 반환합니다  [2].

1 var dht = require("DHT22").connect(dhtPin);

실제 측정값을 얻으려면 DHT22 객체  read 메소드 를 호출하기만 하면 됩니다 [2].

이 메서드는 읽기 작업이 완료될 때 실행되는 함수를 단일 입력으로 받습니다. 이 사용자 정의 함수의 인수로 읽기 메서드는 온도 및 습도 측정값을 모두 포함하는 개체를 전달합니다[2].

온도는 언급된 물체  온도 특성에서, 습도는 rh 특성 에서  얻을 수 있습니다 . 그런 다음 read 메소드에 전달할 함수 내에서 해당 속성의 값을 인쇄할 수 있습니다 .

1
2

4
5
6
dht.read(function (measurements) {


    console.log("Humidity: " + measurements.rh + "%");
    console.log("Temperature: " + measurements.temp + "ºC");


});

최종 전체 코드는 아래에서 볼 수 있습니다.

1
2

4
5
6
7
8
9
10
var dhtPin =25;


var dht = require("DHT22").connect(dhtPin);


dht.read(function (measurements) {


    console.log("Humidity: " + measurements.rh + "%");
    console.log("Temperature: " + measurements.temp + "ºC");


});


코드 테스트

이전 코드를 테스트하려면 Espruino IDE를 사용하여 ESP32 보드에 이전 스크립트를 업로드하기만 하면 됩니다. 이미 언급했듯이 DHT22 모듈이 로드되는 것은 로딩 절차 중이므로 코드 실행이 시작되기까지 시간이 걸릴 수 있습니다.

실행이 완료되면 그림 2와 유사한 출력이 나타나야 합니다. 이 출력은 인쇄 중인 두 측정값을 보여줍니다.

그림 2 - Espruino와 DHT22 센서로 온도와 습도 얻기.

관련 게시물


참고문헌

[1]  https://www.espruino.com/Modules

[2]  https://www.espruino.com/DHT22