본문 바로가기
로봇프로젝트

Arduino로 나만의 데스크탑 애완 동물 로봇 만들기- Build Your Own Desktop Pet Robot With Arduino

by 모빌리티키즈 2023. 11. 22.
728x90

안녕하세요.

모빌리티키즈 입니다.


데스크탑 애완 동물 로봇은 많은 장점과 사용 목적을 가지고 있습니다.

 이 로봇은 사용자에게 다음과 같은 혜택을 제공합니다:

회사나 집에서 혼자 계속해서 일하는 경우, 로봇은 적극적으로 상호작용하고 분위기를 활발하게 만들어 줄 수 있습니다.
로봇은 스트레스를 줄이고 피로를 풀어주는데 도움을 줄 수 있습니다.
사용자의 심리적 안정감을 높여주고, 외로움을 덜어줄 수 있습니다.
로봇은 학습과 엔터테인먼트를 위한 도구로 활용될 수 있습니다.
필요한 재료와 도구:
데스크탑 애완 동물 로봇을 제작하기 위해 다음과 같은 재료와 도구가 필요합니다:

Arduino 보드: 로봇의 뇌로 사용되는 마이크로컨트롤러 플랫폼으로, 제어와 프로그래밍을 담당합니다.
서보 모터: 로봇의 움직임을 제어하는 부품으로, 다양한 동작을 구현할 수 있습니다.
센서: 로봇이 주변 환경을 감지하고 상호작용할 수 있도록 도와주는 부품입니다.
배선 및 전원 공급 장치: 로봇 내의 부품들을 연결하고 전원을 공급하기 위한 장치들이 필요합니다.
기타 부속품: 프레임, 바퀴, LED 조명 등 로봇의 외형과 기능을 구성하는 다양한 부속품들이 필요합니다.
디자인 및 구조 설계:
로봇의 디자인과 구조는 개인의 창의력과 취향에 따라 다를 수 있습니다. 로봇의 형태와 크기, 부품 배치 등을 고려하여 디자인하고 구조를 설계해야 합니다. 이는 로봇이 안정적으로 작동하고 원하는 기능을 수행할 수 있도록 보장합니다.

Arduino 코드 작성:
로봇의 서보 모터를 제어하기 위한 Arduino 코드를 작성해야 합니다. 이 코드는 로봇의 동작과 상호작용을 정의하며, 사용자의 명령을 수행하도록 프로그래밍됩니다. 예시 코드와 함께 서보 모터를 제어하는 방법을 설명하여 쉽게 따라할 수 있도록 안내할 수 있습니다.

센서 활용:
로봇이 주변 환경을 감지하고 반응할 수 있도록 다양한 센서를 활용해야 합니다. 예를 들어 거리 감지 센서를 사용하여 장애물을 감지하고 피하는 동작을 수행할 수 있습니다. 센서의 원리와 활용 방법에 대해 자세히 설명하여 사용자가 센서를 활용한 기능을 구현할 수 있도록 도와줍니다.

추가 기능 구현:
로봇에는 소리, 조명, 터치 센서 등 다양한 추가 기능을 구현할 수 있습니다. 이를 위해 필요한 부품과 방법에 대해 안내하고, 각 기능을 구현하는 방법을 자세히 설명합니다.

조립 및 테스트:
로봇의 조립 과정을 단계별로 안내하여 사용자가 로봇을 직접 조립할 수 있도록 도와줍니다. 조립이 완료된 후에는 로봇의 작동을 테스트하고 문제가 발생할 경우 해결 방법을 안내합니다.

문제 해결 및 팁:
로봇 제작 중 발생할 수 있는 문제에 대한 해결 방법과 유용한 팁을 제공합니다. 이를 통해 사용자가 자신의 로봇 제작 과정에서 문제를 스스로 해결할 수 있도록 돕습니다.

마무리:
제작한 데스크탑 애완 동물 로봇의 활용 방안과 마무리 인사를 담당합니다. 로봇을 어떻게 활용할 수 있는지 설명하고, 사용자의 성공적인 로봇 제작을 축하하는 인사를 전합니다.

위의 내용을 포함하여 블로그를 작성해 드리도록 하겠습니다. 

 

로봇 애호가 여러분! 나만의 로봇 동료를 만드는 흥미진진한 세계로 뛰어들 준비를 하고 "YAKSHA"라는 이름을 붙입니다.

YAKSHA는 Cozmo에서 영감을 받은 로봇 친구가 될 것이며, 고유한 매력과 개성을 갖게 될 것입니다.

