Raspberry Pi 초음파센서, PIR센서, 온습도 센서
- IoT
- 2022. 4. 21.
초음파센서
VCC - 5v
Trig - 23번핀
Echo - 24번핀
GND - GND
import RPi.GPIO as g
import time
TRIGER = 23
ECHO = 24
g.setmode(g.BCM)
g.setup(TRIGER, g.OUT)
g.setup(ECHO, g.IN)
def getDistance():
g.output(TRIGER, False)
time.sleep(1)
g.output(TRIGER,True)
time.sleep(0.00001) #10ms초 만큼 신호 발생
g.output(TRIGER, False)
while g.input(ECHO) == 0 :
pulse_start = time.time() #현재시간을 측정 - HIGH신호가 발생되는 시간을 측정
while g.input(ECHO) == 1:
pulse_end = time.time() #ECHO핀이 LOW신호가 발생되는 시간을 측정
pulse_duration = pulse_end - pulse_start
distance = pulse_duration * 340 * 100 / 2
distance = round(distance,2) #소수점 2자리까지
return distance
if __name__ == "__main__" :
try:
while True:
distance_value = getDistance()
if 2 < distance_value < 400 :
print("distance: %.2f cm" % distance_value)
else:
print("범위가 벗어남")
except KeyboardInterrupt:
pass
finally:
g.cleanup()
PIR센서
<선 조절값> 인 상태로
맨 위 VCC - 3.3V
가운데 아웃풋 - 17번핀
맨 아래 GND - GND
import RPi.GPIO as g
import time
g.setmode(g.BCM)
g.setup(17,g.IN)
try:
while True:
if g.input(17) == 1:
print("motion detected...")
else:
print("no motion...")
time.sleep(1)
except KeyboardInterrupt:
pass
finally:
g.cleanup()
온습도 센서
Adafruit_DHT 라이브러리를 사용해야한다.
근데 기존에 사용하던 Adafruit-DHT 라이브러리가 오래된 라이브러리이고 더이상 업데이트가 되지 않음
라즈베리파이4에 추가된 내용이 반영되어 있지 않음
1. 통신패키지 설치
- 센서들과 통신 할 수 있는 통신패키지를 설치
- libgpiod2 패키지 설치
- sudo apt install libgpiod2 명령어 입력
2. 파이썬 통신 패키지 설치
- 라즈베리파이에서 GPIO와 통신할 수 있는 패키지 설치
- 파이썬 내부에서 센서와 통신할 수 있도록 구성
- 보드 컨트롤러 id파악
- 아날로그랑 디지털 입출력 핀 구성
- 데이터 전송을 위해서 필요한 파이썬 패키지 설치
- pip3 install adafruit-blinka 명령어 입력
3. 파이썬 온습도 모듈 설치
- 센서를 파이썬에서 사용하기 위해서 작업
- pip3 install adafruit-circuitpython-dht
- : GND
가운데 : 핀
+ : 5V
import time
import board # 데이터 송신용 board모듈
import adafruit_dht
mydht11 = adafruit_dht.DHT11(board.D20)
while True:
try:
humidity_data = mydht11.humidity
temperature_data = mydht11.temperature
print(humidity_data, temperature_data)
time.sleep(2) # 대기시간이 2초 필요 - 센서 내부에서 초기화작업시 필요한 시간
except RuntimeError as error:
print(error.args[0])
finally:
pass