hello, Did you make any improvements compared to the TH-cam tutorial? I see your Robot works very well. If I use 3D files on TH-cam, will it be as good as your robot? -can you please provide more details about those 3 gears used, like diameter size, number of teeth and hole size., if you print it yourself can you share the 3d printing file Is that Okay ? - What 4 types of servo motors are there (180 degrees or 270 degrees or 360 degrees)? Thanks a lot 🥰🥰🥰🥰🥰
No improvements, just that I used esp32 instead of Arduino, and I asked Chet gpt how to smooth the ADC to reduce fluctuations in the value of the potentiometer. The gear was made using the GF GEAR GENERATOR from Fusion 360. It probably made the same gear ratio as the producer suggested, but I don't remember it very well. I looked up the gear file I created, but I couldn't find it. Instead, I'll write down the link to the picture of the gear. Sorry for not being helpful. I'm more foolish than I thought drive.google.com/file/d/1CbgmspCT43WojeAv_6dsY9LjwRB5jNNt/view?usp=drive_link
@@esp-el4do Really thank you very much. I have started printing the parts and will finish in 40 hours. I have 1 more question: -I think what range should the potentiometer be in before inserting and closing the controller and before loading the program. do i have to have potentiometer at a particular position when attaching to the controller body? Can you tell me how to position the potentiometer when assembling? Thanks a lot
@@mr.q1880 This is the code I used It also includes setting minimum and maximum values for servos and potentiometers The code is not perfect, it's sloppy, but it works for me I'm not sure anyone else will work the same way I do When I first started making this project, I had the same concerns as you I started without understanding anything software or mechanical I've tried a lot to make it work, and I've been helped by Chetgpt in a lot of ways. I still don't understand how it works, but it works anyway drive.google.com/file/d/1ZcvgJ7b0P2AW8uCqIkWPjav0n1Ghxp5B/view?usp=drive_link
I'm so sorry. This is not a project that I created. I just copied it. The project that Build Some Stuff created is posted here at www.thingiverse.com/thing:6313449
I'm so sorry. This is not a project that I created. I just copied it. The project that Build Some Stuff created is posted here at www.thingiverse.com/thing:6313449
아.. 이게... 저도 잘 모르지만은... 내부 ADC가 좀 부정확하다고 하더라구요 (외부 ADC 모듈로 하면 낫다고 하는데 저는 안해봤어요) 포텐셔미터에 공급되는 DC전원의 노이즈도 영향이 있더라구요 ( ESP에 바로 공급하는것보다 확장 쉴드를 통해 공급하는게 ADC값이 덜 튀었어요..) 챗GPT에 ADC값 스무딩해줘 평활화 해줘 하면 코드 짜줄꺼에요 복붙하시면 되요 (ADC 평균값을 내는 방식이라 조금 딜레이가 생겨요 그래도 이게 제일 효과 좋았어요)
const int numReadings = 10; // 스무딩을 위한 읽기 수 int readings[numReadings]; // 읽기 값을 저장하는 배열 int readIndex = 0; // 다음 읽기 위치 int total = 0; // 읽기 값의 총 합 void setup() { // 이전 설정 유지 } void loop() { // 이전 루프 유지
moveMotorSmoothed(potWrist, wrist); moveMotorSmoothed(potElbow, elbow); moveMotorSmoothed(potShoulder, shoulder); moveMotorSmoothed(potBase, base); } void moveMotorSmoothed(int controlIn, int motorOut) { total -= readings[readIndex]; // 이전 값을 총 합에서 제거 readings[readIndex] = analogRead(controlIn); // 새로운 값을 읽음 total += readings[readIndex]; // 새 값을 총 합에 추가 readIndex = (readIndex + 1) % numReadings; // 다음 위치 계산 // 평균 계산 int average = total / numReadings; // 평균 값을 사용하여 모터 제어 int pulse_wide = map(average, 800, 240, MIN_PULSE_WIDTH, MAX_PULSE_WIDTH); int pulse_width = int(float(pulse_wide) / 1000000 * FREQUENCY * 4096); pwm.setPWM(motorOut, 0, pulse_width); }
hello, Did you make any improvements compared to the TH-cam tutorial? I see your Robot works very well. If I use 3D files on TH-cam, will it be as good as your robot?
-can you please provide more details about those 3 gears used, like diameter size, number of teeth and hole size., if you print it yourself can you share the 3d printing file Is that Okay ?
- What 4 types of servo motors are there (180 degrees or 270 degrees or 360 degrees)?
Thanks a lot 🥰🥰🥰🥰🥰
No improvements, just that I used esp32 instead of Arduino, and I asked Chet gpt how to smooth the ADC to reduce fluctuations in the value of the potentiometer. The gear was made using the GF GEAR GENERATOR from Fusion 360. It probably made the same gear ratio as the producer suggested, but I don't remember it very well. I looked up the gear file I created, but I couldn't find it. Instead, I'll write down the link to the picture of the gear. Sorry for not being helpful. I'm more foolish than I thought
drive.google.com/file/d/1CbgmspCT43WojeAv_6dsY9LjwRB5jNNt/view?usp=drive_link
All servos are using 180 degrees
@@esp-el4do Really thank you very much. I have started printing the parts and will finish in 40 hours.
I have 1 more question:
-I think what range should the potentiometer be in before inserting and closing the controller and before loading the program. do i have to have potentiometer at a particular position when attaching to the controller body?
Can you tell me how to position the potentiometer when assembling?
Thanks a lot
@@mr.q1880 This is the code I used
It also includes setting minimum and maximum values for servos and potentiometers
The code is not perfect, it's sloppy, but it works for me
I'm not sure anyone else will work the same way I do
When I first started making this project, I had the same concerns as you
I started without understanding anything software or mechanical
I've tried a lot to make it work, and I've been helped by Chetgpt in a lot of ways. I still don't understand how it works, but it works anyway
drive.google.com/file/d/1ZcvgJ7b0P2AW8uCqIkWPjav0n1Ghxp5B/view?usp=drive_link
@@esp-el4do Can you open access to the 2 google drive links you just sent me?
Genial proyecto.
I'm so sorry. This is not a project that I created. I just copied it. The project that Build Some Stuff created is posted here at www.thingiverse.com/thing:6313449
love it, reminds me of the remote handling arms for nuclear fuel.
must be lots or uses like hand controlled manipulator for an rov.
I'm so sorry. This is not a project that I created. I just copied it. The project that Build Some Stuff created is posted here at www.thingiverse.com/thing:6313449
What arm project is this?
www.thingiverse.com/thing:6313449
th-cam.com/video/AIsVlgopqJc/w-d-xo.html
The producer made it well, so it's easy to copy it. Try it
@@esp-el4do great, thank you!
Hii, I need help with the inverse kinematic solution to your robotic arm, can you help me with that
I just copied the project. I don't have the knowledge
저는 설명대로 하니까 모터가 덜덜 떨리던데 어떻게 해결하신거에요?
아.. 이게... 저도 잘 모르지만은...
내부 ADC가 좀 부정확하다고 하더라구요 (외부 ADC 모듈로 하면 낫다고 하는데 저는 안해봤어요)
포텐셔미터에 공급되는 DC전원의 노이즈도 영향이 있더라구요 ( ESP에 바로 공급하는것보다 확장 쉴드를 통해 공급하는게 ADC값이 덜 튀었어요..)
챗GPT에 ADC값 스무딩해줘 평활화 해줘 하면 코드 짜줄꺼에요 복붙하시면 되요 (ADC 평균값을 내는 방식이라 조금 딜레이가 생겨요 그래도 이게 제일 효과 좋았어요)
const int numReadings = 10; // 스무딩을 위한 읽기 수
int readings[numReadings]; // 읽기 값을 저장하는 배열
int readIndex = 0; // 다음 읽기 위치
int total = 0; // 읽기 값의 총 합
void setup() {
// 이전 설정 유지
}
void loop() {
// 이전 루프 유지
moveMotorSmoothed(potWrist, wrist);
moveMotorSmoothed(potElbow, elbow);
moveMotorSmoothed(potShoulder, shoulder);
moveMotorSmoothed(potBase, base);
}
void moveMotorSmoothed(int controlIn, int motorOut) {
total -= readings[readIndex]; // 이전 값을 총 합에서 제거
readings[readIndex] = analogRead(controlIn); // 새로운 값을 읽음
total += readings[readIndex]; // 새 값을 총 합에 추가
readIndex = (readIndex + 1) % numReadings; // 다음 위치 계산
// 평균 계산
int average = total / numReadings;
// 평균 값을 사용하여 모터 제어
int pulse_wide = map(average, 800, 240, MIN_PULSE_WIDTH, MAX_PULSE_WIDTH);
int pulse_width = int(float(pulse_wide) / 1000000 * FREQUENCY * 4096);
pwm.setPWM(motorOut, 0, pulse_width);
}
@@esp-el4do 혹시 이거일까요
@@esp-el4dopwm 기판 뭐사용하신거에요?
void setup()
{
Serial.begin(115200);
delay(10);
analogReadResolution(10);
pinMode(switchPin, INPUT_PULLUP);
// initialize all the readings to 0
for (int thisReading = 0; thisReading < numReadings; thisReading++) {
readingsWrist[thisReading] = 0;
readingsElbow[thisReading] = 0;
readingsShoulder[thisReading] = 0;
readingsBase[thisReading] = 0;
}
// Connect to Wi-Fi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
webSocket.begin();
}
void loop()
{
webSocket.loop();
// subtract the last reading:
totalWrist = totalWrist - readingsWrist[readIndex];
totalElbow = totalElbow - readingsElbow[readIndex];
totalShoulder = totalShoulder - readingsShoulder[readIndex];
totalBase = totalBase - readingsBase[readIndex];
// read from the sensor:
readingsWrist[readIndex] = analogRead(potWrist);
readingsElbow[readIndex] = analogRead(potElbow);
readingsShoulder[readIndex] = analogRead(potShoulder);
readingsBase[readIndex] = analogRead(potBase);
// add the reading to the total:
totalWrist = totalWrist + readingsWrist[readIndex];
totalElbow = totalElbow + readingsElbow[readIndex];
totalShoulder = totalShoulder + readingsShoulder[readIndex];
totalBase = totalBase + readingsBase[readIndex];
// advance to the next position in the array:
readIndex = readIndex + 1;
// if we're at the end of the array...
if (readIndex >= numReadings) {
// ...wrap around to the beginning:
readIndex = 0;
}
// calculate the average:
int averageWrist = totalWrist / numReadings;
int averageElbow = totalElbow / numReadings;
int averageShoulder = totalShoulder / numReadings;
int averageBase = totalBase / numReadings;
int switchVal = digitalRead(switchPin);
String message = String(averageWrist) + "," + String(averageElbow) + "," + String(averageShoulder) + "," + String(averageBase) + "," + String(switchVal);
webSocket.broadcastTXT(message);
Serial.println(switchVal);
delay(20);
}
저는 이렇게 짜주더라구요@@ElySeL