이 가이드에서는 새로운 가장 친한 친구가 될 준비가 된 YAKSHA와 함께 데스크톱 크기의 로봇을 만드는 기술을 살펴보겠습니다. 이 모든 것을 실현하기 위해 우리는 Arduino Nano를 YAKSHA의 두뇌로 사용하여 YAKSHA만의 고유한 방식으로 특성, 움직임 및 상호 작용을 형성할 수 있도록 할 것입니다.

이 프로젝트를 진행하면서 로봇을 만들 뿐만 아니라 로봇 공학과 프로그래밍에 대해 더 깊이 이해하게 될 것입니다. 이것은 전자 및 코딩 기술을 확장하는 동시에 독특한 로봇 동반자인 YAKSHA에 생명을 불어넣을 수 있는 기회입니다.

그러니 장비를 챙기고 작업 공간을 설정한 다음, 이 스릴 넘치는 모험을 시작하여, 이 쇼의 주인공이 될 캐릭터와 함께 YAKSHA를 만들어봅시다. YAKSHA에 생명을 불어넣고 새로운 친구를 사귈 준비가 되셨나요? 뛰어들자!

공급

필요한 소모품

전자공학:

  • 2 x 아두이노 나노
  • OLED 디스플레이
  • DRV8833 모터 드라이버
  • 7.4V LiPo 배터리
  • 전선 연결
  • 브레드보드
  • 천공된 프로토타이핑 보드
  • 4 x N20 모터
  • N20 모터 휠
  • 서보 모터
  • HC-05 블루투스 모듈
  • 남성 헤더 핀
  • 여성 헤더 핀

하드웨어:

  • 섀시용 5mm 선보드
  • 캐노피용 두꺼운 시트
  • 작은 나사

도구:

  • 납땜
  • 솔더 페이스트
  • 핫 글루 건
  • 슈퍼 글루
  • 취미 칼 자르기
  • 드라이버
  • 렌치 세트
  • 와이어 스트리퍼 및 커터
  • Arduino IDE가 설치된 컴퓨터

1단계: 섀시 조립

로봇용 섀시 제작을 시작하려면 90mm x 45mm(길이 x 너비) 크기의 5mm 선보드로 만든 베이스 플레이트가 필요합니다. 이 베이스 플레이트는 로봇 구조의 기초 역할을 합니다.

 

섀시를 조립하려면 다음 단계를 따르십시오.

  1. 작업 공간에 90mm x 45mm 선보드 베이스 플레이트를 배치하여 시작합니다.
  2. 단일 수직 부재를 베이스 플레이트에 부착합니다. 아래 도면은 이 수직 부재의 위치와 치수를 보여줍니다.
  3. 수평 미드플레이트를 섀시 구조에 조립합니다.
  4. 슈퍼 접착제를 사용하여 선보드 조각을 조립하십시오.
  5. 이 단계가 끝나면 기본 섀시가 완료됩니다.

2단계: 원동기 조립(N20 모터)

 

N20 모터를 조립하려면 다음 단계에 따라 다음 재료를 수집하십시오.

  • 4 x N20 모터
  • 슈퍼 접착제
  1. 섀시에서 모터를 연결할 위치를 식별합니다. 일반적으로 각 바퀴에 하나의 모터가 있습니다. 특정 배치에 대해서는 섀시 설계를 참조하십시오.
  2. 초강력 접착제 또는 적절한 접착제를 사용하여 N20 모터를 섀시에 단단히 부착합니다. 작동 중 흔들림이나 움직임을 방지하기 위해 올바르게 정렬되고 단단히 부착되었는지 확인하십시오. 모터에 슈퍼 접착제를 사용하는 것이 약간 이상하게 보일 수 있지만 내 설정에는 잘 작동한다는 것을 알았습니다. 원하는 경우 적절한 패스너를 사용할 수 있지만 단순화를 위해 여기서는 슈퍼 접착제를 사용하고 있습니다.
  3. 모터를 부착한 후 N20 모터 휠을 모터 샤프트에 밀어 넣습니다. 이 바퀴는 견인력을 제공하고 로봇이 움직일 수 있도록 하는 역할을 합니다.
  4. 4개의 N20 모터 모두에 대해 이 프로세스를 반복하여 각 모터가 섀시에 올바르게 부착되고 휠이 제자리에 단단히 접착되었는지 확인합니다.
  5. 모든 모터와 바퀴가 제자리에 있으면 로봇의 원동기가 준비되고 이동성에 한 걸음 더 가까워집니다.

3단계: 전자 제품 조립

이 단계에서는 로봇에 생명을 불어넣는 전자 부품을 조립합니다. Arduino Nano 보드, 모터 드라이버, Oled 디스플레이, 서보 모터 등을 연결합니다.

