ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [7~8ํšŒ์ฐจ-2] 4์กฑ ๋กœ๋ด‡ ๋ณดํ–‰ ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ์‘์šฉ๋™์ž‘
    ๋กœ๋ด‡๊ต์œก/7~8ํšŒ์ฐจ_๋กœ๋ด‡๋ณดํ–‰ 2020. 10. 2. 22:53

    1. ์ดˆ์ŒํŒŒ์„ผ์„œ(HC-SR04)

     

    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 ํ•€์— ๋ฌด๋ฆฌ๊ฐ€ ๊ฐ€์„œ ๋ณด๋“œ๊ฐ€ ๊ณ ์žฅ๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

     

    HC-SR04์™€ ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด GPIO ์—ฐ๊ฒฐ(์ €ํ•ญ์€ 1kΩ ์—ฐ๊ฒฐ)


     

    18-distance.py
    0.00MB

     

    ์˜ˆ์ œ ์†Œ์Šค(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
    0.00MB

     

    ์˜ˆ์ œ ์†Œ์Šค(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)

     

    ๋Œ“๊ธ€

Designed by Tistory.