Top 38 아두 이노 초음파 센서 활용 All Answers

You are looking for information, articles, knowledge about the topic nail salons open on sunday near me 아두 이노 초음파 센서 활용 on Google, you do not find the information you need! Here are the best content compiled and compiled by the https://chewathai27.com/to team, along with other related topics such as: 아두 이노 초음파 센서 활용 초음파 센서 활용 사례, 아두이노 초음파 센서 물체 감지, 아두이노 초음파센서 거리측정 코딩, 아두이노 초음파 센서 거리 측정 소리, 아두이노 초음파 센서 경고음, 아두이노 초음파 센서 자율주행, 아두이노 초음파센서 코드, 아두이노 초음파센서 0cm


[Arduino] LED Control by Measuring Distance with Ultrasonic Sensor
[Arduino] LED Control by Measuring Distance with Ultrasonic Sensor


아두이노와 초음파센서를 활용한 초음파거리계 | 싸이피아SCIPIA

  • Article author: scipia.co.kr
  • Reviews from users: 13092 ⭐ Ratings
  • Top rated: 3.9 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 아두이노와 초음파센서를 활용한 초음파거리계 | 싸이피아SCIPIA 검출 거리는 2cm~400cm이며 정밀도는 0.3cm입니다. 초음파 모듈의 동작 원리는 다음과 같습니다. 먼저 아두이노 보드에서 초음파 모듈의 Trig로 약 5μs의 짧은 펄스를 측정 … …
  • Most searched keywords: Whether you are looking for 아두이노와 초음파센서를 활용한 초음파거리계 | 싸이피아SCIPIA 검출 거리는 2cm~400cm이며 정밀도는 0.3cm입니다. 초음파 모듈의 동작 원리는 다음과 같습니다. 먼저 아두이노 보드에서 초음파 모듈의 Trig로 약 5μs의 짧은 펄스를 측정 …
  • Table of Contents:

아두이노와 초음파센서를 활용한 초음파거리계

제품구매 정보

Follow Us

아두이노와 초음파센서를 활용한 초음파거리계 | 싸이피아SCIPIA
아두이노와 초음파센서를 활용한 초음파거리계 | 싸이피아SCIPIA

Read More

아두이노 초음파센서 활용 예제

  • Article author: abc0123.tistory.com
  • Reviews from users: 35734 ⭐ Ratings
  • Top rated: 4.2 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 아두이노 초음파센서 활용 예제 아두이노 초음파센서 초음파를 이용해서 거리를 측정할 수 있는 초음파센서에 대해서 알아보고 이 녀석을 활용한 예제를 만들어볼 텐데 예제는 우리 … …
  • Most searched keywords: Whether you are looking for 아두이노 초음파센서 활용 예제 아두이노 초음파센서 초음파를 이용해서 거리를 측정할 수 있는 초음파센서에 대해서 알아보고 이 녀석을 활용한 예제를 만들어볼 텐데 예제는 우리 … 아두이노 초음파센서 초음파를 이용해서 거리를 측정할 수 있는 초음파센서에 대해서 알아보고 이 녀석을 활용한 예제를 만들어볼 텐데 예제는 우리 일상생활에서도 자주 듣는 소리 중의 하나인 자동차 후진 경고..
  • Table of Contents:
아두이노 초음파센서 활용 예제
아두이노 초음파센서 활용 예제

Read More

아두이노 초음파 센서와 부저 활용

  • Article author: 3dplife.tistory.com
  • Reviews from users: 5447 ⭐ Ratings
  • Top rated: 3.6 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 아두이노 초음파 센서와 부저 활용 아두이노 초음파 센서와 부저 활용. 메카럽 2020. 10. 13. 09:51. 반응형. 안녕하세요. 메카럽입니다. 이번 포스팅에서는 지난 포스팅에 이어서 초음파 센서와 부저를 … …
  • Most searched keywords: Whether you are looking for 아두이노 초음파 센서와 부저 활용 아두이노 초음파 센서와 부저 활용. 메카럽 2020. 10. 13. 09:51. 반응형. 안녕하세요. 메카럽입니다. 이번 포스팅에서는 지난 포스팅에 이어서 초음파 센서와 부저를 … 안녕하세요. 메카럽입니다. 이번 포스팅에서는 지난 포스팅에 이어서 초음파 센서와 부저를 이용하여 근접 감지기를 만들어 보도록 하겠습니다. 근접 감지기는 포탄이나 유도탄의 거리, 표적의 속도, 회피기동, 센..오토캐드&기계제도기능사 온라인 강의
    https://mechalove.liveklass.com
  • Table of Contents:

아두이노 초음파 센서와 부저 활용

티스토리툴바

아두이노 초음파 센서와 부저 활용
아두이노 초음파 센서와 부저 활용

Read More

