728x90
반응형
개미는 놀라운 생물입니다. 적은 자원만으로도 많은 일을 할 수 있습니다.
많은 육각형 로봇은 한 다리당 최대 세 개의 서보 모터가 필요합니다. 이는 총 18개의 서보 모터로, 엄청난 양의 에너지를 소모합니다. 이는 개미의 경제와 상충됩니다.
오직 세 개의 서보 모터(+1 그리퍼)와 약간의 기계 구조만으로, 저는 최소주의적인 개미 로봇을 만들어 냈습니다. (114g + 배터리)
이 프로젝트를 진행하기 위해서는 아두이노에 대한 기본적인 지식이 필요합니다.
이 프로젝트를 수행하려면 Arduino에 대한 기본 지식이 필요합니다.
공급
3 (+1) 자동 귀환 제어 장치 SG90
ESP32-C3 XIAO 또는 다른 ESP32 / ESP8266 (더 많은 공간이 필요함)
클립
작은 나사
5V 벅 컨버터 MP1584
9V 또는 7.4LiPo 배터리
3D 프린터
모든 부품은 Tinkercad로 설계 되고 Ultimaker Cura로 준비되었습니다.
1단계: 몸통
펜치/톱으로 모든 서보의 탭을 제거하고 file.
섀시를 인쇄하고 그림과 같이 두 개의 뾰족한 나사로 서보 2를 고정합니다. 중앙 서보는 스윙할 수 있어야 합니다. 또한 나중에 나사를 고정할 수 있는 작은 캡이 있습니다.
서보 1과 3과 서보 2의 캡을 뜨거운 접착제로 고정합니다.
다리를 장착하기 전에 서보가 중앙에 있어야 합니다! 이렇게 하려면 작은 프로그램 centerlegs.ino를 사용하여 서보를 90으로 설정합니다.
2단계: 서보 및 다리 부품
각 서보는 다리 쌍을 가지고 있으며 앞뒤로 몇 도만 움직입니다. 서보 1과 3은 동시에 움직이기 때문에 둘 다 마이크로 컨트롤러에서 동일한 핀을 사용하는 것에 대해 생각할 수 있습니다.
서보 2는 반대 방향으로 움직이며 스윙하여 다리의 오른쪽 견인력을 지면에 가져와야 합니다. 이 스윙은 클립으로 연결된 서보 1에 의해 발생합니다.
다리를 인쇄하고 각각을 서보에 장착합니다. 구멍을 약간 뚫어야 할 수도 있습니다.
3단계: 메카닉 설치
나사와 종이 클립을 사용하여 서보 1 다리의 장착 플레이트를 서보 2의 캡에 연결합니다. 이제 서보 1과 함께 리듬에 맞게 기울어져야 합니다.
4단계: 헤드 및 그리퍼
그리퍼는 실제로 필요하지는 않지만 좋은 추가 기능입니다.
암이 없는 서보를 프레임에 삽입합니다. 먼저 서보를 90(2단계의 "centrelegs.ino")으로 설정합니다. 일치하는 그리퍼 부분을 기어 휠에 놓고 서보 나사로 고정합니다. 그런 다음 두 번째 부분을 축에 놓습니다.
뜨거운 접착제로 그리퍼를 머리 꼭대기에 거꾸로 붙이고 헤드를 닫습니다. 머리를 몸통 끝에 대고 붙입니다.
4단계: 헤드 및 그리퍼
그리퍼는 실제로 필요하지는 않지만 좋은 추가 기능입니다.
암이 없는 서보를 프레임에 삽입합니다. 먼저 서보를 90(2단계의 "centrelegs.ino")으로 설정합니다. 일치하는 그리퍼 부분을 기어 휠에 놓고 서보 나사로 고정합니다. 그런 다음 두 번째 부분을 축에 놓습니다.
뜨거운 접착제로 그리퍼를 머리 꼭대기에 거꾸로 붙이고 헤드를 닫습니다. 머리를 몸통 끝에 대고 붙입니다.
6단계: 전자 및 소프트웨어
9V 배터리는 서보에 충분한 에너지를 공급하지만 전압은 벅 컨버터에 의해 5V로 감소해야 합니다.
5개의 서보용 전원 공급 장치는 32V를 통해 병렬로 실행되며 데이터 와이어는 ESP32에 연결됩니다. 더 많은 연결이 필요하지 않습니다. 또한 센서나 LED를 부착할 수 있습니다.
소프트웨어 "Blue_Ant-RemoteXY.ino"는 ESp32로 전송되어야 합니다. 이에 대한 정보는 ESP32-C3 시작하기에서 찾을 수 있습니다.
또는
https://www.instructables.com/Getting-Started-With-ESP32-C3-XIAO/
7단계의 리모컨은 이미 프로그램에 포함되어 있습니다.
ESP32-C3용 서보 라이브러리: https://github.com/songzhishuo/ESP32C3Servo
ESP32 또는 ESP8266를 사용하는 경우 라이브러리 를 변경해야합니다.
**************** 서보
/*
/ Blue Ant (2023) Markus Opitz
*/
// ************ RemoteXY *************
#define REMOTEXY_MODE__ESP32CORE_BLE
#include <BLEDevice.h>
#include <RemoteXY.h>
// RemoteXY connection settings
#define REMOTEXY_BLUETOOTH_NAME "ESP32-C3_Remote"
// RemoteXY configurate
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] = // 43 bytes
{ 255,3,0,0,0,36,0,16,202,1,5,32,17,37,30,30,2,26,24,4,
128,13,23,37,6,2,78,129,0,3,3,24,6,165,66,108,117,101,32,65,
110,116,0 };
// this structure defines all the variables and events of your control interface
struct {
// input variables
int8_t joystick_1_x; // from -100 to 100
int8_t joystick_1_y; // from -100 to 100
int8_t slider_1; // =0..100 slider position
// other variable
uint8_t connect_flag; // =1 if wire connected, else =0
} RemoteXY;
#pragma pack(pop)
// *************************
// ************************* Servos
#include <ESP32C3_Servo.h> //for ESP32-C3
//#include <Servo.h> //for ESP8266
//#include <ESP32Servo.h> //for ESP32-Wroom
Servo servo1; Servo servo2; Servo servo3; // Servo3 is attacheched to same pin as Servo1 !!!
Servo Jaws;
int pos1, pos2; // variable to store the servo position
int centerpos = 90;
int minpos = centerpos-12;
int maxpos = centerpos+12;
int gripper;
//int speed1;
void setup() {
Serial.begin(115200);
servo1.attach(2); servo2.attach(3); servo3.attach(4); //Servo3 can be attached to same pin as Servo1 //GPIOs on ESP32-C3!
Jaws.attach(5);
delay(2);
servo1.write(centerpos);servo2.write(centerpos-7);servo3.write(centerpos); //center all servos
Jaws.write(centerpos);
delay(3000);
RemoteXY_Init ();
}
void loop() {
RemoteXY_Handler ();
if ((RemoteXY.joystick_1_x) < -30) {
//Serial.println("<-- left ");
left(16);
}
if ((RemoteXY.joystick_1_x) > 30) {
//Serial.println(" right -->");
right(16);
}
if ((RemoteXY.joystick_1_y) < -30) {
//Serial.println(" backwards ");
// not yet installed
}
if ((RemoteXY.joystick_1_y) > 30) {
//Serial.println(" ^forward^ ");
forward(16);
}
gripper = map((RemoteXY.slider_1), 0, 100, 75,105);
Jaws.write(gripper);
delay(1);
}
void forward(int speed1) { //speed1 in ms as delay between steps
for (pos1 = minpos; pos1 <= maxpos; pos1 += 2) {
pos2 = map(pos1, minpos, maxpos, maxpos, minpos);
servo1.write(pos1);servo3.write(pos1);Serial.print(pos1);Serial.print(" "); // front/rear legs
servo2.write(pos2); Serial.print(pos2); Serial.println(""); // center legs
delay(speed1);
}
for (pos1 = maxpos; pos1 >= minpos; pos1 -= 2) {
pos2 = map(pos1, minpos, maxpos, maxpos, minpos);
servo1.write(pos1);servo3.write(pos1); // front/rear legs
servo2.write(pos2);
delay(speed1);
}
}
void right(int speed1) { //speed1 in ms as delay between steps
for (pos1 = minpos; pos1 <= maxpos; pos1 += 2) {
pos2 = map(pos1, minpos, maxpos, maxpos, minpos);
servo1.write(pos1+10);servo3.write(pos1+10); // front/rear legs
servo2.write(pos2+10); // center legs
delay(speed1);
}
for (pos1 = maxpos; pos1 >= minpos; pos1 -= 1) {
pos2 = map(pos1, minpos, maxpos, maxpos, minpos);
servo1.write(pos1+10);servo3.write(pos1+10); // front/rear legs
servo2.write(pos2+10);
delay(speed1);
}
}
void left(int speed1) { //speed1 in ms as delay between steps
//pos2 = maxpos + 1 -7; //-8 is to correct center position
for (pos1 = minpos; pos1 <= maxpos; pos1 += 1) {
pos2 = map(pos1, minpos, maxpos, maxpos, minpos);
servo1.write(pos1-10);servo3.write(pos1-10); // front/rear legs
servo2.write(pos2-10); // center legs
delay(speed1);
}
for (pos1 = maxpos; pos1 >= minpos; pos1 -= 2) {
pos2 = map(pos1, minpos, maxpos, maxpos, minpos);
servo1.write(pos1-10);servo3.write(pos1-10); // front/rear legs
servo2.write(pos2-10);
delay(speed1);
}
}
7단계: RemoteXY 제어
원격 comtrol은 이미 코드에 포함되어 있습니다(표시된 코드 줄 참조).
https://remotexy.com/ 스마트폰 리모컨을 위한 자신만의 인터페이스를 만들어 "Blue_Ant-RemoteXY.ino" 프로그램에 삽입할 수 있습니다. 이 자습서에서 자세한 정보를 찾을 수 있습니다.
https://www.instructables.com/RemoteXY-Editor-How-to-Control-DC-Motor-With-Smart/
스마트폰용 앱은 여기에서 사용할 수 있습니다.
https://play.google.com/store/apps/details?id=com.shevauto.remotexy.free
https://apps.apple.com/us/app/remotexy/id1168130280
스마트폰에 앱을 설치하고, 블루투스를 활성화하고, "RemoteXY"를 열고, 검색 및 페어링
"ESP32-C3_Remote"입니다.
Ant를 켜고 잠시 기다렸다가 앱을 활성화하십시오.
728x90
반응형
'로봇프로젝트' 카테고리의 다른 글
6족 메커니즘이 있는 로봇 (0) | 2023.11.29 |
---|---|
3D 프린터로 제작된 로봇 - Brainy Botic - a 3D Printed Robot Controlled by an Arduino Nano (0) | 2023.11.29 |
간단한 제스처로 로봇 팔 제어 -Control Robot Arm With Simple Gestures (3) | 2023.11.27 |
강력한 토크를 가진 태양열 자동차 만드는 간단한 방법 - How to Make Solar Powered Car With Powerful Torque in a Very Easy Way (0) | 2023.11.24 |
LoCost 로봇을 위한 휴대용 로봇 경기장 (2) | 2023.11.22 |