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

Raspberry Pi용 DHT Tiny Breakout

하드웨어 구성요소: Atmel ATTiny85×1DHT22 온도 센서×1DHT11 온습도 센서×1SparkFun Tiny AVR Programmer×1Adafruit 4.7K Ω 저항기×3Adafruit 10K Ω 저항기×1Adafruit 100Ω 저항기×1Adafruit 버튼 확산 스위치×1Adafruit Tac.1Adafruit 확산 스위치×1Adafruit TAC×1Adafruit ″ 36핀 스트립 수 헤더1개 @ 길이 6, 1개 @ 길이 2(총 8핀)×1 일반 점퍼(0.1″)×1Arduino UNO 및 Genuino UNO 옵션 – 디버깅 및 테스트에 사용됩니다.×1소프트웨어 앱 및 온라인 서비스: Microsoft Visual Studio 2015Microsoft Windows 10 IoT CoreArduino IDE

스토리

소개

DHT11 및 DHT22는 매우 저렴한 비용으로 정확도 때문에 널리 사용되는 온도 및 습도 센서입니다. 그러나 이들의 한 가지 문제는 정확한 타이밍이 필요한 독점적인 단선 프로토콜을 통해 작동한다는 것입니다. 이러한 센서는 실시간이 아닌 운영체제를 사용하는 보드에서 읽기 어려운 것으로 입증되었습니다.

얼마 전에 "DHT11 /DHT22 온도 센서라는 제목의 기사를 게시했습니다. " C#의 Microsoft C++ 샘플 코드를 사용하여 이러한 센서를 읽는 방법을 보여줍니다. 라이브러리는 읽을 수 있었지만 더 안정적으로 만들기 위해 재시도 논리를 추가해야 했습니다. 이것은 대부분의 사람들에게 성공적인 것으로 판명되었지만 일부 사람들은 이것을 일관되게 작동시키는 데 문제가 있었습니다.

Windows 10 IoT Core를 실행하는 동안 Raspberry Pi에서 이러한 센서를 사용하는 것에 대한 관심 수준을 감안할 때 저는 저렴한 비용을 유지하면서 이러한 센서를 읽을 수 있는 매우 안정적인 방법을 제공하는 두 번째 옵션을 만들기로 결정했습니다.

개요

여기에 제시된 접근 방식은 DHT 센서를 저렴한 ATtiny85에 연결하고 I2C 슬레이브 장치로 설정하는 것입니다. 이것은 TinyWireS 라이브러리를 사용하고 장치와 상호 작용하기 위해 읽고 쓸 수 있는 레지스터 세트를 생성하여 수행됩니다.

장치는 다음 기능을 지원합니다.

