[자동 저장 문서]

아두이노와  CNC Shield를 사용한 Plotter EggBot 제작기 By hulk

아두이노에는 다양한 쉴드(Shield)가 판매되고 있는데 이번에 도전할 대상은 CNC 쉴드이다.  CNC 쉴드를 구동하는 라이브러리가 있는데 Grbl이라는 것이다. Grbl은 현재 ver 1.1 까지 나와있다. 이  Grbl 라이브러리 개발자에 한국계인 사람이 있는것 같다. Sungeun K. Jeon라는 분인데 유트브에서 이 분을 인터뷰 하는 것을 찾아 보기도  했다. Grbl이 저가형 3D 프린터의 원형인 Prusa 모델의 구동 라이브러리로 소개되어 있어 그 역사와 인지도는 아주 높다고 할 수 있다. 또한 안정성도 어느 정도 인정할 만 하다. DIY용 CNC 머신이나 Laser Engraver 에는 다 이것을 사용한다고 보면 된다.

그럼 이번 도전의 핵심인 CNC 쉴드를 살펴 보자. 4개의 모터 드라이버 칩을 장착할 수 있도록 지원한다. 노란색은 X, Y, Z 축을 빨간색은 Z축과 동기화하여 사용가능 하며 점퍼로 사용여부를 설정 할 수 있다. 모터 드라이버 칩으로는 Pololu A4988 DRV8825 가 많이 사용되고 있다. 열이 나는 부품이라 방열판이 추가로 제공 되고 있는 경우가 대부분이다.
사용자 삽입 이미지
사용자 삽입 이미지

펌웨어 업로드

Grbl version 1.1을 사용하는 https://github.com/cprezzi/grbl-servo https://github.com/gnea/grbl 의 스페셜 버전이다.

이 버전에서는 CNC spindle 대신 RC Servo를 사용할 수 있는 버전이다. $M03 $M05 명령어 이후 S0~ S255 값으로 서보 모터의 위치를 조절 할 수 있다. $30 = 255S-값의 최대치를 설정 할 수 있다.  PWM 신호 폭을 0.5ms에서 2.5ms로 조절 가능한데 사용하는 서보의 특성을 보고 cpu_map.h 파일에서 수정하면 된다.
MG90S 모델의 경우 그 값은 아래와 같다.

#ifdef SPINDLE_IS_SERVO

                  #define SPINDLE_PWM_MAX_VALUE     38 // 2.5ms

                  #ifndef SPINDLE_PWM_MIN_VALUE

                   #define SPINDLE_PWM_MIN_VALUE   7  // 0.5ms

                   #endif

               #else

이것으로 그림을 그리게 하기 위해서는 먼저 Inkscape라는 프로그램을 이용해서 도안을 그려야 한다. 그림을 읽어서 하는 방법을 설명해 본다. 비트맵 따오기를 한 후 객체를 경로를 한 후 CNC Eggbot Tool를 사용하여 G-code로 변환한다. M03 변수를 서보 동작에 사용하므로 M03 S0과 M03 S150 이라는 G-Code를 생성하도록 하여 그림의 선과 선을 이동할 때 펜을 들어서 움직이고 내려서 그리게 된다.

사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
Eggbot에는 Gbrl 대신 Eggduino라는 펌웨어 프로그램을 다운로드 하고, Inkscape의 확장 툴인 Eggbot Tool을 사용하여 직접 G-Code를 전송할 수 있는데, 시리얼 접속시 아두이노가 리셋되는 것을 막아야 파이선에서 시리얼 포트를 빠르게 찾게 된다. 리셋이 안되게 하는 방법은 Reset 핀과 GND 사이에 100uF 정도의 전해 콘덴서를 꽂아 주면 잘 작동 하였다.  
그외 필요한 화일은 
- Eggbot software 2.5: https://github.com/evil-mad/EggBot/ 에서 Eggbot extension을 
- Plotink: https://github.com/plex3r/plotink 에서는 모션과 시리얼
- https://pypi.org/project/pyserial/#files 에서는 pyserial을 받아서 
C:\각자의 설치 경로\inkscape-0.92.2-x64\inkscape\share\extensions과 
G:\각자의 설치 경로\inkscape-0.92.2-x64\inkscape\share\extensions\serial에 복사해 준다.

USB로 연결된 아두이노 우노가 Inkscape에서 잘 인식이 되어야 하는데 필자도 어려움을 겪어 포기할뻔 했다. 끈질긴 검색의 결과 성공했다 ^.^. eggbot_scanwin32.py에 보면 아래와 같이 USB 인식 ID가 있다. 그 부분을 다음과 같이 수정하면 된다. CH340 칩을 사용하는 경우이므로 다른 칩을 사용하는 UNO  보드일 경우 상황에 맞게 시스템 정보창에서 VID와 PID 값을 찾아 수정하면 될것이다.

오리지널 hKey = _winreg.OpenKey( hReg, r"SYSTEM\CurrentControlSet\Enum\USB\VID_04D8&PID_FD92" )

수정 후 (CH340일 경우)  hKey = _winreg.OpenKey( hReg, r"SYSTEM\CurrentControlSet\Enum\USB\VID_1A86&PID_7523" )

멋진 그림들을 많이 그려보자. 계란에도 멋진 그림을 넣어 보자.

Posted by 헐크