제공된 회로도를 참조하십시오

  1. 전자 장치 연결: 회로도에 따라 모든 전자 부품을 연결합니다. 연결이 다이어그램과 정확하게 일치하는지 확인하십시오.
  2. 재확인: 계속하기 전에 모든 연결이 회로도와 일치하는지 다시 확인하십시오.
  3. 조립 완료: 회로도에 따라 전자 장치가 올바르게 연결되면 로봇은 이제 작업을 수행하는 데 필요한 제어 시스템을 갖추게 됩니다.

4단계: 왜 두 개의 아두이노 나노인가?

왜 두 개의 아두이노 나노인가?

두 개의 Arduino Nano 보드를 사용하는 이유가 궁금할 것입니다. 하나의 Nano가 말 그대로 운전대를 잡고 모터를 구동하고 정확한 움직임을 위해 서보 암을 제어합니다. 한편, 다른 Nano는 OLED 디스플레이를 관리하여 로봇에 개성을 더하는 표현력 있는 '눈'을 만들 것입니다.

두 작업 모두에 단일 Arduino를 사용하는 것이 가능하지만 시도했지만 정확히 지적할 수 없는 몇 가지 문제가 발생했습니다. 따라서 효율성과 기능을 위해 각각 전용 역할을 하는 두 개의 나노를 선택했습니다.

이제 ESP32 WROOM 32 개발 보드에 대해 말하자면, 유망한 올인원 솔루션이며 앞으로 확실히 탐구할 것입니다. 하지만 지금은 두 개의 신뢰할 수 있는 Arduino Nano 보드로 다시 빌드해 보겠습니다.

5단계: 아두이노 프로그래밍

#include <Servo.h>
int outPin1 = 5;     //motor1
int outPin2 = 6;    //motor1

int outPin4 = 9;   //motor2
int outPin3 = 10;   //motor2
int pos = 0;
int enable = 2;   //motor2
Servo myservo;
int analogValue = 0;
char bt;

void setup()
{
  Serial.begin(9600);
  myservo.attach(12);

  pinMode(outPin1, OUTPUT);
  pinMode(outPin2, OUTPUT);
  pinMode(outPin3, OUTPUT);
  pinMode(outPin4, OUTPUT);

  pinMode(enable, OUTPUT);
}
void loop()
{

  if (Serial.available() > 0)
  {

    bt = Serial.read();
    digitalWrite(enable, 1);
    if (bt == '0')
    {
      analogValue = 0;
    }
    if (bt == '1')
    {
      analogValue = 25;
    }
    if (bt == '2')
    {
      analogValue = 50;
    }
    if (bt == '3')
    {
      analogValue = 75;
    }
    if (bt == '4')
    {
      analogValue = 100;
    }
    if (bt == '5')
    {
      analogValue = 125;
    }
    if (bt == '6')
    {
      analogValue = 150;
    }
    if (bt == '7')
    {
      analogValue = 175;
    }
    if (bt == '8')
    {
      analogValue = 200;
    }
    if (bt == '9')
    {
      analogValue = 225;
    }
    if (bt == 'q')
    {
      analogValue = 255;
    }
    if (bt == 'F')       //move forwards
    {
      analogWrite(outPin1, analogValue);
      analogWrite(outPin2, 0);
      analogWrite(outPin3, analogValue);
      analogWrite(outPin4, 0);
    }
    if (bt == 'B')       //move backwards
    {
      analogWrite(outPin1, 0);
      analogWrite(outPin2, analogValue);
      analogWrite(outPin3, 0);
      analogWrite(outPin4, analogValue);
    }
    if (bt == 'S')     //stop!!
    {
      analogWrite(outPin1, 0);
      analogWrite(outPin2, 0);
      analogWrite(outPin3, 0);
      analogWrite(outPin4, 0);
    }
    if (bt == 'R')    //right
    {
      analogWrite(outPin1, analogValue);
      analogWrite(outPin2, 0);
      analogWrite(outPin3, 0);
      analogWrite(outPin4, analogValue);
    }
    if (bt == 'L')     //left
    {
      analogWrite(outPin1, 0);
      analogWrite(outPin2, analogValue);
      analogWrite(outPin3, analogValue);
      analogWrite(outPin4, 0);
    }
    if (bt == 'I')    //forward right
    {
      analogWrite(outPin1, analogValue);
      analogWrite(outPin2, 0);
      analogWrite(outPin3, 0);
      analogWrite(outPin4, analogValue);
    }
    if (bt == 'G')    //forward left
    {
      analogWrite(outPin1, 0);
      analogWrite(outPin2, analogValue);
      analogWrite(outPin3, analogValue);
      analogWrite(outPin4, 0);
    }
    if (bt == 'I')    //right
    {
      analogWrite(outPin1, analogValue);
      analogWrite(outPin2, 0);
      analogWrite(outPin3, 0);
      analogWrite(outPin4, 0);
    }
    if (bt == 'G')     //left
    {
      analogWrite(outPin1, 0);
      analogWrite(outPin2, 0);
      analogWrite(outPin3, analogValue);
      analogWrite(outPin4, 0);
    }
    if (bt == 'H')    //right
    {
      analogWrite(outPin1, 0);
      analogWrite(outPin2, analogValue);
      analogWrite(outPin3, 0);
      analogWrite(outPin4, 0);
    }
    if (bt == 'J')     //left
    {
      analogWrite(outPin1, 0);
      analogWrite(outPin2, 0);
      analogWrite(outPin3, 0);
      analogWrite(outPin4, analogValue);
    }
    if (bt == 'W')
    {
      for (pos = 180; pos >= 0; pos -= 1) {
        myservo.write(pos);
        delay(15);
      }
    }
    if (bt == 'w')
    {
      for (pos = 0; pos <= 180; pos += 1) {
        myservo.write(pos);
        delay(15);
      }
    }

  }
}

