산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

블루투스 제어 장애물 회피 로봇

구성품 및 소모품

Arduino Nano R3
× 1
SparkFun 듀얼 H-Bridge 모터 드라이버 L298
× 1
초음파 센서 - HC-SR04(일반)
× 1
HC-05 블루투스 모듈
× 1
RGB 확산 공통 양극
× 1
SparkFun 로직 레벨 변환기 - 양방향
× 1
저항 330옴
× 1
브레드보드(일반)
× 1
SparkFun 브레드보드 전원 공급 장치 스틱 5V/3.3V
× 1
DC 모터, 12V
× 2
남성/여성 점퍼 와이어
× 1

앱 및 온라인 서비스

Arduino IDE
Arduino BlueControl
Play 스토어에서 사용 가능

이 프로젝트 정보

이 프로젝트는 휴대전화를 사용하여 블루투스를 통해 로봇과 통신합니다. 저는 항상 로봇을 만들고 휴대폰으로 제어하고 싶었습니다. 12년이 넘는 긴 공백 끝에 로봇을 만들고 작동시키는 일을 맡게 되었습니다. 이것은 Arduino 프로젝트 허브의 첫 번째 프로젝트이기도 합니다. 전자 제품과 로봇 공학은 제가 가장 좋아하는 취미 중 하나이기 때문에 Covid19로 인해 폐쇄된 이 시기에 로봇을 만드는 일을 맡게 되었습니다.

로봇은 휴대폰에서 전송된 블루투스 신호를 감지합니다. HC-05 블루투스 모듈을 사용하여 휴대폰의 명령 신호를 감지하고 로봇을 제어합니다. ArduinoBlueControl 앱을 사용하여 로봇을 제어했습니다.

로봇의 심장은 아두이노 나노입니다. 직렬 통신을 통해 HC-05 모듈에서 신호를 수신하고 L298N 모터 드라이버 모듈을 통해 모터를 제어하여 정, 역, 좌, 우 방향으로 동작합니다.

HC-05 모듈의 TX 및 RX 핀을 Arduino Nano와 연결할 때 주의해야 합니다. 로직 레벨 변환기가 동일한 용도로 사용됩니다.

로봇은 HC SR-04 초음파 센서 모듈을 사용하여 경로에 있는 장애물을 감지합니다. 로봇은 전진하는 동안 장애물을 감지하면 정지합니다. RGB LED는 로봇의 상태를 표시하는 데 사용됩니다.

로봇은 2개의 기어 구동 모터로 구성된 2륜 베이스에 조립됩니다. 회로는 전원 공급 장치(3.3v 및 5v)가 있는 브레드보드 위에 조립됩니다. Arduino Nano는 모터에 대한 훨씬 더 높은 전류 요구 사항으로 인해 모터를 직접 구동할 수 없습니다. 따라서 L298N 모터 드라이버 모듈은 모터를 구동하는 데 사용됩니다. Arduino Nano의 PWM 신호는 L298N 모터 드라이버 모듈의 ENA 및 ENB 핀을 통해 모터의 속도를 제어하는 ​​데 사용됩니다.

다음은 작동 중인 로봇의 짧은 동영상입니다.

내 블루투스 제어 장애물 회피 로봇이 마음에 드셨기를 바랍니다. 이 로봇은 홈 오토메이션, 작업 현장의 장애물 회피 차량 등에 사용하도록 수정 및 확장할 수 있습니다.

<섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

코드

