회로

로봇을 만드는 방법 - 수업 7 : Bluetooth로 제어되는 Arduino 로봇 만들기 : 14 단계

Real vs Fake Arduino Test

Real vs Fake Arduino Test

차례:

Anonim

Arduino 로봇이 기본 기능을 수행 할 수있게됨에 따라 이제는 Bluetooth를 통해 하나의 기능으로 업그레이드 할 수 있습니다.

다른 'How To Build Robot'튜토리얼과 마찬가지로 여기 Arduino 로봇 키트 (Pirate : 4WD Arduino Mobile Robot Kit with Bluetooth 4.0)가 예제로 사용됩니다. 게다가 로봇, 모바일 플랫폼, 무인 항공기 또는 무인 항공기 (uav)와 같은 다른 장치를 Bluetooth를 통해 모바일 장치에 연결하고 제어 할 수있는 GoBLE (일반 BLE APP 컨트롤러)의 도움이 필요합니다.

강의 메뉴 :

수업 1 : 소개

2 단원 : 기본 Arduino 로봇 만들기

3 단원 : 라인 추적 Arduino 로봇 제작

4 단원 : 장애물을 피할 수있는 Arduino 로봇 제작

수업 5 : 빛과 소리 효과로 Arduino 로봇 만들기

6 단원 : 환경을 모니터링 할 수있는 Arduino 로봇 제작

7 단원 : Bluetooth로 제어되는 Arduino 로봇 만들기

예비

iPhone 또는 iPad × 1

고블 APP × 1

용품:

1 단계:

참고 : 현재 GoBLE은 iOS 기기에서만 사용할 수 있으며 iOS 8.1 이상을 설치해야합니다.

iOS 사용자의 경우 : App Store에서 GoBLE을 다운로드하십시오.

2 단계:

테스트 코드 업로드

Romeo BLE를 컴퓨터에 연결하십시오. 테스트 코드 'GoBLE_Test.ino'는 소프트웨어 패키지에서 찾을 수 있습니다. 그것은 당신이 장치에서 신호 출력을 확인할 수 있습니다. IT를 다운로드하고 확인하십시오. 테스트 코드를 다운로드하기 전에 GoBLE 라이브러리를로드하는 것을 잊지 마십시오.

3 단계 :

블루투스 테스트

이제 블루투스 페어링을 시작해 보겠습니다. 모바일 블루투스를 켠 다음 GoBLE 앱을 엽니 다. 화면이 이렇게 보일 것입니다!

4 단계 :

블루투스 검색 키 (빨간색 돋보기 모양)를 클릭하십시오. 그런 다음 Romeo BLE의 이름에 해당하는 Bluetooth 장치 중 하나를 선택하십시오. UUID를 클릭하면 페어링이 시작됩니다.

5 단계 :

연결되면 블루투스 검색 키 색상이 빨간색에서 녹색으로 바뀝니다.

6 단계 :

동시에 LINK 보드가 켜지면 iPhone이 Romeo BLE (Bluetooth 4.0 Arduino Robot Control Board)에 연결되었음을 의미합니다.

7 단계 :

이제 컨트롤러가 iPhone에서 신호를 성공적으로 수신 할 수 있는지 테스트 해 봅시다. Arduino IDE 인터페이스로 돌아가서 오른쪽 상단의 직렬 모니터를 클릭하십시오.

8 단계 :

아래 그림과 같은 대화 상자가 나타납니다. 첫째, 직렬 포트의 전송 속도는 아래의 빨간색 원으로 표시된대로 115200으로 설정해야합니다.

9 단계 :

이제 iPhone을 꺼내서 가상 조이스틱을 무작위로 스 와이프하거나 화면의 버튼을 클릭 할 수 있습니다. 그 밖의 것이 없다면 직렬 모니터에 해당 값이 표시됩니다. 가상 조이스틱을 스 와이프하면 화면의 조이스틱 값이 변경됩니다. 조이스틱을 위로 스 와이프하면 값이 증가하고 조이스틱을 아래로 스 와이프하면 값이 감소합니다.

버튼 ID는 클릭하는 버튼을 의미합니다.

10 단계 :

원격 제어 코드 업로드

모든 것이 정상이라면 Arduino 보드에 원격 제어 코드를 업로드하고 업로드하십시오. 마음 속에 간직해 야 할 중요한 요지가 있습니다!

