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

아두이노 RC 호버크라프트 제작: 풀 3D 프린팅 설계 및 프로그래밍 가이드

이 튜토리얼에서는 아두이노 기반 RC 호버크라프트를 만드는 방법을 배웁니다. 프로펠러를 포함한 호버크라프트 부품 설계 및 3D 프린팅부터 전자 부품 연결, 아두이노 프로그래밍까지 전 과정을 보여드리겠습니다.

다음 영상을 시청하거나 아래 작성된 튜토리얼을 읽어보세요.

개요

호버크라프트 제어에는 이전 영상에서 만든 DIY 아두이노 RC 송신기를 사용했습니다. 오른쪽 조이스틱으로 후면 러더(방향타) 위치를 제어하는 서보 모터를, 포텐셔미터 하나로 리프트 프로펠러(브러시리스 DC 모터 장착)를, 왼쪽 조이스틱으로 추진력을 제어합니다. 이 RC 호버크라프트 제작에 필요한 것들을 살펴보겠습니다.

아두이노 RC 호버크라프트 제작: 풀 3D 프린팅 설계 및 프로그래밍 가이드

호버크라프트 3D 모델

3D 모델링 소프트웨어로 호버크라프트를 설계했습니다.

아두이노 RC 호버크라프트 제작: 풀 3D 프린팅 설계 및 프로그래밍 가이드

Thangs에서 3D 모델을 찾아 다운로드하거나 브라우저에서 탐색할 수 있습니다.

아두이노 RC 호버크라프트 제작: 풀 3D 프린팅 설계 및 프로그래밍 가이드

Thangs에서 어셈블리 3D 모델 다운로드.

3D 프린팅용 STL 파일:

호버크라프트 작동 원리

호버크라프트의 기본 원리는 공기 쿠션으로 선체를 띄우는 것입니다. 중앙 프로펠러가 선체 하부로 공기를 불어넣어 부드러운 소재로 만든 스커트(skirt)를 부풀립니다.

아두이노 RC 호버크라프트 제작: 풀 3D 프린팅 설계 및 프로그래밍 가이드

스커트 내 공기 압력이 충분히 높아지면 선체가 떠오릅니다. 지속적으로 공급된 공기는 선체 중앙에서 스커트와 지면 사이로 빠져나가며 추가 양력을 만들고 호버크라프트와 지면 간 마찰도 줄여줍니다.

뜨면 두 번째 프로펠러로 추력을 생성해 호버크라프트를 전진시킵니다.

아두이노 RC 호버크라프트 제작: 풀 3D 프린팅 설계 및 프로그래밍 가이드

추진 프로펠러 후면에는 간단한 러더 세트가 있어 조향에 사용합니다.

3D 프린팅

설계 완료 후 부품 3D 프린팅을 시작했습니다.

아두이노 RC 호버크라프트 제작: 풀 3D 프린팅 설계 및 프로그래밍 가이드

호버크라프트 선체(hull)가 가장 큰 출력물로, 제 Creality CR-10 3D 프린터(출력 베드 30x30cm)에 맞게 설계했습니다.

아두이노 RC 호버크라프트 제작: 풀 3D 프린팅 설계 및 프로그래밍 가이드

이 3D 프린터 링크도 참고하세요.

출력 완료 후 후가공. 메인 바디(콕핏)가 가장 오래 걸렸는데 약 18시간 소요됐습니다. 곡면 설계에 단일 출력으로 하려다 보니 서포트 재료가 많이 사용됐습니다.

아두이노 RC 호버크라프트 제작: 풀 3D 프린팅 설계 및 프로그래밍 가이드

하지만 서포트 제거가 아주 쉽고 최종 결과물이 완벽하게 나왔습니다. 선체는 뒤집어서 출력했고 서포트 재료가 약간만 있었습니다. 중앙 블로워 하우징에서 스커트 홀더가 제대로 들어가게 일부 재료를 잘라내야 했습니다.

아두이노 RC 호버크라프트 제작: 풀 3D 프린팅 설계 및 프로그래밍 가이드

3D 모델을 이미 업데이트해 이 문제는 없을 겁니다.

