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

와이파이 제어 FPV 로버 로봇: 아두이노 & ESP8266 DIY 가이드

부품 및 소모품

부품수량
아두이노 UNO1
아두이노 프로토 실드1
Espressif ESP8266 ESP-011
28BYJ 스테퍼 모터2
ULN2003 스테퍼 드라이버1
안드로이드 기기1
저항 1kΩ1
저항 100kΩ2
파워 뱅크1
42x19mm 고무 트레드 휠2
49x20x32mm 스틸 볼 옴니 휠1
M2 x 10mm 볼트12
M2 x 1.5mm 너트12
M3 x 10mm 볼트8
M3 x 1.5mm 너트8
5/32" x 1" 볼트3
5/32" 너트6
핸드헬드 셀카봉 클립1
3x3cm 알루미늄 브래킷2
2mm 아크릴 시트1

필요한 도구 및 장비

앱 및 온라인 서비스

프로젝트 소개

와이파이 제어 FPV 로버 로봇: 아두이노 & ESP8266 DIY 가이드
와이파이 제어 FPV 로버 로봇: 아두이노 & ESP8266 DIY 가이드
와이파이 제어 FPV 로버 로봇: 아두이노 & ESP8266 DIY 가이드
와이파이 제어 FPV 로버 로봇: 아두이노 & ESP8266 DIY 가이드

이 튜토리얼에서는 아두이노 UNO와 ESP8266 와이파이 모듈, 두 개의 스테퍼 모터를 연결하여 와이파이 네트워크를 통해 원격 제어되는 2륜 로봇 로버를 설계하는 방법을 보여줍니다. 로봇은 HTML로 설계된 인터페이스를 사용하여 일반 인터넷 브라우저에서 제어할 수 있습니다. 안드로이드 스마트폰을 사용하여 로봇의 비디오와 오디오를 운영자의 제어 인터페이스로 브로드캐스트합니다.

온라인에서 다양한 모양, 크기, 가격의 로봇 키트를 구할 수 있습니다. 하지만 용도에 따라 어느 것도 맞지 않을 수 있고, 실험용으로는 너무 비쌀 수 있습니다. 아니면 완제품을 사는 대신 직접 기계 구조를 만들고 싶을 수도 있습니다. 이 튜토리얼에서는 3D 프린터나 레이저 커터 같은 비싼 장비 없이 일반 도구만으로 저렴한 아크릴 프레임을 설계하고 제작하는 방법도 보여줍니다. 간단한 로봇 플랫폼을 제시합니다.

이 가이드는 모양이나 제어 인터페이스를 변경하도록 적용할 수 있습니다. 제 다른 로봇 프로젝트("Robô da Alegria")에도 적용되었습니다. 아래 링크에서 확인하세요:

[경고: 일부 사진은 디자인이 개선되어 구버전입니다. 하지만 여기에 제시된 아이디어는 여전히 유효합니다.]

1단계: 도구

와이파이 제어 FPV 로버 로봇: 아두이노 & ESP8266 DIY 가이드

이 프로토타입 제작에 필요한 도구:

2단계: 기계 구조 및 재료

와이파이 제어 FPV 로버 로봇: 아두이노 & ESP8266 DIY 가이드

커스텀 로봇을 만들려면 먼저 기계 구조를 설계해야 합니다. 용도에 따라 간단할 수도, 세부 사항과 제약이 많을 수도 있습니다. 3D CAD 소프트웨어로 설계하거나 복잡도에 따라 2D로 그려도 됩니다.

직접 기계 구조를 만들고 싶지 않다면 온라인에서 완제품 구조를 구매할 수도 있습니다. 이 경우 6단계로 건너뛰세요.

이 튜토리얼에서는 모터와 기타 부품 장착을 위한 저렴한 아크릴 프레임을 설계했습니다. 이 구조는 123D Design CAD 소프트웨어로 3D 설계되었고, 각 파트는 Draftsight 소프트웨어로 2D로 변환되었습니다.

사용된 재료:

베이스 구조 제작 단계:

안타깝게도 스테퍼 모터 샤프트 직경이 휠 구멍보다 큽니다. 이 부품들을 결합하려면 접착제가 필요할 겁니다. 이 튜토리얼에서는 모터 샤프트와 휠 사이에 나무 커플링을 임시로 만들었습니다.

FMAR9JBITKJE83H.123dx F21RD24ITKJE8AJ.dwg FPTGSODITKJE8AN.pdf

3단계: 구조 절단

와이파이 제어 FPV 로버 로봇: 아두이노 & ESP8266 DIY 가이드

모델 치수를 아크릴 시트에 전송해야 합니다. 2D 도면을 일반 프린터로 접착지에 인쇄한 후 적절한 크기로 자르고 아크릴 표면에 마스크로 붙이세요.

핸드 쏘로 치수대로 아크릴을 자르거나 아래 설명된 브레이크 기법을 사용하세요.

유틸리티 나이프와 자/스케일로 직선으로 아크릴을 긋습니다. 끝까지 자를 필요 없이 나중에 부러뜨릴 트랙만 만드세요.

