', { cookie_domain: 'auto', cookie_flags: 'max-age=0;domain=.tistory.com', cookie_expires: 7 * 24 * 60 * 60 // 7 days, in seconds }); Self Balancing Cube 셀프 밸런싱 큐브 제작기 #4 :: MakerLee's Workspace
728x90

하드웨어 테스트는 끝났으니 이제 소프트웨어를 시작해 봅니다. 

조립하고 USB 케이블을 연결했습니다

 

 

 

 

 

 

https://www.youtube.com/watch?v=AJQZFHJzwt4 

제작자가 이 동영상 8:29 부터 코드에 대해 설명하고 있습니다

 

 

 

**맨 아래 [변경사항]을 확인하고 읽어주세요. **

동영상의 코드 설명은 여기에 있는 코드와 다른 부분이 있습니다.

 

 

보드 세팅은 ESP32 Dev Module로 하면 됩니다

 

 

 

 

 

1. 전압 세팅

 

처음은 전압 세팅을 조정하라는군요.

funtions.ino의 129번 라인의 Serial.print의 주석을 지워줍니다. 

 

 

 

 

 

 

그리고 코드를 업로드후 시리얼 모니터에서 115200보드레이트로 설정하면 전압 측정결과가 나옵니다. 

 

 

 

 

 

 

 

실제 측정결과는 11.68v 인데 15.45v 정도가 나왔으므로 오차가 심하군요.

 

 

기본값은 ESP32_cube.ino의 105번 라인에

battVoltage((double)analogRead(VBAT) / 207)

이렇게 207로 되어 있으므로 보정해 줘야 합니다. 

 

 

analogRead / 207 = 15.45 (시리얼 출력값)

analogRead / X = 11.68 (실제 출력값)

 

즉 analogRead = 15.45*207

15.45*207 / 11.68 = X 가 되겠네요

계산하면 X = 274 가 됩니다. 

 

이렇게 해도 낮은 전압에선 오차가 또 나게 되는데 저는 낮은 전압 기준으로 맞췄습니다. 

그래서 263 을 집어넣었습니다. 

 

 

 

 

 

2. 가속도계 튜닝

 

 

시작부터 제작자 설명과 다른 부분이 약간 있습니다. 

제가 받은 코드에는 SerialBT.print로 시작되는 두 줄 중에서 위쪽의 robot_angleX 를 출력하는 부분이 없더군요,.

해당 부분 코드를 작성해 주었습니다. 

그리고 아래쪽에도 주석을 추가합니다.

 

 

 

 

추가로 비프음이 그치지 않아 확인해 보니 BUZZER 의 HIGH/LOW가 반대로 되어 있어서 전부 고쳐주었습니다. 

 

 

 

 

 

 

동영상에서는 코드의 일부 주석을 제거 후 업로드 후 블루투스로 연결하라고 합니다

 

 

 

 

 

 

블루투스를 검색해 보면 ESP32-Cube-blue가 뜹니다.

 

 

 

 

 

블루투스를 추가하고 시리얼 포트를 보면 원래 연결되었던 COM16 외에도

COM17과 COM18이 추가된 것을 볼 수 있습니다. 

 

 

 

 

 

 

 

처음에는 꼭지점으로 균형을 잡도록 세워주고, 이때 터미널의 센서값을 확인했습니다.

근데 이러면 안 되더군요

무게중심을 잡은 채로의 센서값을 체크해야 합니다.

그냥 45도로 세워놓는다고 무게중심이 완벽하게 잡히진 않습니다.

때문에 손으로 세밀하게 잡고 움직이지 않도록 주의하면서 센서값을 체크합니다. 

 

 

 

 

 

 

 

 

 

 

되도록이면 평균값을 구하는 게 좋겠죠?

값을 전부 더한 다음 항목수로 나누면 되겠네요

 

 

 

 

 

 

 

 

 

 

인공지능의 힘을 빌려봅니다. 
자료를 너무 많이 넣으면 해석을 못 한다고 징징대길래 많이 줄였더니 금방 평균값을 알려주네요

하지만 수기로 다시 계산해보니 값이 틀렸더라고요;;

한 10개 이하로 줄였더니 정확하게 계산해 줍니다. 

 

 

 

 

 

동영상 대로ESP32.h에 offset값을 입력하려고 하니 아예 코드 자체가 다른 부분이 또 있네요

동영상을 만든 후 코드를 수정한 것 같은데 우측의 X1, Y1에 offsetX, offsetY를 입력했습니다. 

이후에도 약간식 다른 부분이 있어서 제대로 유튜브 설명을 따라하기 힘들었습니다. 

 

 

 

 

 

 

 

 

[변경사항]

 

코드를 계속 수정해 보다가 그냥 동영상에서 나왔던 코드를 찾기로 합니다. 

기존 커밋을 클릭해서 확인해 봤습니다. 

 

 

 

 

 

 

확인해 보니 2022년 7월 12일 이전 코드인 것 같더군요.

browse를 눌러 예전 소스를 다시 다운받고 이걸 사용하기로 했습니다. 

 

 

 

728x90

+ Recent posts