iPhone은 이미 마지막 테스트 단계에서 Romeo BLE Board에 연결되었습니다. 그러나 휴대 전화와 게시판간에 블루투스가 설정되어있는 경우 Romeo BLE 보드에 코드를 업로드 할 수 없습니다. 따라서 Bluetooth 페어링을 먼저 중단해야합니다. 또한 보드가 전화기에서 분리 된 경우 코드를 다시 업로드 할 수 있습니다. 이건 매우 중요합니다!

연결을 중단하는 두 가지 방법이 있습니다. 한 가지 방법은 단순히 Remeo BLE 전원을 껐다가 다시 켤 수 있다는 것입니다. 다른 방법은 휴대 전화의 블루투스를 끄는 것입니다.

연결이 끊어지면 예제 코드를 다시 업로드 할 수 있습니다. 이 코드는 코드 패키지에서 GoBLE_APP.ino로 명명됩니다.

11 단계 :

성공적으로 업로드되면 아래 그림의 빨간색 화살표를 따라 조이스틱을 스 와이프하여 로봇을 제어 할 수 있습니다. 또한 빨간색 버튼을 클릭하여 PIN13에 연결된 보드의 LED를 켜거나 끌 수 있습니다.

12 단계 :

코드 개요

로봇을 연주 한 후 코드 사용법을 배우기 시작합니다. GoBLE 테스트를위한 테스트 코드에 대한 더 이상의 단어가 없습니다. 그런 다음 GoBLE APP로 이동하십시오.

기본 코드에 관해 논의 할 필요는 없습니다. 단지 청해를 제어하는 ​​부분을 살펴 보겠습니다. 로봇을 원격 제어하려면 Metro 및 GoBLE이라는 두 개의 라이브러리가 사용됩니다.

#include "Metro.h"

#include "GoBLE.h"

int joystickX, joystickY;

int buttonState 6;

joobickX, joystickY 및 buttonState 6는 GoBLE 라이브러리에 대해 정의 된 세 가지 변수입니다. 이 값은 X 축, Y 축 및 6 개 버튼의 상태 값에 대한 상태 값을 저장하는 데 사용됩니다.

아래지도는 모든 버튼의 레이아웃을 보여줍니다. 상태 값의 변경을 분석 한 경우 + X, -X, + Y 및 -Y의 의미를 알고있을 것입니다.

X & Y는 조이스틱의 이동 방향입니다. "+, -"는 값의 추세를 보여줍니다. "+"는 상태 값이 증가하고 있음을 의미합니다. 그리고 "-"는 상태 값이 감소하고 있음을 의미합니다.

13 단계 :

초기 설정은 Setup ()의 기능으로 작성되어야합니다.
Goble.begin ();

이 줄은 블루투스 설정을 시작하는 데 사용됩니다. 보드에서 블루투스 코드를 사용할 때마다 놓칠 수 없습니다.

Serial.begin (115200);

실제로이 라인은 테스트 단계에서 사용되었습니다. 직렬 포트를 시작하는 데 사용됩니다. 직렬 모니터에서 값을 읽으려면이 명령문을 setup 함수에 작성해야합니다. 또한 전송 속도를 설정해야합니다.

Bluetooth의 전송 속도가 특별하기 때문에 115200으로 설정해야합니다. 전송 속도가 설정되었는지 확인하십시오. 그렇지 않으면 문제가 발생할 수 있습니다.

계속보세요. 다음 줄은 Goble.available () 함수입니다.

if (Goble.available ()) {do something; }

그 의미는 블루투스를 통해 한 번 다음 인물이 수신되었음을 의미합니다.

괄호 안에 쓰여진 것은 우리의 다음 행동이 될 것입니다. 먼저, 수신 한 수치를 분석해야합니다. 다음 두 문장은 X 축과 Y 축의 값을 읽는 것입니다.

조이스틱 X = Goble.readJoystickX ();

조이스틱 Y = Goble.readJoystickY ();

// Serial.print ( "joystickX :");

// Serial.print (joystickX);

// Serial.print ( "joystickY :");

// Serial.println (joystickX);

Serial.print () 위의 네 문장이 의미하는 바를 생각해보십시오. 그것은 일련과 관련이 있습니다. 수신 된 데이터를 인쇄하는 것은 시리얼 용이므로 코드 디버그 및 최적화에 편리합니다.