아크릴을 평평한 표면에 놓고 클램프로 고정한 후 압력을 가해 두 조각으로 부러뜨리세요. 모든 절단이 끝날 때까지 반복하고, 사포로 거친 가장자리를 다듬으세요.

4단계: 베이스 구멍 뚫기

와이파이 제어 FPV 로버 로봇: 아두이노 & ESP8266 DIY 가이드

2D 도면에 표시된 위치(마스크 표시)에 드릴링 머신으로 구멍을 뚫으세요.

아크릴은 비교적 뚫기 쉽습니다. 드릴링 머신이 없으면 유틸리티 나이프 같은 날카로운 도구로 수동으로 뚫거나 작은 구멍을 볼트 크기로 확대할 수 있습니다.

마스크를 제거하면 베이스가 준비됩니다.

5단계: 구조 조립

와이파이 제어 FPV 로버 로봇: 아두이노 & ESP8266 DIY 가이드
와이파이 제어 FPV 로버 로봇: 아두이노 & ESP8266 DIY 가이드
와이파이 제어 FPV 로버 로봇: 아두이노 & ESP8266 DIY 가이드
와이파이 제어 FPV 로버 로봇: 아두이노 & ESP8266 DIY 가이드

이미지에 따라 볼트와 너트로 부품을 장착하면 구조가 완성됩니다.

M3 볼트는 스테퍼 모터 설치용, 5/32" 볼트는 전면 휠과 스마트폰 클립 설치용입니다.

이제 잠시 쉬고 다음 단계에서 회로를 조립하세요...

6단계: 전자 회로

와이파이 제어 FPV 로버 로봇: 아두이노 & ESP8266 DIY 가이드

필요한 전자 부품:

회로 조립에 특별한 도구는 필요 없습니다. 모든 부품은 즐겨 찾는 온라인 쇼핑몰에서 구할 수 있습니다. 회로는 아두이노 USB 포트에 연결된 파워 뱅크로 전원 공급됩니다.

회로도에 따라 모든 부품을 연결하세요. ESP-01 모듈과 스테퍼 모터 연결용 점퍼 와이어가 필요합니다. 프로토실드(더 컴팩트), 일반 브레드보드, 또는 직접 아두이노 실드 설계를 사용하세요. USB 케이블을 아두이노 UNO에 연결하고 다음 단계로 진행하세요.

7단계: 아두이노 코드

최신 아두이노 IDE를 설치하세요. 이 프로젝트에서는 스테퍼 모터 제어용 stepper.h 라이브러리를 사용했습니다. ESP-01 모듈 통신용 추가 라이브러리는 필요 없습니다. 본인의 ESP8266 보드레이트를 확인하고 코드에 제대로 설정하세요.

아두이노 코드(stepperRobot.ino)를 다운로드하고 XXXXX를 와이파이 공유기 SSID로, YYYYY를 공유기 비밀번호로 바꾸세요. 아두이노 보드를 컴퓨터 USB 포트에 연결하고 코드를 업로드하세요.

FG1K5KJITKJFW2R.ino

8단계: 안드로이드 IP 캠

와이파이 제어 FPV 로버 로봇: 아두이노 & ESP8266 DIY 가이드