일부 둥근 부분이 거칠어 사포로 다듬었습니다.

아두이노 RC 호버크라프트 제작: 풀 3D 프린팅 설계 및 프로그래밍 가이드

프로펠러들은 후가공 없이 3D 프린터에서 바로 나와도 꽤 잘 작동했습니다.

아두이노 RC 호버크라프트 제작: 풀 3D 프린팅 설계 및 프로그래밍 가이드

호버크라프트 도색

3D 프린팅 부품 도색 단계입니다. 프라이머 없이 아크릴 스프레이 페인트를 바로 뿌렸습니다.

아두이노 RC 호버크라프트 제작: 풀 3D 프린팅 설계 및 프로그래밍 가이드

첫 코트는 초콜릿 브라운. 작은 장식용 부품들엔 더 밝은 브라운을 썼습니다.

더 멋지게 보이게 하려 첫 코트 마른 후 두 색을 더 추가했습니다. 종이에 무작위 패턴을 만들어 스트라이프와 스팟을 다른 색으로 표현했습니다. 밝은 브라운과 검정색 사용.

아두이노 RC 호버크라프트 제작: 풀 3D 프린팅 설계 및 프로그래밍 가이드

아두이노 RC 호버크라프트 조립

부품들이 잘 나와서 마르자마자 조립을 계속했습니다.

아두이노 RC 호버크라프트 제작: 풀 3D 프린팅 설계 및 프로그래밍 가이드

추진 블로워 하우징에 러더 제어용 서보 모터를 설치했습니다. M2 볼트/너트 2개로 고정.

아두이노 RC 호버크라프트 제작: 풀 3D 프린팅 설계 및 프로그래밍 가이드

브러시리스 모터 장착. 제가 가진 건 D2830(직경 28mm, 길이 30mm)인데 하우징이 이 모터에 맞게 설계됐습니다.

아두이노 RC 호버크라프트 제작: 풀 3D 프린팅 설계 및 프로그래밍 가이드

모터 삽입 시 선들을 구멍으로 먼저 통과시킵니다. 좀 타이트하지만 통과 가능. 뒷면에서 M3 볼트로 모터를 하우징에 고정합니다.

아두이노 RC 호버크라프트 제작: 풀 3D 프린팅 설계 및 프로그래밍 가이드

추진 하우징을 메인 바디와 합칩니다. 이 파트에 서보와 BLDC 모터 선이 통과할 구멍이 있습니다.

아두이노 RC 호버크라프트 제작: 풀 3D 프린팅 설계 및 프로그래밍 가이드

M3 볼트 4개로 단단히 고정합니다.

아두이노 RC 호버크라프트 제작: 풀 3D 프린팅 설계 및 프로그래밍 가이드

같은 방식으로 선체(hull)에 두 번째 브러시리스 모터를 장착합니다. 선 통과 후 뒷면에서 M3 볼트 4개로 고정.

회로도

전자 부품은 선체와 메인 바디 사이에 들어갑니다. 회로도를 보며 연결 방법을 확인하세요.

이 호버크라프트의 두뇌는 아두이노 보드입니다. 아두이노로 서보와 두 브러시리스 모터(ESC 2개)를 쉽게 제어할 수 있습니다. BLDC 모터 전원엔 3S 리튬폴리머 배터리(약 11V), 아두이노 전원엔 ESC의 BEC 기능으로 공급되는 5V를 사용합니다.

아두이노 RC 호버크라프트 제작: 풀 3D 프린팅 설계 및 프로그래밍 가이드

무선 통신엔 NRF24L01 트랜시버 모듈을 쓰는데, 증폭 안테나 타입이면 개방 공간에서 최대 700m 안정적 통신 가능합니다. 제어용 RC 송신기는 이전 튜토리얼에서 직접 만든 것으로, 자세한 내용은 그곳을 참고하세요. NRF24L01 모듈 튜토리얼, 아두이노로 브러시리스 모터 사용법 튜토리얼도 있습니다. 기본 원리는 송신기가 조이스틱/포텐셔미터 데이터를 수신기로 보내고, 수신기가 브러시리스 모터 속도와 서보 위치를 제어하는 것입니다.