"//"은 다음 내용의 주석을 의미합니다. 이 네 문장은 코드를 컴파일 할 때 포함되지 않습니다. 즉, 우리가이 네 가지 구문에 대해 주석을 사용하면 데이터가 직렬로 전송되지 않습니다.

자세한 내용은 Arudino 웹 사이트 (www.arduino.cc)의 참조 페이지를 참조하십시오.

buttonState SWITCH_UP = Goble.readSwitchUp ();

buttonState SWITCH_DOWN = Goble.readSwitchDown ();

buttonState SWITCH_LEFT = Goble.readSwitchLeft ();

buttonState SWITCH_RIGHT = Goble.readSwitchRight ();

buttonState SWITCH_SELECT = Goble.readSwitchSelect ();

buttonState SWITCH_START = Goble.readSwitchStart ();

위의 모든 내용은 버튼 상태에 대한 정보를로드하는 데 사용됩니다.

버튼의 레이아웃은 다음과 같습니다.

SWITCH_UP - 1 SWITCH_RIGHT - 2

SWITCH_DOWN - 3

SWITCH_LEFT - 4

SWITCH_SELECT - 5

SWITCH_START - 6

단계 14 :

우리는 사용하기 전에 읽은 모든 데이터를 처리해야합니다.

조이스틱에서 읽은 값은 우리 로봇의 바퀴의 회전 속도와 매핑됩니다. 따라서 바퀴의 회전 속도는 -255에서 255 사이가됩니다.

int SpeedX = 2 * joystickX-256;

int SpeedY = 2 * joystickY-256;

Serial.print ( "Speed ​​:");

Serial.print (SpeedX);

Serial.print ( "");

Serial.println (SpeedY);

또한 시리얼은 속도를 출력합니다. 불필요한 경우 처음에 "//"를 추가하여 제거 할 수 있습니다.

이제 로봇을 제어하고 움직 이도록하겠습니다.

(조이스틱을 위로 움직이거나 (||) 아래로) {로봇이 앞으로 또는 뒤로 움직이면; }

(조이스틱을 오른쪽 또는 (||) 왼쪽으로 움직이면) {로봇이 오른쪽 또는 왼쪽으로 이동}

조이스틱의 X 축이 중앙에 있고 (&&) 조이스틱의 Y 축이 중앙에 유지되면 {로봇이 멈 춥니 다. }

해당 코드는 다음과 같습니다.

if (SpeedX> 200 || SpeedX <-200) {LeftWheelSpeed ​​= SpeedX; RightWheelSpeed ​​= SpeedX; Robot.Speed ​​(LeftWheelSpeed, RightWheelSpeed); }

else if (SpeedY> 200 || SpeedY <-200) {LeftWheelSpeed ​​= SpeedY-80, RightWheelSpeed ​​= SpeedY-80, Robot.Speed ​​(LeftWheelSpeed, RightWheelSpeed);}

else if (SpeedX == 0 && SpeedY == 0) {Robot.Speed ​​(0,0); }

마지막 코드는 PIN13에 연결된 보드의 LED를 제어하는 ​​데 사용됩니다.

int ledPin = 13;

13 번 핀은 코드 시작 부분에 정의되어야합니다.

pinMode (ledPin, OUTPUT);

setup ()의 기능을 작성하여 LED의 출력 모드를 설정하십시오. Arduino 웹 사이트 (www.arduino.cc)의 pinMode () 함수에 대한 지침을 참조하십시오.

다음 표현식은 버튼의 상태를 보여줍니다. 1 번 버튼을 누르면 LED가 켜집니다. LED 핀이 HIGH로 설정됨을 의미합니다.

if (buttonState 1 == PRESSED) {digitalWrite (ledPin, HIGH); }

버튼 1을 놓으면 LED가 꺼집니다. LED 핀이 LOW로 설정됨을 의미합니다.

if (buttonState 1 == RELEASED) {digitalWrite (ledPin, LOW); }

그것은 오늘날 코딩을위한 모든 것입니다. 그것은 재미 아닌가요? 코드를 작성하는 것은 불가능하지 않습니다. 맞습니까? 코드를 수정하여 LED 라이트를 제어하는 ​​버튼을 변경하려고 할 수 있습니다. 코드로 제어 할 수 있다면 훨씬 더 흥미 롭습니다. 이제, 로봇으로 재미있게 시작하세요 !!!