산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

DHT11 /DHT22 온도 센서

구성품 및 소모품

DHT11 온도 및 습도 센서(4핀)
× 1
라즈베리 파이 2 모델 B
× 1
Arduino UNO
× 1
수-수 점퍼 와이어
× 3
브레드보드(일반)
× 1
4.7K Ω 저항기
× 1
Cobbler 브레이크아웃 키트
× 1

앱 및 온라인 서비스

Microsoft Windows 10 IoT Core
Arduino IDE
라즈베리 파이 라즈비안
Microsoft Visual Studio 2015
WinSCP
PuTTY

이 프로젝트 정보

소개

배경

DHT11은 20% - 90% 상대 습도 및 0 - 50°C를 측정할 수 있는 4핀(1핀은 사용되지 않음) 온도 및 습도 센서입니다. 이 센서는 3~5.5V DC에서 작동할 수 있으며 고유한 OneWire 프로토콜을 사용하여 통신합니다. 이 프로토콜은 센서에서 데이터를 가져오기 위해 매우 정확한 타이밍이 필요합니다. LOW 및 HIGH 비트는 신호가 HIGH인 시간 길이만큼 와이어에 코딩됩니다. 판독하는 데 걸리는 총 시간은 최대 23.4ms입니다. 여기에는 데이터 전송을 시작하는 데 필요한 18ms 지연과 데이터에 대해 최대 5.4ms의 기간이 포함됩니다. 개별 신호는 짧게는 20μs, 길게는 80μs일 수 있습니다.

Windows 10 IoT Core를 처음 사용할 수 있게 되었을 때 저는 Raspberry Pi 2와 DHT11 센서를 잡고 C#에서 사용해 보았습니다. 나는 그것이 작동하지 않을 것이라는 것을 빨리 발견했다. Windows 10 IoT Core의 C# 문제는 속도가 충분히 빠르지 않다는 것입니다(적어도 지금 당장은 아님).

나는 Microsoft 포럼에 글을 올렸고 같은 어려움을 겪고 있는 다른 개발자들과 몇 차례 교류를 했습니다. 나는 결국 Windows 10 IoT Core의 OneWire 프로토콜에 대한 Microsoft 응답을 발견했습니다.

잠시 후 다음과 같은 내 게시물에 대한 답변을 받았습니다.

글쎄요, 그것은 훌륭할 것입니다. 그리고 곧 출시될 기능에 대해 정말 기대가 큽니다. 하지만 누가 기다릴 수 있겠습니까? 최근에 Microsoft에서 샘플 센서로 DHT11을 사용하고 Windows 10 IoT Core에서 C++를 사용하여 OneWire 프로토콜을 지원하는 방법에 대한 샘플을 게시한 것을 보았습니다. 이것을 C#으로 가져올 수 있는 기회라고 생각했습니다.

이 프로젝트는 해당 샘플을 C#에서 사용할 수 있는 라이브러리로 바꾸는 것입니다. 이 인기 있는 센서를 Windows 10 IoT Core에서 유용하게 만드는 데 도움을 주기 위해 라이브러리를 작성한 사람에게 감사드리며, 이 라이브러리를 통해 더욱 유용하게 사용되기를 바랍니다.

라이브러리

내가 만든 라이브러리는 원래 Microsoft에서 게시한 코드를 단순하게 리팩토링한 것이므로 센서 판독을 위해 수행한 작업에 대한 공로를 인정하지 않습니다.

라이브러리는 Dht11이라는 간단한 클래스를 제공합니다. 네임스페이스 Sensors.Dht . C#에서 새 개체를 만드는 것은 간단합니다.

먼저 DHT11 센서 핀이 연결된 GPIO 핀을 엽니다.

Sensors.Dht;GpioPin 핀 사용 =GpioController.GetDefault().OpenPin(4, GpioSharingMode.Exclusive); 

그런 다음 이 핀을 Dht11의 생성자에 전달합니다. 클래스를 만들고 GPIO 핀 드라이브 모드를 지정합니다. 이를 통해 고유한 풀업 저항을 추가할지 여부를 결정할 수 있습니다.

Dht11 dht11 =새로운 Dht11(_pin, GpioPinDriveMode.Input); 

기기에서 판독값을 얻으려면 GetReadingAsync를 사용하세요. 방법.

DhtReading 읽기 =await dht11.GetReadingAsync().AsTask(); 

최대 재시도 값을 지정할 수 있는 과부하가 있습니다. 기본값은 20입니다. 이것은 포기하고 실패한 판독값을 반환하기 전에 센서 판독을 시도하는 횟수를 지정합니다.

DhtReading 구조는 다음과 같이 정의됩니다.

공개 값 구조체 DhtReading{ bool TimedOut; bool 유효함; 이중 온도; 이중 습도; int RetryCount;}; 

관찰

센서가 C++에서 작동하더라도 매번 판독값을 얻지는 못합니다. 따라서 클래스에 재시도 옵션이 필요합니다(실제로 Microsoft 샘플의 일부임). 이것을 다른 플랫폼과 비교하여 성능을 확인하는 것이 가장 좋을 것이라고 생각했습니다. Raspbian과 Arduino Uno를 실행하는 Raspberry Pi 2에서 코드를 시도했습니다. 두 가지 모두에 사용한 코드는 GitHub 저장소에 포함되어 있습니다.

이 프로젝트에 포함된 비디오는 이러한 각 플랫폼의 출력을 보여주고 비교할 것입니다.

시작하기

Raspberry Pi 2용 회로 조립

