Top 32 아두 이노 초음파 28141 Good Rating This Answer

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://toplist.maxfit.vn team, along with other related topics such as: 아두 이노 초음파 아두이노 초음파 센서 물체 감지, 아두이노 초음파센서 led, 아두이노 초음파센서 거리측정, 아두이노 초음파센서 거리측정 led, 아두이노 초음파센서 원리, 아두이노 초음파센서 연결


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


아두이노 초음파센서(HC-SR04)사용 예제설명 : 네이버 블로그

  • Article author: m.blog.naver.com
  • Reviews from users: 26676 ⭐ Ratings
  • Top rated: 3.9 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 아두이노 초음파센서(HC-SR04)사용 예제설명 : 네이버 블로그 아두이노 초음파센서(HC-SR04)사용 예제 설명. 초음파센서란. 초음파 센서는 약 20kHz이상의 높은 주파수의 소리를 보낸후 반사되어 돌아오는 시간차 … …
  • Most searched keywords: Whether you are looking for 아두이노 초음파센서(HC-SR04)사용 예제설명 : 네이버 블로그 아두이노 초음파센서(HC-SR04)사용 예제 설명. 초음파센서란. 초음파 센서는 약 20kHz이상의 높은 주파수의 소리를 보낸후 반사되어 돌아오는 시간차 …
  • Table of Contents:

카테고리 이동

도매키트 아두몰의 블로그

이 블로그 
아두이노 부품예제
 카테고리 글

카테고리

이 블로그 
아두이노 부품예제
 카테고리 글

아두이노 초음파센서(HC-SR04)사용 예제설명 : 네이버 블로그
아두이노 초음파센서(HC-SR04)사용 예제설명 : 네이버 블로그

Read More

아두 이노 초음파

  • Article author: kocoafab.cc
  • Reviews from users: 38000 ⭐ Ratings
  • Top rated: 4.8 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 아두 이노 초음파 이 컨텐츠에서는 초음파 거리 센서를 아두이노와 연결해 보고, 물체와의 거리를 측정 해보겠습니다. 초음파 거리 센서(링크). – 초음파는 사람의 귀로 … …
  • Most searched keywords: Whether you are looking for 아두 이노 초음파 이 컨텐츠에서는 초음파 거리 센서를 아두이노와 연결해 보고, 물체와의 거리를 측정 해보겠습니다. 초음파 거리 센서(링크). – 초음파는 사람의 귀로 …
  • Table of Contents:
아두 이노 초음파
아두 이노 초음파

Read More

아두이노 초음파센서 – 검색결과 | 쇼핑하우

  • Article author: m.shoppinghow.kakao.com
  • Reviews from users: 49816 ⭐ Ratings
  • Top rated: 3.9 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 아두이노 초음파센서 – 검색결과 | 쇼핑하우 아두이노 초음파센서 HC-SR04 / Ultrasonic Sensor. 1,100원. 인터파크 배송 3,000원 … 아두이노 3.3V 5.5V 초음파 거리센서 모듈 Arduino HC-SR04P 1개. …
  • Most searched keywords: Whether you are looking for 아두이노 초음파센서 – 검색결과 | 쇼핑하우 아두이노 초음파센서 HC-SR04 / Ultrasonic Sensor. 1,100원. 인터파크 배송 3,000원 … 아두이노 3.3V 5.5V 초음파 거리센서 모듈 Arduino HC-SR04P 1개.
  • Table of Contents:
아두이노 초음파센서 - 검색결과 | 쇼핑하우
아두이노 초음파센서 – 검색결과 | 쇼핑하우

