본문 바로가기

KAIROS 2기

[카이로스2기] 아두이노로 쉽게 하는 미니 프로젝트!(RC카, 로봇암, 밸런싱로봇)

카이로스2기 아두이노 수업에서는 과정 중 다양한 미니 프로젝트 실습을 진행하고 있다.☺
미니 프로젝트는 제공받은 기본 아두이노 키트를 기반으로 해서 배운 것들을 적용해볼 수 있고, 특정 목표를 가지고 하니 시행착오를 거치며 더욱 많은 것을 배울 수 있었다.
이번 게시물에서는 우리 반에서 만든 세가지 종류의 미니 프로젝트를 사진과 영상과 함께 소개하려고 한다!

  • RC카🚗 > 라인 트레이싱
  • 로봇암🤖 > 관절별 각도 움직이기
  • 밸런싱로봇🚲 > 두 바퀴 균형잡기

RC카🚗

1) RC카 조립하기


먼저 아두이노 키트와 보드를 사용하여 RC카를 조립하였다. 맨 아래층에 DC모터 두대와 모터를 조종하기 위한 모터 컨트롤러, DC 모터의 회전을 측정하기 위한 엔코더 등이 들어간다. 
모터는 아두이노에서 나오는 기본 5V로는 전력이 부족하기 때문에, 별도 9V 전지를 추가하여 모터를 구동하였다.

2층에 아두이노등을 올리기 위하여 1층과 2층 사이에 기둥을 세운 것을 볼 수 있다.

사진에는 잘 안보이지만, 맨 앞에는 라인 트레이싱을 위한 적외선 센서를 달아두었다. 센서에 따라 라인 트레이싱이 영향을 많이 받기 때문에 센서 위치와 고정방식 등에 모두가 고민을 많이 하였다. 마지막까지 미세조정을 많이 한 애증의 적외선 센서 ㅠ.ㅠ 아래 영상에서 확인!

배선 시 주의사항!🚨
- 라인 트레이싱을 위해 적외선 센서를 이용하여 흰/검을 구분하는데, 센서류는 전류를 많이 쓰지 않기 때문에 9V에 연결시 과다 전류로 발열/손상이 있을 수 있으니 5V로 별도 연결이 필요하다. 9V를 아두이노에 vin으로 넣고, 적외선 센서는 아두이노에서 5V 출력을 따로 빼서 연결해주었다.

 
2) 라인 트레이싱
RC카의 앞에 적외선 센서 2개를 배치하여 센서 인식 결과에 기반하여 차가 흰 바닥 위의 검은 선을 따라갈 수 있도록 프로그래밍하였다. 우리 반에서는 반장님과 다른 한 분이 제일 먼저 성공하셨다👍 열심히 조립/배선/프로그래밍 한 결과 나의 소중한 RC카도 라인 트레이싱 성공! 아래 영상에서 확인하시길😎

 

그렇다면 가장 중요한 코드는?

적외선 센서는 흰색과 검은색을 구별해서 감지하기 때문에, 센서 input 값을 확인하여 바퀴 작동 여부를 조정할 수 있다.

왼쪽 오른쪽 모두 검정색을 감지하면 선을 따라 잘 가고 있으므로 직진, 검정 벗어나면 그쪽 바퀴만 작동하여 회전을 하는 식으로 선을 따라갈 수 있다.

  if (left_chked == 1 and right_chked == 0) {} // 좌회전
  if (right_chked == 1 and left_chked == 0) {} // 우회전 
  if (left_chked == 1 and right_chked == 1) {} // 검은선 안쪽, 직진
  if (left_chked == 0 and right_chked == 0) {} // 벗어남, 후진

 

카이로스 2기 아두이노 첫 미니 프로젝트 RC카! 직접 조립하고 프로그래밍하고 생각한대로 움직이니 정말 재밌었고, 애정이 많이 갔다 ㅠㅠ 중간에 배선이 꼬이고 센서가 마음같이 잘 안되어서 포기하고 싶은 순간도 있었는데, 반 친구들이 같이 봐주고, 서로 안되는 부분을 해결해주고 응원해주니 정말 포기할 수가 없었다😂 덕분에 완성하니 얼마나 뿌듯하던지! 이 영광을 카이로스 2기 우리반에 바칩니다❤


로봇암🤖

다음으로, 2인1조로 작업한 소형 로봇암 미니 프로젝트이다!
1) 로봇암 조립하기

 

소형로봇암은 무려 서보모터가 4대나! 들어가서 각 관절을 구성하는 로봇이다. 흰색 기본 골격은 3D프린터 출력물을 카이로스 2기에서 제공해주었고, 서포터 제거부터 조립을 모두 직접 진행하였다.

작업량이 많다보니 2인1조로 작업하였는데, 짝꿍이 내가 어려워하는 암수케이블 연결을 깔끔하게 완성해주셔서 넘나 감사했다,,😸 아무래도 모터가 많이 들어가서 무겁고 위로 길쭉한 구조이다 보니, 작동을 했을때 덜컹거리는 부분들이 있어서 나사를 사용해서 고정을 잘 해주는 것이 은근 중요한 포인트!


 2) python 시리얼통신으로 각도 받아 각도 조절

 

