-
[7~8ํ์ฐจ-2] 4์กฑ ๋ก๋ด ๋ณดํ ํ๋ก๊ทธ๋๋ฐ - ์์ฉ๋์๋ก๋ด๊ต์ก/7~8ํ์ฐจ_๋ก๋ด๋ณดํ 2020. 10. 2. 22:53
1. ์ด์ํ์ผ์(HC-SR04)
์ด์ํ์ผ์๋?
์ด์ํ ์ผ์ ์ค ์ด๋ณด์ ๋๋ ์ ๋ฌธ์๊ฐ ์ฌ์ฉํ๊ธฐ์ ๊ฐ์ฅ ์ฝ๊ณ ๋ณดํธ์ ์ธ ๋ชจ๋ธ์ HC-SR04์ ๋๋ค. ํ์ด 4๊ฐ๋ก๋ง ์ ์ด๊ฐ ๋์ด ์ด๋ณด์๋ ์ฝ๊ฒ ์ผ์๋ฅผ ์ด์ฉํด ๋ณผ ์ ์์ต๋๋ค.
์ด์ํ๋ ์ธ๊ฐ์ด ๋ค์ ์ ์๋ ์๋ฆฌ์ ์์ญ(๊ฐ์ฒญ์์ญ) 20~30kHz ์ฃผํ์๋ณด๋ค ๋์ ์ฃผํ์ ๋์ญ์ ๊ฐ์ง ์์ ์ด์ํ๋ผ๊ณ ํฉ๋๋ค. ์๋๋ ์ฝ 340m/s์ด๋ฉฐ, ํ์ฐ-ํก์-์ฐ๋ ๋ฑ์ ์ํด ๊ฐ์ ํ๋ ์ฑ์ง์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
์ด์ํ๋ฅผ ์ด์ฉํด ๋ฌผ์ฒด์์ ๊ฑฐ๋ฆฌ๋ฅผ ์ธก์ ํ ์ ์์ต๋๋ค.
์ด์ํ์ผ์์์ Trig๋ ์ด์ํ๋ฅผ ๋ฐ์์ํค๋ฉฐ, Echo๋ ๋ฌผ์ฒด ๋ฐ ์ฅ์ ๋ฌผ์ ๋ฐ์ฌ๋์ด ๋์์ค๋ ์ด์ํ๋ฅผ ๋ฐ๋ ์ญํ ์ ํฉ๋๋ค. ์ด์ํ ๋ฐ์ ์๊ฐ๊ณผ ๋ฌผ์ฒด์ ๋ถ๋ชํ ๋ฐ์ฌ๋์ด ๋์์ค๋ ์๊ฐ์ฐจ๋ฅผ ์ด์ฉํ์ฌ ๊ฑฐ๋ฆฌ๋ฅผ ์ธก์ ํฉ๋๋ค.
์ฆ, [๊ฑฐ๋ฆฌ=์๋ ฅ×์๊ฐ]์ด๋ผ๋ ๋ฑ์๋ ์ด๋๊ฑฐ๋ฆฌ ๊ณ์ฐ์์ ์ด์ฉํฉ๋๋ค.
->์ฌ๊ธฐ์ ์๋ ฅ์ ์ด์ํ(์๋ฆฌ)์ ์๋๋ฅผ ์๋ฏธํ๋ฉฐ, 340m/s๋ก ๊ณ ์ ๊ฐ์ ๋๋ค.
๋์งํธ ์ ํธ๋ฅผ ์ฌ์ฉํ๋ ์ผ์ ์ค ํ๋์ธ ์ด์ํ ์ผ์(HC-SR04)๋ฅผ ์ฌ์ฉํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ๊ฑฐ๋ฆฌ ์ธก์ ์ผ๋ก ๋ํ์ ์ธ ์ผ์์ด๋ฉฐ, trig(ํธ๋ฆฌ๊ฑฐ) ํ๊ณผ echo(์์ฝ) ํ์ ์ด์ฉํฉ๋๋ค. ์ ์ธ์ ๊ณผ ๋น๊ตํ์ฌ ์ฃผ๋ณ ํ๊ฒฝ์ ์ํฅ์ ๋ ๋ฐ๊ธฐ ๋๋ฌธ์ ๋ง์ด ์ฌ์ฉ๋๊ณ ์์ต๋๋ค.
โถ ์ด์ํ ์ผ์: ์ด์ํ๋ก ๊ฑฐ๋ฆฌ๋ฅผ ์ธก์ ๋ฐ ์ฌ๋ฌผ์ ์ธ์ํ๋ ์ผ์
- ์ธก์ ๊ฑฐ๋ฆฌ: 2~400cm
- ์ ์ ๊ณต๊ธ ์ฅ์น: +5V DC
- ๋๊ธฐ ์ ๋ฅ: <2mA
Echo ํ์ ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด์ ์ฐ๊ฒฐํ ๋ ์ ํญ์ ์ฐ๊ฒฐํด์ผ ํฉ๋๋ค. ์ด์ํ ์ผ์์ Echo ํ์ High level ์ ํธ ๋ฐ์ ์ 5V ์ ์์ ์ถ๋ ฅํ๋๋ฐ ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด์ GPIO ์ ๋ ฅ์ 3.3V ์ฉ์ ๋๋ค. ๋ง์ฝ HC-SR04 ์ถ๋ ฅ์ ์ ํญ ์์ด ์ฐ๊ฒฐํ๊ฒ ๋๋ฉด ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด์ GPIO์ ์์์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ๊ทธ๋์ ์ ํญ์ ์ด์ฉํด์ ์ ์์ ๋ฎ์ถ๋ ๊ฒ์ ๋๋ค. ์ ํญ๊ฐ์ ๊ผญ 1ใ์ 2ใ์ด ์๋์ด๋ ๋ฉ๋๋ค. ๋๋ต ๋น์ทํ ์ ๋์ ๊ฐ์ ์ด์ฉํ๋ฉด ๋ฉ๋๋ค.
๋ผ์ฆ๋ฒ ๋ฆฌํ์ด์์๋ ์๋ ๋ถํ์ผ๋ก ์ฌ์ฉํ ๊ฒฝ์ฐ ์ ํญ ๊ณ์ฐ์์ด ์ฌ์ฉํ ์ ์์ด ํธ๋ฆฌํฉ๋๋ค. ์ธํ์ ๊ฑฐ์ ๋น์ทํ์ง๋ง 3.3V์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
HC-SR04P(HC-SR04+) ์ด์ํ ๊ฑฐ๋ฆฌ ์ผ์ / 3.3V, 5V ํธํ
5V์ 3.3V์์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ฉฐ, ์ข๋ ๋์ ๋ฒ์๋ฅผ ์ธก์ ํ ์ ์์ต๋๋ค.
ํน์ง (Features) :
5V์ 3.3V์์ ์ฌ์ฉ์ด ๊ฐ๋ฅํจ
HC-SR04๋ณด๋ค ๋ ๋์ ๋ฒ์๋ฅผ ์ง์ํจ (5V ๊ธฐ์ค)
์ฌ์ (Specification) :
์ ๋ ฅ ์ ์ : 3~5.5V
์ธก์ ๋ฒ์ : 2~450cm (5V ๊ธฐ์ค), 2~400cm (3.3V ๊ธฐ์ค)์ค๋น๋ฌผ ์ด์ํ์ผ์(HC-SR04), F-F์ ์ 4๊ฐ, (์ ํญ์ด ํ์ํ ๊ฒฝ์ฐ, ์ ํญ 2๊ฐ, F-F์ ์ 2๊ฐ)
๊ธฐ์กด์ ์ด์ํ์ผ์(HC-SR04)๋ Echoํ์์ ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด GPIO ํ์ 5V๋ก ์ ํธ๋ฅผ ๋ณด๋ ๋๋ค. ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด GPIO ํ์ 3.3V์ ์ ๋ ฅ๊น์ง๋ง ๋ฐ์ ์ ์์ผ๋ฏ๋ก ์ ์ ๋ถ๋ฐฐ ๋ฒ์น์ผ๋ก ์ ํญ์ ๋๋ ์ ์๋์ ๊ฐ์ด ํ๋ก๋ฅผ ๊ตฌ์ฑํ์ฌ 5V๋ฅผ 3.3V์ ๊ฐ๊น๊ฒ ์ ์์ ๋ด๋ ค์ ์ฐ๊ฒฐํฉ๋๋ค.
์ ํญ ์ฐ๊ฒฐ์์ด ์ง์ ์ ์ผ๋ก ์ฐ๊ฒฐํ์ฌ๋ ๋์์ ํ ์ ์์ผ๋ GPIO ํ์ ๋ฌด๋ฆฌ๊ฐ ๊ฐ์ ๋ณด๋๊ฐ ๊ณ ์ฅ๋ ์ ์์ต๋๋ค.
์์ ์์ค(18-distance.py) from gpiozero import DistanceSensor
from time import sleep
sensor = DistanceSensor(23, 24) #echo = 23, trigger = 24
while True:
print('Distance to nearest object is', sensor.distance, 'm')
sleep(1)2. ์ผ์ ๋ก๋ด ํ๋ก๊ทธ๋๋ฐ
์ด์ํ์ผ์๋ฅผ ํ์ฉํ์ฌ ๋ก๋ด์ด ์์ง์ผ ์ ์๋๋ก ํ๋ก๊ทธ๋จ์ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค. ๋ก๋ด์ ์์ผ๋ก ๊ณ์ ๊ฐ๋ค๊ฐ ์ด์ํ์ผ์๊ฐ 12cm๋ฏธ๋ง์ ๊ฑฐ๋ฆฌ๋ฅผ ์ธ์ํ๋ฉด ๋ค๋ก ์ ์ ์ด๋ ํ ์ขํ์ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค์ ์์ผ๋ก ๊ฐ๋ ํ๋์ ๋ฐ๋ณตํฉ๋๋ค.
์์ ์์ค(19-sensor-robot.py) from Robot4 import *
from gpiozero import DistanceSensor
r = Robot4()
r.setPWMFreq(50)
sensor = DistanceSensor(23, 24) #echo = 23, trigger = 24
r.sl(1,50) #๊ธฐ๋ณธ ์์ธ๋ก ์ธํ
sleep(0.5)
r.sr(2,50)
sleep(0.5)
r.sl(3,90)
sleep(0.5)
r.sr(4,90)
sleep(0.5)
r.sl(11,90)
sleep(0.5)
r.sr(12,90)
sleep(0.5)
r.sl(13,90)
sleep(0.5)
r.sr(14,90)
sleep(0.5)
while True:
#์ ์ง1~2
r.sr(12,60) #์ ์ค๋ฅธ์ชฝ ๋ค๋ฆฌ ์ฌ๋ฆผ
r.sl(13,60) #๋ค ์ผ์ชฝ ๋ค๋ฆฌ ์ฌ๋ฆผ
sleep(0.025)
r.sr(2,60) #์ ์ค๋ฅธ์ชฝ ์
r.sl(3,60) #๋ค ์ผ์ชฝ ์
sleep(0.025)
r.sr(12,90) #์ ์ค๋ฅธ์ชฝ ๋ค๋ฆฌ ๋ด๋ฆผ
r.sl(13,90) #๋ค ์ผ์ชฝ ๋ค๋ฆฌ ๋ด๋ฆผ
sleep(0.025)
#์ ์ง2
r.sl(11,60) #์ ์ผ์ชฝ ๋ค๋ฆฌ ์ฌ๋ฆผ
r.sl(14,60) #๋ค ์ค๋ฅธ์ชฝ ๋ค๋ฆฌ ์ฌ๋ฆผ
sleep(0.025)
r.sr(2,90) #์ ์ค๋ฅธ์ชฝ ์
r.sl(3,90) #๋ค ์ผ์ชฝ ์
sleep(0.025)
#์ ์ง3
r.sl(1,60) #์ ์ผ์ชฝ ์
r.sr(4,60) #๋ค ์ค๋ฅธ์ชฝ ์
sleep(0.025)
r.sl(11,90) #์ ์ผ์ชฝ ๋ค๋ฆฌ ๋ด๋ฆผ
r.sr(14,90) #๋ค ์ค๋ฅธ์ชฝ ๋ค๋ฆฌ ๋ด๋ฆผ
sleep(0.025)
#์ ์ง4
r.sr(2,60) #์ ์ค๋ฅธ์ชฝ ๋ค๋ฆฌ ์ฌ๋ฆผ
r.sl(3,60) #๋ค ์ผ์ชฝ ๋ค๋ฆฌ ์ฌ๋ฆผ
sleep(0.025)
r.sl(1,90) #์ ์ผ์ชฝ ์
r.sr(4,90) #๋ค ์ค๋ฅธ์ชฝ ์
sleep(0.025)
r.sr(2,90) #์ ์ค๋ฅธ์ชฝ ๋ค๋ฆฌ ๋ด๋ฆผ
r.sl(3,90) #๋ค ์ผ์ชฝ ๋ค๋ฆฌ ๋ด๋ฆผ
sleep(0.025)
if sensor.distance < 0.12: #์ด์ํ ์ผ์ ๊ฑฐ๋ฆฌ๊ฐ 12cm ๋ฏธ๋ง์ด๋ฉด ๋ค๋ก๊ฐ์ ์ขํ์
for i in range(7): #๋ค๋ก
#ํ์ง1
r.sl(11,60) #์ ์ผ์ชฝ ๋ค๋ฆฌ ์ฌ๋ฆผ
r.sr(14,60) #๋ค ์ค๋ฅธ์ชฝ ๋ค๋ฆฌ ์ฌ๋ฆผ
sleep(0.025)
r.sl(1,90) #์ ์ผ์ชฝ ์
r.sr(4,90) #๋ค ์ค๋ฅธ์ชฝ ์
sleep(0.025)
r.sl(11,90) #์ ์ผ์ชฝ ๋ค๋ฆฌ ๋ด๋ฆผ
r.sr(14,90) #๋ค ์ค๋ฅธ์ชฝ ๋ค๋ฆฌ ๋ด๋ฆผ
sleep(0.025)
#ํ์ง2
r.sl(1,50) #์ ์ผ์ชฝ ์
r.sr(4,50) #๋ค ์ค๋ฅธ์ชฝ ์
sleep(0.025)
#ํ์ง3
r.sr(12,60) #์ ์ค๋ฅธ์ชฝ ๋ค๋ฆฌ ์ฌ๋ฆผ
r.sl(13,60) #๋ค ์ผ์ชฝ ๋ค๋ฆฌ ์ฌ๋ฆผ
sleep(0.025)
r.sr(2,90) #์ ์ผ์ชฝ ์
r.sl(3,90) #๋ค ์ค๋ฅธ์ชฝ ์
sleep(0.025)
#ํ์ง4
r.sr(12,90) #์ ์ผ์ชฝ ๋ค๋ฆฌ ์ฌ๋ฆผ
r.sl(13,90) #๋ค ์ค๋ฅธ์ชฝ ๋ค๋ฆฌ ์ฌ๋ฆผ
sleep(0.025)
r.sr(2,50) #์ ์ค๋ฅธ์ชฝ ์
r.sl(3,50) #๋ค ์ผ์ชฝ ์
sleep(0.025)
for i in range(8): #์ขํ์
#์ขํ์ 1
r.sl(11,60)
r.sl(1,100)
sleep(0.025)
r.sl(11,90)
r.sr(12,60)
sleep(0.025)
r.sr(2,90)
r.sr(12,90)
sleep(0.025)
#์ขํ์ 2
r.sl(3,130)
r.sr(4,50)
sleep(0.025)
r.sr(2,50)
sleep(0.025)
r.sl(1,60)
r.sr(2,60)
sleep(0.025)
r.sl(3,90)
r.sr(4,90)
sleep(0.025)'๋ก๋ด๊ต์ก > 7~8ํ์ฐจ_๋ก๋ด๋ณดํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[7~8ํ์ฐจ-1] 4์กฑ ๋ก๋ด ๋ณดํ ํ๋ก๊ทธ๋๋ฐ - ๊ธฐ๋ณธ๋์ (0) 2020.09.12