아두이노와 초음파센서로 생각하게 만들기 – DATA ON-AIR

  • Article author: dataonair.or.kr
  • Reviews from users: 34126 ⭐ Ratings
  • Top rated: 4.9 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 아두이노와 초음파센서로 생각하게 만들기 – DATA ON-AIR 이번 시간에는 초음파 센서의 사용법을 익히고, 로봇이 초음파 센서를 활용해 거리를 인식하고 행동에 변화를 줄 수 있도록 구현해 본다. 시리얼 통신. 초음파 센서를 사용 … …
  • Most searched keywords: Whether you are looking for 아두이노와 초음파센서로 생각하게 만들기 – DATA ON-AIR 이번 시간에는 초음파 센서의 사용법을 익히고, 로봇이 초음파 센서를 활용해 거리를 인식하고 행동에 변화를 줄 수 있도록 구현해 본다. 시리얼 통신. 초음파 센서를 사용 … 아두이노 로봇 만들기 프로젝트 아두이노와 초음파센서로 생각하게 만들기 지난 시간에는 DC 모터를 이용해 로봇의 바퀴(다리) 부분을 만들고 로봇이 주행할 수 있도록 했고, 서보(servo)모터로 로봇의 팔을 움직이도록 구현했다. 이번 시간에는 초음파 센서의 사용법을 익히고, 로봇이 초음파 센서를 활용해 거리를 인식하고 행동에 변화를 줄 수 있도록 구현해 본다. 시리얼 통신 초음파 센서를 사용하기에 앞서 아두이노와 컴퓨터 간의 시리얼 통신 사용법을 알아본다. 시리얼 통신을 이용해 센서로부터 받은 값이나 일정 반응에 어떠한 값을 생성하는 지 확인하고 싶다면 아두이노 IDE의 시리얼 모니터로 확인할 수 있다. 이제 아두이노에서 제공하는 AnalogReadSerial 예제를 사용해 시리얼 통신을 사용해 보자. 시리얼 통신을 확인하기 위해 가변저항을 아두이노의 아날로그핀 0번(A0)에 연결한다. 시리얼 통신을 위해서는 Serial.begin() 함수를 사용한다. Serial.begin()은 시리얼 포트를 열고 데이터 속도를 맞춰주는 역할을 한다. 형태는 Serial.begin(speed);이며, 보통 9600bps의 속도를 사용한다. 시리얼 모니터에 글씨를 띄우려면 Serial.println() 또는 Serial.print() 함수를 사용한다. Serial.println()과 Serial.print() 모두 시리얼 모니터에 글씨를 표현하는 함수지만, Serial.println()은 글씨를 출력함과 동시에 한 줄을 띄우는 역할을 한다. 형태는 Serial.println(변수명); 또는 Serial.println(“문자”);로 사용한다. <리스트 1> AnalogReadSerial 예제 void setup() { Serial.begin(9600); } void loop() { int sensorValue = analogRead(A0); Serial.println(sensorValue); delay(1); } <리스트 1>의 코드를 아두이노에 업로드하고 아두이노 IDE의 시리얼 모니터를 확인해 보면 가변저항을 움직일 때마다 시리얼 모니터에 나오는 숫자의 값이 바뀌는 것을 확인할 수 있다. 시리얼 모니터에 출력되는 값은 analogRead(A0)의 값으로, 이를 이용해 다양한 센서 값을 받아 시리얼 모니터로 확인할 수 있다. 초음파 센서 초음파란 사람이 들을 수 있는 음역대(가청)를 넘는 음파를 말한다. 초음파는 파장이 짧아 일정한 방향을 가진 음파를 만들어 낼 수 있다. 초음파 센서는 수신부와 발신부를 가지고 있으며, 발신부에서 발생시킨 초음파가 수신부로 반사되는 시간을 토대로 거리를 측정한다. 초음파 센서는 수신부와 발신부가 일체형인 것과 서로 분리된 형태의 두 가지가 있다. 필자는 분리형 초음파 센서인 SR04 모듈을 사용했다. 초음파 센서의 발신부는 일정한 간격으로 초음파를 발사한다. 발신부에서 나온 초음파는 벽 또는 장애물에 부딧혀 돌아오는데, 이를 수신부에서 측정하게 된다. 이렇게 측정되기까지 걸린 시간을 토대로 장애물까지의 거리를 산출하게 된다. 초음파 센서는 장애물의 색상이나 얇은 막의 금속, 액체에 상관없이 음파가 반사돼 돌아오는 거리를 측정할 수 있다. 그러나 이번 시간에 사용할 초음파 센서는 저가의 모델이므로 곡선이나 대각선의 구조를 가진 장애물에 대해서는 잘 인식하지 못한다. 곡선 또는 대각선의 장애물에 대해 필자가 사용할 초음파 센서는 실제보다 훨씬 더 먼 거리의 값을 측정하게 되므로 주의해야 한다. 아두이노 연결 초음파 센서의 Triger 핀을 아두이노의 7번 핀에 연결하고, Echo 핀을 아두이노의 8번 핀에 연결한다. 초음파 센서의 Vcc와 GND는 아두이노의 Vcc와 GND에 연결한다. 초음파 센서는 설치 각도와 대각선, 곡선 장애물과 같은 외부 환경에 민감하므로 설치 시 주의해야 한다. 초음파 센서 사용하기 이제 초음파 센서를 사용하기 위한 코드를 작성해 보자. 초음파 센서는 pulseIn() 함수를 사용해 제어할 수 있다. pulseIn() 함수는 해당 핀의 펄스에 대해 HIGH, LOW 값을 읽어서 HIGH 값이 들어오면 LOW 값이 들어올 때까지 기다리고, LOW 값이 들어오면 그 동안의 시간을 microseconds 단위로 반환한다. pulseIn은 pulseIn(pin번호,값);과 같이 입력해 사용한다. <리스트 2> 초음파 센서로 거리 측정 int TrigPin = 7; int EchoPin = 8; int cm; void setup() { Serial.begin(9600); pinMode(TrigPin, OUTPUT); pinMode(EchoPin, INPUT); } void loop() { digitalWrite(TrigPin, LOW); delayMicroseconds(2); digitalWrite(TrigPin, HIGH); delayMicroseconds(10); digitalWrite(TrigPin, LOW); cm = pulseIn(EchoPin, HIGH) / 58.0; Serial.print(cm); Serial.println(“cm”); delay(500); } 초음파 센서는 발신부인 Triger 핀과 수신부인 Echo 핀으로 구성돼 있기 때문에 Triger 핀은 OUTPUT(출력), Echo 핀은 INPUT(입력)으로 설정해야 한다. <리스트 2>의 소스를 아두이노에 업로드하면 초음파 센서로부터 받은 값이 cm 단위로 변환되고, 해당 값을 아두이노 IDE의 시리얼 모니터로 확인할 수 있다. <리스트 2>는 0.5초마다 시리얼 모니터로 확인할 수 있는 소스이며, 시리얼 모니터로 받는 값을 빠르게 또는 더 느리게 받으려면 delay(500);에서 500에 해당하는 값을 변경하면 된다. 팔 동작 만들기 초음파 센서로부터 받은 거리 정보를 토대로 거리에 따라 로봇의 팔 동작이 다르게 움직이도록 구현할 것이다. 로봇의 팔과 연결된 서보모터가 거리에 따라 다르게 반응하도록 함으로써 움직임에 변화를 줄 수 있다. <리스트 3> 거리에 따른 팔 동작 만들기 #include Servo myservo; Servo myservo2; int TrigPin = 7; int EchoPin = 8; int cm; void setup() { Serial.begin(9600); pinMode(TrigPin, OUTPUT); pinMode(EchoPin, INPUT); myservo.attach(9); myservo2.attach(10); } void loop() { digitalWrite(TrigPin, LOW); delayMicroseconds(2); digitalWrite(TrigPin, HIGH); delayMicroseconds(10); digitalWrite(TrigPin, LOW); cm = pulseIn(EchoPin, HIGH) / 58.0; Serial.print(cm); Serial.println(“cm”); if(cm< =5) { myservo.write(0); myservo2.write(180); delay(100); } else { myservo.write(0); myservo2.write(90); delay(100); myservo.write(90); myservo2.write(180); delay(100); } } 초음파 센서에서 받은 거리를 cm 기준으로 원하는 거리 만큼 나눠 서보모터의 동작을 다르게 분리한다. 거리에 따른 동작을 세분화하려면 else if()를 통해 거리를 추가해야 한다. <리스트 3>의 소스를 아두이노에 업로드하면 초음파 센서가 벽과 5cm 이상 떨어져 있을 때 팔을 왔다갔다하는 동작을 반복하게 된다. 반대로 초음파 센서가 벽과 5cm 이하로 접근하면 로봇이 양 팔을 하늘로 번쩍 들어올리는 동작을 취하게 될 것이다. 자동 회피 기능 구현하기 초음파 센서로부터 받은 거리 정보를 토대로 장애물과 로봇이 일정 거리 이하로 가까워지면 오른쪽 또는 왼쪽으로 회피하는 기능을 구현할 것이다. <리스트 4> 자동 회피 기능 int TrigPin = 7; int EchoPin = 8; int cm; int motor1a = 3; int motor1b = 4; int motor2a = 5; int motor2b = 6; void setup() { Serial.begin(9600); pinMode(TrigPin, OUTPUT); pinMode(EchoPin, INPUT); pinMode(motor1a, OUTPUT); pinMode(motor1b, OUTPUT); pinMode(motor2a, OUTPUT); pinMode(motor2b, OUTPUT); } void loop() { digitalWrite(TrigPin, LOW); delayMicroseconds(2); digitalWrite(TrigPin, HIGH); delayMicroseconds(10); digitalWrite(TrigPin, LOW); cm = pulseIn(EchoPin, HIGH) / 58.0; Serial.print(cm); Serial.println(“cm”); if(cm< =5) { digitalWrite(motor1a, LOW); digitalWrite(motor1b, HIGH); digitalWrite(motor2a, LOW); digitalWrite(motor2b, HIGH); delay(500); digitalWrite(motor1a, LOW); digitalWrite(motor1b, LOW); digitalWrite(motor2a, HIGH); digitalWrite(motor2b, LOW); delay(500); } else { digitalWrite(motor1a, HIGH); digitalWrite(motor1b, LOW); digitalWrite(motor2a, HIGH); digitalWrite(motor2b, LOW); delay(500); } } <리스트 4>는 로봇이 앞으로 나아가다가 벽 또는 장애물을 만났을 때 후진한 후 좌 또는 우회전함으로써 장애물을 피하도록 구현한 코드다. 로봇 구성하기 이제 이전까지 아두이노와 부품을 연결했던 것과 코드를 합쳐 로봇의 전체적인 움직임을 만들어 보자. 아두이노와 부품들의 연결이 다소 복잡해 보이더라도 각 부품별로 하나씩 차근차근 연결하다보면 어렵지 않게 연결을 마칠 수 있다. 아두이노와 부품 간의 연결이 끝나면 구성한 로봇의 내부에 아두이노를 비롯한 부품들을 삽입하고 팔을 구성하는 서보모터와 다리 역할을 하는 DC 모터를 단단하게 고정시킨다. <리스트 5> 전체적인 아두로봇의 소스 코드 #include #define TrigPin 7 #define EchoPin 8 Servo myservo; Servo myservo2; int motor1a = 3; int motor1b = 4; int motor2a = 5; int motor2b = 6; void setup() { pinMode(TrigPin, OUTPUT); pinMode(EchoPin, INPUT); myservo.attach(9); myservo2.attach(10); pinMode(motor1a, OUTPUT); pinMode(motor1b, OUTPUT); pinMode(motor2a, OUTPUT); pinMode(motor2b, OUTPUT); } void loop() { int cm; digitalWrite(TrigPin, LOW); delayMicroseconds(2); digitalWrite(TrigPin, HIGH); delayMicroseconds(10); digitalWrite(TrigPin, LOW); cm = pulseIn(EchoPin, HIGH) / 58; delay(50); if(cm < = 5) { myservo.write(0); myservo2.write(180); //delay(50); digitalWrite(motor1a, LOW); digitalWrite(motor1b, HIGH); digitalWrite(motor2a, LOW); digitalWrite(motor2b, HIGH); delay(500); digitalWrite(motor1a, LOW); digitalWrite(motor1b, LOW); digitalWrite(motor2a, HIGH); digitalWrite(motor2b, LOW); delay(500); } else { myservo.write(0); myservo2.write(90); delay(500); digitalWrite(motor1a, HIGH); digitalWrite(motor1b, LOW); digitalWrite(motor2a, HIGH); digitalWrite(motor2b, LOW); myservo.write(90); myservo2.write(180); delay(500); } } <리스트 5>를 아두이노에 업로드하면 로봇이 장애물의 거리를 파악해 팔의 움직임을 달리하며 이동하게 된다. 로봇의 팔이 예상과 다르게 움직인다면 처음에 연결한 서보모터와 팔의 결합 위치가 달라져 발생하는 것이므로 서보모터의 각도를 변경하거나 원하는 각도에 맞게 팔을 다시 붙여 완성한다. 로봇이 설정해 놓은 거리보다 많이 멀거나 짧을 때 작동한다면 코드의 delay()를 조절하거나 초음파 센서가 전방을 향하고 있는지 다시 점검해 보자. 같은 DC 모터라도 저가의 모터일 경우 모터의 세기가 많이 다를 수 있다. 이 경우 로봇이 직진을 하지 못하고 원을 그리며 움직이게 된다. 이럴 때는 아두이노에 연결된 motor1a, motor1b, motor2a, motor2b 핀을 PWM이 가능한 핀으로 옮겨 모터의 출력을 PWM으로 조절해 직진이 되는 구간을 찾아 코드를 완성한다. 블루투스 무선 조종 지금까지 우리는 자동으로 움직이는 로봇을 만들어 봤다. 이번에는 무선으로 조종할 수 있는 로봇을 구현해 보자. 로봇을 무선 조종하기 위해 필자는 블루투스 모듈을 사용할 것이다. 블루투스는 근거리 무선통신 기술로 약 10m 정도의 통신 범위를 가진다. 이 범위는 일반적으로 100m까지 연장할 수 있다. 블루투스의 무선통신은 ISM 대역을 사용하는데, 다른 통신과의 간섭을 막기 위해 2.402GHz에서 2.480GHz의 79개 채널을 사용한다. ISM은 산업, 과학, 의료용으로 할당된 주파수 대역으로 전파 사용 허가를 받을 필요가 없어 저전력의 전파를 사용하는 개인용 무선 기기에 많이 사용된다. ISM 대역은 일반적으로 무선랜, 블루투스, 아마추어 무선 기기 등에서 사용하고 있다. 필자가 사용할 블루투스 모듈은 HC-06 모델이다. 아두이노와의 연결은 블루투스 모듈에서 Vcc, GND, TXD, RXD 핀만 사용한다. TXD는 발신부이고 RXD는 수신부다. 일반적으로 블루투스 모듈은 Vcc에 3.3V를 인가한다. <리스트 6> 블루투스를 이용해 로봇 조종하기 #include #include SoftwareSerial BTSerial(11,12);//RX,TX Servo myservo; Servo myservo2; int motor1a = 3; int motor1b = 4; int motor2a = 5; int motor2b = 6; void setup() { BTSerial.begin(9600); myservo.attach(9); myservo2.attach(10); pinMode(motor1a, OUTPUT); pinMode(motor1b, OUTPUT); pinMode(motor2a, OUTPUT); pinMode(motor2b, OUTPUT); } void loop() { if(BTSerial.available()>0) { char a = BTSerial.read(); if(a == ‘w’) { digitalWrite(motor1a, HIGH); digitalWrite(motor1b, LOW); digitalWrite(motor2a, HIGH); digitalWrite(motor2b, LOW); } else if(a == ‘x’) { digitalWrite(motor1a, LOW); digitalWrite(motor1b, HIGH); digitalWrite(motor2a, LOW); digitalWrite(motor2b, HIGH); } else if(a == ‘a’) { digitalWrite(motor1a, LOW); digitalWrite(motor1b, LOW); digitalWrite(motor2a, HIGH); digitalWrite(motor2b, LOW); } else if(a == ‘d’) { digitalWrite(motor1a, HIGH); digitalWrite(motor1b, LOW); digitalWrite(motor2a, LOW); digitalWrite(motor2b, LOW); } } } <그림 11>과 같이 연결하고 <리스트 6>을 아두이노에 업로드하면 로봇에 대한 부분이 완성된다. 이제 앱 마켓에서 블루투스 앱을 검색해 마음에 드는 것을 다운로드하자. 스마트폰과 로봇의 블루투스를 앱으로 연결한 다음 움직이는 명령어를 입력하면 로봇이 움직이는 것을 확인할 수 있다. 어렵지 않은 아두이노 로봇 구현 이번 시간에는 지난 시간에 DC 모터와 서보모터를 활용해 움직임을 구현했던 로봇에 초음파 센서를 추가해 스스로 장애물을 피하도록 만들어 봤다. 또 더 나아가 블루투스를 활용해 스마트폰 앱으로 로봇을 무선 제어하는 것도 시도해 봤다. 이처럼 각종 센서와 아두이노를 활용하면 자신이 꿈꿔왔던 것들을 직접 구현해 볼 수 있다. 아두이노나 레고에 관심 있는 독자들이 이번 연재를 통해 배운 내용을 응용해 자신이 꿈꿔왔던 세계를 직접 구현하며 상상의 나래를 펼칠 수 있길 바란다.
  • Table of Contents:
