Raspberry Pi 초음파센서, PIR센서, 온습도 센서

초음파센서

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

댓글

Designed by JB FACTORY