처음 작동했을때 내 말 안들어서 내가 금쪽이라고 불러준 우리 소형 로봇암 친구,, 그래도 결국 원하는대로 작동하는데 성공해서 뿌듯함이 2배~ 

코드는 아래와 같이 'MoveRobotArm'이라는 함수를 만들어 동작시켰다. 서보모터는 0~180도로 움직이는데, 속도 빠르게 움직이면 흔들림도 심하고 작동에도 무리가 간다고 해서 1씩 움직이는 for문 상에 delay(10)씩을 주어 자연스럽게 움직일 수 있도록 했다.

또다른 코딩 포인트는 Serial 통신을 사용해서 아두이노-파이썬 간 통신을 진행하며 파이썬에서 input값을 받아오는 연습도 같이할 수 있었다는 점! 받아온 각도와 현재 각도를 비교해서 움직일 수 있도록 작성하였다.👩‍💻

 

int MoveRobotArm(Servo serv, int pos) {
  int cur = serv.read();
  if (cur < pos) {
    for (int i=cur+1; i<pos+1; i++) {
      serv.write(i);
      delay(10);
    }
  }
  else if (cur >= pos) {
    for (int i=cur-1; i>pos+1; i--) {
      serv.write(i);
      delay(10);
    }
  }
  delay(1000);
}

 

소형 로봇암 같은 경우는 사실 이렇게 제공받는 키트가 아니었다면 만들어보기 쉽지 않은 구조물이었을 것 같은데, 카이로스 2기를 통해 이런 개발도 해볼 수 있어서 즐거운 경험이었다.

2인1조로 하다보니 조립에 있어서는 서로 도움이 많이 됐지만, 대신 코드는 한명씩밖에 못올리다보니 계속 테스트할 수는 없었고 번갈아가며 시도해야하는 점이 조금 아쉬웠다! 

아직도 건재하게 있는 정든 우리 금쪽이,,ㅎ💗


밸런싱 로봇🚲

마지막으로, 아두이노 시험날 진행한 밸런싱 로봇이다!
1) 밸런싱 로봇 조립하기

 

밸런싱 로봇은 자이로센서(가속도 센서)를 통해 움직임, 회전을 인식하고, 이름처럼 두 다리(바퀴?)로 서도록 균형잡을 수 있도록 만든 로봇이다. RC카를 만들때 사용한 자재들로 구성할 수 있고, 2층이었던 RC카와 다르게 무려 3층짜리 구조물로 되어있다.

모터의 경우에는 이전 드라이브보다 좋다고 하는 모터 드라이브를 사용했는데, 여기 메인으로 들어가는 9V 전력이 있었고, 아두이노, ESP에 사용하기 위한 서브 전원으로 AAA 전지도 하단에 붙여 사용하였다. 

배선 시 주의사항!🚨
- 5V 전지와 AAA전지 4개 구분하기. 모터, 모터 드라이브, 전지가 섞이면서 배선이 많이 혼란스러웠는데 두 전원의 전력 차이도 있다보니 각 전원 구분과, 무엇보다 중요한 +/- 구분에 유의할 것!
- RC카를 하면서도 열정적인 반 친구들의 다회 트라이로 전지 방전이 속출하였는데 ㅎㅎ 전원을 따로 쓰는 이런 구조물의 경우에는 계속 연결하고 있는 것이 역시 부담이 있어서, 위로 올려서 on/off 용이하게 하는 것을 추천! (반장님의 아이디어) 빵판에 각 전원을 따로 꽂아두고 쓸때만 빵판에서 연결되도록 하니 키고 끄는 조작이 참 편했다.

 
2) 밸런싱 균형잡기

 

밸런싱 로봇은 아쉽게도 작동 영상이 없다 ㅠ.ㅠ 아쉽게도 아두이노 마지막 날 시험을 보고 나서 짧은 시간 동안 조립과 프로그래밍까지 하다보니 작동은 하였는데 혼자 잘 서지 못해서.. 양손으로 이 친구를 보조하느라 촬영할 손이 없었다🤣

아무래도 실제 밸런싱이 잘 되기 위해서는 코드를 보면서 개선하는 시간이 필요할 것 같다. 이 부분은 아직도 진행중!

 

이렇게 마지막 로봇까지 총 3개의 로봇 미니 프로젝트 리뷰 끝!

무엇보다도 오프라인 교육의 장점을 너무 잘 느낄 수 있던 시간이었다. 미니 프로젝트를 하기까지 많은 실습을 하며 체계적으로 배웠기 때문에 팀원들과 협동하며 완성할 수 있지 않았나 싶다. 그런 면에서 역시 카이로스 2기 하기를 잘했다는 생각을 참 많이 했다! 처음 배우는 아두이노였지만, 이제까지 배운 것을 기반으로 이제 모르는 것을 마주쳐도 잘 배워나갈수 있겠다는 자신감을 얻은 것이 가장 큰 수확이다🌟

다음주 포스팅으로는 현재 배우고 있는 또다른 매우 중요한 주제! 딥러닝 기초에 대한 내용으로 찾아오겠습니다!👋