정밀 제어를 위해 로봇 공학에서는 서보 모터를 사용하는 것이 일반적입니다. 여기에서이 튜토리얼에서는 블루투스 연결을 통해 Arduino UNO 및 Android 장치와 함께 서보 모터를 무선으로 사용하는 방법을 보여줄 것 입니다. 우리는 이미 Arduino로 서보를 제어했는데 이번에는 Arduino와 Bluetooth를 사용하여 Servo Motor를 제어하고 있습니다.
필요한 재료
- Arduino UNO
- HC-05 또는 HC-06 블루투스 모듈
- 서보 모터
- Playstore의 Roboremo 앱
- 브레드 보드
- 와이어 연결
HC-06 블루투스 모듈
Bluetooth는 다음 두 가지 모드에서 작동 할 수 있습니다.
- 명령 모드
- 작동 모드
명령 모드 에서는 Bluetooth 신호의 이름, 암호, 작동 전송 속도 등과 같은 Bluetooth 속성을 구성 할 수 있습니다. 작동 모드 는 PIC 마이크로 컨트롤러간에 데이터를주고받을 수있는 것입니다. 그리고 블루투스 모듈. 따라서이 튜토리얼에서는 작동 모드 만 사용합니다. 명령 모드는 기본 설정으로 유지됩니다. 장치 이름은 HC-05 (HC-06 사용 중)이고 암호는 0000 또는 1234이며 가장 중요한 것은 모든 Bluetooth 모듈의 기본 전송 속도가 9600입니다.
모듈은 5V 전원에서 작동하고 신호 핀은 3.3V에서 작동하므로 모듈 자체에 3.3V 레귤레이터가 있습니다. 따라서 우리는 그것에 대해 걱정할 필요가 없습니다. 6 개의 핀 중 4 개만 작동 모드에서 사용됩니다. 핀 연결 테이블은 아래와 같습니다.
S. 아니 | HC-05 / HC-06에있는 핀 | MCU의 핀 이름 | PIC의 핀 번호 |
1 | Vcc | Vdd | 31 번째 핀 |
2 | Vcc | Gnd | 32 ND 핀 |
삼 | Tx | RC6 / Tx / CK | 25 번째 핀 |
4 | Rx | RC7 / Rx / DT | 26 번째 핀 |
5 | 상태 | 체크 안함 | 체크 안함 |
6 | EN (활성화) | 체크 안함 | 체크 안함 |
다른 마이크로 컨트롤러와 Bluetooth 모듈 HC-05에 대해 자세히 알아 보려면 다른 프로젝트를 확인하십시오.
- Arduino를 사용한 Bluetooth 제어 장난감 자동차
- 8051을 사용하는 Bluetooth 제어 홈 자동화 시스템
- Raspberry Pi를 사용한 음성 제어 조명
- Arduino 및 프로세싱을 사용하는 스마트 폰 제어 FM 라디오
- Bluetooth 모듈 HC-06과 PIC 마이크로 컨트롤러의 인터페이스
또한 여기에서 모든 블루투스 관련 프로젝트를 확인하십시오.
회로도
이 Arduino Bluetooth 서보 모터 제어 프로젝트의 회로도 는 다음과 같습니다.
서보 제어를위한 Roboremo 앱 구성:
1 단계: -Android Play Store에서 Roboremo 앱을 다운로드하고 스마트 폰에 설치합니다. 설치 후 그림 1과 같은 앱 창이 나타나고 '메뉴' 버튼을 클릭하면 아래 그림 2와 같은 창이 나타납니다.
2 단계:- 그런 다음 연결 버튼을 클릭 하면 아래 그림 3과 같은 창이 표시되고 ' Bluetooth RFCOMM' 을 선택 해야합니다. 그러면 HC-06 블루투스 모듈을 Android 앱 'Roboremo'와 연결할 수 있습니다.
3 단계: -HC-06 블루투스 모듈에 연결 한 후 figure2 창으로 돌아와서 필요에 따라 사용자 인터페이스를 만들기 위해 ' ui 편집 '을 클릭 합니다.
클릭하면 '편집 UI를' 다시 그림 1에 표시된 창이 나타납니다 다음 그림 4와 같은 응용 프로그램 창을 선택 '이 표시됩니다 화면의 아무 곳이나 클릭 버튼 버튼 구조를 얻을 수를'.
4 단계: 버튼을 선택하면 화면에 편집 할 버튼 구조가 표시됩니다. 화면 어디에서나 구조의 크기를 조정하고 이동할 수 있습니다. 이제 Bluetooth를 통해 클릭시 보낼 값을 설정하려면 'set press action' (그림 6 참조)이 있고 해당 특정 버튼에서 보낼 값을 입력합니다. 마찬가지로, Roboremo 안드로이드 앱에서 '시작'버튼을 눌러서 서보 회전을 위해 '1'을 전송합니다.
나중에 제공되는 표에서 다른 버튼을 클릭하여 전송되는 모든 값을 확인할 수 있습니다.
5 단계: 마지막으로 스마트 폰을 사용하여 서보 모터를 제어하는 사용자 인터페이스 가 있습니다.
코드 및 설명
Bluetooth를 통한 Arduino 제어 서보 모터 의 전체 코드 는 끝에 제공됩니다.
Arduino에는 서보 모터 용 라이브러리가 있으며 서보를 회전하기위한 모든 PWM 관련 작업을 처리합니다. 회전하려는 각도를 입력하기 만하면 됩니다. servo1.write (angle); 서보를 원하는 각도로 회전시킵니다.
그래서 여기서는 서보 모터에 대한 라이브러리를 정의하는 것으로 시작하고 소프트웨어 직렬 라이브러리는 Rx 및 Tx 핀을 정의하는 데 사용됩니다.
#포함
아래 코드에서는 Rx 및 Tx에 대한 Arduino 핀을 초기화하고 서보 및 기타 항목에 대한 변수를 정의합니다 .
서보 myServo; int TxD = 11; int RxD = 10; int 서보 위치; int servopos; int new1; SoftwareSerial 블루투스 (TxD, RxD);
이제 모든 변수와 구성 요소를 초기 단계로 설정 합니다. 여기에서는도 9에 서보 첨부 번째 아두 이노 핀 0 정도 서보의 초기 위치를 만들었다. 직렬 및 Bluetooth 통신의 전송 속도도 9600으로 설정되었습니다.
void setup () { int pos = 0; myServo.attach (9); myServo.write (0); Serial.begin (9600); // 9600bps에서 직렬 통신 시작 bluetooth.begin (9600); }
에서는 보이드 루프 기능의 Arduino는 항상 입력 값을 검사한다 스마트 폰으로부터 수신 된 값에 따라 서보를 회전한다. 모든 값은 직렬 통신을 사용하여 수신됩니다.
값이 0이면 서보가 0도 회전합니다. 마찬가지로 Bluetooth 응용 프로그램에서 45, 90, 135 및 180을 보내면 서보가 각각 45, 90, 135 및 180도 각도로 회전합니다.
void loop () { if (bluetooth.available ()) { 문자열 값 = bluetooth.readString (); 서보 위치 = value.toInt (); if (value.toInt () == 0) { Serial.println (servoposition); myServo.write (0); } if (value.toInt () == 45) { Serial.println (servoposition); myServo.write (45); } if (value.toInt () == 90) { Serial.println (servoposition); myServo.write (90); } if (value.toInt () == 135) { Serial.println (servoposition); myServo.write (135); } if (value.toInt () == 180) { Serial.println (servoposition); myServo.write (180); }
Start 버튼을 눌러 값 '1'을 보내면 Stop 버튼을 누를 때까지 서보가 계속 회전 합니다. 여기서 우리는 중지 버튼 을 누르면 '2'를 보내는데, 이는 Arduino에서 읽히고 while 루프를 끊고 서보가 중지됩니다.
while (value.toInt () == 1) {if (bluetooth.available ()) {value = bluetooth.readString (); Serial.println (값); if (value.toInt () == 2) {Serial.println ("YYY"); 단절; }} servopos ++; 지연 (30); Serial.println (servopos); myServo.write (servopos); if (servopos == 180) {servopos = 0; break;}}}}
블루투스를 사용한 서보 모터 제어 작동:
이 프로젝트에서는 Android 애플리케이션 "Roboremo"를 사용하여 서보 모터를 제어합니다. 이 응용 프로그램의 인터페이스에는 앞에서 설명한대로 서보 모터를 제어하는 5 개의 버튼이 생성되었습니다. 모든 버튼의 작동은 아래 표에 나와 있습니다.
S. 아니. |
버튼 이름 |
가치 보내기 |
기술 |
1. |
스타트 |
1 |
이 버튼은 0⁰에서 180⁰까지 서보 회전을 시작하는 데 사용됩니다. |
2. |
중지 |
2 |
이 버튼은 어느 시점에서든 서보를 중지하는 데 사용됩니다. |
삼. |
0⁰ |
0 |
이 버튼은 서보를 0⁰로 회전시키는 데 사용됩니다. |
4. |
90⁰ |
90 |
이 버튼은 서보를 90⁰로 회전시키는 데 사용됩니다. |
5. |
180⁰ |
180 |
이 버튼은 서보를 180⁰로 회전시키는 데 사용됩니다. |
따라서 Android 앱 Roboremo 에서이 버튼을 누르면 데이터가 스마트 폰의 Bluetooth를 통해 HC-06 Bluetooth 모듈로 전송됩니다. 그 HC-06 모듈 데이터는 Arduino에 의해 수신되고 Arduino는 특정 버튼의 코드에 정의 된 각도로 서보를 회전합니다. 각도 45와 135도 코딩했지만 Roboremo 앱의 제한으로 인해 5 개의 버튼 만 만들 수 있으므로 2 개의 버튼을 건너 뛰었습니다.
블루투스를 사용하여 스마트 폰에서 Arduino로 데이터를 전송하여 서보를 무선으로 제어하는 방법입니다. 이것은 장난감 자동차, 로봇 등과 같은 많은 응용 분야에서 사용할 수 있습니다.