Wire cover for Dynamixel PRO

로봇 조립 중 다이나믹셀의 전선을 바짝 붙여야 할 일이 생겼습니다. 전선이야 케이블타이로 잘 정리하면 되겠지만 그렇게 묶은 전선이 로봇 관절이 움직일때 영향을 줄 수도 있어서 정리하기 위한 커버가 필요했습니다.

사용하려는 모델은 H42P-020-S300-R 이고, 프로 모델 중에선 가장 작은 타입입니다.

H42P-020-S300-R

다행스럽게 로보티즈에서 도면 및 step 모델 등을 제공해주므로 쉽게 만들수 있습니다. 일단 onshape.com으로 가서, 다운로드한 모터의 step 파일을 업로드해서 만듭니다.

이제 모델의 크기를 반영해서 커버를 만들어줍니다. 전선이 지나갈 홈도 파 주고요. 다 그렸으면 어셈블리로 모터에 붙여서 크기가 잘 맞는지 확인해봅니다.

잘 맞는것 같네요. 이제 이걸 stl 파일로 export하고, 슬라이서 프로그램을 통해 gcode를 생성해줍니다. 양쪽 두개가 필요하니까 한꺼번에 두개를 배치하고 생성!. 표면이 거칠어도 사용하는데는 큰 무리가 없으니, 적측두깨는 0.2mm로 강도는 좀 있어야 하니 채움은 30% 정도?

약 1시간 40분 정도 걸린다고 나오네요.. 프린터로 옮겨서 출력을 해주면!!??

이렇게 예쁘게 출력이 잘되고~~, 모터와 결합해보면??!!

모터의 크기에 딱! 맞게 끼워지고, 나사 구멍의 위치도 정확하게 맞네요..^^

끗!

M5STACK FIRE DEVELOPMENT KIT

M5Stack은 ESP32를 사용하여 만들어진 개발용 킷트이다. 현재 참여하고 있는 EduBot에도 ESP32가 들어가는데, 이번에 구입한 FIRE 버전은 16M Flash와 4M PSRAM을 가진 ESP32가 들어가 있다. (좀더 용량이 낭낭하게 많아졌단 얘기, 램도.. 어쨌든 다다익선).

현재 알리익스프레스에서 팔고 있고, 한국에서도 위즈넷(?)이란 곳에서 판매하고 있다고 한다.

구매링크 바로가기

가격은 대략 7만원 ~ 8만원대인데, 구성이 상당히 알차게 들어 있다. 마이크, 스피커, BLE, WiFi, 가속도, 자이로, 지자기센서, LCD, 버튼, RGB LED 등등 단독으로 사용해도 뭔가 재밌는 것을 만들어볼수 있을 것 같다. 물론 확장포트도 있어서, 외부센서를 추가로 연결할 수 있다. 배터리도 내장되어 있어 충전독 혹은 USB-C 케이블을 이용하여 충전한다.

io.m5go.com 웹페이지를 이용하여 온라인으로 블럭코딩 및 코딩을 하여 M5Stack를 제어할 수 있다. WiFi가 지원된다는 이점을 활용한 것 같다.

위 웹페이지에서 만든 블럭코딩 결과물을 실행하면, 현재 내가 갖고 있는 M5Stack에서 바로 실행된다. (WiFi가 연결되지 않으면 당연히 사용할 수 없음)

코어 성능도 빠방하고, 직접 개발시 Arduino Sketch를 사용하고 M5Stack에 대한 Library도 충분히 지원되니 환경 설정에 애먹고 시간을 허비하는 일은 거의 없을 듯 하다.

이외에도 요새 유행한다는 마이크로 Python도 돌아간다고 하고… 뭐 용도는 무궁무진할 듯.

자~ 이제 이걸로 뭘 해 볼까나??

Blockly 개발환경 구축

Blockly는 오픈소스로 소스가 모두 개방되어 있다. 이를 가져와 개발자의 의도 및 용도에 맞게 수정하여 사용 가능하다. Blockly는 미들웨어 성격으로, 사용자의 어플리케이션에 맞게끔 수정 및 기능 추가가 용이하다.

일단 Blockly 소스를 가져와 빌드해보도록 한다. Javascript의 빌드 결과물은 주로 xxxx_compressed.js의 이름으로 저장되며, 여러개로 분산된 코드를 하나의 파일에 압축(정확히는 함축)하여 저장한다.

