오늘이라도

[Raspberry Pi] 6. 피에조 스피커, 기울기 센서, 터치 센서, 초음파 거리 센서, 온습도 센서 본문

취업성공패키지 SW 개발자 교육/사물 인터넷(IoT)

[Raspberry Pi] 6. 피에조 스피커, 기울기 센서, 터치 센서, 초음파 거리 센서, 온습도 센서

upcake_ 2020. 7. 13. 09:35
반응형

https://github.com/upcake/Class_Examples

교육 중에 작성한 예제들은 깃허브에 올려두고 있습니다. 

gif 파일은 클릭해서 보는 것이 정확합니다.


 - 피에조 스피커, 기울기 센서, 터치 센서, 초음파 거리 센서, 온습도 센서 -

 

▲피에조 스피커 작동 영상
import RPi.GPIO as GPIO
import time

piezo_pin = 11
GPIO.setmode(GPIO.BOARD)
GPIO.setup(piezo_pin, GPIO.OUT, initial=GPIO.LOW)

pi = GPIO.PWM(piezo_pin, 500)
pi.start(50)

try:
    while True:
        #100부터 1000까지 5씩 증가
        for i in range(100, 1000, 5):
            pi.ChangeFrequency(i)
            time.sleep(0.1)
            
        for i in range(1000, 100, -5):
            pi.ChangeFrequency(i)
            time.sleep(0.1)
            
except KeyboardInterrupt:
    GPIO.cleanup()

▲Piezo.py

 

 

▲기울기 센서 작동 영상

 

 

▲터치 센서 작동 화면
import RPi.GPIO as GPIO
import time

tilt_pin = 11 #터치 센서의 경우 센서만 바꾸면 됨

GPIO.setmode(GPIO.BOARD)
GPIO.setup(tilt_pin, GPIO.IN)

try:
    while True:
        a = GPIO.input(tilt_pin)
        print(a)
        time.sleep(1)
        
except KeyboardInterrupt:
    GPIO.cleanup()

 

▲Tilt, Touch.py

 

 

▲초음파 거리 센서 작동 영상

 

import RPi.GPIO as GPIO
import time

trig = 7
echo = 11

GPIO.setmode(GPIO.BOARD)
GPIO.setup(echo, GPIO.IN)
GPIO.setup(trig, GPIO.OUT)
GPIO.output(trig, GPIO.LOW)

def distance_check():
    GPIO.output(trig, GPIO.HIGH)
    time.sleep(0.00001)
    GPIO.output(trig, GPIO.LOW)
    
    stop = 0
    start = 0
    
    while GPIO.input(echo) == GPIO.LOW:
        start = time.time()
    while GPIO.input(echo) == GPIO.HIGH:
        stop = time.time()
    duration = stop -start
    distance = (duration * 340 * 100)/2
    
    return distance

try:
    while True:
        result_distance = distance_check()
        print("distance = %2fcm"%(result_distance))
        time.sleep(1)

except KeyboardInterrupt:
    GPIO.cleanup()

▲Ultrasonic distance sensor.py

 

 

▲온습도 센서 연결 사진

 

▲작동 화면

 

git clone https://github.com/adafruit/Adafruit_Python_DHT.git

cd Adafruit_Python_DHT (cd Ada 치고 Tab누르면 자동 완성)

sudo python3 setup.py install

▲온습도 센서를 쓰기 위한 라이브러리 설치

 

import RPi.GPIO as GPIO
import time

#파이썬 3 이상 부터 다운로드 받은 라이브러리 경로를 추가해야 함
import sys
sys.path.append('/home/pi/Adafruit_Python_DHT')
import Adafruit_DHT

sensor = Adafruit_DHT.DHT11 #DHT22면 22를 불러옴
pin = 17 #반드시 핀 넘버가 아닌 GPIO넘버로 해야함 (핀번호11, GPIO17)

try:
    while True:
        humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
        if humidity is not None and temperature is not None:
            print('Temp={0:0.1f}, Humidity={1:0.1f}%'.format(temperature, humidity))
        else:
            print('Failed to get reading. Try again!')
            
        time.sleep(1)

except KeyboardInterrupt:
    GPIO.cleanup()
            

▲temperature, humidity sensor.py

 

 

반응형