6단계: 눈 코딩

 

링크에서 눈용 코드를 받고 눈용 아두이노 나노에 업로드하세요.

yaksha-main.zip
0.00MB

7단계: 로봇 제어

Bluetooth RC Car 앱으로 로봇 제어

이 단계에서는 로봇에 생명을 불어넣고 손쉽게 명령할 수 있는 ANDI.co 의 "Bluetooth RC Car" 앱을 사용하여 로봇을 제어하는 방법을 살펴보겠습니다.

필요한 재료:

  • 모바일 장치(스마트폰 또는 태블릿)
  • HC-05 블루투스 모듈
  • 로봇에 사전 설치된 Arduino 코드(5단계부터)

지시:

  1. 모바일 장치 준비:
  • 모바일 장치에 Bluetooth 기능이 있는지 확인하십시오.
  • 장치 설정으로 이동하여 Bluetooth를 활성화하십시오.
  1. "블루투스 RC 카" 앱 설치:
  • 기기의 앱 스토어를 방문하여 ANDI.co "Bluetooth RC Car" 앱을 검색하세요.
  • 모바일 장치에 앱을 다운로드하여 설치합니다.
  1. HC-05 모듈에 연결:
  • 로봇을 켜고 HC-05 모듈에 전원이 공급되는지 확인합니다.
  • 모바일 장치에서 Bluetooth 설정을 열고 사용 가능한 장치를 검색합니다.
  • HC-05 모듈이 나열되어야 합니다. 탭하고 기본 PIN(종종 1234 또는 0000)을 입력하여 페어링합니다.
  1. "Bluetooth RC Car" 앱을 엽니다.
  • 모바일 장치에서 "Bluetooth RC Car" 앱을 실행합니다.
  1. 로봇 제어:
  • 이 앱은 이동 컨트롤이 있는 사용자 친화적인 인터페이스를 제공합니다. 여기에는 방향 버튼, 조이스틱 또는 기울기 기반 컨트롤이 포함되는 경우가 많습니다.
  • 이 앱의 컨트롤을 이용해 로봇이 여러 방향으로 움직이고, 멈추고, 다양한 작업을 수행하게 하세요.

8단계: 미래의 가능성과 범위

 

이 마지막 단계에서는 로봇의 기능을 향상시킬 수 있는 미래의 가능성을 살펴보겠습니다.

  • 센서 통합:
  • 초음파 거리 센서, 라인 추종 센서 또는 카메라와 같은 센서를 추가하여 로봇의 인식을 향상시킵니다. 이것은 환경에 대한 대화식 응답의 문을 엽니다.
  • ESP32를 통한 고급 제어:
  • ESP32 개발 보드를 통합하여 로봇의 제어 기능을 향상시키십시오. 이를 통해 Wi-Fi를 통한 고급 무선 제어가 가능하여 더 광범위한 기능과 원격 작업 가능성을 제공합니다.
  • 이 단계를 통해 로봇을 새로운 기능 영역으로 끌어올려 다재다능하고 지능적인 동반자가 될 수 있습니다. Wi-Fi에 대한 고급 제어를 위한 ESP32의 통합은 원격 작업 및 확장된 기능에 대한 흥미로운 가능성을 열어줄 것입니다.
728x90