', { cookie_domain: 'auto', cookie_flags: 'max-age=0;domain=.tistory.com', cookie_expires: 7 * 24 * 60 * 60 // 7 days, in seconds }); 'Making/Self Balancing Cube' 카테고리의 글 목록 :: MakerLee's Workspace
728x90

튜닝만 하면 마무리되는 물건이지만, 메이커페어에 들고나갈 생각을 하니 좀 더 손보고 싶어지더군요

달려있던 모터 하나가 축이 휘어져서 밸런스 돌릴때마다 이상하게 비틀거리기도 했고 자이로 휠도 바꾸고 싶어져서 

손보던 김에 전면 재설계에 들어갔습니다. 

 

 

 

원본의 조립방식을 바꿔본다고 손댔던 지난번 설계는 정작 조립해보니 별로 낫지도 않더군요. 

이번에는 모서리에서 45도 각도로 태핑나사로 조립하는 방식입니다. 훨씬 깔끔하고 편하군요.

 

 

 

 

 

 

 

모서리가 칼같이 잘 맞아들어갑니다. 

 

 

 

 

 

하는김에 PCB도 설계.

원래 EagleCad를 썼지만 Fusion360에 통합되고 나서는 업데이트도 잘 안되고 쓰기가 영 불편하더군요

그래서 EasyEDA로 바꿔봤습니다. 

JLCPCB / LCSC 회사의 소프트웨어인데 프로그램 자체는 이글보다 낫진 않습니다. 

하지만 일반적인 양면 PCB 설계하기엔 충분하고요.

무엇보다 LCSC에서 공급하는 부품을 전부 그대로 사용할 수 있어 라이브러리 면에서 대적할 자가 없네요. 

 

설계를 마치면 JLCPCB에서 주문하면서 LCSC에서 부품주문도 동시에 할 수 있는 시스템이라

몇만원에 납땜까지 완성된 PCB를 그대로 받아 볼 수 있습니다. 

조만간 다른 프로젝트 PCB 주문할때 같이 하려고 일단은 묵혀 두는 중입니다. 

 

 

------------------------------------추가--------------------------------------------------------
이번에 PCB주문하면서 부품주문도 같이 하려했더니 안되더군요. 
검색해보니 세금신고관련 문제로 합배송이 안되게 바뀌었다네요. 

 

728x90
728x90

https://youtu.be/tIuX01ikdrY

 

 

전원을 켜고 손으로 중심을 잡은 채로 유지하면 3축 순서대로 삐-삐-삐 소리가 3번 납니다.

이후 '삐삐' 소리가 나면 작동이 시작되고 손을 떼면 모터가 자동으로 움직이며 자세를 잡습니다. 

뾰족한 꼭지점을 대고 설 수 있지만 아직 완성이 되지 않은 관계로 그렇게 설 수는 없습니다.

부팅시 영상처럼 모서리를 대고 1축만 사용하면 자동으로 1축만 이용해서 자세를 잡도록 되어 있습니다. 

 

 

 

 

처음 조립시에는 거의 서질 못해서 현재는 각 휠의 무게를 늘려 놓은 상태입니다. 

18650* 3개로 조립을 했는데 전압도 좀 부족한 것 같아 전선을 연결해 15~16V 정도로 테스트했더니 그나마 위의 영상처럼 서기 시작했습니다.

튜닝을 좀 해야 하는데 생각같아서는 설계를 처음부터 다시 좀 다듬을까 싶기도 해서 약간 고민이네요. 

728x90
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
728x90

 

다시 한번 말하지만 저는 ESP8266 보드를 사용하는 관계로 
https://www.instructables.com/Get-Started-With-ESP8266-NodeMCU-Lolin-V3/

 

Get Started With ESP8266 (NodeMCU Lolin V3)

Get Started With ESP8266 (NodeMCU Lolin V3): Component Required: ESP8266 (NodeMCU Lolin V3) Micro USB Arduino IDE Internet connection NodeMCU lolin V3 Feature: Open-source Status LED MicroUSB port Interactive and Programmable Low cost ESP8266 with inbuilt

www.instructables.com

이 링크를 참조해 스케치를 업로드 해야 합니다 .

 

 

 

 

일단 핀 번호만 수정한 스케치를 올려 보면 위와 같이 BluetoothSerial.h 가 없다는 에러가 나옵니다. 

 

 

코드를 훑어보니 ESP32.h에서 블루투스시리얼로 기본튜닝을 하게 되어있더군요.

그리고 제가 사용한 ESP3266은 블루투스가 없습니다;;

결국 원본대로 다시 제작하기로 합니다. 

 

국내 판매가가 2배 가까이 비싸서 알리산으로 구매했습니다. 

도착하면 납땜부터 전부 다시 해야겠네요.

이런 뻘짓을 하지 않으려면 코드부터 잘 확인해야 겠습니다.

 

 

 

 

 

새 보드를 만듭니다. 

 

 

 

 

 

 

 

충동적으로 원작자 설계와 다르게 가속도계를 밑으로 넣어버렸는데요. 

확신없이 그냥 저질렀는데 괜찮을 지 모르겠습니다. 

 

 

 

 

 

 

일단은 납땜 완료. 

 

 

 

 

 

 

 

 

제작자는 친절하게도 모터 테스트 스케치를 준비해 뒀습니다.

올려보니 모터가 1개밖에 안 도는군요. 

 

 

 

 

 

제가 납땜 실수한 게 하나 있었고, 케이블 불량이 하나 있었습니다.  

 

 

 

 

 

 

 

수리하고 나니 잘 돌기 시작합니다. 

728x90
728x90

