행복한 하루
라즈베리파이 제로 프로젝트(6) – 온도,습도 구하기-1편(H/W 구성HTU21D) 본문
라즈베리파이 제로 프로젝트(6) – 온도,습도 구하기-1편(H/W 구성HTU21D)
변화의 물결 2020. 10. 2. 09:50
안녕하세요
오늘은 라즈베리파이 제로로 온도와 습도를 구할 하는 하드웨어 작업을 해보겠습니다. IoT 시스템 중에 기본적인 것이 온도, 습도를 데이터를 이용해서 여러 가지로 활용하는 것입니다.
예를 들면 실내온도가 갑자기 50도 이상이 되었을 때 화재로 인식하여 알람을 발생시켜주거나 습도가 90% 이상이라고 한다면 제습기를 자동으로 틀어주게 한다든지 여러 가지로 활용할 수 있습니다.
그래서 이번에 사용해볼 칩(CHIP)은 HTU21D 입니다. 프로그램 소스도 많고, 판매하는 곳도 많고 i2c로 디지털 데이터를 받을 수 있기 때문입니다. 그러나 가격은 아날로그 데이터를 가져오는 온도 센서보다는 가격이 조금 있습니다. 온도 정확도를 정밀하게 한다면 더 비싼 가격의 제품을 구할 수도 있습니다. 그러나 여기서는 온도, 습도를 함께 구해주고 정확도도 어느 정도 나오는 것으로 한다는 전제로 테스트해 보겠습니다.
1. 하드웨어 부품 준비
- 온도와 습도 값만 가져오는 테스트이기 때문에 더욱더 간단해집니다. 그리고 전자 부품 파는 곳에서 HTU21D 모듈 제품 달라고 하면 몇 가지 제품이 나오는데, 풀업 저항(PULL UP)이 붙은 것을 구하시면 테스트하는데 다른 부가적인 부품이 필요하지 않습니다.
1) 필요 부품 : 라즈베리파이 제로, HTU21D 모듈, 작은 브레드보드, 점프 케이블
2) HTU21D 모듈 미리 해 둘 작업
- 앞에 풀다운(PULL DOWN) 저항에 대해서 간단하게 설명해 드렸는데요. 이번에는 반대로 풀업입니다. 이것도 간단히 설명해 드리면, 기본적인 상태가 1(3.3V~5V)이 되게 하는 것입니다. 그래서 + 전원 쪽에 저항하나 걸어두고 데이터 신호나 입력 버튼에 사용하지 않을 때는 1인 상태를 가지게 하겠다고 보시면 됩니다.
그래서 어떤 모듈은 기본으로 칩 안에 풀업을 넣어두고 프로그램으로 조정할 수 있도록 하는 것도 있고 그것도 제조회사에서 가격이 든다고 생각하거나, 프로그래밍이 불가능한 것은 제품을 구매한 곳에서 저항을 붙여서 사용하라고 하는 곳도 있습니다. 그러니 데이터 시트를 보고 확인하셔야 통신이나 버튼 입력 시 오류를 피할 수 있습니다.
말이 길어졌는데요, 현재 모듈은 외부에 저항이 달린 대신에 사용하려면 중간에 납땜 연결(short)을 시켜주어야 합니다.
2. I2C 기본지식
- LCD 출력, 거리 센서 등에서도 사용하기 때문에 간단하게나마 어떤 내용인지 알고 있으면 좋지 않을까 합니다.
- I2C를 발음할 때는 아투씨 혹은 아스퀘얼씨 라고 발음합니다. 약자는 inter-integrated circuit라고 보면 됩니다. 모토로라에서 시작했고 … 역사부터 시작하면 길어지므로 바로 실용적인 내용만을 설명하겠습니다.
- 저전력에 사용되도록 설계되었고, 4가닥으로 구성됩니다. 전원 빼면 실제 2가닥으로 통신하게 됩니다. 한쪽은 Clock, 다른 한쪽은 Data라고 보면 됩니다. 그리고 데이터는 크게 Address정보와 Read/Write 데이터, Acknowledge, 실제 값 데이터로 구성되어 보내진 다고 생각하시면 됩니다. 그리고 데이터는 8bit로 구성되어 있습니다.
3. 배 선
- I2C 통신 배선이 간단해 점퍼 연결만으로 가능합니다.
라즈베리파이 제로 | HTU21D 모듈 |
PIN_1 (3.3V) | +(3.3V) |
PIN_3 (SDA) | DA(SDA) |
PIN_5 (SCL) | CL(SCL) |
PIN_9 (GND) | -(GND) |
여기까지 하드웨어 준비해두고 2편에서 I2C 검색과 관련한 라이브러리를 설치하고 값을 읽어오는 작업을 해보도록 하겠습니다.
감사합니다.
'RaspberryPi > Raspberry Pi Zero' 카테고리의 다른 글
라즈베리파이 제로 프로젝트(6) – 온도,습도 구하기-번외 편(HTU21D python2 소스를 python3 버전으로 수정) (0) | 2020.10.08 |
---|---|
라즈베리파이 제로 프로젝트(6) – 온도,습도 구하기-2편(HTU21D python 프로그래밍) (0) | 2020.10.05 |
라즈베리파이 제로 프로젝트(5) – 스위치 입력 받기 (0) | 2020.09.30 |
라즈베리파이 제로 프로젝트(4) – LED 제어 – 4 (밝기 조절) (0) | 2020.09.26 |
라즈베리파이 제로 프로젝트(4) – LED 제어 – 3 (python3) (0) | 2020.09.25 |