Read More

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

  • Article author: scipia.co.kr
  • Reviews from users: 22528 ⭐ Ratings
  • Top rated: 3.3 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 아두이노와 초음파센서를 활용한 초음파거리계 | 싸이피아SCIPIA 초음파(ultrasound)란 음파 또는 진동의 주파수가 사람 귀가 들을 수 있는 범위를 … 먼저 아두이노 보드에서 초음파 모듈의 Trig로 약 5μs의 짧은 펄스를 측정 시작 … …
  • Most searched keywords: Whether you are looking for 아두이노와 초음파센서를 활용한 초음파거리계 | 싸이피아SCIPIA 초음파(ultrasound)란 음파 또는 진동의 주파수가 사람 귀가 들을 수 있는 범위를 … 먼저 아두이노 보드에서 초음파 모듈의 Trig로 약 5μs의 짧은 펄스를 측정 시작 …
  • Table of Contents:

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

제품구매 정보

Follow Us

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

Read More

Arduino 아두이노 초음파(거리) 센서(ultrasounds sensor) 사용방법 :: IT-G-House

  • Article author: it-g-house.tistory.com
  • Reviews from users: 12836 ⭐ Ratings
  • Top rated: 3.7 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about Arduino 아두이노 초음파(거리) 센서(ultrasounds sensor) 사용방법 :: IT-G-House Arduino 아두이노 초음파(거리) 센서(ultrasounds sensor) 사용방법. FarmerIT 2019. 11. 26. 22:04. 앞서 포스팅에서 온습도 센서(Temperature and Humity sensor) … …
  • Most searched keywords: Whether you are looking for Arduino 아두이노 초음파(거리) 센서(ultrasounds sensor) 사용방법 :: IT-G-House Arduino 아두이노 초음파(거리) 센서(ultrasounds sensor) 사용방법. FarmerIT 2019. 11. 26. 22:04. 앞서 포스팅에서 온습도 센서(Temperature and Humity sensor) … 앞서 포스팅에서 온습도 센서(Temperature and Humidity sensor)만 가지고 아두이노의 기본적인 동작법이나 파일 저장법, 그래프 그리기, 엑셀(Excel)과 연동하는 방법들을 알아보았습니다. 그리고 인터넷(Interne..아두이노(Arduino) 비전공 입문자를 위한 아두이노 프로젝트
  • Table of Contents:

Arduino 아두이노 초음파(거리) 센서(ultrasounds sensor) 사용방법

티스토리툴바

Arduino 아두이노 초음파(거리) 센서(ultrasounds sensor) 사용방법 :: IT-G-House
Arduino 아두이노 초음파(거리) 센서(ultrasounds sensor) 사용방법 :: IT-G-House

Read More

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

  • Article author: dataonair.or.kr
  • Reviews from users: 34473 ⭐ Ratings
  • Top rated: 4.0 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 아두이노와 초음파센서로 생각하게 만들기 – DATA ON-AIR 아두이노 로봇 만들기 프로젝트 아두이노와 초음파센서로 생각하게 만들기 지난 시간에는 DC 모터를 이용해 로봇의 바퀴(다리) 부분을 만들고 로봇이 주행할 수 있도록 … …
  • Most searched keywords: Whether you are looking for 아두이노와 초음파센서로 생각하게 만들기 – DATA ON-AIR 아두이노 로봇 만들기 프로젝트 아두이노와 초음파센서로 생각하게 만들기 지난 시간에는 DC 모터를 이용해 로봇의 바퀴(다리) 부분을 만들고 로봇이 주행할 수 있도록 … 아두이노 로봇 만들기 프로젝트 아두이노와 초음파센서로 생각하게 만들기 지난 시간에는 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

아두이노 초음파센서(Ultrasonic Sensor) – 3DEMP

  • Article author: www.3demp.com
  • Reviews from users: 3483 ⭐ Ratings
  • Top rated: 3.9 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 아두이노 초음파센서(Ultrasonic Sensor) – 3DEMP 아두이노 초음파센서(Ultrasonic Sensor). 초음파 센서는 약 20kHz이상의 높은 주파수의 소리를 보낸후 반사되어 돌아오는 시간차를 측정해서 거리를 … …
  • Most searched keywords: Whether you are looking for 아두이노 초음파센서(Ultrasonic Sensor) – 3DEMP 아두이노 초음파센서(Ultrasonic Sensor). 초음파 센서는 약 20kHz이상의 높은 주파수의 소리를 보낸후 반사되어 돌아오는 시간차를 측정해서 거리를 … 3D프린터,3D 프린터,3D 프린팅,3d printer,3dprinter,3d print,3D 프린팅 컨텐츠,3demp,rc car,rc racing,smart rc car,RC Car,RC 자동차,아두이노,arduino,3D 프린팅 커뮤니티,커뮤니티,창의융합,iot,smart robot,스마트로봇,현대자동차,메이커페어초음파 센서는 약 20kHz이상의 높은 주파수의 소리를 보낸후 반사되어 돌아오는 시간차를 측정해서 거리를 알 수 있는 센서로. 초음파 센서를 이용하면 농도나 수위, 적설량 계측기, 후방감지 센서 등 다양한 콘텐츠를 만들어 볼 수 있습니다. 이번 포스팅에서 사용된 초음파 센서는 HC-SR04로 최대 측정 거리는 4m, 최소 측정거리는 2cm입니다.

    초음파 센서는 Trig핀에 연결된 압전소자에 전압을 가해서 초음파를 발생시키고 전방의 물체에 반사되서 돌아오는 음파를 Echo핀으로 받아서 전압을 발생시키는 구조 입니다. 목재, 콘크리트, 종이, 유리등의 단단한 물체는 초음파를 거의 100% 반사하지만 옷감과 같이 물질은 초음파를 흡수하기 때문에 정확한 측정값을 알기 어렵습니다.

    그리고 초음파는 온도의 변화에도 결과값이 달라질 수 있기 때문에 정밀한 측정을 위해서는 온도에 따른 보정이 필요 합니다.

    초음파를 거리로 계산하는 방법은 거리 = 속력 X 시간 공식을 이용합니다.
    _____________________________________________​________________________​

    int trig = 2;
    int echo = 3;
    float duration;
    float distance;
    void setup()
    {
    Serial.begin(9600);
    pinMode(trig,OUTPUT);
    pinMode(echo,INPUT);
    }

    void loop()
    {
    digitalWrite(trig,HIGH);
    delay(10);
    digitalWrite(trig,LOW);
    duration = pulseIn(echo,HIGH); //pulseIn함수의 단위는 ms(마이크로 세컨드)
    distance = ((34000*duration)/1000000)/2;
    Serial.print(distance);
    Serial.println(

  • Table of Contents:

3DEMP MAKER KIT

3DEMP 활동

STUDY

PROJECT

자료실

아두이노 초음파센서(Ultrasonic Sensor)

아두이노 초음파센서(Ultrasonic Sensor) - 3DEMP
아두이노 초음파센서(Ultrasonic Sensor) – 3DEMP

Read More

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

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

티스토리툴바

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

Read More

[아두이노] 초음파 센서 사용법

  • Article author: popcorn16.tistory.com
  • Reviews from users: 7555 ⭐ Ratings
  • Top rated: 4.9 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [아두이노] 초음파 센서 사용법 아두이노 기본 키트에 포함되어 있던 HC-SR04 초음파 거리 센서입니다. 이 센서를 사용하여 간단하게 거리를 재는 코드를 작성해봤습니다. 1. …
  • Most searched keywords: Whether you are looking for [아두이노] 초음파 센서 사용법 아두이노 기본 키트에 포함되어 있던 HC-SR04 초음파 거리 센서입니다. 이 센서를 사용하여 간단하게 거리를 재는 코드를 작성해봤습니다. 1. 아두이노 기본 키트에 포함되어 있던 HC-SR04 초음파 거리 센서입니다. 이 센서를 사용하여 간단하게 거리를 재는 코드를 작성해봤습니다. 1. 보드 구성 초음파 센서 Vcc 아두이노 5V 초음파 센서 Trig 아두이노..
  • Table of Contents:

태그

‘관리하지않음아두이노’ 관련글

티스토리툴바

[아두이노] 초음파 센서 사용법
[아두이노] 초음파 센서 사용법

Read More


See more articles in the same category here: 533+ tips for you.

아두이노 초음파센서(HC-SR04)사용 예제설명

아두이노 초음파센서(HC-SR04)사용 예제 설명.

초음파센서란

초음파 센서는 약 20kHz이상의 높은 주파수의 소리를 보낸후 반사되어 돌아오는 시간차를 측정해서 거리를 알 수 있는 센서로

초음파를 이용한 일종의 `거리 측정 센서` 입니다.

전방으로 발사된 초음파는 금속, 목재, 유리, 종이 등 단단한 물체에는 거의 100% 반사되어 돌아오지만 옷감과 같은 일부물질은 초음파를

흡수하기 때문에 정확한 측정값이 어렵다는 단점이 있습니다.

모양 및 핀맵

– 왼쪽에 동그란 부분(TRIG)에서 초음파가 발생되고 , 오른쪽 부분(ECHO)에서 반사되어 돌아오는 초음파를 받습니다.

– 핀맵은 좌측부터 VCC,TRIG,ECHO,GND 입니다.

– 측정범위 : 2cm ~ 4M

– 측정각도 : 15도

– 사용전압 : 5V

– 사용전류 : 15mA

사용예시

초음파센서를 이용한 거리 측정 예시

– 초음파센서를 아두이노에 연결후 거리를 cm값으로 출력 합니다.

– 초음파의 속도는 340(m/s) 입니다.

– 초음파의 거리값(cm)을 구하는 공식 :

34000*초음파가 물체로 부터 반사되어 돌아오는시간 /1000000 / 2(왕복값이아니라 편도값이기때문에 나누기2를 해줍니다.)

1. 회로연결도

연결방법 설명

`초음파센서` -> `아두이노 우노 R3`

VCC – > 5V

GND – > GND

TRIG -> PIN 9

ECHO -> PIN 8

로 연결 해줍니다.

2. 소스코드 (오른쪽 첨부파일에서 다운받아보실수 있습니다.)

#define TRIG 9 //TRIG 핀 설정 (초음파 보내는 핀)

#define ECHO 8 //ECHO 핀 설정 (초음파 받는 핀)

void setup() {

Serial.begin(9600); //PC모니터로 센서값을 확인하기위해서 시리얼 통신을 정의해줍니다.

//시리얼 통신을 이용해 PC모니터로 데이터 값을 확인하는 부분은 자주사용되기 때문에

//필수로 습득해야하는 교육코스 입니다.

pinMode(TRIG, OUTPUT);

pinMode(ECHO, INPUT);

}

void loop()

{

long duration, distance;

digitalWrite(TRIG, LOW);

delayMicroseconds(2);

digitalWrite(TRIG, HIGH);

delayMicroseconds(10);

digitalWrite(TRIG, LOW);

duration = pulseIn (ECHO, HIGH); //물체에 반사되어돌아온 초음파의 시간을 변수에 저장합니다.

//34000*초음파가 물체로 부터 반사되어 돌아오는시간 /1000000 / 2(왕복값이아니라 편도값이기때문에 나누기2를 해줍니다.)

//초음파센서의 거리값이 위 계산값과 동일하게 Cm로 환산되는 계산공식 입니다. 수식이 간단해지도록 적용했습니다.

distance = duration * 17 / 1000;

//PC모니터로 초음파 거리값을 확인 하는 코드 입니다.

Serial.println(duration ); //초음파가 반사되어 돌아오는 시간을 보여줍니다.

Serial.print(”

DIstance : “);

Serial.print(distance); //측정된 물체로부터 거리값(cm값)을 보여줍니다.

Serial.println(” Cm”);

delay(1000); //1초마다 측정값을 보여줍니다.

}

3. 실습결과

-소스코드를 아두이노우노R3 에 업로더 시켜줍니다.

-PC모니터를 통해서 값을 확인할수 있도록 `시리얼모니터` 버튼을 눌러줍니다.

초음파센서가 손바닥 으로 부터의 거리가 측정되어 CM값으로 출력되는 모습을 볼수 있습니다.

(거리측정샘플 동영상)

http://storefarm.naver.com/domekit/products/288921715

Arduino 아두이노 초음파(거리) 센서(ultrasounds sensor) 사용방법

앞서 포스팅에서 온습도 센서(Temperature and Humidity sensor)만 가지고 아두이노의 기본적인 동작법이나 파일 저장법, 그래프 그리기, 엑셀(Excel)과 연동하는 방법들을 알아보았습니다. 그리고 인터넷(Internet) 사용법과 웹서버(Web server) 만드느라 많은 시간을 보냈는데요 ^^ 오늘은 재미있는 센서를 하나 소개드리려고 합니다.

바로 초음파(ultrasound(s), ultrasonic wave) 센서입니다. 인터넷에 찾아보면 거리 센서라고 많이 검색되는데 초음파를 쏴서 돌아오는 시간을 계산해서 거리를 측정할 수 있는 예제가 많이 알려져서 그런 것 같습니다 ^^ 이번 포스팅에서는 초음파 센서 사용방법과 프로그램 코딩에 대해 알아보겠습니다.

HC-SR04 초음파 센서

온라인에서 ‘초음파 센서’를 검색하면 아두이노용으로 많이 사용하는 모델은 ‘HC-SR04’ 모듈입니다. 생긴건 마치 스피커처럼 생겼는데요 ㅎㅎ 아두이노 작품들 중에 로봇류는 대부분 이 HC-SR04 센서로 눈처럼 꾸며서 사용하는걸 많이 보았습니다.

아두이노 HC-SR04 초음파 센서

“초음파(超音波, 영어: ultrasound(s), ultrasonic wave)는 인간이 들을 수 있는 가청 최대 한계 범위를 넘어서는 주파수를 갖는 주기적인 ‘음압'(音壓, sound pressure)을 의미한다.” (출처: 위키피디아) 즉, 사람이 들을 수 없는 고주파수 영역대의 음파를 말합니다. 건강하고 젊은 사람이 대략 20KHz의 영역을 들을 수 있고 사람이 들을 수 있는 이상의 영역이 초음파 영역이라고 생각하시면 됩니다.

아두이노에서 사용할 HC-SR04 초음파 센서는 대락 40KHz 영역대의 초음파를 방출합니다. 송신기와 수신기인 두개의 초음파 트랜스 듀서(Ultrasonic transducer)가 있고, 수신기(Chirp: 주파수 변조 방식을 사용하는 펄스 압축의 하나)에서 방출된 초음파가 물체에 반사되어 수신기(Echo)에 돌아온 시간을 통해서 거리를 계산하는 방법을 사용합니다.

초음파 센서(ultrasounds sensor) 작동원리

동작 전압 5V DC 동작 전류 15mA 발생 초음파 약 40kHz effectual angle <15도 측정 범위 2 ~ 400 cm 오차 0.3 cm 초음파 속도 340 m/s HC-SR04 초음파 센서 연결방법 HC-SR04 초음파 센서는 5V 구동입니다. 모듈의 VCC 핀을 아두이노의 5V에 연결하고 GND는 GND에 연결합니다. 위에서 설명한 송신부인 Chirp는 모듈에서 Trig 핀이며 아두이노 12번 Pin에 연결하고, 수신부 Echo 핀을 8번 Pin에 연결합니다. Trig와 Echo 핀이 연결된 아두이노의 디지털 핀(DIGITAL Pin)은 프로그램상으로 변경 가능하니 원하시는 데로 임의로 연결하셔도 됩니다. 아두이노(Arduino) HC-SR04 초음파 센서 사용방법: 연결 배선 HC-SR04 초음파 센서 프로그램 코딩 방법 HC-SR04 초음파 센서는 따로 '라이브러리(Library)'가 없어도 됩니다. 앞서 아두이노 프로그램 코딩 초급편에서 다루었던 'pinMode'와 'digitalWrite' 명령어를 주로 사용하고 추가로 'pulseIn' 명령어를 사용하여 거리를 측정하는 프로그램을 코딩하도록 하겠습니다. 'pinMode'와 'digitalWrite' 명령어에 대한 내용과 간단한 예제는 아래 링크 참조 부탁드립니다. 명령어 기능 사용법 pinMode I/O 핀의 입출력 설정 pinMode(pin#, mode); digitalWrite 디지털 핀에 High, Low 값 출력 digitalWrite(pin#, HIGH); or digitalWrite(pin#, LOW); pulseIn 아두이노 핀으로 입력되는 펄스의 시간을 측정하는 함수 pulseIn(pin#, High); or pulseIn(pin#, Low); int echo = 8; int trig = 12; void setup() { Serial.begin(9600); pinMode(trig, OUTPUT); pinMode(echo, INPUT); } void loop() { float cycletime; float distance; digitalWrite(trig, HIGH); delay(10); digitalWrite(trig, LOW); cycletime = pulseIn(echo, HIGH); distance = ((340 * cycletime) / 10000) / 2; Serial.print("Distance:"); Serial.print(distance); Serial.println("cm"); delay(500); } HC-SR04 모듈을 아두이노에 연결한대로 trig = 12, echo = 8로 지정해주고 pinMode를 통해 trig는 Output(송신), echo는 Input(수신)으로 설정하였습니다. 그리고 cycletime(시간), distance(거리)를 실수(float)로 변수 지정을 하고, digitalWrite를 통해 trig에서 초음파가 송신하도록 'High' 명령을 주고 10 msec delay 후 'Low'로 신호를 끕니다. 그럼 송신된 초음파가 물체에 반사되어 echo에 수신 (신호가 High로 전환)될 때까지의 시간을 pulseIn 명령어를 통해 distance 변수에 저장합니다. 마지막으로 초음파가 물체를 맞고 돌아온 시간과 초음파의 속도 340 m/s를 이용하여 cm 단위로 거리를 계산합니다. 왕복거리라 마지막에 나누기 2가 들어갑니다. ^^ 프로그램 코딩 완료 후 스케치(Sketch)를 통해 아두이노에 업로드 후 시리얼 모니터(Serial Monitor)를 실행하면 아래와 같이 거리를 계속 센싱하여 출력해서 보여줍니다. 통신속도(Baudrate) 맞추는 건 이제 기본으로 하시죠? ㅎㅎ 아두이노(Arduino) HC-SR04 초음파 센서 사용방법: 거리 측정 값 시리얼 모니터 출력 여기까지 아두이노(Arduino)로 HC-SR04 초음파 센서(ultrasounds sensor) 사용방법 과 거리를 측정하는 간단한 프로그램을 코딩해보았습니다. 정말 재미있는 센서인 거 같습니다. ^^ 조만간 초음파 센서를 이용하여 거리를 측정하는 것뿐만 아니라 적외선 센서처럼 물건이나 사람을 감지할 수도 있으니 사람을 감지하여 외부기기를 동작하거나 멈추는 간단한 프로젝트를 진행해 보도록 하겠습니다. 오늘도 긴 글 읽어주셔서 감사합니다. 질문이나 추가적으로 필요하신 내용 있으면 언제든지 댓글로 남겨주세요~ ^^

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

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

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

지난 시간에는 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: 아두이노 초음파 센서 물체 감지, 아두이노 초음파센서 led, 아두이노 초음파센서 거리측정, 아두이노 초음파센서 거리측정 led, 아두이노 초음파센서 원리, 아두이노 초음파센서 연결

Leave a Comment