회로도에 한 가지 더: 배터리 모니터. 두 저항으로 된 단순 전압 분배기를 배터리에 직접 연결하고 출력을 아두이노 아날로그 입력에 연결했습니다. 전압 분배기가 11V를 약 4V로 낮춰 5V 아두이노 핀에서 읽을 수 있게 합니다. 배터리 전압 모니터링하고, 예: 11V 미만 시 LED 점등.

필요한 부품:

  • NRF24L01 트랜시버 모듈
  • NRF24L01 + PA + LNA
  • 브러시리스 모터
  • ESC 30A
  • 리튬폴리머 배터리
  • XT60 2 Female to 1 Male (병렬 배터리 커넥터)
  • XT60 커넥터
  • 서보 모터
  • 아두이노 보드

설명대로 부품 연결 시작. 두 ESC를 단일 배터리에 연결하려고 XT60 타입 병렬 배터리 커넥터 스플리터를 사용했습니다.

아두이노 RC 호버크라프트 제작: 풀 3D 프린팅 설계 및 프로그래밍 가이드

전원 스위치 추가를 위해 XT60 커넥터 하나에 선 하나 잘라 토글 스위치 납땜. 한쪽은 Y 스플리터 케이블, 다른 쪽은 배터리에 연결.

ESC 두 개를 메인 바디에 넣고 선체와 사이에 끼운 뒤 M3 볼트 4개로 두 파트를 단단히 고정했습니다. 바디 상단 구멍으로 배터리를 콕핏 영역에 넣었습니다.

아두이노 RC 호버크라프트 제작: 풀 3D 프린팅 설계 및 프로그래밍 가이드

아두이노 연결을 위해 아두이노에 핀 헤더 두 개를 추가해 GND와 5V 핀으로 썼습니다.

아두이노 RC 호버크라프트 제작: 풀 3D 프린팅 설계 및 프로그래밍 가이드

모든 부품을 아두이노에 연결한 뒤 NRF24L01 안테나, 표시 LED, 전원 스위치를 콕핏 상단 커버 구멍으로 통과시켰습니다.

아두이노 RC 호버크라프트 제작: 풀 3D 프린팅 설계 및 프로그래밍 가이드

콕핏 안에 모든 걸 욱여넣었습니다. 아두이노 우노를 써서 좀 타이트했는데 아두이노 나노를 썼으면 나았을 것 같습니다.

아두이노 RC 호버크라프트 제작: 풀 3D 프린팅 설계 및 프로그래밍 가이드

그래도 다 들어가게 했고, 작은 장식 파트를 커버에 붙인 뒤 콕핏 바디에 클립으로 고정했습니다.

조향 시스템 설치. 서보 혼에 작은 링크를 M2 볼트/너트로 연결. 첫 번째 러더를 제자리에 끼우고 2mm 금속 와이어로 추진 하우징에 고정(와이어 축으로 회전). 두 번째 러더도 같은 방식.

아두이노 RC 호버크라프트 제작: 풀 3D 프린팅 설계 및 프로그래밍 가이드

두 번째 러더에 추가 슬롯이 있어 앞서 끼운 링크와 연결. M2 볼트/너트로 고정. 두 러더를 또 다른 링크로 서로 연결하면 조향 시스템 완성.

아두이노 RC 호버크라프트 제작: 풀 3D 프린팅 설계 및 프로그래밍 가이드

호버크라프트 측면에 작은 장식 파트 부착. 드릴로 구멍 뚫고 나사 하나로 선체에 고정. 양쪽에 달아 전체 외관에 잘 어울립니다.

아두이노 RC 호버크라프트 제작: 풀 3D 프린팅 설계 및 프로그래밍 가이드

이제 호버크라프트 스커트(skirt) 제작. 스커트 홀더에 홀더를 선체에 고정하는 구멍들이 있습니다.

아두이노 RC 호버크라프트 제작: 풀 3D 프린팅 설계 및 프로그래밍 가이드

너트 슬롯도 있어 M3 볼트로 홀더를 선체에 쉽게 고정할 수 있습니다. 너트들 다 끼운 뒤 스커트용으로 일반 쓰레기봉투 비닐을 사용했습니다.