아두이노와 초음파센서로 생각하게 만들기 – DATA ON-AIR
아두이노와 초음파센서로 생각하게 만들기 – DATA ON-AIR

Read More

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

  • Article author: brunch.co.kr
  • Reviews from users: 37002 ⭐ Ratings
  • Top rated: 3.2 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 8. 아두이노와 초음파 센서 사용하여 거리를 측정하기 초음파 센서 4개 단자를 브레드보드에 연결한다. – VCC. – Gnd(그라운드)이다. – Trig가 초음파를 발사. – Echo단자는 반사된 초음파를 받아서 신호를 … …
  • Most searched keywords: Whether you are looking for 8. 아두이노와 초음파 센서 사용하여 거리를 측정하기 초음파 센서 4개 단자를 브레드보드에 연결한다. – VCC. – Gnd(그라운드)이다. – Trig가 초음파를 발사. – Echo단자는 반사된 초음파를 받아서 신호를 … 목차 <1> 서비스 구성도 <2> 아두이노 하드웨어 구성, 연결, 소프트웨어 올리기 <3> 초음파 센서 사용하여 거리 측정하기 <1> 서비스 구성도 <2> 아두이노 하드웨어 구성, 연결, 소프트웨어 올리기 <3> 초음파 센서 사용하여 거리 측정하기 =  거리센서 =  HC-SR04 1. 초음파 센서 4개 단자를  브레드보드에 연결한다. –  VC
  • Table of Contents:
8. 아두이노와 초음파 센서 사용하여 거리를 측정하기
8. 아두이노와 초음파 센서 사용하여 거리를 측정하기

Read More

아두이노 초음파센서로 경보음 울리기

  • Article author: intopionshop.tistory.com
  • Reviews from users: 26107 ⭐ Ratings
  • Top rated: 4.3 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 아두이노 초음파센서로 경보음 울리기 안녕하세요. 오늘은 지난시간에 이어. 초음파 센서를 활용한 접근금지 경보음 울리기. 를 알아보겠습니다. ​. 이렇게 거리별로 단계를 나누어서 색을 … …
  • Most searched keywords: Whether you are looking for 아두이노 초음파센서로 경보음 울리기 안녕하세요. 오늘은 지난시간에 이어. 초음파 센서를 활용한 접근금지 경보음 울리기. 를 알아보겠습니다. ​. 이렇게 거리별로 단계를 나누어서 색을 … 안녕하세요. 오늘은 지난시간에 이어 초음파 센서를 활용한 접근금지 경보음 울리기 를 알아보겠습니다. ​ 이렇게 거리별로 단계를 나누어서 색을 정하고 빨간불이 들어오면 부저가 울리게 됩니다. ​ 준비물..전자부품 아두이노 쇼핑몰 운영중인 인투피온입니다. 리스트에 없는 품목도 견적 가능합니다! ** 420만가지 전자부품쇼핑몰 주소 ** ☞ www.intopion.com ☞ 상담문의: 1644-4457
  • Table of Contents:

아두이노 초음파센서로 경보음 울리기

티스토리툴바

아두이노 초음파센서로 경보음 울리기
아두이노 초음파센서로 경보음 울리기

Read More

[Arduino] 아두이노 초음파 센서(HC-SR04) 3가지 예제를 통해 거리를 감지해보자

  • Article author: artsung410.tistory.com
  • Reviews from users: 16552 ⭐ Ratings
  • Top rated: 3.0 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [Arduino] 아두이노 초음파 센서(HC-SR04) 3가지 예제를 통해 거리를 감지해보자 (위 필자의 코드와는 조금 다를 수 있다.) 위 코드는 시리얼 모니터를 통해서 초음파센서의 주파수값을 읽어들이는데 활용될것이다. 초기 Serial 통신값은 … …
  • Most searched keywords: Whether you are looking for [Arduino] 아두이노 초음파 센서(HC-SR04) 3가지 예제를 통해 거리를 감지해보자 (위 필자의 코드와는 조금 다를 수 있다.) 위 코드는 시리얼 모니터를 통해서 초음파센서의 주파수값을 읽어들이는데 활용될것이다. 초기 Serial 통신값은 …   초음파센서의 개요 초음파 센서는 20kHz이상의 높은 주파수의 소리를 내보내어 물체를 맞고 돌아오는 시간을 측정하여 물체의 유무감지, 감지거리 등을 측정하는센서다. 물체를 향해 내보내진 초음파는 물체..프로그래밍, C++
  • Table of Contents:
[Arduino] 아두이노 초음파 센서(HC-SR04) 3가지 예제를 통해 거리를 감지해보자

티스토리툴바

[Arduino] 아두이노 초음파 센서(HC-SR04) 3가지 예제를 통해 거리를 감지해보자
[Arduino] 아두이노 초음파 센서(HC-SR04) 3가지 예제를 통해 거리를 감지해보자

Read More


See more articles in the same category here: https://chewathai27.com/to/blog.

아두이노 초음파센서 활용 예제

아두이노 초음파센서

초음파를 이용해서 거리를 측정할 수 있는 초음파센서에 대해서 알아보고 이 녀석을 활용한 예제를 만들어볼 텐데 예제는 우리 일상생활에서도 자주 듣는 소리 중의 하나인 자동차 후진 경고음 정도로 이해하면 좋을듯하다. 자동차 후진을 할 때 뒤쪽에 사람이나 물건이 있으면 소리를 내주다가 그것과 가까워질수록 그 주기가 짧은 아주 다급한(?) 경고음이 울리는 걸 누구나 들어봤을 것이다. 직접 만들어보면서 그 원리를 이해해보자.

▲ 초음파센서는 위 사진처럼 생겼는데 마치 ET의 눈 같다. ㅎㅎ 하지만 꽤 유용하게 쓰이는 녀석이니 우습게 생각하지 말고 신중하게 관찰을 해보자. 사진에서 확인할 수 있듯이 두 개의 커다란 눈(?)과 네 개의 작은 다리(?)들이 있는데 한쪽 눈에서 초음파를 쏘고 반사돼서 돌아오는 신호를 다른 한쪽에서 받아서 그 거리를 측정하는 역할들을 하며 아래쪽에 작은 다리는… 사진을 자세히 보면 그 역할들이 글자로 쓰여있는 걸 알 수 있다. 위 사진을 기준으로 가장 왼쪽은 VCC로 (+)이며 가장 오른쪽은 GND인 (-)이다. 즉, 양쪽 두 개는 전류 담당이고 가운데는 초음파를 쏘는 Trig와 그 신호를 받아들이는 Echo로 그 값을 아두이노 보드에 보내는 역할들을 한다.

이렇게 그 구조를 살펴봤으니 예제를 만들어볼 텐데 이 초음파센서와 앞쪽 글에서 정리했던 피에조스피커를 연결해서 자동차 후방 센서와 같이 사물의 거리에 따라서 각각 소리가 달라지는 걸 확인해보자.

▲ 준비물은 초음파센서와 피에조 스피커 그리고 아두이노 보드 및 빵판과 적당한 케이블 등이다. 이제 이것들로 회로를 만들어본다.

▲ 먼저 디지털 핀부터 보자면 빨간선으로 GND 음극이 나갔으며 12번 초록색 선을 통해서 피에조 스피커로 전기 신호를 보낼 것이다. 그리고 그라운드에서 흰색과 노란색 선을 통해서 각각 피에조 스피커와 초음파센서로 음극을 보내고 있으며 센서의 양극(+)은 검은색 선을 이용해서 따로 5V를 공급해주고 있다.

▲ 그리고 디지털 핀 8번과 9번에서 각각 초음파 센서의 TRIG와 ECHO로 주황색선과 파란색 선을 이용해서 연결을 했다. (이런 회로 만드는 건 몇 번 해보니 이제 많이 익숙해졌다.) 다음은 이 녀석들을 제어할 스케치 프로그램을 작성해보자.

▲ 먼저 초음파를 쏘고 받아들일 TRIG와 ECHO를 각각의 핀번호 상수로 선언(1)을 했으며 setup() 구간(2)에서는 각각의 핀을 OUTPUT과 INPUT으로 초기화를 했다. 앞에서도 잠깐 언급했듯이 TRIG는 신호를 쏘기 때문에 OUTPUT으로 ECHO는 신호를 받아들이기 때문에 INPUT으로 설정을 했다.

그리고 반복 구간인 loop() 함수에서는 초음파센서를 끄고 켜기를 반복(3) 해서 초기화하고 있으며 초음파가 반사되는 거리를 계산해서 저장하기 위해서 distance라는 이름의 long 변수를 선언(4) 하고 거리를 저장하고 있다. (거리 계산하는 방법에서 나눈 값 58.2는 각 센서별로 그 값이 다르기 때문에 해당 센서에 맞는 값으로 계산을 해야 한다.)

그리고 마지막으로 if 문을 활용해서 거리별로 다른 소리가 나도록 tone() 함수에 값을 전달하고 있다.(5) 전달된 값 중 12는 피에조 스피커가 연결된 디지털 핀 번호이며 두 번째 인자인 3000/ 2000 / 1000은 소리의 종류이다. 그리고 마지막 20은 음의 길이이다. 즉, 거리가 10/ 20 / 30 일 때 각각 다른 소리가 나도록 하고 있는 내용이며 0.2초마다 소리를 내기 위해서 delay 값에 200을 입력했다. 이제 이 소스 코드를 아두이노 보드에 업로드하고 테스트를 해보자.

▲ 마치 자동차 후방 센서와 같이 거리에 따라서 서로 다른 소리가 들리는 걸 확인할 수 있다.

이렇게 해서 아두이노 초음파센서의 기본 개념 및 간단한 예제를 만들어봤는데 이걸 활용하면 어떤 사물과의 거리에 따라서 다양한 물리적인 움직임도 만들 수 있을 거 같으니 앞으로 꽤 유용하게 사용할 녀석이 될 것 같다.

기계치와 함께하는 슬기로운 기계생활

반응형

안녕하세요. 메카럽입니다.

이번 포스팅에서는 지난 포스팅에 이어서 초음파 센서와 부저를 이용하여 근접 감지기를 만들어 보도록 하겠습니다.

근접 감지기는 포탄이나 유도탄의 거리, 표적의 속도, 회피기동, 센서 오차 등을 감안할 때 대공포나 대공 유도탄으로 직접 타격하는 것에 많은 어려움이 있습니다. 표적 근처까지 탄을 보낼 수 있으나 직접 타격하는데 기술적, 확률적 어려움이 있기에 명중에 이르기까지 많은 탄이 소비되는 문제가 있습니다. 그래서 제2차 세계대전을 거치며 개발된 것이 근접 신관(Proximity Fuze)입니다. 전파 따위를 송출하여 가까운 거리의 물체를 맞고 반사되는 파가 확인되면 기폭 신호를 출력하여 탄을 터뜨리는 방식입니다.

일상에서 근접 신관과 비슷한 방법으로 구현된 것이 차량용 후방 감지기, 스마트폰의 근접 센서입니다. 차량용 후방 감지기는 초음파 센서의 반사파 입력에 대한 거리 변화에 따라 운전자에게 소리 종류나 크기를 변화시켜주는 역할을 합니다. 스마트폰의 근접 센서는 사용자가 전화 통화를 할 때 활성화 되는데, 거의 대부분 스마트폰의 전면 디스플레이가 터치스크린으로 이루어진 만큼 통화 중 사용자의 뺨 등에 의해 오작동하는 것을 막기 위해 사용합니다.

이러한 원리는 토대로 초음파 센서에서 수신된 거리에 따라 부저음을 달리 내는 장치를 만들어 보겠습니다.

준비물 : 아두이노 우노, 초음파센서, 부저, F-M점퍼선, 브레드 보드

근접 감지기 회로구성

다음은 근접 감지기 스케치입니다. 초음파 센서로 측정된 거리와 부저음 디지털 핀을 맵핑하여 거리에 따른 부저음 간격을 조정하였습니다. 또는 tone( ) 함수를 사용하여 부저의 주파수를 변경하여 알리는 방법도 고려할 수 있습니다.

const int trigPin=7;

const int echoPin=6;

const int buz=5;

void setup()

{

pinMode(trigPin, OUTPUT);

pinMode(echoPin, INPUT);

pinMode(5, OUTPUT);

Serial.begin(9600);

}

void loop()

{

digitalWrite(trigPin, HIGH);

delayMicroseconds(10);

digitalWrite(trigPin, LOW);

int distance=pulseIn(echoPin, HIGH)*17/1000;

Serial.println(distance);

if(distance>60&&distance<100) { tone(buz, 2093, 800); delay(1000); } else if(distance<=60&&distance>30)

{

tone(buz, 2093, 800);

delay(700);

}

else if(distance<=30&&distance>10)

{

tone(buz, 2093, 800);

delay(300);

}

else if(distance<=10) { tone(buz, 2093, 800); delay(100); } else { tone(buz, 2093, 800); delay(1500); } } 초음파 근접센서 회로구성 및 실행결과는 아래와 같습니다. 초음파 근접센서 회로구성 ▼▼근접센서 실행 동영상▼▼ 거리에 따라 부저의 간격이 달라지는 것을 확인 할 수 있었습니다. 다음 포스팅에서는 온도센서에 대해 알아보도록 하겠습니다. 오늘 하루도 행복하세요. 728x90 반응형

아두이노와 초음파센서로 생각하게 만들기

아두이노 로봇 만들기 프로젝트

아두이노와 초음파센서로 생각하게 만들기

지난 시간에는 DC 모터를 이용해 로봇의 바퀴(다리) 부분을 만들고 로봇이 주행할 수 있도록 했고, 서보(servo)모터로 로봇의 팔을 움직이도록 구현했다. 이번 시간에는 초음파 센서의 사용법을 익히고, 로봇이 초음파 센서를 활용해 거리를 인식하고 행동에 변화를 줄 수 있도록 구현해 본다.

시리얼 통신

초음파 센서를 사용하기에 앞서 아두이노와 컴퓨터 간의 시리얼 통신 사용법을 알아본다. 시리얼 통신을 이용해 센서로부터 받은 값이나 일정 반응에 어떠한 값을 생성하는 지 확인하고 싶다면 아두이노 IDE의 시리얼 모니터로 확인할 수 있다. 이제 아두이노에서 제공하는 AnalogReadSerial 예제를 사용해 시리얼 통신을 사용해 보자. 시리얼 통신을 확인하기 위해 가변저항을 아두이노의 아날로그핀 0번(A0)에 연결한다. 시리얼 통신을 위해서는 Serial.begin() 함수를 사용한다. Serial.begin()은 시리얼 포트를 열고 데이터 속도를 맞춰주는 역할을 한다. 형태는 Serial.begin(speed);이며, 보통 9600bps의 속도를 사용한다. 시리얼 모니터에 글씨를 띄우려면 Serial.println() 또는 Serial.print() 함수를 사용한다. Serial.println()과 Serial.print() 모두 시리얼 모니터에 글씨를 표현하는 함수지만, Serial.println()은 글씨를 출력함과 동시에 한 줄을 띄우는 역할을 한다. 형태는 Serial.println(변수명); 또는 Serial.println(“문자”);로 사용한다.

<리스트 1> AnalogReadSerial 예제

void setup()

{

Serial.begin(9600);

}

void loop()

{

int sensorValue = analogRead(A0);

Serial.println(sensorValue);

delay(1);

}

<리스트 1>의 코드를 아두이노에 업로드하고 아두이노 IDE의 시리얼 모니터를 확인해 보면 가변저항을 움직일 때마다 시리얼 모니터에 나오는 숫자의 값이 바뀌는 것을 확인할 수 있다. 시리얼 모니터에 출력되는 값은 analogRead(A0)의 값으로, 이를 이용해 다양한 센서 값을 받아 시리얼 모니터로 확인할 수 있다.

초음파 센서

초음파란 사람이 들을 수 있는 음역대(가청)를 넘는 음파를 말한다. 초음파는 파장이 짧아 일정한 방향을 가진 음파를 만들어 낼 수 있다. 초음파 센서는 수신부와 발신부를 가지고 있으며, 발신부에서 발생시킨 초음파가 수신부로 반사되는 시간을 토대로 거리를 측정한다. 초음파 센서는 수신부와 발신부가 일체형인 것과 서로 분리된 형태의 두 가지가 있다. 필자는 분리형 초음파 센서인 SR04 모듈을 사용했다.

초음파 센서의 발신부는 일정한 간격으로 초음파를 발사한다. 발신부에서 나온 초음파는 벽 또는 장애물에 부딧혀 돌아오는데, 이를 수신부에서 측정하게 된다. 이렇게 측정되기까지 걸린 시간을 토대로 장애물까지의 거리를 산출하게 된다. 초음파 센서는 장애물의 색상이나 얇은 막의 금속, 액체에 상관없이 음파가 반사돼 돌아오는 거리를 측정할 수 있다. 그러나 이번 시간에 사용할 초음파 센서는 저가의 모델이므로 곡선이나 대각선의 구조를 가진 장애물에 대해서는 잘 인식하지 못한다. 곡선 또는 대각선의 장애물에 대해 필자가 사용할 초음파 센서는 실제보다 훨씬 더 먼 거리의 값을 측정하게 되므로 주의해야 한다.

아두이노 연결

초음파 센서의 Triger 핀을 아두이노의 7번 핀에 연결하고, Echo 핀을 아두이노의 8번 핀에 연결한다.

초음파 센서의 Vcc와 GND는 아두이노의 Vcc와 GND에 연결한다. 초음파 센서는 설치 각도와 대각선, 곡선 장애물과 같은 외부 환경에 민감하므로 설치 시 주의해야 한다.

