brunch

You can make anything
by writing

C.S.Lewis

by Master Seo May 01. 2019

8. 아두이노와 초음파 센서 사용하여 거리를 측정하기

<1> 서비스 구성도

<2> 아두이노 하드웨어 구성, 연결, 소프트웨어 올리기

<3> 초음파 센서 사용하여 거리 측정하기



<1> 서비스 구성도


<2> 아두이노 하드웨어 구성, 연결, 소프트웨어 올리기





<3> 초음파 센서 사용하여 거리 측정하기


=  거리센서 =  HC-SR04



1. 초음파 센서 4개 단자를  브레드보드에 연결한다.

-  VCC

- Gnd(그라운드)이다.

- Trig가 초음파를 발사

- Echo단자는 반사된 초음파를 받아서 신호를 다시 내보내는 역할을 한다.


2. 아두이노 VCC와 초음파 센서 VCC 연결한다.

3. 아두이노 Gnd와 초음파 센서 Gnd 연결한다.

4. 아두이노 Tx와 초음파 센서 Tx 연결한다.

5. 아두이노 Rx와 초음파 센서 Rx 연결한다..



6. 아두이노에 소프트웨어를 업로드해서 거리센서가 동작하는지 확인한다.



#define TRIG    2

#define ECHO    3


volatile unsigned long distance;


void setup() {

    pinMode(TRIG, OUTPUT);// TRIG를 출력 모드로 설정

    pinMode(ECHO, INPUT);// ECHO를 입력 모드로 설정


    Serial.begin(19200);// 시리얼 통신 속도를 19200 bps로 지정.

}


void loop() {

    // Trig에서 초음파를 발사..

    digitalWrite(TRIG, LOW);

    delayMicroseconds(2);   // 2us (2 / 1,000,000 초) 동안 지연

    digitalWrite(TRIG, HIGH);

    delayMicroseconds(10);  // 10us 동안 지연

    digitalWrite(TRIG, LOW);    

    // pulseIn함수를 사용해서 ECHO핀을 통해 초음파가 들어오는 시간 계산

    // 58.2로 나눈 것은 cm로 변경하기 위해서이다.

    distance = pulseIn(ECHO, HIGH) / 58.2; // ECHO핀이 HIGH가 될 때까지 시간을 구한다.


    // 컴퓨터 화면으로 뿌린다.

    Serial.print((uint8_t) distance);

    Serial.println(" cm");


    delay(200);// 200ms동안 지연..

  }




7. 블루투스를 연결한다.





8. 블루투스 연결 소스를 업로드한다.


#define TRIG    2

#define ECHO    3


#include <SoftwareSerial.h>

SoftwareSerial bluetooth(19, 18); // HC-06(TXD), HC-06(RXD)


volatile unsigned long distance;

volatile bool bReady = false;


void setup() {

    pinMode(TRIG, OUTPUT);// TRIG를 출력 모드로 설정

    pinMode(ECHO, INPUT);// ECHO를 입력 모드로 설정


    bluetooth.begin(9600);

}


void loop() {

  if(bluetooth.available()) {

    char cmd = bluetooth.read();

    switch(cmd) {

      case '1':

        bReady = true;

        break;            

      case '2':

        bReady = false;

        break;

    }

  }


  if(bReady) {

    // Trig에서 초음파를 발사..

    digitalWrite(TRIG, LOW);

    delayMicroseconds(2);   // 2us (2 / 1,000,000 초) 동안 지연

    digitalWrite(TRIG, HIGH);

    delayMicroseconds(10);  // 10us 동안 지연

    digitalWrite(TRIG, LOW);    

    // pulseIn함수를 사용해서 ECHO핀을 통해 초음파가 들어오는 시간 계산

    // 58.2로 나눈 것은 cm로 변경하기 위해서이다.

    distance = pulseIn(ECHO, HIGH) / 58.2; // ECHO핀이 HIGH가 될 때까지 시간을 구한다.

    if(distance > 255)

        distance = 0;    

    bluetooth.write((uint8_t) distance); // write(uint8_t val)    

    delay(100);// 100ms동안 중지..

  }

}




9. 앱인벤터로  블루투스 연결하고 제어하기

http://ai2.appinventor.mit.edu/





유튜브에 초음파 센서를 이용한 다른 부분도 있으니

시간 되면 해보기 바란다.




https://brunch.co.kr/@topasvga/2022



감사합니다.


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari