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

Arduino 개미 육각형 로봇

<메인 클래스="사이트 메인" id="메인">

이 튜토리얼에서는 Arduino hexapod를 구축하는 방법을 보여줍니다. 이름에서 알 수 있듯이 헥사포드에는 6개의 다리가 있지만 그 외에도 꼬리 또는 복부, 머리, 안테나, 하악 및 기능적인 눈도 있습니다. 이 모든 것이 헥사포드를 개미처럼 보이게 하므로 Arduino Ant Robot이라고도 부를 수 있습니다.

다음 비디오를 보거나 아래에 작성된 튜토리얼을 읽을 수 있습니다.

개요

로봇을 제어하기 위해 맞춤형 Android 애플리케이션을 만들었습니다. 앱에는 4개의 버튼이 있어 로봇에게 전진 또는 후진, 좌회전 또는 우회전 명령을 내릴 수 있습니다. 이러한 주요 기능과 함께 로봇은 머리와 꼬리를 움직일 수 있을 뿐만 아니라 물건을 물고, 잡고, 떨어뜨리고, 공격까지 할 수 있습니다.

앞서 언급했듯이 로봇은 기능적인 눈을 가지고 있거나 특별히 초음파 센서에 맞게 머리를 설계했습니다. 따라서 로봇 머리를 만지거나 센서에 손을 가까이 대면 로봇이 초기에 공격을 준비합니다.

뒤로 물러나면 로봇이 공격을 무시하지만, 우리가 손에 더 가까이 다가가면 로봇이 우리를 공격하고 물어뜯을 것이다. 얼마나 멋진 일입니까? 가만히 있으면 내가 어떻게 만들고 모든 것이 어떻게 작동하는지 정확히 알게 될 것입니다.

Arduino Hexapod – 개미 로봇 3D 모델

평소와 같이 3D 모델링 소프트웨어를 사용하여 헥사포드를 설계하는 것으로 시작했습니다. 헥사포드에는 6개의 다리가 있으며 각 다리는 3개의 관절 또는 3개의 서보로 구성됩니다. 즉, 총 18개의 서보가 필요하며 제 경우에는 MG996R 서보를 사용했습니다.

뒷면에는 다른 MG996R 서보에 의해 구동되는 꼬리가 있습니다. 이 개미 로봇의 머리는 2개의 자유도를 가지거나 구르거나 기울일 수 있으며 다시 두 개의 서보에 의해 구동됩니다. 그래서 우리는 이 프로젝트를 위해 총 21개의 서보가 필요합니다. 유형 MG996R과 추가로 하악을 위한 하나의 더 작은 SG90 마이크로 서보입니다.

여기에 HC-SR04 초음파 센서에 맞게 설계된 개미의 눈도 있습니다. 모든 부품은 두 개의 플레이트 사이에 조립되며 두 플레이트 사이의 모든 배선, Arduino 및 배터리를 숨기기 위해 상단 플레이트에 흥미로운 곡선 덮개를 추가로 만들었습니다.

이 3D 모델을 찾아 다운로드할 수 있을 뿐만 아니라 Thangs의 브라우저에서 탐색할 수도 있습니다.

STL 파일:

부품 3D 프린팅

나는 당신이 이미 다음 단계를 알고 있다고 생각합니다. 그것은 로봇 부품을 3D 프린팅하는 것입니다. 모든 인쇄물에 Creality CR-10 3D 프린터를 사용했는데 훌륭하게 작업했습니다. 하나의 프린트가 되고 싶었기 때문에 프린트하기 가장 어려웠던 부분은 헤드였습니다.

그 목적을 위해 60도의 지지 돌출 각도와 일부 지지 차단기를 사용해야 했습니다. 어쨌든 Creality CR-10은 훌륭하게 작업했고 헤드는 완벽하게 나왔습니다.

Arduino Hexapod 조립

모든 부품이 인쇄되면 헥사포드 조립으로 넘어갈 수 있습니다. 다리 조립부터 시작했습니다. 서보를 인쇄된 부품에 고정하기 위해 M3 볼트와 너트, 스프링 와셔를 사용했습니다. 볼트의 길이는 최소 12mm 이상이어야 하며 제 경우에는 16mm 길이의 볼트를 사용했습니다.

전체 어셈블리에 약 200개의 볼트가 필요합니다. 링크를 서로 연결하기 위해 서보 패키지와 함께 제공되는 둥근 뿔을 액세서리로 사용합니다. 그러나 볼트가 통과할 수 있도록 각각에 3mm 구멍을 뚫어야 합니다. 또는 M3 나사산이 있고 별도로 구입할 수 있는 금속 원형 혼을 사용할 수도 있습니다.

서보에 대한 링크를 고정할 때 항상 동일한 위치에 연결하고 전체 동작 범위를 갖도록 해야 합니다.

여기서 우리는 서보의 상단에 제거해야 하는 작은 삼각형 지지대가 있음을 주목해야 합니다. 나는 그것을하기 위해 간단한 유틸리티 나이프를 사용하여 서보가 인쇄 된 부품과 함께 플래시를 배치 할 수 있도록했습니다. 세 번째 서보를 제자리에 삽입하기 전에 먼저 다리와 베이스 플레이트를 연결하는 데 사용할 M4 볼트를 삽입해야 합니다.

다음은 다리 어셈블리가 어떻게 생겼는지 보여줍니다. 실제로 조립하기는 매우 쉽지만 이제 5개가 더 필요합니다.

모든 다리가 준비되면 로봇 본체 또는 두 개의 플레이트에 다리를 설치할 수 있습니다. 먼저 M3 볼트와 너트를 사용하여 이전과 동일한 방법을 사용하여 상단 플랫폼에 둥근 뿔을 고정해야 합니다. 그런 다음 볼트를 사용하여 서보 샤프트에 간단히 연결할 수 있지만 그렇게 하기 전에 서보의 위치를 ​​정확히 중간에 조정해야 합니다.

이것은 서보의 전체 동작 범위를 얻을 수 있고 Arduino를 프로그래밍할 때 조정 또는 보정 프로세스를 줄이기 위해 필요합니다.

다리를 고정한 후, 이 프로젝트는 이미 형태를 갖추기 시작했고 육각형처럼 보입니다.

뒷면에 동그란 뿔이 하나 더 있는데 테일 서보용이기도 하고 이 부분을 고정해야 합니다.

다음으로 헥사포드를 거꾸로 놓아야 하므로 다리의 M4 볼트를 통해 바닥판을 삽입할 수 있습니다. 그런 다음 일반 와셔와 자동 잠금 너트를 사용하여 다리를 고정했습니다. 이 볼트는 실제로 피벗 조인트이고 다리도 충분히 고정된 상태에서 회전할 수 있어야 하기 때문에 이 볼트를 얼마나 조일지 주의해야 합니다.

다음으로 우리는 머리를 위한 첫 번째 서보를 설치해야 하고 그것은 롤 이동을 위한 것입니다. 이 서보는 베이스 플레이트에 수직으로 배치되어야 하므로 먼저 서보에 고정되는 두 개의 작은 플레이트를 만들었습니다. 그런 다음 두 플레이트 사이에 서보를 삽입하고 M3 볼트와 너트로 쉽게 고정할 수 있습니다.

그런 다음 U자형 브래킷이 있고 여기에 헤드용 두 개의 서보를 연결하기 위해 두 개의 둥근 뿔을 부착해야 합니다. 브래킷을 롤 서보에 고정하기 전에 서보가 양쪽 방향으로 90도 회전할 수 있도록 서보의 위치가 중간에 있는지 확인해야 합니다.

다음은 틸트 서보 브래킷입니다. 따라서 여기에 먼저 M4 볼트를 삽입하고 U자형 브래킷에 고정해야 합니다. 틸트 모터를 장착하기 전에 나중에 헤드를 고정하는 데 사용할 4개의 M3 볼트도 삽입해야 합니다. 그런 다음 틸트 서보를 브래킷에 삽입하고 샤프트를 둥근 혼에 조심스럽게 맞출 수 있습니다. 여기가 약간 빡빡하지만 U자형 브래킷이 약간 구부러질 수 있습니다.

마지막으로 M3 볼트로 서보를 고정해야 헤드 메커니즘이 완성됩니다. 이제 롤링과 틸트가 모두 가능합니다.

머리를 메커니즘에 부착하기 전에 미리 조립하거나 작은 SG90 서보와 초음파 센서로 하악을 부착해야 합니다. 여기도 약간 빡빡하지만 여전히 첫 번째 하악골을 삽입하고 M4 볼트를 사용하여 머리에 고정할 수 있었습니다.

볼트를 조이기 위해 스크루드라이버를 통과할 수 있도록 특별히 설계된 눈 부분에 작은 구멍이 있음을 알 수 있습니다.

다음은 마이크로 서보를 제자리에 놓고 두 개의 나사를 사용하여 고정합니다. 두 번째 하악에서는 먼저 SG90 서보용 소형 암 혼을 부착해야 합니다.

그런 다음 하악골을 제자리에 삽입하고 두 개의 기어를 쌍으로 만든 다음 스크루드라이버를 사용하여 모터 샤프트에 고정할 수 있습니다.

다음으로 초음파 센서를 제자리에 놓을 수 있습니다. 눈 구멍은 초음파 센서에 정확히 맞도록 만들어져 있으므로 머리에 센서를 고정하기 위해 AC 접착제 몇 방울을 사용하기만 하면 됩니다.

머리에 추가해야 할 세부 사항이 하나 더 있는데 바로 안테나입니다. 이를 위해 3mm 틱 와이어를 사용하여 13cm 길이로 자르고 약간 구부려 원하는 모양을 얻습니다. 다시 AC 접착제 몇 방울을 사용하여 머리에 고정했습니다. 마지막으로 이전에 삽입한 4개의 볼트를 사용하여 롤 및 틸트 메커니즘에 헤드를 부착할 수 있습니다.

이제 머리가 완전히 작동하고 구르고, 기울이고, 심지어 물 수 있습니다. 2개의 3D 인쇄 부품을 더 설치해야 합니다. 그것은 꼬리 브래킷으로 간단히 미끄러질 수 있는 꼬리와 전자 장치를 덮기 위해 끝에 실제로 사용할 곡선형 덮개입니다. 이것이 우리 개미 로봇의 최종 모습이며 파란색과 흰색의 조합이 정말 마음에 듭니다.

Arduino Ant 로봇 회로도

자, 이제 전자 제품으로 넘어갈 수 있습니다. 다음은 서보 연결이 많기 때문에 다소 복잡해 보이지만 실제로는 간단한 이 프로젝트의 회로도입니다.

22개의 서보 외에도 스마트폰 통신을 위한 HC-05 Bluetooth 모듈과 일부 커패시터 및 저항기가 필요합니다. 물론 로봇의 두뇌는 아두이노 보드인데, 이 경우 아두이노 메가 보드는 서보 라이브러리를 이용하여 12개 이상의 서보를 제어할 수 있는 유일한 보드이기 때문입니다.

관련 튜토리얼:서보 모터의 작동 방식 및 Arduino를 사용하여 서보를 제어하는 ​​방법

로봇에 전원을 공급하기 위해 전압이 약 12V인 3S LiPo 배터리를 사용합니다. LiPo 배터리는 더 많은 양의 전류를 처리할 수 있으므로 모든 서보가 최대 부하에서 동시에 연결되면 약 10A의 전류를 소모할 수 있기 때문에 이 프로젝트에 적합합니다. 그러나 서보 작동 전압은 4.8V에서 7.2V로 제한되어 있으므로 DC-DC 벅 컨버터를 사용하여 12V를 5V로 변환해야 합니다. 완전 부하 시 전압이 7.4V 또는 8.4V인 2S LiPo 배터리를 사용하는 경우에도 여전히 벅 컨버터를 사용해야 합니다. 이 프로젝트에 사용할 벅 컨버터는 최대 8A의 전류를 처리할 수 있지만 충분한 전력을 확보하고 과열되지 않도록 하려면 10~15A 중 하나를 사용하는 것이 좋습니다. 제 경우 로봇이 움직일 때 감지한 최대 전류 소모량은 약 6암페어였습니다.

아래 링크에서 이 프로젝트에 필요한 구성요소를 얻을 수 있습니다.

Arduino Hexapod용 PCB 설계

이제 모든 것을 함께 연결하려고 하면 많은 서보 연결로 인해 상당히 엉망이 될 것입니다. 따라서 EasyEDA 무료 온라인 회로 설계 소프트웨어를 사용하여 맞춤형 PCB를 설계했습니다. 이 PCB는 실제로 Hexapod의 Arduno Mega Shield 역할을 할 것입니다. Arduino Mega Board 위에 직접 연결할 수 있기 때문입니다. 나는 서보 연결을 서로 가깝게 배치하고 전압을보다 안정적으로 유지하기 위해 두 개의 큰 커패시터를 옆에 포함했습니다. 또한 무선 제어를 사용하여 로봇을 제어하려는 경우를 대비하여 NRF24L01 트랜시버 모듈에 대한 연결을 포함했습니다. 여러 디지털 및 아날로그 핀 연결, 5V 및 접지 연결, 2개의 LED 연결 및 배터리 전압 모니터링을 위한 연결이 있습니다. 12V 배터리 전압은 두 개의 저항 R1 및 R2로 구성된 전압 분배기를 통과하여 전압을 5V 미만으로 낮추어 아날로그 핀이 안전하게 읽을 수 있도록 합니다. 이러한 방식으로 배터리를 재충전해야 할 시기를 알 수 있습니다.

다음은 이 PCB 디자인의 프로젝트 파일에 대한 링크입니다. 그래서 디자인이 끝나면 PCB 제작에 필요한 Gerber 파일을 생성했습니다.

거버 파일:

그리고 실제로 이 영상의 스폰서인 JLCPCB에 PCB를 주문했습니다.

여기에서 Gerber 파일을 간단히 끌어다 놓을 수 있으며 업로드되면 Gerber 뷰어에서 PCB를 검토할 수 있습니다. 모든 것이 정상이면 계속해서 PCB에 대해 원하는 속성을 선택할 수 있습니다. 이 경우 Arduino 보드 색상과 일치시키기 위해 PCB 색상을 파란색으로 선택했습니다. 그게 다야, 이제 우리는 합리적인 가격으로 단순히 PCB를 주문할 수 있습니다. JLCPCB에서 처음 주문하는 경우 단돈 2달러에 최대 10개의 PCB를 얻을 수 있습니다.

며칠 후 PCB가 도착했습니다. PCB의 품질이 우수하고 모든 것이 디자인과 동일합니다.

PCB 조립

자, 이제 PCB를 조립할 수 있습니다. 나는 Arduino 보드에 연결하는 데 사용되는 PCB에 수 핀 헤더를 납땜하는 것으로 시작했습니다. 핀 헤더를 아래쪽에 배치하면 일종의 플레이트를 사용하여 핀을 잡고 보드를 뒤집을 수 있습니다. 이제 우리는 그것들을 모두 PCB에 납땜해야 합니다. 이 작업이 끝나면 수 핀 헤더도 필요한 서보 연결로 이동할 수 있습니다.

이 시점에서 우리는 실제로 모든 연결에 핀 헤더를 삽입하고 동일한 방법을 사용하여 PCB를 뒤집고 모든 핀을 납땜할 수 있습니다. 마지막으로 저항, 커패시터 및 단자대를 납땜해야 합니다. 이제 Ant Robot용 Arduino Mega Shield가 준비되었습니다. 이제 Arduino 보드에 간단히 삽입할 수 있습니다.

다음으로 벅 컨버터 출력 전압을 5V로 설정해야 합니다. 벅 컨버터의 전위차계를 조정하여 이를 수행할 수 있습니다. 여기에서 입력에 전원 스위치를 추가하고 배터리 전압 모니터링에만 사용할 PCB의 12V 핀에 배터리 12V를 연결한 것을 알 수 있습니다.

PCB에 대한 주 입력은 5V여야 함을 기억하십시오.

이제 두 판 사이에 전자 부품을 삽입할 수 있습니다. 다시 약간 빡빡하지만 여전히 모든 것을 넣을 수 있습니다. 먼저 테이프로 고정한 배터리를 넣고 그 위에 우리가 만든 PCB와 함께 Arduino를 넣습니다. 다음으로 사용할 통신 유형에 따라 NRF24L01 트랜시버 또는 Bluetooth 모듈만 연결할 수 있습니다. 또한 배터리를 재충전해야 할 때 또는 전압이 11V 볼트 미만으로 떨어지는 경우를 나타내는 LED를 삽입했습니다. 마지막으로 모든 서보를 서보 핀에 연결해야 합니다. 이 작업을 수행하는 동안 각 서보에 연결한 핀 번호를 기록해 두십시오. 모든 서보를 연결한 후 상단 플레이트에 곡선형 덮개를 놓기만 하면 실제로 이 프로젝트가 완료됩니다.

Arduino 헥사포드 코드

이 비디오에서 할 일은 Arduino 프로그램이 어떻게 작동하는지 살펴보는 것입니다. 코드가 조금 더 길기 때문에 이해를 돕기 위해 프로그램의 소스 코드를 섹션별로 설명과 함께 게시하겠습니다. 그리고 이 기사의 끝에 완전한 소스 코드를 게시할 것입니다.

따라서 서보를 제어하기 위해 기본 서보 라이브러리를 사용하고 Bluetooth 통신을 위해서는 SoftwareSerial 라이브러리도 포함해야 합니다. 먼저 모든 서보 개체와 아래 프로그램에 필요한 일부 변수를 정의해야 합니다.

#include <Servo.h>
#include <SoftwareSerial.h>

#define trigPin 7
#define echoPin 6
#define ledB 10

SoftwareSerial Bluetooth(12, 9); // Arduino(RX, TX) - HC-05 Bluetooth (TX, RX)

// Create servo object
Servo s24;
Servo s23;
Servo s22;Code language: Arduino (arduino)

설정 섹션에서 블루투스 통신, 초음파 센서의 핀 모드, LED를 초기화하고 서보가 연결된 핀을 정의해야 합니다.