초음파 센서 사용하기

이제 초음파 센서를 사용하기 위한 코드를 작성해 보자. 초음파 센서는 pulseIn() 함수를 사용해 제어할 수 있다. pulseIn() 함수는 해당 핀의 펄스에 대해 HIGH, LOW 값을 읽어서 HIGH 값이 들어오면 LOW 값이 들어올 때까지 기다리고, LOW 값이 들어오면 그 동안의 시간을 microseconds 단위로 반환한다. pulseIn은 pulseIn(pin번호,값);과 같이 입력해 사용한다.

<리스트 2> 초음파 센서로 거리 측정

int TrigPin = 7;

int EchoPin = 8;

int cm;

void setup()

{

Serial.begin(9600);

pinMode(TrigPin, OUTPUT);

pinMode(EchoPin, INPUT);

}

void loop()

{

digitalWrite(TrigPin, LOW);

delayMicroseconds(2);

digitalWrite(TrigPin, HIGH);

delayMicroseconds(10);

digitalWrite(TrigPin, LOW);

cm = pulseIn(EchoPin, HIGH) / 58.0;

Serial.print(cm);

Serial.println(“cm”);

delay(500);

}

초음파 센서는 발신부인 Triger 핀과 수신부인 Echo 핀으로 구성돼 있기 때문에 Triger 핀은 OUTPUT(출력), Echo 핀은 INPUT(입력)으로 설정해야 한다. <리스트 2>의 소스를 아두이노에 업로드하면 초음파 센서로부터 받은 값이 cm 단위로 변환되고, 해당 값을 아두이노 IDE의 시리얼 모니터로 확인할 수 있다. <리스트 2>는 0.5초마다 시리얼 모니터로 확인할 수 있는 소스이며, 시리얼 모니터로 받는 값을 빠르게 또는 더 느리게 받으려면 delay(500);에서 500에 해당하는 값을 변경하면 된다.

팔 동작 만들기

초음파 센서로부터 받은 거리 정보를 토대로 거리에 따라 로봇의 팔 동작이 다르게 움직이도록 구현할 것이다. 로봇의 팔과 연결된 서보모터가 거리에 따라 다르게 반응하도록 함으로써 움직임에 변화를 줄 수 있다.

<리스트 3> 거리에 따른 팔 동작 만들기

#include

Servo myservo;

Servo myservo2;

int TrigPin = 7;

int EchoPin = 8;

int cm;

void setup()

{

Serial.begin(9600);

pinMode(TrigPin, OUTPUT);

pinMode(EchoPin, INPUT);

myservo.attach(9);

myservo2.attach(10);

}

void loop()

{

digitalWrite(TrigPin, LOW);

delayMicroseconds(2);

digitalWrite(TrigPin, HIGH);

delayMicroseconds(10);

digitalWrite(TrigPin, LOW);

cm = pulseIn(EchoPin, HIGH) / 58.0;

Serial.print(cm);

Serial.println(“cm”);

if(cm< =5) { myservo.write(0); myservo2.write(180); delay(100); } else { myservo.write(0); myservo2.write(90); delay(100); myservo.write(90); myservo2.write(180); delay(100); } } 초음파 센서에서 받은 거리를 cm 기준으로 원하는 거리 만큼 나눠 서보모터의 동작을 다르게 분리한다. 거리에 따른 동작을 세분화하려면 else if()를 통해 거리를 추가해야 한다. <리스트 3>의 소스를 아두이노에 업로드하면 초음파 센서가 벽과 5cm 이상 떨어져 있을 때 팔을 왔다갔다하는 동작을 반복하게 된다. 반대로 초음파 센서가 벽과 5cm 이하로 접근하면 로봇이 양 팔을 하늘로 번쩍 들어올리는 동작을 취하게 될 것이다.

자동 회피 기능 구현하기

초음파 센서로부터 받은 거리 정보를 토대로 장애물과 로봇이 일정 거리 이하로 가까워지면 오른쪽 또는 왼쪽으로 회피하는 기능을 구현할 것이다.

<리스트 4> 자동 회피 기능

int TrigPin = 7;

int EchoPin = 8;

int cm;

int motor1a = 3;

int motor1b = 4;

int motor2a = 5;

int motor2b = 6;

void setup()

{

Serial.begin(9600);

pinMode(TrigPin, OUTPUT);

pinMode(EchoPin, INPUT);

pinMode(motor1a, OUTPUT);

pinMode(motor1b, OUTPUT);

pinMode(motor2a, OUTPUT);

pinMode(motor2b, OUTPUT);

}

void loop()

{

digitalWrite(TrigPin, LOW);

delayMicroseconds(2);

digitalWrite(TrigPin, HIGH);

delayMicroseconds(10);

digitalWrite(TrigPin, LOW);

cm = pulseIn(EchoPin, HIGH) / 58.0;

Serial.print(cm);

Serial.println(“cm”);

if(cm< =5) { digitalWrite(motor1a, LOW); digitalWrite(motor1b, HIGH); digitalWrite(motor2a, LOW); digitalWrite(motor2b, HIGH); delay(500); digitalWrite(motor1a, LOW); digitalWrite(motor1b, LOW); digitalWrite(motor2a, HIGH); digitalWrite(motor2b, LOW); delay(500); } else { digitalWrite(motor1a, HIGH); digitalWrite(motor1b, LOW); digitalWrite(motor2a, HIGH); digitalWrite(motor2b, LOW); delay(500); } } <리스트 4>는 로봇이 앞으로 나아가다가 벽 또는 장애물을 만났을 때 후진한 후 좌 또는 우회전함으로써 장애물을 피하도록 구현한 코드다.

로봇 구성하기

이제 이전까지 아두이노와 부품을 연결했던 것과 코드를 합쳐 로봇의 전체적인 움직임을 만들어 보자. 아두이노와 부품들의 연결이 다소 복잡해 보이더라도 각 부품별로 하나씩 차근차근 연결하다보면 어렵지 않게 연결을 마칠 수 있다. 아두이노와 부품 간의 연결이 끝나면 구성한 로봇의 내부에 아두이노를 비롯한 부품들을 삽입하고 팔을 구성하는 서보모터와 다리 역할을 하는 DC 모터를 단단하게 고정시킨다.

<리스트 5> 전체적인 아두로봇의 소스 코드

#include

#define TrigPin 7

#define EchoPin 8

Servo myservo;

Servo myservo2;

int motor1a = 3;

int motor1b = 4;

int motor2a = 5;

int motor2b = 6;

void setup()

{

pinMode(TrigPin, OUTPUT);

pinMode(EchoPin, INPUT);

myservo.attach(9);

myservo2.attach(10);

pinMode(motor1a, OUTPUT);

pinMode(motor1b, OUTPUT);

pinMode(motor2a, OUTPUT);

pinMode(motor2b, OUTPUT);

}