이 가이드를 사용하여 페이지 하단 근처에 있는 다이어그램을 가이드로 사용하여 회로를 조립하십시오(와이어 색상은 선택 사항이며 회로를 구성할 때 쉽게 따라갈 수 있도록 선택되었습니다). <울>

  • T자 모양의 구두 수선기를 하프 사이즈+ 보드의 왼쪽 끝에 놓습니다(숫자가 1에서 시작하는 곳). 가장 왼쪽에 있는 두 개의 핀은 E1에 있습니다. 및 F1 보드에. 가장 오른쪽에 있는 두 개의 핀은 E20에 있습니다. 및 F20
  • <울>
  • 4.7K Ω 저항을 A4 사이에 배치합니다. 및 3V3
  • <울>
  • B4 사이의 남성 점퍼 와이어에 주황색 남성을 연결합니다. 및 F28
  • <울>
  • F29 사이의 수 점퍼 와이어에 빨간색 수컷을 연결합니다. 및 3V3
  • <울>
  • 검은색 남성을 F30 사이의 남성 점퍼 와이어에 연결합니다. 및 GND
  • <울>
  • DHT11 센서를 J30에 배치 (-), J29 (+) 및 J28 (들)
  • <울>
  • 리본 케이블을 코블러와 Raspberry Pi에 연결합니다.
  • Arduino용 회로 조립

    이 가이드를 사용하여 페이지 하단 근처에 있는 다이어그램을 가이드로 사용하여 회로를 조립하십시오(와이어 색상은 선택 사항이며 회로를 구성할 때 쉽게 따라갈 수 있도록 선택되었습니다). <울>

  • 4.7K Ω 저항을 E12 사이에 배치합니다. 및 E13
  • <울>
  • D13 사이의 남성 점퍼 와이어에 흰색 남성을 연결합니다. 및 핀 5 Arduino에서
  • <울>
  • D12 사이의 수 점퍼 와이어에 빨간색 수컷을 연결합니다. 및 5V Arduino의 핀
  • <울>
  • 검은색 수컷을 D11 사이의 수 점퍼 와이어에 연결합니다. 및 GND Arduino에서
  • <울>
  • DHT11 센서를 A11에 배치합니다. (-), A12 (+) 및 A13 (들)
  • <울>
  • USB 케이블을 컴퓨터에서 Arduino로 연결
  • 아래는 내가 만든 회로의 사진입니다.

    Raspberry Pi용 애플리케이션 시작

    디버그, ARM 구성 및 원격 시스템을 선택합니다. 이제 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택한 다음 디버그 태그를 클릭합니다. 그런 다음 원격 머신 필드에 Raspberry Pi 2 IP 주소를 입력하고 인증 사용을 선택 취소합니다.

    F5 키를 누릅니다. . 애플리케이션이 기기에 배포되며 처음에는 몇 분이 소요될 수 있습니다.

    Arduino용 애플리케이션 시작

    이 프로젝트의 스케치는 GitHub에서 Dht11_Speed라는 파일로 제공됩니다. . Arduino IDE를 시작하고 스케치를 엽니다. 스케치를 Arduino에 업로드합니다(Ctrl U ) 그런 다음 직렬 모니터를 시작합니다(Ctrl Shift M). )

    이 작업을 수행하는 방법이 확실하지 않거나 이 환경이 처음인 경우 아래 비디오에서 이 작업을 수행하는 방법을 보여줍니다.

    Raspbian용 애플리케이션 시작

    Raspberry Pi용 C 코드는 이 프로젝트의 GitHub에서 Dht11.c라는 파일에서 사용할 수 있습니다. . 소스를 Raspberry Pi에 복사한 다음 거기에서 컴파일해야 합니다. WinSCP를 사용하여 파일을 복사하는 것을 좋아합니다. 이 응용 프로그램이 없으면 지금 다운로드하여 설치하는 것이 좋습니다. 소스 코드는 응용 프로그램을 컴파일하기 전에 설치해야 하는 와이어링파이를 사용합니다.

    Raspberry Pi에서 코드를 컴파일하는 명령은 다음과 같습니다.

    gcc -oDht11_Speed ​​Dht11_Speed.c -L/usr/local/lib -lwiringPi -std=c99 -lm 

    응용 프로그램을 실행하려면 다음 명령을 입력하십시오.

    sudo ./Dht11_Speed ​​1000 10 

    여기서 1000은 1000ms(1초)의 지연을 지정하고 10은 읽을 샘플 수입니다.

    이 비디오는 코드를 복사하는 방법과 Raspbian을 실행하는 Raspberry Pi에서 컴파일하는 방법을 자세히 보여줍니다. Raspberry Pi에 Raspbian을 로드하는 방법을 배우려면 https://www.raspberrypi.org/downloads/raspbian/으로 이동하십시오.

    동영상

    아래 동영상은 애플리케이션 데모입니다.

    최고의 품질을 위해 극장 모드를 사용하여 YouTube에서 이 비디오를 보십시오.

    <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

    코드

    비주얼 스튜디오 2015 C#/C++ 소스 코드
    https://github.com/porrey/dht.git

    회로도

    Dht11_RPi2.fzz Dht11_Arduino.fzz

    제조공정

    1. 라즈베리 파이 온도 로거
    2. Raspberry pi를 사용하는 TMP006 온도 센서 Python 라이브러리,
    3. Python 및 Raspberry Pi 온도 센서
    4. Raspberry Pi의 1선식 온도 센서 DS1820(GPIO 직접)
    5. Raspberry Pi 1-와이어 디지털 온도계 센서(DS18B20)
    6. Raspberry Pi 온도 및 광 센서
    7. 라즈베리 파이 온도 센서
    8. DHT11 센서를 연결하는 라즈베리 PI 기반 IoT 프로젝트
    9. 베어링 온도 센서 | 탐지기
    10. 적외선 센서 온도 측정