<울>
  • 블루투스 제어 로봇_Arduino 코드.
  • 블루투스 제어 로봇_Arduino 코드.C/C++
    /* Bluetooth 제어 장애물 회피 로봇 작성자:Alok Talukdar 날짜:09.05.2020*/#include // 직렬 통신을 위해 Arduino의 모든 핀을 사용하려면// L298 모터용 디지털 핀 정의 control module.#define IN1 5 // 오른쪽 모터용#define IN2 4 // 오른쪽 모터용#define IN3 3 // 왼쪽 모터용#define IN4 2 // 왼쪽 모터용#define ENA 9 // PWM 제어를 위해 A 활성화 of right motor#define ENB 10 // 왼쪽 모터의 PWM 제어를 위해 B 활성화// RGB LED 제어를 위한 디지털 핀 정의#define redLED 8#define greenLED A0#define blueLED 11// HC-SR04 초음파 센서 모듈 설정 const 정수 trigPin =6; // TRIG 핀은 Arduino Nanoconst의 D6 핀에 연결됨 int echoPin =7; // Arduino Nanoint의 D7 핀에 연결된 ECHO 핀 i,j,k =0;float duration,distance; // 거리 측정을 위한 변수 // HC05 블루투스 모듈 설정SoftwareSerial mySerial(12,13); // (12 --> RX , 13 --> TX)문자열 데이터; // 블루투스 제어용 변수 int btVal;void setup() { // 설정 코드를 여기에 넣어 한 번 실행:pinMode(trigPin,OUTPUT); // 초음파 펄스를 전송하도록 핀 D6을 구성합니다. pinMode(echoPin,INPUT); // 초음파 펄스를 수신하도록 핀 D7 구성 mySerial.begin(9600); // 소프트웨어 시리얼을 Baud rate 9600으로 설정합니다. pinMode(IN1,OUTPUT); // IN1 - IN4를 OUTPUT으로 구성하여 모터를 제어합니다. pinMode(IN2,OUTPUT); 핀모드(IN3,OUTPUT); 핀모드(IN4,OUTPUT); 핀모드(ENA,OUTPUT); 핀모드(ENB,OUTPUT); 핀 모드(빨간색 LED, 출력); 핀모드(파란색 LED, 출력); 핀모드(녹색LED,출력); 디지털 쓰기(IN1,LOW); // IN1 - IN4의 상태를 LOW로 설정합니다. digitalWrite(IN2,LOW); 디지털 쓰기(IN3,LOW); 디지털 쓰기(IN4,LOW); analogWrite(redLED,255); // LED를 끕니다. RGB LED는 일반적인 양극 유형입니다. 디지털 쓰기(파란색 LED, 높음); digitalWrite(greenLED,HIGH);}void loop(){ // 여기에 기본 코드를 넣어 반복적으로 실행합니다. while (mySerial.available()) { data =mySerial.readStringUntil('\n'); } btVal =(data.toInt()); 스위치 (btVal) { 경우 1:forward(); 디지털 쓰기(녹색 LED, 낮음); analogWrite(redLED,255); 디지털 쓰기(파란색 LED, 높음); dist(); 부서지다; 사례 2:reverse(); 디지털 쓰기(녹색 LED, 높음); analogWrite(redLED,255); 디지털 쓰기(파란색 LED, 낮음); 부서지다; 사례 3:왼쪽(); 부서지다; 사례 4:right(); 부서지다; 사례 5:stoprobot(); 디지털 쓰기(녹색 LED, 높음); analogWrite(빨간색 LED, 0); 디지털 쓰기(파란색 LED, 높음); 부서지다; 기본값:digitalWrite(greenLED, HIGH); analogWrite(redLED,255); 디지털 쓰기(파란색 LED, 높음); 부서지다; } if (mySerial.available() <0) { //Serial.println("블루투스 데이터 없음 "); }} // 모터 제어 함수 선언 void forward() { for(i=0;i<=100;i++) { analogWrite(ENA,i); analogWrite(ENB,i); 디지털 쓰기(IN1,HIGH); 디지털 쓰기(IN2,LOW); 디지털 쓰기(IN3,LOW); 디지털 쓰기(IN4, 높음); } } 무효 역() { for(j=0;j<=100;j++) { analogWrite(ENA,j); analogWrite(ENB,j); 디지털 쓰기(IN1,LOW); 디지털 쓰기(IN2, 높음); 디지털 쓰기(IN3, HIGH); 디지털 쓰기(IN4,LOW); } } 무효 왼쪽() { analogWrite(ENA,127); 아날로그 쓰기(ENB,0); 디지털 쓰기(IN1,HIGH); 디지털 쓰기(IN2,LOW); 디지털 쓰기(IN3, HIGH); 디지털 쓰기(IN4, 높음); } 무효 right() { analogWrite(ENA,0); analogWrite(ENB,127); 디지털 쓰기(IN1,HIGH); 디지털 쓰기(IN2, 높음); 디지털 쓰기(IN3,LOW); 디지털 쓰기(IN4, 높음); } 무효 stoprobot() { analogWrite(ENA,0); 아날로그 쓰기(ENB,0); 디지털 쓰기(IN1,LOW); 디지털 쓰기(IN2,LOW); 디지털 쓰기(IN3,LOW); 디지털 쓰기(IN4,LOW); } 무효 dist() { digitalWrite(trigPin,LOW); // HC-SR04의 TRIG 핀을 통해 펄스를 전송하기 위해 delayMicroseconds(2); digitalWrite(trigPin,HIGH); 지연마이크로초(10); 디지털 쓰기(trigPin,LOW); 지속 시간 =pulseIn(echoPin,HIGH); // 펄스 거리의 지속 시간 읽기 =(duration*0.0343)/2; // 거리를 cm 단위로 측정합니다. 음속은 340 m/s 또는 0.0343 cm/us if(distance<20) // 거리가 <20 cms이면 로봇을 중지합니다. { stoprobot(); 디지털 쓰기(녹색 LED, 높음); analogWrite(빨간색 LED, 0); 디지털 쓰기(파란색 LED, 높음); } 지연(1000); } 

    회로도

    로봇의 회로도.

    제조공정

    1. 비전 기반 장애물 회피 기능이 있는 모바일 로봇
    2. Bluetooth를 통해 제어되는 Raspberry Pi Robot
    3. Arduino 및 Raspberry Pi로 인터넷 제어 비디오 스트리밍 로봇 구축
    4. Raspberry Pi를 사용한 제스처 제어 로봇
    5. Android 스마트폰으로 제어되는 RASPBERRY PI WIFI 로봇
    6. Windows 10 IoT Core :음성 제어 로봇
    7. 라즈베리 파이를 사용하는 Wi-Fi 제어 로봇
    8. ROObockey:원격 제어, 조준 지원 스트리트 하키 로봇
    9. 인공 지능을 사용한 장애물 회피
    10. 음성 제어 로봇