2018/03/26 15:59 2018/03/26 15:59
, , ,
Response
0 Trackbacks , 0 Comments
RSS :
http://trivis.cafe24.com/rocket/rss/response/25

리모콘으로 움직이는 자동차

중국산 AVR 키트 하나 산거 조립을 해서 굴려 보았다.

가격이 의외로 싼건 아니었는데 그래도 조립하면서 만드는 재미가 그런데로 좋았다.
부품이 모두 준비된 상태로 조립을 시작해서 마지막 굴리기 까지가 단번에 끝나니 조립식 장난감 만드는 느낌이었다.
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
마지막 사진은 리모컨만 하니 재미가 없어서 BlueTooth 모듈을 더 연결해 보았다.
물론 프로그램을 다시 다 짜야 했지만. 중국 제조사에 소스가 올려진 것은 아니라서.
리모컨 부분은 아두이노 라이브러리를 찾아서 추가 하여서 해결 하였고, BlueTooth는 그냥 시리얼 통신이니까 그냥 코드 좀 추가 해서 해결.
조종은 구글앱을 찾아서 f, b, r, l, s 등 문자열을 날리는 걸로 찾아서 방향은 아두이노에서 앱과 문자열을 기준삼아 코딩하면 OK.
사용자 삽입 이미지
사용자 삽입 이미지

Posted by 헐크

2017/12/05 17:16 2017/12/05 17:16
,
Response
0 Trackbacks , 0 Comments
RSS :
http://trivis.cafe24.com/rocket/rss/response/24

안드로이드폰으로 AVR 제어

안드로이드 폰을 이용한 구글 ADK 같은 장치를 만들고 싶어서 모듈을 좀 샀다.

ADK용은 아두이노랑 호환 되게 만들었는데 개인적으로 아두이노 써본 적이 없어서 그냥 AVR 128에 맘데로 만들려고 한다.

Bluetooth 모듈은 시중에 저렴하게 나오는 HC-06으로 구매했다.

그리고 AVR 128로 구매했다. 예전에 개미로봇 만들었던 소스를 그대로 참조하여 128로 바꾸었다. 통신 쪽 레지스터와 몇몇 정의들만 바꾸니 그대로 컴파일 되었다.

최근 ATMEL에서 STUDIO6가 나와서 좀 써 보려 했는데. 컴파일은 잘 되는데 ISP가 인식이 안되서 할 수 없이 버전 4에서 다운로드 했다.

사용자 삽입 이미지

준비된 하드웨어 출력 단에 LED 하나 달아서 On / OFF를 해 보았다.

급히 사다가 케이블이 ISP 6핀 짜리 인 것을 간과해서 부득이 8핀을 6핀으로 바꾸는 케이블을 만들 수 밖에 없었다.

사용자 삽입 이미지

개미로봇 만들 때 시리얼로 문자를 전송 받으면 전진 후진 좌우로 가게 했었는데 시리얼만 Bluetooth로 변한 거라 프로그램은 LED 동작 하는 부분으로만 바꾸면 OK.

사용자 삽입 이미지

노트북에 있는 Bluetooth를 이용해서 접속하면

사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지

작동을 잘 하는 것이 확인 되었다.

이제 안드로이드로 넘어 가보자.

Mobot BTCar라는 제작자가 만들어 올린 무료 프로그램을 받으면 똑 같은 것을 테스트해 볼 수 있다. 단지 안드로이드 폰의 Bluetooth를 사용해서 키트에 접속한다는 차이 뿐.

Bluetooth Chat이라는 프로그램이 있다. 이것은 구글 sdk에서 주는 sample인데 이것을 컴파일해서 pkg로 만들어 인스톨 하면 된다. Uuid를 바꾸어 컴파일 하면 된다고 구글링 하면 나온다. 한가지 시행착오를 겪은 건 pkg 파일을 컴파일만 한 것을 넣어 설치하면 안되고(연결이 안됨) 꼭 배포용 pkg 로 암호 설정해서 만들어야 안드로이드 폰에서 정상 작동 하였다.

사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지

소정의 목표는 달성 했다.

이것을 응용하는 것은 고민해 보자.

Posted by 헐크

2013/01/25 16:18 2013/01/25 16:18
, ,
Response
0 Trackbacks , 0 Comments
RSS :
http://trivis.cafe24.com/rocket/rss/response/22

AVR Serial ISP 자작기

사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지

Posted by 헐크

2007/03/12 15:43 2007/03/12 15:43
, ,
Response
0 Trackbacks , 5 Comments
RSS :
http://trivis.cafe24.com/rocket/rss/response/10

AVR로 개미로봇 자작하기

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지


움직이는거 avi 화일입니다. 미디어플레이로 안보이면 다운해서 곰플레이어로 보세요.

Posted by 헐크

2007/01/09 13:44 2007/01/09 13:44
,
Response
0 Trackbacks , 6 Comments
RSS :
http://trivis.cafe24.com/rocket/rss/response/3


블로그 이미지

공개할 만한 것은 공개합시다. 學問如逆水行舟 不進則退. 학문은 물을 거슬러 오르는 배와 같아 나아가지 않으면 뒤로 물러난다.

- 헐크

Notices

Archives

Authors

  1. 헐크

Recent Trackbacks

Calendar

«   2018/07   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

Site Stats

Total hits:
50406
Today:
4
Yesterday:
7