일단 제작자와 다른 보드를 사용했기 때문에 모든 선을 체크해가면서 조심히 납땜합니다. 

 

 

 

 

 

 

이 회로에서 제작자가 설명해 놓지 않은 부분이라 첨언을 하면
회로도에서 피에조 스피커는 '능동형 부저' 타잎입니다. 

전원만 인가하면 소리가 나는 물건이죠. 

스위치 회로로 PNP 트랜지스터를 사용하는데 일반 범용 PNP면 아무거나 가능합니다만

핀 순서가 맞는지 확인하고 납땜해야 합니다. 

제작자는 ECB 형식으로 회로도를 그려 놨습니다만

제가 사용한 2N2907은 EBC 순서라서 그에 맞춰 연결했습니다. 

 

 

 

 

배터리는 제작자가 3S 1P 리튬이온 배터리를 사용했다고 하니 

일반적인 리튬이온 배터리를 3직렬 연결해서 사용하면 됩니다. 

저는 18650 3개를 쓸 생각입니다.

 

 

 

 

 

바꾼 보드에 맞춰 코드도 수정을 해 줍니다. 

미리 잘 메모해두거나 미리미리 수정하지 않으면 나중에 낭패를 보게 됩니다. 

 

 

 

 

 

 

 

배선이 끝나면 배터리 홀더도 납땜해 줍니다. 

배터리 홀더가 배선을 덮어버리기에 차후 수정이 힘들어지므로 테스터로 일일이 연결을 확인해 두었습니다. 

 

 

 

 

 

 

 

 

생각해보니 전원 LED가 있어야 할 것 같아 추가했습니다. 

 

 

 

 

 

 

 

임시로 조립해봤습니다. 

설계할 때 실수했는지 조립하는 볼트 구멍 하나의 간격이 맞지 않아서 갈아내서 맞췄습니다. 

 

 

 

 

 

 

 

모터 커넥터와 간섭이 있어서 출력물도 일부 잘라냈습니다. 

 

 

 

 

 

 

 

실수가 있었네요.

모터 커넥터를 모터 반대쪽으로 납땜했습니다. 

그냥 연결해도 큰 문제는 없습니다. 

 

 

 

 

 

 

 

모터 커넥터 작업을 합니다. 

 

 

 

 

 

 

 

 

 

핀 번호는 왼쪽부터 1번입니다. 

 

 

 

 

 

 

 

 

 

 

 

커넥터를 반대면에 납땜하는 바람에 끼우기는 좀 불편하네요.

 

 

 

 

 

 

 

조립된 모습은 위와 같습니다. 한 변의 길이가 157mm 인 정육면체입니다. 

728x90
728x90

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

어느날 유튜브를 보다 보니 이런 게 보였습니다. 

 

 

 

 

 

 

https://github.com/remrc/Self-Balancing-Cube

 

GitHub - remrc/Self-Balancing-Cube

Contribute to remrc/Self-Balancing-Cube development by creating an account on GitHub.

github.com

소스 코드와 모든 설계 파일은 GitHub에 있습니다. 

코드와 파일을 보니 비교적 쉽게 따라할 수 있을 것 같더군요.

 

 

 

 

 

 

 

 

 

 

하지만 조립 방식은 마음에 들지 않아 Fusion360에서 다시 설계했습니다. 

한동안 Fusion360과 Solidworks를 계속 왔다갔다 했는데,

여전히 퓨전의 Joint 기능은 솔리드웍스의 메이트에 비해 사용하기 불편하고 직관적으로 이해가 가질 않네요. 

 

 

 

 

 

 

 

 

 

원래의 핀 배치도는 위와 같습니다

아두이노 나노 버전도 있지만 ESP32 보드를 사용하는 게 아무래도 더 안정적이지 않을까 합니다.

 

 

 

 

 

 

 

 

사놓고 쓰지 않아 악성재고가 되고 있는 ESP8266 (NodeMCU Lolin V3) 보드가 있으니 이걸 쓰기로 합니다. 

 

 

 

 

 

 

 

 

핀 갯수를 확인해서 ESP32 보드 대신 ESP3266 보드를 사용할 수 있을 지 체크해봅니다. 

제작자가 사용한 핀은 

Buzzer(27) - digital out

Vbat(34) - analogread

brake(26) - digital out
3개의 PWM 핀(32, 25, 18)

3개의 DIR 핀(4, 15, 5)

이외에 SDA(D21) / SCL(D22)

이상의 11개 핀이 필수로 필요합니다. 

 

추가로 7핀은 연결은 해 놓고 현재는 사용하지 않는 핀입니다. 

추후 업데이트 예정이라는군요.

 

 

 

 

 

 

핀의 갯수를 세어보니 정확하게 18개의 핀을 사용 가능합니다. 

 

 

 

 

 

https://www.instructables.com/Get-Started-With-ESP8266-NodeMCU-Lolin-V3/

 

Get Started With ESP8266 (NodeMCU Lolin V3)

Get Started With ESP8266 (NodeMCU Lolin V3): Component Required: ESP8266 (NodeMCU Lolin V3) Micro USB Arduino IDE Internet connection NodeMCU lolin V3 Feature: Open-source Status LED MicroUSB port Interactive and Programmable Low cost ESP8266 with inbuilt

www.instructables.com

오랫만이라 스케치 업로드를 어떻게 하는지 다시 한번 확인해 봤습니다. 

 

 

 

 

 

다른 건 없고 핀 번호 지정할 때 D4 식으로 정확하게 써야 하는군요. 

 

 

 

 

 

 

업로드&실행이 정상적으로 되는 것을 확인했습니다. 

 

 

 

 

 

 

728x90

+ Recent posts