아두이노 RC 호버크라프트 제작: 풀 3D 프린팅 설계 및 프로그래밍 가이드

홀더 중앙에 순간접착제 발라 비닐에 붙였습니다. 홀더 둘레에서 약 6cm 오프셋해 여러 지점 표시하고 연결.

아두이노 RC 호버크라프트 제작: 풀 3D 프린팅 설계 및 프로그래밍 가이드

칼로 비닐을 적당 크기로 자릅니다. 뒤집어서 앞서 접착한 부분에 추가 홀더를 댑니다.

아두이노 RC 호버크라프트 제작: 풀 3D 프린팅 설계 및 프로그래밍 가이드

비닐 바깥쪽을 홀더 윗면에 접착. 다시 순간접착제로 조심스럽게 고정.

아두이노 RC 호버크라프트 제작: 풀 3D 프린팅 설계 및 프로그래밍 가이드

완성된 스커트 모습.

아두이노 RC 호버크라프트 제작: 풀 3D 프린팅 설계 및 프로그래밍 가이드

볼트가 지나갈 구멍들을 비닐에 뚫습니다. 스커트 홀더가 선체보다 1mm 작아서 비닐과 결합하면 선체에 완벽하게 들어맞습니다. 둘레 전체에 M3 볼트를 조여 스커트를 선체에 고정.

아두이노 RC 호버크라프트 제작: 풀 3D 프린팅 설계 및 프로그래밍 가이드

스커트 중앙 부분 비닐을 잘라내는 작업이 남았습니다.

아두이노 RC 호버크라프트 제작: 풀 3D 프린팅 설계 및 프로그래밍 가이드

이렇게 하면 공기 절반은 직접 스커트를 부풀리고, 절반은 이 구멍으로 빠져나가며 중앙에 추가 공기 방울을 만듭니다.

마지막으로 프로펠러를 브러시리스 모터에 장착. 브러시리스 모터에 딸려오는 콜렛(collet)을 사용해 프로펠러를 모터 샤프트에 고정합니다. 간단하고 효과적.

아두이노 RC 호버크라프트 제작: 풀 3D 프린팅 설계 및 프로그래밍 가이드

다른 모터 콜렛을 잃어버려 프로펠러 다른 버전을 프린팅해 모터 샤프트(3.15mm)에 직접 끼우게 했습니다. 출력 품질 좋아 접착제 없이도 완벽하게 맞고 고정됐습니다.

아두이노 RC 호버크라프트 제작: 풀 3D 프린팅 설계 및 프로그래밍 가이드

무선 조종 호버크라프트가 드디어 완성됐습니다.

아두이노 RC 호버크라프트 제작: 풀 3D 프린팅 설계 및 프로그래밍 가이드

이제 아두이노 코드와 프로그램 작동 원리를 살펴보겠습니다.

아두이노 RC 호버크라프트 코드

이 DIY 아두이노 RC 호버크라프트 프로젝트 코드입니다:

/* Arduino based RC Hovercraft == Receiver Code - ESC and Servo Control = by Dejan, www.HowToMechatronics.com Library: TMRh20/RF24, https://github.com/tmrh20/RF24/ */
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <Servo.h>

#define led 10
RF24 radio(8, 9); // nRF24L01 (CE, CSN)
const byte address[6] = "00001";
unsigned long lastReceiveTime = 0;
unsigned long currentTime = 0;

Servo esc1; // ESC 제어용 서보 객체
Servo esc2;
Servo servo1;

int esc1Value, esc2Value, servo1Value;

struct Data_Package {
  byte j1PotX; byte j1PotY; byte j1Button;
  byte j2PotX; byte j2PotY; byte j2Button;
  byte pot1; byte pot2;
  byte tSwitch1; byte tSwitch2;
  byte button1; byte button2; byte button3; byte button4;
};

Data_Package data;

void setup() {
  Serial.begin(9600);
  radio.begin();
  radio.openReadingPipe(0, address);
  radio.setAutoAck(false);
  radio.setDataRate(RF24_250KBPS);
  radio.setPALevel(RF24_PA_LOW);
  radio.startListening();
  resetData();
  esc1.attach(7);
  esc2.attach(6);
  servo1.attach(5);
  pinMode(led, OUTPUT);
}