안드로이드 스마트폰으로 로봇의 비디오와 오디오를 제어 인터페이스로 브로드캐스트합니다. 구글 플레이 스토어에서 앱을 찾으세요 (https://play.google.com/store/apps/details?id=com.pas.webcam).

설치하고 다음 단계로 이동하세요.

9단계: 회로를 로봇에 장착

와이파이 제어 FPV 로버 로봇: 아두이노 & ESP8266 DIY 가이드

이미지와 같이 M1 볼트로 로봇 상단에 회로를 설치하세요.

그 후 파워 뱅크를 양면 테이프로 로봇 뒤쪽에 붙이고(나중에 쉽게 떼어내기 위해), 스마트폰을 클립에 장착하세요.

10단계: 웹 기반 제어 인터페이스

와이파이 제어 FPV 로버 로봇: 아두이노 & ESP8266 DIY 가이드

로봇 제어용 HTML 인터페이스를 설계했습니다.

interface.rar을 다운로드하고 모든 파일을 폴더에 압축 해제한 후 파이어폭스로 여세요.

텍스트박스 폼으로 ESP 모듈 IP 주소와 비디오/오디오 서버 IP 주소(안드로이드 IP Webcam 앱)를 입력합니다.

테스트 버튼이 있어 다른 명령이 수신될 때까지 로봇이 회전합니다. 키보드 방향키로 로봇을 전진/후진, 좌/우 회전시킵니다.

FQTAWF5ITKJFW4O.rar

11단계: 사용법

아두이노를 재시작하면 자동으로 와이파이 네트워크에 연결을 시도합니다. 시리얼 모니터로 연결 성공 여부를 확인하고 공유기가 ESP-01에 할당한 IP를 확인하세요. 인터넷 브라우저(파이어폭스)에서 HTML 파일을 열고 이 IP 주소를 텍스트박스에 입력하세요.

기타 방법으로도 공유기가 기기에 할당한 IP 주소를 확인할 수 있습니다.

아두이노 UNO를 컴퓨터에서 분리하고 파워 뱅크에 연결하세요. 다시 연결될 때까지 기다리세요.

로봇에 부착된 스마트폰에서 IP Webcam 앱을 실행하세요. 제어 인터페이스에 비디오/오디오 IP를 입력하고 서버에 연결하면 준비 완료. 앱에서 비디오 해상도를 낮춰 전송 지연을 줄일 수 있습니다.

키보드 방향키를 누르고 있으면 로봇이 회전하거나 전진/후진합니다. 즐겁게 주변을 탐험하세요!

코드

아두이노 코드
// 라이브러리 포함
#include <SoftwareSerial.h>
#include <Stepper.h>

SoftwareSerial esp8266(3, 2); // RX=3, TX=2

// 변수 정의
#define DEBUG true // ESP8266과 아두이노 간 메시지를 시리얼 포트에 표시
const int stepsPerRevolution = 500;
int state = 5;

Stepper rightStepper(stepsPerRevolution, 8,10,9,11);
Stepper leftStepper(stepsPerRevolution, 4,6,5,7);

// 설정
void setup() {
  Serial.begin(9600);
  esp8266.begin(19200);
  sendData("AT+RST\r\n", 2000, DEBUG); // 모듈 리셋
  sendData("AT+CWMODE=1\r\n", 1000, DEBUG); // 스테이션 모드 설정
  sendData("AT+CWJAP=\"XXXXX\",\"YYYYY\"\r\n", 2000, DEBUG); // 와이파이 연결
  while(!esp8266.find("OK")) { } // 연결 대기
  sendData("AT+CIFSR\r\n", 1000, DEBUG); // IP 주소 표시
  sendData("AT+CIPMUX=1\r\n", 1000, DEBUG); // 다중 연결 허용
  sendData("AT+CIPSERVER=1,80\r\n", 1000, DEBUG); // 포트 80에서 웹 서버 시작
  rightStepper.setSpeed(60);
  leftStepper.setSpeed(60);
}

void loop() {
  if (esp8266.available()) {
    if (esp8266.find("+IPD,")) {
      String msg;
      esp8266.find("?");
      msg = esp8266.readStringUntil(' ');
      String command = msg.substring(0, 3);
      String valueStr = msg.substring(4);
      int value = valueStr.toInt();
      if (DEBUG) { Serial.println(command); Serial.println(value); }
      
      // 전진
      if(command == "cm1") { state = 1; }
      // 후진
      if(command == "cm2") { state = 2; }
      // 우회전
      if(command == "cm3") { state = 3; }
      // 좌회전
      if(command == "cm4") { state = 4; }
      // 정지
      if(command == "cm5") { state = 5; }
    }
  }
  
  // 전진
  if (state == 1) { rightStepper.step(1); leftStepper.step(-1); }
  // 후진
  if (state == 2) { rightStepper.step(-1); leftStepper.step(1); }
  // 우회전
  if (state == 3) { rightStepper.step(1); leftStepper.step(1); }
  // 좌회전
  if (state == 4) { rightStepper.step(-1); leftStepper.step(-1); }
  // 정지
  if (state == 5) { }
}

// 보조 함수
String sendData(String command, const int timeout, boolean debug) {
  String response = "";
  esp8266.print(command);
  long int time = millis();
  while ((time + timeout) > millis()) {
    while (esp8266.available()) {
      char c = esp8266.read();
      response += c;
    }
  }
  if (debug) { Serial.print(response); }
  return response;
}
HTML 제어 인터페이스
미리보기 불가 (다운로드만 가능)

커스텀 파트 및 인클로저

123D 디자인 파일.

robot.123dx

베이스 2D 설계.

base.dwg

회로도

회로 회로도, 브레드보드 연결, 프리칭 파일

wistepper%20-%20rev1.fzz

제조공정

  1. 블루투스 제어 라즈베리 파이 로봇 만들기 - 오디오 피드백 포함
  2. 아두이노 & 라즈베리 파이로 인터넷 제어 영상 스트리밍 로봇 만들기
  3. 아두이노 메가 기반 UV 살균 로봇: 원격 제어 자외선 멸균 시스템
  4. 서보 모터 구동 장애물 회피 로봇: 아두이노 & HC-SR04로 제작하기
  5. DFRobot 정전식 지문 인식 센서 아두이노/ESP8266 연동 가이드
  6. 아두이노와 안드로이드로 룸바 크리에이트 2 제어하기: 단계별 가이드
  7. 아두이노 메가 기반 닌텐도 눙크 컨트롤 6자유도 로봇 암 키트
  8. 아두이노 나노와 조이스틱으로 2개 스테퍼 모터 제어하기 – 비주이노(Visuino) 튜토리얼
  9. 아두이노 나노로 만드는 음성 제어 로봇 - 블루투스와 안드로이드 앱 활용
  10. TinyML로 식물 건강 평가하기 - 아두이노 나노 33 BLE 센스 실전 가이드