먼저 소스를 가져온다. github의 Blockly 레포지토리 (https://github.com/google/blockly/releases) 에서 최신 릴리즈 소스 (https://github.com/google/blockly/archive/1.20190215.0.tar.gz)를 다운로드한다.

받은 압축 파일을 임의의 디렉토리로 이동한 후 압축을 푼다. (본 포스팅에선 ~/Developer 를 사용.)

$ cd ~/Developer
$ tar zxf blockly-1.20190215.0.tar.gz

빌드하기 위해선 일단 python2.7이 설치되어 있어야 한다. (macOS엔 python 2.7이 기본 설치되어 있으므로 괜찮음. Windows에선 따로 설치 필요)

$ cd blockly-1.20190215.0
$ ./build.py

이때 다음과 같은 에러가 발생하면, closure-library가 필요하다.

Error: Closure not found.  Read this:
developers.google.com/blockly/guides/modify/web/closure

위 에러 메시지에서 알려준 링크 (developers.google.com/blockly/guides/modify/web/closure)로 가서 압축 파일을 다운로드 한다.

받은 파일을 ~/Developer에 풀고, 디렉토리 이름을 closure-library로 변경한다.

$ cd ~/Developer
$ tar zxf ~/Downloads/google-closure-library-v20190301-20-gde66a8a.tar.gz 
$ mv google-closure-library-de66a8a closure-library

이제 다시 blockly 디렉토리로 이동하여 빌드한다.

$ cd blockly-1.20190215.0
$ ./build.py

여러 메시지가 쭈욱 나오고, 에러가 없이 마무리되면 다음과 같은 파일이 생성된다. (이미 컴파일된 파일이 있긴 하지만, 업데이트 된다) 만약 java.lang.RuntimeException: INTERNAL COMPILER ERROR와 같은 에러가 발생한다면, 잠시후 다시 실행하면 정상적으로 빌드 된다.

...

SUCCESS: msg/js/tlh.js
SUCCESS: msg/js/ba.js
SUCCESS: blockly_uncompressed.js
SUCCESS: blockly_accessible_uncompressed.js
SUCCESS: blockly_compressed.js
Size changed from 2637 KB to 780 KB (30%).
SUCCESS: blockly_accessible_compressed.js
Size changed from 2739 KB to 826 KB (30%).
SUCCESS: blocks_compressed.js
Size changed from 154 KB to 74 KB (48%).
SUCCESS: javascript_compressed.js
Size changed from 85 KB to 47 KB (56%).
SUCCESS: python_compressed.js
Size changed from 71 KB to 36 KB (51%).
SUCCESS: php_compressed.js
Size changed from 74 KB to 38 KB (52%).
SUCCESS: lua_compressed.js
Size changed from 66 KB to 33 KB (50%).
SUCCESS: dart_compressed.js
Size changed from 78 KB to 41 KB (52%).

빌드 완료.

생성된 파일의 용도를 설명하면…

  • blockly_compressed.js : Blockly 코어 파일
  • blocks_compressed.js : 기본 블럭
  • javascript_compressed : Javascript 코드 제너레이터
  • python_compressed.js : Python 코드 제너레이터
  • php_compressed.js : PHP 코드 제너레이터
  • lua_compressed.js : Lua 코드 제너레이터
  • dart_compressed.js : Dart 코드 제너레이터

끗!

납걸이 (릴납 스탠드)

인두기를 구입할 때 납걸이 (릴납 스탠드)를 같이 구매했어야 됐는데, 시기를 놓치니 그냥 귀찮더라도 릴납에서 납을 조금씩 풀어서 사용하고 있었습니다. 대충 6,000원 정도 하는데 그것만 주문하기도 좀 애매하기도 했고, 다른 것 주문할 땐 꼭 까먹더라고요.

3D 프린터도 요즘 슬슬 사용하고 있겠다, 모델링 하는 것도 어렵진 않아서 사용하고 있는 릴납 기준으로 납걸이를 만들어보았습니다. 사용하고 있는 실납입니다, (http://eleparts.co.kr/goods/view?no=3224253)유연 실납으로 땜질할 때도 냄새도 거의 나지 않고, 품질도 좋습니다. 저정도 양이면… 특별한 일이 없는 한 거의 평생 사용할 것 같네요.

크기는 자를 이용해서 가운데 봉이 들어갈 부분의 지름과 전체 길이, 전체 지름 등을 재고, onshape.com에서 모델을 만듭니다. 총 3개의 파트로 구성되고, 베이스, 릴납이 끼워질 부분, 양쪽으로 움직이지 못하게 하는 마개 부분이네요.

이제 이것을 STL 파일로 변환해서 슬라이서 툴에 넣고, gcode를 생성합니다. 워낙 단순 생김새이니 infill은 15%, 적층두께는 0.2mm로 좀더 빠르게 설정했습니다. 필라멘트 색상을 교환해 가면서 뽑으면 좀더 이쁘겠지만, 역시 귀차니즘에 의해서 그레이 색상으로 통일.

출력 결과는…..

짜잔!!

이제 자알 조립해 보면,

파는 제품에 비교해봐도 손색이 없는 품질! 생긴것도 깔끔하고요..^^ 끗!

Blockly 소개

Blockly (블럭클리?, 블로키?)는 구글에서 오픈소스로 개발하고 있는  visual programming editors (소위 블럭코딩)을 개발하기 위한 Javascript 라이브러리이다. Scratch 3.0도 블럭을 제어하기 위한 부분은 Blockly 라이브러리를 가져와 수정하여 사용하고 있다.

대다수의 블럭코딩 툴들이 Blockly를 기반으로 개발되고 있다. 라이센스는 Apach 2.0을 사용하며, 소스는 https://github.com/google/blockly에 있다. 상업적 사용이 가능하고, 변경 및 배포에 아무런 제약이 없다.

Scratch 3.0이 그만의 프레임웍에 맞추어 개발해야 했다면, Blockly는 사용자가 자유롭게 변형하여 목적에 맞는 프로그램을 개발 가능하다.

블럭으로 만들어놓은 부분을 각종 언어 (Javascript, Pythom, Lua, Dart 등)로 생성이 가능하다. 또 사용자가 원하는 블럭도 생성이 가능하다. 코어가 Javascript로 되어 있어, 웹은 물론 Android, iOS에서도 WebView를 통해 실행이 가능하다. (동일한 코드로)

https://developers.google.com/blockly/ 이 메인 싸이트이며, Blockly에 대한 설명, 사용방법, 개발 방법 등에 대한 부분이 상세하게 적혀있다.

https://groups.google.com/forum/#!forum/blockly 는 Blockly 사용자들이 모여 있는 포럼으로 다수의 사용자들이 Blockly를 Customizing하고, 다양한 사례에 적용할 때 발생하는 문제점을 제시하고 서로 논의 하는 곳이다.