void setup() {
  Serial.begin(38400);
  Bluetooth.begin(38400); // Default baud rate of the Bluetooth module
  Bluetooth.setTimeout(1);
  delay(20);
  pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
  pinMode(echoPin, INPUT); // Sets the echoPin as an Input
  pinMode(ledB, OUTPUT);
  // Head
  s15.attach(36, 600, 2400);
  s14.attach(35, 600, 2400);
  s13.attach(34, 600, 2400); //grip
  // Tail
  s5.attach(26, 600, 2400); // Tail
  // Leg 4
  s10.attach(31, 600, 2400);
  s11.attach(32, 600, 2400);
  s12.attach(33, 600, 2400); //rot
  // Leg 5
  s7.attach(28, 600, 2400);
  s8.attach(29, 600, 2400);
  s9.attach(30, 600, 2400); //rot
  // Leg 6
  s1.attach(22, 600, 2400);
  s2.attach(23, 600, 2400);
  s3.attach(24, 600, 2400); //rot
  // Leg 1
  s18.attach(39, 600, 2400);
  s17.attach(38, 600, 2400);
  s16.attach(37, 600, 2400); //rot
  // Leg 2
  s21.attach(42, 600, 2400);
  s20.attach(41, 600, 2400);
  s19.attach(40, 600, 2400); //rot
  // Leg 3
  s24.attach(45, 600, 2400);
  s23.attach(44, 600, 2400);
  s22.attach(43, 600, 2400); //rotCode language: Arduino (arduino)

그런 다음 write() 함수를 사용하여 서보를 초기 위치로 이동합니다. 여기에서 실제로 서보를 보정할 수 있습니다. 로봇을 조립할 때 각 서보를 정확한 위치에 설정할 수는 없지만 여기에서 조정을 수행하고 초기 값을 찾을 수 있으며 거기에서 로봇 움직임을 프로그래밍할 수 있다는 점을 고려하십시오.

// == Move to initial position
  // Head
  s15.write(72);
  s14.write(50);
  s13.write(90); // Grip
  
  s5.write(65); // Tail
  
  // Leg 4
  s10.write(65);
  s11.write(35);
  s12.write(40);
  // Leg 5
  s7.write(80);
  s8.write(50);
  s9.write(25);
  // Leg 6
  s1.write(90);
  s2.write(45);
  s3.write(60);

  // Leg 1
  s18.write(60);
  s17.write(90);
  s16.write(100);
  // Leg 2
  s21.write(50);
  s20.write(85);
  s19.write(75);
  // Leg 3
  s24.write(50);
  s23.write(80);
  s22.write(80);Code language: Arduino (arduino)

헥사포드 운동을 프로그래밍할 때 순운동학 또는 역운동학을 사용하는 것과 같이 수행해야 할 몇 가지 방법이 있습니다. 이러한 방법에는 신체의 원하는 최종 위치에 대한 입력을 기반으로 각 관절의 위치가 계산되는 몇 가지 심각한 수학이 포함됩니다. 그러나 어쨌든 내가 사용하는 서보가 그러한 작업에 충분하지 않기 때문에 조금 덜 복잡하게 만들기로 결정했습니다. 내 서보가 MG996R 서보의 저렴한 버전이기 때문입니다. 그들은 올바른 토크를 가지고 있지 않으며 항상 정확한 원하는 위치에 위치하지 않습니다.

그럼 제가 육각형 보행기를 어떻게 만들었는지 살펴보겠습니다. 각 다리를 움직일 수 있는 별도의 커스텀 함수를 만들었습니다. 다리 주기에는 스윙과 스탠스라는 두 단계가 포함됩니다. 유각 단계에서 다리는 공기를 통해 초기 위치에서 최종 위치로 이동하는 반면, 입각기 단계에서는 다리 엔드 이펙터가 지면에 닿은 상태에서 다리가 최종 위치에서 다시 초기 위치로 이동합니다. 이런 식으로 헥사포드의 몸체가 앞으로 이동합니다.

그래서 메인 루프와 일부 카운터를 사용하여 이러한 움직임을 달성하기 위해 각 서보의 위치를 ​​수동으로 프로그래밍합니다.

void moveLeg1() {
  // Swign phase - move leg though air - from initial to final position
  // Rise the leg
  if (i1L1 <= 10) {
    s18.write(60 - i1L1 * 2);
    s17.write(90 - i1L1 * 3);
    i1L1++;
  }
  // Rotate the leg
  if (i2L1 <= 30) {
    s16.write(100 - i2L1);
    i2L1++;

  }
  // Move back to touch the ground
  if (i2L1 > 20 & i3L1 <= 10) {
    s18.write(40 + i3L1 * 2);
    s17.write(60 + i3L1 * 3);
    i3L1++;
  }
  // Stance phase - move leg while touching the ground
  // Rotate back to initial position
  if (i2L1 >= 30) {
    s16.write(70 + i4L1);
    i4L1++;
    l1status = HIGH;
  }
  // Reset the counters for repeating the process
  if (i4L1 >= 30) {
    i1L1 = 0;
    i2L1 = 0;
    i3L1 = 0;
    i4L1 = 0;
    i5L1 = 0;
  }
  // Each iteration or step is executed in the main loop section where there is also a delay time for controlling the speed of movement
}Code language: Arduino (arduino)

따라서 먼저 두 개의 외부 서보가 다리를 올리고 몸체에 연결된 세 번째 서보가 특정 방향으로 회전하기 시작합니다. 세 번째 서보가 회전을 멈추기 전에 10단계가 되면 바깥쪽 두 개의 서보를 같은 위치에서 뒤쪽으로 이동하여 지면에 닿기 시작합니다. 이렇게 하면 유각 단계가 완료되거나 다리가 초기 위치에서 최종 위치로 이동됩니다. 그런 다음 세 번째 서보를 최종 위치에서 초기 위치로 다시 회전시키면 입각 단계가 완료됩니다. 레그가 한 주기를 실행한 후 카운터가 재설정되고 레그가 주기를 계속해서 반복합니다. 각 반복 또는 단계는 서보의 속도를 제어하는 ​​지연 시간이 있는 메인 루프 섹션에서 실행됩니다. 나는 다른 모든 다리에 대해 이와 같은 기능을 만들었으며, 다리를 반대 방향으로 이동하여 역방향, 왼쪽 및 오른쪽 움직임을 달성하는 몇 가지 추가 기능을 만들었습니다. 비슷한 방식으로 단계를 추적하기 위해 카운터를 사용하여 머리 이동, 꼬리 이동, 하악 이동 등과 같은 나머지 기능을 프로그래밍했습니다.

예를 들어 로봇을 앞으로 움직이려면 메인 루프에서 지속적으로 반복되는 6개의 moveLeg() 사용자 정의 함수를 호출해야 합니다.

// Move forward
  if (m == 2) {
    moveLeg1();
    moveLeg3();
    moveLeg5();
    if (l1status == HIGH) {
      moveLeg2();
      moveLeg4();
      moveLeg6();
    }
  }Code language: Arduino (arduino)

3개의 다리가 오프셋되어 있음을 알 수 있습니다. 따라서 다리 번호 1 3과 5가 유각기에 있을 때 다른 세 다리는 2, 4 및 6이 입각기에 있습니다. 왼쪽으로 이동하려는 경우 적절한 moveLeft() 함수를 호출합니다.

이러한 명령은 실제로 스마트폰의 Bluetooth 모듈 또는 맞춤형 Android 애플리케이션에서 나옵니다.

// Check for incoming data
  if (Bluetooth.available() > 0) {
    dataIn = Bluetooth.read();  // Read the dataCode language: Arduino (arduino)

Arduino Ant Robot Android 앱

이제 앱을 살펴보고 실제로 Arduino에 어떤 종류의 데이터를 보내고 있는지 살펴 보겠습니다. MIT App Inventor 온라인 애플리케이션을 사용하여 앱을 만들었으며 작동 방식은 다음과 같습니다.

<그림 클래스="aligncenter">

그래서 앱의 그래픽은 실제로 내가 만들고 버튼으로 배치한 이미지입니다. 하단에는 로봇의 속도를 제어하기 위한 슬라이더가 있고 상단에는 블루투스 모듈과 연결하기 위한 버튼이 있습니다.

프로그램이나 앱 이면의 블록을 살펴보겠습니다.

예를 들어 앞으로 버튼을 클릭하면 "if" 문의 블록이 실행됩니다. 즉, 숫자 2를 Arduino에 보내면 앞으로 이동하는 기능 집합이 실행됩니다. 동시에 버튼의 이미지를 동일한 이미지의 다른 강조 표시된 버전으로 변경했음을 알 수 있습니다. 동일한 버튼을 다시 누르면 이제 "else" 문의 블록이 실행되고 숫자 0이 Arduino에 전송되어 모든 카운터가 재설정되고 로봇이 초기 위치로 이동합니다. 또한 해당 버튼의 초기 이미지를 다시 설정합니다. 그래서 다른 모든 버튼에도 같은 원리를 적용했습니다.

다음은 위의 MIT App Inventor 프로젝트와 스마트폰에 설치할 준비가 된 Android 앱의 다운로드 파일입니다.

아두이노 프로그램에서 두 가지 기능을 더 살펴보겠습니다. 바로 배터리 전압 모니터와 초음파 센서입니다.

// Monitor the battery voltage
    int sensorValue = analogRead(A3);
    float voltage = sensorValue * (5.00 / 1023.00) * 2.9; // Convert the reading values from 5v to suitable 12V i
    Serial.println(voltage);
    // If voltage is below 11V turn on the LED
    if (voltage < 11) {
      digitalWrite(ledB, HIGH);
    }
    else {
      digitalWrite(ledB, LOW);
    }Code language: Arduino (arduino)

따라서 배터리 전압이 11볼트보다 낮으면 LED를 켜고 초음파 센서가 40cm보다 가까운 물체를 감지하면 로봇이 공격을 준비합니다.

// Get the distance from the ultrasonic sensor
    if (getDistance() > 40) {
      att = 0;
    }
    if (getDistance() <= 40) {
      att = 1;
      dataIn = 99;
    }Code language: Arduino (arduino)

앞에 물체가 더 이상 없으면 공격을 무시하고 물체가 여전히 존재하고 머리에 더 가까우면 로봇이 공격합니다.

// If there is an object in front of the sensor prepare for attack
  if (att == 1) {
    prepareAttack();
    if (aStatus == HIGH) {
      while (a == 0) {
        delay(2000);
        a = 1;
      }
      if (getDistance() > 30) {
        att = 2;
        a = 0;
        aStatus = LOW;
        initialPosHead();
      }
      if (getDistance() < 30) {
        att = 3;
        a = 0;
        aStatus = LOW;
        initialPosHead();
      }
    }
  }
  // If there is no longer object in front, dismiss the attack
  if (att == 2) {
    dismissAttack();
    if (aStatus == HIGH) {
      dataIn = 0;
      att = 0;
    }
  }
  // If there is closer to the sensor attack
  if (att == 3) {
    attack();
    if (attStatus == HIGH) {
      while (aa == 0) {
        delay(2000);
        aa = 1;
      } attStatus = LOW;
    }
    if (aStatus == HIGH) {
      while (a == 0) {
        delay(2000);
        a = 1;
      }
      dataIn = 0;
      att = 0;
      initialPosHead();
    }
  }Code language: Arduino (arduino)

이것이 이 동영상의 거의 전부입니다.

여기에서 이 Arduino Hexapod 프로젝트의 전체 코드를 다운로드할 수 있습니다.

이 프로젝트를 구축하기로 결정했다면 몇 가지 도전에 직면할 준비가 되어 있어야 합니다. 나에게 가장 큰 문제는 내가 사용한 서보의 열악한 성능이었습니다. 이 비디오를 보시고 새로운 것을 배웠기를 바랍니다. 언제든지 아래 댓글 섹션에 질문하고 내 Arduino 프로젝트 컬렉션을 확인하세요.


제조공정

  1. Bluetooth를 통해 제어되는 Raspberry Pi Robot
  2. 서보 모터로 로봇을 피하는 장애물
  3. 라인 팔로워 로봇
  4. Arduino 및 Android 기기로 Roomba 로봇 제어
  5. 음성 제어 로봇
  6. Arduino 제어 피아노 로봇:PiBot
  7. Littlearm 2C:3D 인쇄 Arduino 로봇 팔 제작
  8. 자율 홈 어시스턴트 로봇
  9. Android 앱으로 Arduino 로봇 팔 제어
  10. 멋진 실내 내비게이션용 로봇