void loop() {
  currentTime = millis();
  if (currentTime - lastReceiveTime > 1000) {
    resetData();
  }
  if (radio.available()) {
    radio.read(&data, sizeof(Data_Package));
    lastReceiveTime = millis();
  }

  // 서보 제어: 조이스틱 2 X축 0~255 → 0~50도 매핑
  servo1Value = map(data.j2PotX, 0, 255, 0, 50);
  servo1.write(servo1Value);

  // 브러시리스 모터 ESC 제어
  // 리프트 프로펠러
  esc1Value = map(data.pot1, 0, 255, 1000, 2000);
  esc1.writeMicroseconds(esc1Value);
  
  // 추진 프로펠러
  esc2Value = constrain(data.j1PotY, 130, 255); // 조이스틱 중간값. 상위 값 130~255만 사용
  esc2Value = map(esc2Value, 130, 255, 1000, 2000);
  esc2.writeMicroseconds(esc2Value);

  // 배터리 전압 모니터링
  int sensorValue = analogRead(A0);
  float voltage = sensorValue * (5.00 / 1023.00) * 3;
  Serial.println(voltage);
  if (voltage < 11) { digitalWrite(led, HIGH); }
  else { digitalWrite(led, LOW); }
}

void resetData() {
  data.j1PotX = 127; data.j1PotY = 127;
  data.j2PotX = 127; data.j2PotY = 127;
  data.j1Button = 1; data.j2Button = 1;
  data.pot1 = 1; data.pot2 = 1;
  data.tSwitch1 = 1; data.tSwitch2 = 1;
  data.button1 = 1; data.button2 = 1; data.button3 = 1; data.button4 = 1;
}

설명: 무선 통신용 RF24 라이브러리, 서보와 브러시리스 모터 제어용 Servo 라이브러리 포함. 라디오/서보 객체 정의, 프로그램용 변수, 내 DIY RC 송신기에서 들어올 데이터 저장용 구조체 정의. 통신 작동 원리詳細は 별도 튜토리얼 참고.

setup에서 라디오 통신 초기화, 서보/ESC 연결 핀 정의.

loop에서 송신기 데이터 읽어 서보와 브러시리스 모터 제어에 사용. 조이스틱 데이터(0~255)를 0~50도로 변환해 서보 위치 제어.

같은 방식으로 ESC 제어. 수신 데이터(0~255)를 1000~2000으로 변환해 writeMicroseconds()로 ESC에 제어 신호 전송.

배터리 전압 모니터링: 전압 분배기에서 아날로그 입력 읽어 간단한 수학으로 실제 배터리 전압으로 변환. 11V 미만 시 표시 LED 점등.

이상입니다. 더 자세한 내용은 추천 튜토리얼들을 참고해 전체 작동 원리를 이해하세요.

이 튜토리얼이 즐겁고 유익했길 바랍니다. 질문은 댓글로 남겨주시고 아두이노 프로젝트 모음도 확인해보세요.

제조공정

  1. 나만의 LUMAZOID 만들기: DIY 아두이노 음악 비주얼라이저
  2. 아두이노와 스마트폰으로 만드는 스마트 전압계 – 초간단 DIY 프로젝트
  3. Pixie: 아두이노 기반 네오픽셀 손목시계 – 세련된 DIY LED 타임피스
  4. 아두이노, 구글 카드보드, 블루투스로 DIY VR 스케이트보드 만들기
  5. 아두이노 나노 + 128x64 OLED로 실시간 셀룰러 오토마타 (생명 게임) 구현
  6. DIY 아두이노 라디오닉스 EMR 치료 기기 제작
  7. 아두이노와 구글 시트로 구현하는 실시간 RFID 출석 시스템
  8. 아두이노 나노와 SG90 서보로 만드는 DIY 2축 모션 레이싱 시뮬레이터
  9. 아두이노 우노로 신뢰할 수 있는 스마트 에너지 모니터 만들기 – 단계별 가이드
  10. 아두이노 기반 보안 시스템: 스마트 모션 감지 & 알림