void loop()

{

int cm;

digitalWrite(TrigPin, LOW);

delayMicroseconds(2);

digitalWrite(TrigPin, HIGH);

delayMicroseconds(10);

digitalWrite(TrigPin, LOW);

cm = pulseIn(EchoPin, HIGH) / 58;

delay(50);

if(cm < = 5) { myservo.write(0); myservo2.write(180); //delay(50); digitalWrite(motor1a, LOW); digitalWrite(motor1b, HIGH); digitalWrite(motor2a, LOW); digitalWrite(motor2b, HIGH); delay(500); digitalWrite(motor1a, LOW); digitalWrite(motor1b, LOW); digitalWrite(motor2a, HIGH); digitalWrite(motor2b, LOW); delay(500); } else { myservo.write(0); myservo2.write(90); delay(500); digitalWrite(motor1a, HIGH); digitalWrite(motor1b, LOW); digitalWrite(motor2a, HIGH); digitalWrite(motor2b, LOW); myservo.write(90); myservo2.write(180); delay(500); } } <리스트 5>를 아두이노에 업로드하면 로봇이 장애물의 거리를 파악해 팔의 움직임을 달리하며 이동하게 된다. 로봇의 팔이 예상과 다르게 움직인다면 처음에 연결한 서보모터와 팔의 결합 위치가 달라져 발생하는 것이므로 서보모터의 각도를 변경하거나 원하는 각도에 맞게 팔을 다시 붙여 완성한다. 로봇이 설정해 놓은 거리보다 많이 멀거나 짧을 때 작동한다면 코드의 delay()를 조절하거나 초음파 센서가 전방을 향하고 있는지 다시 점검해 보자. 같은 DC 모터라도 저가의 모터일 경우 모터의 세기가 많이 다를 수 있다. 이 경우 로봇이 직진을 하지 못하고 원을 그리며 움직이게 된다. 이럴 때는 아두이노에 연결된 motor1a, motor1b, motor2a, motor2b 핀을 PWM이 가능한 핀으로 옮겨 모터의 출력을 PWM으로 조절해 직진이 되는 구간을 찾아 코드를 완성한다.

블루투스 무선 조종

지금까지 우리는 자동으로 움직이는 로봇을 만들어 봤다. 이번에는 무선으로 조종할 수 있는 로봇을 구현해 보자. 로봇을 무선 조종하기 위해 필자는 블루투스 모듈을 사용할 것이다. 블루투스는 근거리 무선통신 기술로 약 10m 정도의 통신 범위를 가진다. 이 범위는 일반적으로 100m까지 연장할 수 있다. 블루투스의 무선통신은 ISM 대역을 사용하는데, 다른 통신과의 간섭을 막기 위해 2.402GHz에서 2.480GHz의 79개 채널을 사용한다. ISM은 산업, 과학, 의료용으로 할당된 주파수 대역으로 전파 사용 허가를 받을 필요가 없어 저전력의 전파를 사용하는 개인용 무선 기기에 많이 사용된다. ISM 대역은 일반적으로 무선랜, 블루투스, 아마추어 무선 기기 등에서 사용하고 있다.

필자가 사용할 블루투스 모듈은 HC-06 모델이다. 아두이노와의 연결은 블루투스 모듈에서 Vcc, GND, TXD, RXD 핀만 사용한다. TXD는 발신부이고 RXD는 수신부다. 일반적으로 블루투스 모듈은 Vcc에 3.3V를 인가한다.

<리스트 6> 블루투스를 이용해 로봇 조종하기

#include

#include

SoftwareSerial BTSerial(11,12);//RX,TX

Servo myservo;

Servo myservo2;

int motor1a = 3;

int motor1b = 4;

int motor2a = 5;

int motor2b = 6;

void setup()

{

BTSerial.begin(9600);

myservo.attach(9);

myservo2.attach(10);

pinMode(motor1a, OUTPUT);

pinMode(motor1b, OUTPUT);

pinMode(motor2a, OUTPUT);

pinMode(motor2b, OUTPUT);

}

void loop()

{

if(BTSerial.available()>0)

{

char a = BTSerial.read();

if(a == ‘w’)

{

digitalWrite(motor1a, HIGH);

digitalWrite(motor1b, LOW);

digitalWrite(motor2a, HIGH);

digitalWrite(motor2b, LOW);

}

else if(a == ‘x’)

{

digitalWrite(motor1a, LOW);

digitalWrite(motor1b, HIGH);

digitalWrite(motor2a, LOW);

digitalWrite(motor2b, HIGH);

}

else if(a == ‘a’)

{

digitalWrite(motor1a, LOW);

digitalWrite(motor1b, LOW);

digitalWrite(motor2a, HIGH);

digitalWrite(motor2b, LOW);

}

else if(a == ‘d’)

{

digitalWrite(motor1a, HIGH);

digitalWrite(motor1b, LOW);

digitalWrite(motor2a, LOW);

digitalWrite(motor2b, LOW);

}

}

}

<그림 11>과 같이 연결하고 <리스트 6>을 아두이노에 업로드하면 로봇에 대한 부분이 완성된다. 이제 앱 마켓에서 블루투스 앱을 검색해 마음에 드는 것을 다운로드하자. 스마트폰과 로봇의 블루투스를 앱으로 연결한 다음 움직이는 명령어를 입력하면 로봇이 움직이는 것을 확인할 수 있다.

어렵지 않은 아두이노 로봇 구현

이번 시간에는 지난 시간에 DC 모터와 서보모터를 활용해 움직임을 구현했던 로봇에 초음파 센서를 추가해 스스로 장애물을 피하도록 만들어 봤다. 또 더 나아가 블루투스를 활용해 스마트폰 앱으로 로봇을 무선 제어하는 것도 시도해 봤다. 이처럼 각종 센서와 아두이노를 활용하면 자신이 꿈꿔왔던 것들을 직접 구현해 볼 수 있다. 아두이노나 레고에 관심 있는 독자들이 이번 연재를 통해 배운 내용을 응용해 자신이 꿈꿔왔던 세계를 직접 구현하며 상상의 나래를 펼칠 수 있길 바란다.

So you have finished reading the 아두 이노 초음파 센서 활용 topic article, if you find this article useful, please share it. Thank you very much. See more: 초음파 센서 활용 사례, 아두이노 초음파 센서 물체 감지, 아두이노 초음파센서 거리측정 코딩, 아두이노 초음파 센서 거리 측정 소리, 아두이노 초음파 센서 경고음, 아두이노 초음파 센서 자율주행, 아두이노 초음파센서 코드, 아두이노 초음파센서 0cm

Leave a Comment