<울>
  • DHT 센서를 읽는 빈도를 지정하는 구성 가능한 판독 간격입니다. 기본값은 2초마다 읽는 것입니다.
  • <울>
  • 간격을 비활성화하고 요청 시 판독을 수행하는 수동 모드입니다.
  • <울>
  • 현재 온도 판독값이 임계값보다 높거나 낮을 때 인터럽트 핀을 트리거하는 구성 가능한 상한 및 하한 온도 임계값
  • <울>
  • 구성된 설정을 전원을 켜거나 재설정한 후 복원할 수 있는 구성 저장 모드입니다.
  • <울>
  • 구성 재설정을 통해 저장된 구성을 기본값으로 재설정할 수 있습니다.
  • <울>
  • 전력을 절약하기 위해 센서에 대한 전원을 활성화 및 비활성화할 수 있는 센서 전력 제어.
  • <울>
  • 프로그래밍 가능한 i2c 장치 주소. 이 장치의 기본 주소는 0x26이지만 명령을 통해 변경할 수 있습니다. 장치는 주소를 기억합니다. 재설정하면 주소는 0x26으로 돌아갑니다. C# 라이브러리에는 i2c 버스에서 장치를 검색하는 코드도 포함되어 있으므로 연결할 주소를 알 필요가 없습니다.
  • <울>
  • 프로그래밍 가능한 DHT 모델 선택. 펌웨어의 기본값은 DHT22이지만 다른 모델을 사용하도록 장치에 명령을 보내 변경할 수 있습니다. 재부팅하거나 전원을 껐다 켤 때마다 사용할 모델 유형을 유지하도록 모델이 저장됩니다.
  • 소스 코드

    이 프로젝트에는 세 가지 코드 세트가 있습니다. 보드용 메인 펌웨어, Arduino Uno에 연결된 상태에서 보드를 테스트하고 시연하는 데 사용되는 Arduino 마스터 스케치 및 Raspberry Pi에서 장치를 사용하는 방법을 시연하는 Window 10 IoT Code 애플리케이션. 모든 코드는 연결된 GitHub 리포지토리에서 사용할 수 있습니다.

    장치/회로

    회로가 작고 몇 가지 저렴한 부품만 사용합니다. ATtiny85는 여러 공급업체에서 구입할 수 있습니다. 유용한 용도가 많기 때문에 몇 개만 선택하는 것이 좋습니다.

    이 회로에는 에테르를 다른 회로에 연결하거나 Raspberry Pi에 직접 연결할 수 있는 6핀 헤더가 있습니다. 핀은 다음과 같이 정의됩니다.

    <울>
  • GND -> 이것을 회로의 접지 또는 Raspberry Pi의 접지 핀에 연결합니다.
  • <울>
  • RST -> 이 핀은 장치를 재설정하거나 재부팅하는 데 사용됩니다. 이 핀은 정상 작동 시 5V에 연결해야 합니다. 장치를 재설정하려면 이 핀에서 일시적인 LOW 펄스를 트리거하십시오.
  • <울>
  • 지능 -> 이 핀에는 두 가지 목적이 있습니다. 임계값이 활성화되면 이 핀은 임계값을 초과할 때마다 HIGH가 되고 그렇지 않으면 LOW가 됩니다. 절전 모드를 사용할 때 이 핀은 순간적인 하이 펄스를 트리거하여 장치를 깨우는 데 사용됩니다.
  • <울>
  • SDA -> I2C SDA 라인.
  • <울>
  • SCL -> I2C SCL 라인.
  • <울>
  • 5V -> 5V 전원 공급 장치.
  • 또한 점퍼를 추가하여 활성화하거나 제거하여 온보드 LED를 비활성화할 수 있는 2핀 헤더가 있습니다.

    더 큰 프로젝트에서 이것을 사용할 때 DHT Tiny의 회로를 프로젝트의 기존 회로에 병합하거나 포함할 수 있습니다. 이 경우 헤더 핀과 LED는 옵션입니다.

    회로는 별도의 보드에 구축할 수도 있으며 몇 개의 전선이나 연결 케이블을 사용하여 Raspberry Pi에 연결할 수도 있습니다.

    ATtiny85 프로그래밍

    DHT_Tiny_Breakout.ino라는 스케치를 로드합니다. AVR 프로그래머를 사용하여 ATtiny85에. 프로그래머가 없으면 Arduino Uno(또는 유사한 보드)를 사용할 수 있습니다. 도움이 필요하면 아래에 나열된 기사 중 하나 이상을 살펴보십시오.

    <울>
  • Arduino Uno로 ATtiny85 프로그래밍 Hackster.io에서
  • <울>
  • 가상 워크샵:Arduino로 ATTiny85 프로그래밍
  • <울>
  • Arduino 1.6(또는 1.0)으로 ATtiny 프로그래밍
  • <울>
  • Arduino 0022로 ATtiny 프로그래밍
  • 저는 SparkFun Tiny AVR 프로그래머를 사용하여 ATtiny85를 로드합니다.

    16MHz에서 칩을 실행하고 있습니다. "ATtiny @ 16MHz라는 제목의 내 기사를 참조하세요. "를 수행하는 방법에 대한 지침을 참조하십시오.

    <블록 인용>

    ATtiny85를 사용할 때 슬레이브 스케치에는 TinyWireS가 필요합니다. 라이브러리 폴더에 설치할 라이브러리. 이 라이브러리는 https://github.com/rambo/TinyWire에서 다운로드할 수 있습니다.

    서킷 브레드보드

    첫 번째 단계는 DHT Tiny를 설치하고 브레드보드에서 실행하는 것입니다. 하프 사이즈 브레드보드를 ​​사용하여 프로젝트에 포함된 회로도 및 브레드보드 다이어그램에 따라 회로를 빌드합니다.

    다음은 더 쉽게 만드는 데 도움이 되는 몇 가지 팁입니다.

    <울>
  • DHT Tiny를 브레드보드에 빌드한 다음 DHT Tiny와 Uno 또는 Raspberry Pi 간의 연결을 위해 다른 브레드보드를 ​​사용합니다.
  • <울>
  • 헤더 핀을 사용하면 DHT Tiny를 단일 장치로 연결하고 분리하기가 더 쉽기 때문에 권장됩니다.
  • <울>
  • 브레드보드에 표준 분리형 수 헤더를 사용하려는 경우 브레드보드에 맞도록 검은색 플라스틱 테두리를 핀 중앙으로 조정해야 합니다(아래 이미지 참조). 니들 노즈 플라이어를 사용하여 조정하십시오.
  • <울>
  • 매우 긴 분리형 0.1″ 수 헤더가 있는 경우 브레드보드에 사용하십시오. 구성 요소를 PCB에 납땜하려면 일반 크기 헤더를 사용하십시오. PCB에는 여분의 길이를 사용하지 않는 것이 좋습니다.
  • <울>
  • 브레드보드의 헤더 핀을 사용하는 경우 암-암 점퍼 와이어가 필요합니다. 이것들이 없다면 헤더 핀을 생략하고 두 보드 사이에 수-수 점퍼 와이어를 사용하십시오.
  • <울>
  • 선을 칩에서 최대한 멀리 떨어뜨려 프로그래밍을 위해 손가락을 넣고 빼기 쉽도록 합니다.
  • 아래는 내 DHT Tiny의 브레드보드 버전 이미지입니다.

    Arduino Uno 연결

    빠른 테스트, 데모에 관심이 있거나 Raspberry Pi와 함께 작동하는 데 문제가 있는 경우 DHT Tiny를 Arduino Uno(또는 유사한 기기)에 연결할 수 있습니다.

    <울>
  • GND 연결 GND에 고정 우노에서.
  • <울>
  • 5V 연결 5V에 고정 우노에서.
  • <울>
  • RST 연결 D4에 고정 우노에서.
  • <울>
  • SDA 연결 A4에 고정 우노에서.
  • <울>
  • SCL 연결 A5에 고정 우노에서.
  • <울>
  • INT 연결 D3 에 고정 Uno에서 점퍼를 통해 LED를 활성화합니다.
  • DHT_Tiny_Master.ino라는 스케치를 로드하고 실행합니다. . 이 스케치는 직렬 모니터에 출력을 표시합니다. .

    두 보드 사이에 I2C를 연결할 때 SDA 및 SCL 라인에 풀업 저항을 갖는 것이 중요합니다. 이 회로에는 2개의 4.7K Ω이 핀과 5V 사이에 연결되어 있습니다.

    아래는 Arduino Uno에 연결된 DHT Tiny 브레드보드의 일부 이미지입니다.

    라즈베리 파이에 연결

    빠른 테스트, 데모에 관심이 있거나 Raspberry Pi와 함께 작동하는 데 문제가 있는 경우 DHT Tiny를 Arduino Uno(또는 유사한 장치)에 연결할 수 있습니다.

    <울>
  • GND 연결 GND에 고정 (9번 핀)을 Raspberry Pi 2/3에 연결합니다.
  • <울>
  • 5V 연결 5V에 고정 (핀 2)를 Raspberry Pi 2/3에 연결합니다.
  • <울>
  • RST 연결 GPIO4에 고정 (핀 7) Raspberry Pi 2/3.
  • <울>
  • SDA 연결 SDA 에 고정 (핀 3) Raspberry Pi 2/3.
  • <울>
  • SCL 연결 SCL 에 고정 (핀 5) Raspberry Pi 2/3에서.
  • <울>
  • INT 연결 GPIO17에 고정 (핀 11) 및 LED를 활성화합니다.
  • 두 보드 사이에 I2C를 연결할 때 SDA 및 SCL 라인에 풀업 저항을 갖는 것이 중요합니다. 이 회로에는 핀과 3V3 사이에 2개의 4.7K Ω이 연결되어 있습니다.

    <블록 인용>

    매우 중요합니다! DHT Tiny 보드는 Raspberry Pi의 5V 핀으로 전원이 공급되지만 풀업 저항은 Raspberry Pi의 3V3 핀에 연결해야 합니다(3V3은 핀 1과 17에 있음).

    다음은 Raspberry Pi 3에 연결된 DHT Tiny 브레드보드의 일부 이미지입니다.

    Windows 10 애플리케이션 실행

    프로젝트 하단의 GitHub 저장소 링크에서 코드를 가져와 컴퓨터에 압축을 풉니다. Visual Studio 2015에서 유니버설 애플리케이션 소스 코드를 열고 이를 Raspberry Pi에 배포하고 관리 콘솔에서 실행하거나 Visual Studio에서 디버그 모드로 실행합니다.

    Windows 10 IoT Core 애플리케이션용 Visual Studio에서 코드를 처음 실행하는 경우 Microsoft의 다음 문서를 살펴보십시오.

    <울>
  • Visual Studio로 앱 배포
  • <울>
  • Windows 장치 포털
  • DHT Tiny에 연결된 상태에서 Raspberry Pi 3에서 실행되는 애플리케이션을 보려면 아래 비디오 데모를 살펴보세요.

    애플리케이션 하이라이트

    Windows 10 UWP 애플리케이션은 DHT Tiny의 모든 기능을 보여주는 데모 애플리케이션입니다. 코드는 장치의 현재 온도, 습도 및 기타 레지스터 값을 표시합니다. UI는 또한 장치 주소를 포함하여 장치의 구성을 변경하는 방법을 제공합니다.

    DHT 소형 라이브러리

    샘플 코드는 DHT Tiny와 상호작용하도록 작성된 라이브러리를 사용합니다. 이 라이브러리는 바로 사용할 수 있으며 모든 애플리케이션에 직접 포함될 수 있습니다.

    NuGet에서 라이브러리 가져오기

    프로젝트를 애플리케이션에 직접 포함하지 않으려면 아래 표시된 명령을 사용하여 NuGet에서 DHT Tiny 라이브러리를 다운로드하기만 하면 됩니다. Visual Studio에서 패키지 관리자 콘솔을 열고 명령을 입력합니다.

    PM> 설치 패키지 IoT.DhtTiny 

    i2c 버스에서 장치 검색

    DHT Tiny 라이브러리에는 i2c 버스에서 DHT Tiny 장치를 검색하고 주소 목록을 반환하는 방법이 포함되어 있습니다. 이 목록은 발견된 하나 이상의 장치를 초기화하는 데 사용할 수 있습니다. 이것은 특히 장치의 주소를 변경했지만 주소를 설정한 것을 기억할 수 없는 경우에 유용합니다. 콜백 방법은 선택 사항입니다.

    // ***// *** i2c 버스에서 DHT Tiny 장치를 열거합니다.// ***IEnumerable 주소 =DhtTiny.FindAllDhtTinyAsync(이. FindAllDhtTinyCallback);// ***// *** 콜백 메소드// ***private void FindAllDhtTinyCallback(I2cScanEventArgs e) { int percentComplete =(int)((double)e.CurrentIndex / (double)e.Total * 100.0d); this.Status =string.Format("기기 찾기 [0x{0:X2}] [{1}%] [찾음 ={2:##0}]...", e.CurrentAddress, percentComplete, e.Items .Count());}  

    Raspberry Pi용 DHT Tiny Breakout의 개략도

    소프트웨어 데모

    이 동영상은 브레드보드의 DHT Tiny에 연결된 Raspberry Pi 3에서 실행되는 범용 애플리케이션을 모두 보여줍니다.

    [동영상 제공 예정]

    최종 장치 만들기

    보드를 만드는 가장 쉽고 비용 효율적인 방법은 Adafruit의 Perma-Proto Quarter-sized Breadboard PCB와 같은 PCB 프로토타입 보드를 사용하는 것입니다. 아래 이미지는 이 프로토타입 보드를 사용한 브레이크아웃을 보여줍니다. 참고로 저는 dremel을 사용하여 보드의 전원 레일 부분을 제거했습니다.

    자세히 보기:Raspberry Pi용 DHT Tiny Breakout


    제조공정

    1. Raspberry Pi의 온도 모니터링
    2. Raspberry Pi 2 기상 관측소
    3. Raspberry Pi에서 아날로그 입력이 없는 아날로그 센서
    4. 라즈베리 파이의 HC-SR04 초음파 범위 센서
    5. Raspberry Pi를 위한 최고의 액세서리
    6. MCP3008을 사용하는 Raspberry Pi의 아날로그 센서
    7. 시력:시각 장애인용
    8. Qwiic HAT for Raspberry Pi 연결 가이드
    9. Windows 10 IoT Core for Raspberry Pi 3 Model B+
    10. MonkMakes Raspberry Pi 로봇 키트 제작