[14기] 갈릴레오 사용기 - 로봇 제어

안녕하세요. 고명호 입니다.

지난번에는 갈릴레오보드와 시리얼 케이블을 연결해서 갈릴레오보드의 내부에서 동작하는 리눅스의 메시지를 확인했었습니다.

이번에는 갈릴레오보드를 실제로 로봇의 제어에 이용하는 방법을 연구해 보았습니다.

제어에 사용된 로봇은 동부로봇의 허큘렉스로 다른 일반적인 서보 모터들은 대개 PWM을 이용해서 움직임을 제어하는반면

허큘렉스는 PWM제어 기능을 모터 내부에 넣어, 외부와는 rs-232 시리얼로 통신을 하여 제어를 합니다.

그만큼 편리하게 제어를 할 수 있습니다.




그런데  rs-232 규격은 uart 규격과 다릅니다. 프로토콜이 다른것은 아니고 신호의 전압레벨이 다릅니다. 

일반 uart는 비동기 통신 규격으로 0과 1의 신호를 각각 (0V 와 5V) 또는 (0V와 3.3V)의 전압을 생성해서 전송합니다.

(물론 1의 신호를 1.8V로 전송하는 uart도 있으나 많이 쓰이지는 않습니다.)

rs-232 규격은 0과 1의 신호를 -12v 와 +12v 의 전압을 생성해서 전송합니다.

따라서 전압만 바꾸어 주면 상호 연결해서 사용할 수 있습니다. 

이때 많이 사용되는 칩 부품이 maxim사의 max-232 또는 max3232라는 부품입니다.

(max-232 는 0와  5v 신호를 rs-232로 양방향으로 바꾸어 주고, max-3232 는 0v 와 3.3v 신호를 rs-232로 

양방향으로 바꾸어 줍니다.)

갈릴레오이외의 다른 보드에는 MPU의 uart 출력이 바로 출력단자와 연결되어 있는데 

따라서 PC에서 시리얼 터미널을 연결하려면  uart 가 3.3v인 보드에서는 usb to uart 3.3v 변환기판을 이용해야 하고 

5v 로 통신하는 다른 보드에서는 usb to uart 5v 변환기판을 이용해야 합니다.

일반 컴퓨터에서 사용되는 usb to serial 은 rs-232 출력이 나오는데 이것은 usb to uart 보드에 max-232나 기타 호환칩을 붙여서 

전압레벨을 바꾸어 준 것입니다. (따라서 usb to serial 커넥터가 usb to uart 보다 가격이 비쌉니다.)


아래는 USB to UART 보드 입니다. 칩이 한개입니다.




아래는 usb to rs-232 보드 입니다. 칩이 3개이나 1개는 eprom이므로 실제 기능은 2개의 칩이 합니다. 

(usb to uart -> uart to rs-232)


갈릴레오보드에서는 내부에서는 0v와 3.3V의 uart 신호가 나오는데 여기에 max-3232부품을 추가하여 rs-232 로 변환 

이것이 이어폰단자와 연결되어 있습니다.(다른 리눅스 보드들보다 부품이 많이 사용되고 있습니다.)

(또한 아두이노 호환 핀에서는 5V uart 출력도 바로 나오므로 uart가 필요한 경우 이것을 이용할 수도 있습니다.)




아무튼 허큘렉스도 uart 가 아닌 rs-232를 이용하고, 갈릴레오 보드에서도 rs-232 신호가 나오므로 둘을 서로 RXD, TXD 신호만 

교차해서 연결하면 특별한 변환부품이 없이도 서로 연결이 가능합니다. 

다음 사진은 허큘렉스와 갈릴레오를 연결한 모습입니다. 중간에 다른 변환장치가 없어서 간단해 졌습니다.

단, 허큘렉스는 2.5 파이 규격으 커넥터를 사용하므로 일반 3.5파이 규격의 오디오 케이블한쪽에

핸드폰용 3.5 to 2.5 변환케이블을 개조해서 RXD, TXD를 교차하게 만든 케이블입니다. 

이렇게 해서 물리적 연결을 완성했습니다.





그러나 갈릴레오보드에서는 시리얼 단자를 메시지 출력이나 시리얼 입력으로 이용하고 있기 때문에 바로 모터를 제어할 수 없고,

다음과 같은 스케치파일을 이용해서 원래 사용되는 시리얼 출력을 없애서 시리얼 포트를 점유하지 않게 한뒤에야 

모터를 제어할 수 있습니다

또한 시리얼 연결 대신에 LAN 을 이용해서 터미널 접속이 가능하게 코드를 추가 했습니다.

IDE 에서 스케치를 실행시킨후 시리얼 모니터창을 열면 IP 주소가 나오는데 이 주소로 telnet 연결을 하면 갈릴레오 보드의 내부에 

접근 할 수 있습니다.




LAN으로 telnet 접속한 갈릴레오 보드입니다. rs-232로 접속한 것과 똑같은 화면을 볼 수 있습니다.





그 다음은 로봇을 제어할 차례입니다.

로봇 제어에 사용된 소스는 지난번 동부로봇 허큘렉스 체험단에서 사용했던 로봇 암 소스를 그대로 이용할 수 있습니다.

라즈베리 파이로 제어를 했던 소스코드도 GCC로 제작된 소스코드이기 때문에 갈릴레오에서 그대로 가져다 쓸 수 있습니다.

단 시리얼포트만 갈릴레오보드에 맞게 ttyUSB0 에서 ttyS1로 바꾸었습니다. (갈릴레오의 rs-232는 ttyS1 입니다.)

(바로 C 언어가 가지는 재 사용성및 이식성입니다. 거의 코드변환이 없이 다른 플랫폼에서 사용가능합니다)

단 주의할 점이 있는데,

허큘렉스 제어 소스는 파일이 3개 입니다. 대개 아두이노 IDE는 한개의 파일의 setup, loop 함수로 끝납니다.

이것은 아두이노 자체가 용량이 크지 않아서 별 제약이 없었으나 갈릴레오에서는 제약이 될 수 있습니다.

이 제약을 없애고 소스코드를 추가하기 위해서는 ctrl-shift-N 을 눌러서 새탭을 추가한후 

여기에 소스코드를 붙여넣기 하면 됩니다.

그래서 Herkulex.h 와 Herkulex.cpp 그리고 main.cpp를 추가해서 빌드를 하면 됩니다.

main.cpp 에서 main 함수는 아두이노의 메인 함수를 대치하기 때문에 소스코드에 메인함수가 있다면 

아두이노의 setup, loop 함수는 실행되지 않습니다.



p.s) 지난번 글에서 오타가 있었습니다. 아두이노의 ino파일은 소스파일이고 main.cpp 에서 include 되는 파일인데 제가 

elf 라고 쓴다는 것을 ino 파일로 썼습니다. 죄송합니다. 따라서 ino파일은 이식성이 있고 여기서 생성된 binary 파일은 이식성이 없습니다.




다음의 동영상을 보시면 갈릴레오로 제어되는 로봇 암을 보실수 있습니다. 

현재는 시리얼 콘솔 (ttyGS0)에서 명령을 받아서 움직이는데 

프로그래밍을 통해서 갈릴레오에서 직접 키보드 입력이 없이도 허큘렉스모터를 제어할 수 있음을 보여주고 있습니다.





갈릴레오보드가 MPU의 성능이 아두이노보다 뛰어나고, 메인메모리도 훨씬 크기 때문에 간단한 로봇의 제어는 아두이노보드로 

가능하지만 정교하고 복잡한 로봇제어에는 갈릴레오 보드가 더 적당할 것 같습니다.

(ARM-cortex A9를 쓴 다른 미니 보드들도 동일합니다.

단 다른 보드들은 rs-232가 없기 때문에 USB to rs-232 같은 부가적인 인터페이스가 필요합니다.)




마지막으로 갈릴레오보드의 체험을 도와주신 아이씨뱅크에 감사드리며 사용기를 마치겠습니다.


[14기] 갈릴레오 보드 사용기 - 스케치및 리눅스

안녕하세요. 고명호 입니다.

지난번에는 임베디드 보드의 간략한 역사에 대해서 말씀 드렸습니다.

이번에는 갈릴레오 보드를 이용해서 제어에 이용하는 방법에 대해서 연구해 보았습니다.(스케치 및 리눅스)

갈릴레오보드는 아두이노 실드(아두이노의 확장핀에 호환되는 각종 주변장치)와 동일한 규격의 입출력 핀을 가지고 있습니다.

이 말은 아두이노 실드로 할 수 있는 일들을 아두이노 대신 갈릴레오 보드에서 할 수 있다는 의미입니다. 

그러나 엄밀하게는 아두이노와는 완전히 다른 MPU를 사용하는 플랫폼 이기때문에 

호환성의 문제가 생길 수 있습니다. 물론 장점도 있습니다. 이더넷 실드가 붙어있는것처럼 작동하므로 

이더넷 실드 없이도 이더넷 실드용 스케치를 바로 컴파일해서 작동시켜 볼 수 있습니다.



아무튼 이 작업은 일종의(!) 에뮬레이션을 통해서 이루어 집니다.

(엄밀한 의미에서는 재 컴파일의 과정을 거치기 때문에 에뮬레이션은 아닙니다.)

에뮬레이션이라함은 컴퓨터에서 구형 게임기를 돌리듯이 (예를 들면 mame 같은 프로그램) 실제로는 

완전히 다른 하드웨어에서 '원본' 코드를 작동시키는 것을 의미합니다.

에뮬레이션은 이미 만들어진 기계어 코드를 '하나하나 해석'해서 실행시키는 것이지만

갈릴레오에서 아두이노 실드를 구동시키는 것은 약간 다릅니다. 엄밀하게는 재 컴파일을 통해서 x86용 코드를 만들고 
이것을 실행시키게 됩니다.



자세하게 그 원리를 설명하면..

아두이노 프로젝트에서 제공되는 스케치파일은 C언어로 된 코드 입니다. 

동작에 꼭 필요한 부분만 노출시켜 놓은 C 파일이죠( 나머지는 숨겨져 있습니다.).

즉 고급언어라는 이야기입니다. 고급언어의 장점은 인식의 용이성 뿐만 아니라, 재사용성에 있습니다.

아주 예전에 어셈블리로 작성된 프로그램들은 MPU의 종류가 달라지면, 매번 새로 작성을 해야 한다고 말씀드렸습니다.

그런데 이와 달리 고급언어는 MPU에서 실행시키기 위해서는 일종의 번역의 과정을 거치게 되는데요..(컴파일)

이 번역기를 원래 AVR의 번역기 (AVRGCC) 대신에 인텔의 쿼크용 GCC를 사용해서 번역을 한 것입니다.





즉 예를 들자면 

원래 미국어로 된 전공서적을 일본인 번역가가 일본어로 번역을 했다고 합시다. 이렇게 되면 전공서적을 일본인이 이해할수 있습니다.

이 미국어 전공서적을 한국인 번역가가 한국어로 번역을 했다고 합시다. 이렇게 되면 한국인도 미국 전공서적의 내용을 이해할 수 있게 됩니다.

 
미국서적           -> 일본인 번역가     ->  일본인이 실행가능

(스케치 소스)         (AVR 컴파일러)         (atmel AVR 에서 실행) 



       -----------> 한국인 번역가     -> 한국인이 실행가능

                           (x86 컴파일러)          (갈릴레오에서 실행)








번역가가 달라지면서 미국서적의 사용용도가 넓어 졌습니다. (일본에서 + 한국에서도)

컴파일러가 달라지면서 atmel avr 에서 뿐만아니라 갈릴레오에서도 코드를 동작시킬 수 있습니다.



이러한 크로스 컴파일의 장점을 이용하는것은 인텔 갈릴레오 뿐만이 아닙니다.

아두이노 시리즈에서도 원래의 AVR대신 ARM cpu를 사용하는 모델들이 있습니다.

arduino due, arduino tre

arduino due 는 arm cortex-m 을 사용하고 

arduino tre 는 arm cortex-a 를 사용합니다. (자세한 cpu 의 사양은 생략합니다.)



이러한 모델들은 똑같은 고급언어 코드를 각각 컴파일러만 달리하여 컴파일을 해서 최종 출력 파일을 생성해 냅니다.

따라서 같은 회사의 MPU 종류가 다른경우 뿐만 아니라,  MPU의 아키텍쳐가 달라지더라도 최초로 작성했던 코드는 

동작이 가능하게 되는 것입니다.

그러나 번역에서도 100% 번역이 안되는 것과 마찬가지로 갈릴레오에서도 아두이노와 100% 의 호환성을 담보할 수는 없습니다. 

(간단한 LED제어 등등은 거의 문제가 없습니다. 주로 정밀한 타이밍이 요구되는 PWM이나 UART등에서 문제가 있다고 합니다.)

그래서 MPU의 차이에 따라 동작하지 않는 코드가 있다는 문제점 때문에 AVR와 ARM 두개의 MPU를 내장한 보드들도 나왔습니다.



아무튼.. 당연하게도 인텔 갈릴레오 보드용의 스케치는 인텔 바이너리 코드를 생성할 수 있는 컴파일러로서 

갈릴레오용의 최종 실행파일을 생성해 냅니다.

다음 그림을 보시면 인텔갈릴레오 보드용 스케치에서 사용하는 컴파일러가 무엇인지 알 수 있습니다.

(그림)



지난번에 beagle bone black 보드를 리뷰할 때 bare metal 프로그래밍( OS 없이 바로 어플리케이션이 동작하는 프로그램)을 

하는 방법을 설명한 글을 올린적이 있었는데요..

그때 필요한 컴파일러를 설명하면서 저 이름이 어떤 규칙을 가지고 있는지 설명을 드렸습니다.

다시 설명을 드리면요..

i586-poky-linux-uclibc-g++
---------------------------




i586 -> 컴파일러가 최종적으로 생성하는 바이너리가 인텔호환 코드임을 나타냅니다.

poky -> 이건 모르겠네요. 인텔에서 gcc에 붙인 prefix의 일종인가 봅니다. '작다'는 의미겠죠

linux -> 리눅스용 바이너리를 생성하는 프로그램입니다. 

uclibc -> 리눅스 바이너리 중에서도 uclibc를 기본 라이브러리로 사용하는 프로그램입니다.


따라서 결론은 갈릴레오의 스케치에서 내장된 컴파일러는 '인텔cpu용' 'uclibc가 기본 c 라이브러리'인 '리눅스'용 

실행파일을 생성해 주는 컴파일러라는것을 알 수 있습니다. 

자 그렇다면 생성된 ino의 확장자를 가지는 파일은 원래의 아두이노에서는 실행되지 않을 것입니다.

또한 실행파일은 가릴레오 내장 리눅스의 도움없이는 I/O 제어를 할 수 없습니다.

이 입출력 핀은 인텔 메인칩에 직결되어 있는 것이 아니라 중간에 갈릴레오에 내장된 리눅스를 거쳐서 이 리눅스를 통해서 

핀 호환이 이루어 집니다.

(에뮬레이션 구조 그림)



스케치에 있는 예제를 한번씩 실행시켜 보시기 바랍니다. 이 예제는 아두이노와 동일하게 작동을 하는 것들만 모아 놓은것으로 

아두이노에서 실행해 볼 수도 있습니다.



이제는 갈릴레오의 속살을 들여다 보겠습니다. 갈릴레오는 아두이노가 아닙니다. 

단지 아두이노처럼 핀호환을 해서 편의성을 제공한 것 뿐입니다.

(아두이노용 실드를 돌려보려고 갈릴레오보드를 구한다면 말리고 싶습니다. 불편한 점이 한두개가 아닙니다.)

아두이노처럼 동작하는 리눅스를 보겠다는 의미입니다.

물론 여기서도 인텔다운 면모를 보여주고 있습니다. (필요한 부분에 꼭 몇가지의 절차가 필요합니다.)

RS-232시리얼을 연결해서 리눅스 콘솔에 접근을 해야 되는데요.

이 케이블이 독특해서 어디에도 팔지 않습니다. 만들어야 해요!~

이 그림이 케이블의 배선도 입니다.

(그림)



저는 아래와 같이 만들었습니다. 한쪽은 USB to rs-232 부분이구요 다른한쪽은 이어폰 잭입니다.

갈릴레오보드의 이어폰 잭은 음성 출력용이 아니라 rs-232 인터페이스 입니다. (주의 !!!


아무튼 이렇게 해서 터미널에 찍은 것이 바로 다음 화면 입니다. 기본 id는 root 이고 비번은 없습니다.

이 콘솔을 이용하면 보드에 관련된 각종 정보들을 실시간으로 파악 할 수 있게 됩니다.

참고로 콘솔에서 부팅시에 나오는 메세지를 포스팅합니다. 

PC에서 리눅스 부팅시킬때와 유사한 정보들을 확인 하실수 있습니다.

글이 길어져서 갈릴레오 내장 리눅스를 직접 조작하는법은 다음편의 글로 미루어야 겠습니다.

감사합니다.


[활용편] 선 없이 자유롭게 충전하는 무선충전패드 FIT-WPT100P

이제부터 본격적으로 무선충전 패드를 리뷰해 보겠습니다.^^

 

먼저 무선 충전패드를 테스트하려면 핸드폰에 장착할 무선 모듈이 필요합니다.

엥? 그냥 무선 충전패드에 핸드폰 올려 놓으면 충전되는거 아니었나? 

갑자기 무선 충전 모듈이 뭐냐구요?

 

핸드폰은 기본적으로 무선 충전 모듈이 없습니다.

왜냐면 현재 표준화되어 있는 기술 방식이 없고 각 핸드폰 제조사가

지금 테스트할 [전자기 유도방식]을 표준으로 채택해야 할 의무는 없기 때문이죠.

 

제 핸드폰은 갤럭시S4 인데... 아래 처럼 프래디 라는 무선충전 모듈제품을 장착할 예정입니다. 

 

 

 

뒷면에 보면 핸드폰 뒷 케이스를 열고 장착 할수 있는 접지 부분이 나옵니다.

 

 

보이시나요? 아래와 같이 무선 충전 모듈을 핸드폰 뒷 케이스를 열고 장착 하면 됩니다.

참 쉽죠~ 잉?

 

 

무선 충전 모듈을 장착한 화면 입니다.

나중에 배터리 교체할 때는 같이 떼어냈다 다시 붙여야 하는 불편함이 있지만

배터리 교체가 자주 있는것도 아니고..   아..! 저만 그런가요? 

저는 핸드폰 살때 끼운 배터리를 1년 이상 쓴답니다.^^

 

 

아래 화면은 제가 쓰는 핸드폰 케이스 인데요.

저는 핸드폰 케이스와 함께 뒷면에 신용카드 및 교통카드 그리고 RF무선칩이 있는 사무실키

등을 넣고 다닌답니다.

그런데 갑자기 핸드폰 케이스를 왜 보여 주냐구요?

지금 부터 무선 충전패드랑 핸드폰 과의 충전 감응 거리를 테스트 해 보려고 합니다.

보시다 시피 제 핸드폰 케이스는 좀 굵기가 있는편이고 게다가 뒷편에 카드 까지 장착 해야 한답니다.

 

 

제가 가지고 다니는 카드 종류 입니다.

운전면허증, 사무실 무선키, 신용카드 그리고 전자파 차폐카드

이중에서 꼭 필요한것은 사무실 무선키랑 신용카드 2장입니다.

 

 

일단 교통카드 기능이 있는 신용카드 한장만 장착해 보았습니다.

 

 

두께를 한번 살펴 보죠..   카드 1장임에도 꽤 높이가 있어 보이죠?

 

 

저 두께에서도 무선 충전이 될까?

실제 한번 실험 해봤습니다.~

오옷!~   된다 된다!   대단합니다. ^^ FIT 무선충전 패드!

 

 

충전이 아주 아주 잘되는걸 보실 수 있습니다.

케이스도 쪼금 벌어진 상태인데다가 신용카드 한장까지 더했는데 충전이 되다니.. 언 빌리버블~

 

 

다시한번 두께를 보면 정말 굵죠?

 

 

이번에는 필수로 가지고 다녀야할 카드 2장인

교통카드 1장, 사무실 카드 1장 해서 2장을 끼워 넣고 충전을 해보겠습니다.

 

 

두근 두근 한 마음으로 FIT 충전 패드에 핸드폰을 살포시 올려봤습니다.

음....

안되네요 ^^;

 

 

두께를 보려고 자세히 찍어봤습니다.

일단 감안을 해야 하는 게 제 핸드폰 케이스가 약간 들뜬 상태라고 해야하나? 좀 틀어져 있습니다.

뭐.. 두께에 대한 변수는 그렇구..

한참을 올려놨는데.. 역시 2장까지는 무리 인가 봅니다.

그래도 케이스장착하고 뒤에 포켓까지 달고 신용카드 1장정도는 무리 없이 충전되는걸 확인 했습니다.

멋쩌부러~. FIT 충전 패드 ^^

 

 

 

지금 까지 핸드폰 케이스를 장착하고 충전이 얼마나 잘되는지 살펴 봤습니다.

충전 패드 사이즈는 아래와 같이 한손에 들어갈만하게 포켓 사이즈입니다.

정말 작죠?

 

 

와이셔츠에 한번 넣어 보겠습니다.

와이셔츠 주머니에 쏙~! 하고 들어가는 사이즈!

작고 가벼워서 넣었는지 안 넣었는지 모를정도네요.
 

 

 

어떤가요?  올여름 휴가 때에는

작고 가벼운 FIT 무선 충전패드를 가지고 여행을 한번 떠 나보시는것도!

저도 내일 모레 D리조트에 FIT 충전패드 가지고 여행 떠납니다.^^

여행기는 여행기 다녀와서 따로 한번 올리죠^^

 

 

전체적으로 살펴본 결과

작고 가볍고 들고 다니기 부담스럽지 않고 적정한 두께에서도 무난하게 충전이 가능한

무선 충전 패드라는 생각이 들었습니다.

 

개선할 점은

이왕 무선 충전 패드인거... 배터리 기능을 포함해서

진정한 무선 충전 패드로 만들수 있으면 정말 들고 다니기 편한 충전 패드가 되지 않을까 싶습니다.

지금도 엄청 작고 얇은 터라 충전 배터리를 포함해서 제작한다고 해도 크게

무리가 가는 무게는 아닐듯 싶네요.

 

 

"본 제품은 FIT 에서 후원하고 아이씨뱅큐 무상체험단 15기 활동의 일환으로 체험 제품을 제공받아 작성 되었습니다."

[14 기] 갈릴레오 사용기 - prolog

인텔 갈릴레오 보드 사용기


지난번에 개봉기를 올렸었는데요. 


이런 임베디드 보드들이 태동하게 된 계기부터 짚고 넘어가 보겠습니다.


(사진을 올릴수 있는 버튼이 사라졌네요.. 사진 기능이 부활하면 사진은 다시 링크 하겠습니다.

글은 http://blog.naver.com/jimypage 에서도 확인하실 수 있습니다.



70년대 전자 공작의 주류는 기판에 각종 부품들 (트랜지스터, 저항, 콘덴서)를 붙여서 전자적으로 구동되는


장치를 만드는 것 이었습니다. 3석 전파 라디오라든지, 2석 슈퍼 콘덴서 라디오라든지 등등..


80년대 국내에도 유행했던 라디오 공작등은 이미 선진국에서 취미생활로 자리잡고 있던 것이었었습니다. 


이때는 일반 소매점에서 각종 부품을 팔던 시기입니다. 종로 세운상가의 태동과 맥을 같이 한다고 볼 수 있습니다.





80 년대는 본격적으로 가정용 PC가 보급되면서 전자 공작에도 많은 변화가 이루어 졌습니다.


IC가 상용화 되어 이것을 사용하는 개인용 컴퓨터 (애플 시리즈) 가 보급되었고, 전자 공작도 컴퓨터와 연결이 가능한


형태로 발전하기 시작했습니다. 이때 사용된 대표적인 부품들이 TTL이라는 규격의 IC 인데요. 요새도 IC뱅크및 다른 온라인


부품샵에서 구할수 있는 부품들이 많이 있습니다.





이때는 많은 사람들이 직접 부품을 사서 컴퓨터와 연결한 후 Led 를 켜거나 끄는등의 기초적인 디지털 공작을 할 수 있었습니다.


이때 나온 많은 개인용 컴퓨터들이 오픈 아키텍쳐를 지향했기때문에 내부나 외부에 각종 확장 슬롯을 장착했고, 이 슬롯을 


통해서 컴퓨터 내부의 어드레스 버스나 데이터 버스에 접근할 수 있었기 때문에 각종 센서류와 LED 다이오드 등을 결합하여


정보를 수집하거나 제어가 가능했습니다. 물론 TTL로 통칭되는 제어용 IC만으로 동작이 가능한 킷트류 (부저, 방문자 카운터,멜로디 연주) 


등도 유행하기 시작했고, 아직도 온라인, 오프라인 매장에서는 이런 킷트류를 발견할 수 있습니다.




90년대 들어와서는 사실상 컴퓨터와 인터페이싱하는 이런 기능들을 사용하기가 어려웠습니다. 컴퓨터 내부의 버스가 ISA 에서 


PCI 규격으로 바뀌면서 핀갯수도 늘어나고 속도가 빨라졌고, 제어를 위한 프로토콜이 정교해 져서 


컴퓨터 내부의 버스는 더이상 취미를 위해서 사용할 수 없었습니다. 


PCI 버스를 사용하기 위한 로직의 구현은 더이상 일반인에게 가능하지 않게 되었고, 이때 취미용으로 유일하게 남아있는 컴퓨터용 


인터페이스가 rs232로 통칭되는 시리얼 인터페이스와 프린터 포트라고 불리는 패러렐 포트가 있었습니다. 


컴퓨터 내부의 버스 대신에 외부에 노출되어 있어서 쉽게 디지털 로직을 구현할 수 있다는 점 때문에 일부의 상용화 기기와


취미를 위해 개발한 기기들은 대부분 시리얼 포트나 패러렐 포트를 이용하게 되었습니다. 


(산업용 기기들은 아직도 시리얼 패러렐 포트를 많이 이용합니다.)


패러렐 포트를 이용해서 플레이스테이션용 게임패드를 컴퓨터에서 쓸수 있게 해주는 인터페이스 (일명 direct pad) 는


당시에 선풍적인 인기를 끌어서 몇몇 사이트가 생기기도 했고, 중국에서는 패러렐 포트와 게임패드를 연결해 주는 인터페이스를 


대량생산에서 팔기도 했습니다. 물론 우리나라에도 들어 왔구요.



<패러렐 포트로 통신을 하고 USB는 전력 공급만 담당합니다. 패러렐 포트에는 전원단자가 없습니다.>


그런데 90년대 후반 2000 년대 들어서는 PC에서 시리얼, 패러렐 포트가 점차 사라지게 되고 USB 포트로 통합이 진행 되게 됩니다. 


물론 동시에 노트북이 점차 보급이 되면서 시리얼, 패러렐 포트가 없는 기기들이 더 늘어나가 되었습니다.


USB 포트는 2핀만을 사용해서 통신을 하는 규격으로 기존의 시리얼, 패러렐 포트보다 장점이 많습니다. 


그렇지만 이러한 통신을 위해서는 전용 하드웨어 없이는 통신이 불가능합니다.




일반인들이 취미로 컴퓨터의 명령어로 LED를 켜고 끄는 기초 전자공작 


(물론 LEd 대신에 릴레이등을 달아서 전등을 켜고 끌 수도 있습니다)은 더이상 가능하지 않게 되었습니다.


그냥 남이 만들어놓은 부품을 쓰거나 상용화된 원칩 솔루션을 구해서 복잡한 프로그래밍의 과정을 거쳐야만 디지털 전자공작이 


가능한 시대가 되어 버린 것입니다. 즉 취미생활로 컴퓨터와 연결된 장치를 만들기에는 너무 복잡해 버리고 말았습니다.




그렇지만 기술의 발전은 취미 전자공작자에게 더 큰 혜택을 주게 됩니다. 그것이 무엇인가 하면요.. 


일명 원칩 마이컴이라 불리는 원칩 마이컴 솔루션 입니다.


하나의 칩에 CPU, 메모리, IO 등을 집적한 칩이 원칩마이컴인데 이것이 점차 널리 쓰이게 되었습니다.


일반적인 컴퓨터 연산장치는 CPU라고 부르는데요 cpu는 제어, 연산기능만 수행하고 IO 메모리는 칩외부에 위치합니다.


이것과는 달리 하나의 칩에 모든 것이 집적된 CPU를 특히 MCU라고 부릅니다


(micro controller unit - 제어에 사용할 수 있다는 의미죠)


이러한 원칩 마이컴중에 대표적인 것들이 atmel 사의 AVR, 인텔의 8051, microchip 사의 PIC 등이 있습니다.


(80년대 CPU의 대표격인 6502와 zilog의 z80도 원칩화 되었다면 더 오래 사용되었을 것 이지만, 일반적인 CISC 계열의 


칩은 제어용으로 원칩화 하기 곤란했기 때문에, 느린 속도와 작은 버스폭으로 결국은 사장되기에 이르릅니다)


원칩마이컴의 초기에는 각 칩마다 가용할수 있는 메모리가 작았기 때문에 각 칩에 맞은 어셈블리언어로 어셈블리 프로그래밍


으로 직접 제어를 했습니다. 최소한의 메모리를 효율적으로 사용하기 위해서였죠.


즉 PIC어셈블리, AVR 어셈블리, 8051 어셈블리가각각 다르고, 칩마다 가용할 수 있는 


주변기기가 달랐기 때문에 일일히 어셈블리로 프로그래밍을 해야 했습니다. 


그래서 위 3종류의 mcu는 아주 매니악한 취미가들이나 (저처럼요..^^)


아니면 저전력및 간단한 장치, 컴퓨터 주변기기 생산업체에서만 사용이 되었습니다.




<메모리 크기 보이시죠 68k 바이트가 아니고 68 바이트!! 입니다. C언어는 꿈도 못 꿀 사양이죠> 



그러나 2000년대 들어서면서 큰 변혁이 있었습니다. 


각종 MCU의 성능이 향상되면서 내부의 메모리가 급격히 늘어난 것입니다. 


내부 메모리가 증가했고, 각 칩에 대응하는 컴파일러가 개발되면서 일반인들이 MCU를 쉽게 취미에 이용할 수 있는 시기가 도래 한


것입니다.






MCU의 제어를 통해서 LED 를 켜고 끄는 작업이 엄청나게 단순해 졌다는 것을 의미합니다.!!


예전에는 MCU로 LED를 켜고 끄려면, 


 각 제조사에 가서 각 칩의 스펙을 다운받은후 각 칩에 맞는 어셈블리 코드를 작성

(물론 이때 하드웨어적인 지식과 각 칩의 어셈블리에 대한 이해가 있어야 합니다, 대개는 여기서 좌절하죠

취미를 위해서 하는일이 배보다 배꼽이 커지는 사태가 발생)



그렇게 어셈블리를 익혀서,

칩 제조사에서 제공하는 어셈블러로 바이너리 코드를 만들고,



칩 제조사와 서드 파티에서 제공하는 프로그래머로 MCU 내부를 프로그래밍하고


(여기서 두번째 좌절합니다. 각 회사마사 롬 라이팅 규격이 다르고 라이터 마다 칩 지원도 다르므로 최악

에는 칩하나마다 라이터가 있어야 합니다) 


이 장애를 극복하고, MCU라 하더라도 외부에 최소한의 부품들이 필요합니다. 


각 IO의 풀업, 풀다운이라든지 수정 발진자라든지, 

이런것들도 메모리나 IO 인터페이스 만큼은 아니지만  MCU의 구동에 필수적입니다. 

따라서 

빵판에 만들기는 힘들어서

(빵판에 만들면 처음에는 잘 작동을 안하는 경우가 대부분이에요.

오히려 한방에 작동되는 것이 신기할 정도죠..., 이때는 프로그램의 버그인지 회로상의 문제인지 

더 알 수 없기 때문에 일단 회로상의 문제를 배제하기 위해서 주로 만능기판에 납땜을 하고 테스트를 하게 됩니다)

즉 일일히 기판을 만들거나 아니면 하나하나 땜을 해야 합니다!!


.
.
.



MCU 외부의 주변 부품들을 조립하고 나서야........


드디어 LED를 깜박일 수 있었습니다.


단순한 결과를 얻기 위해서 실로 많은 시간투자가 있어야 된다는 것입니다.


그런데 이렇게 LED를 깜박이고 나서 그다음에 할일이 없습니다.


다른 작업을 하려면 기판을 새로만들어야 하고 또 위에 했던 작업을 반복해야 합니다.


한마디로, 취미로 하기에는 너무 시간이 많이 듭니다.

그런데 이런 단순한 결과를 위해서 간단히 프로그래밍이 가능한 솔루션이 태어났으니 그것이 바로 아두이노 입니다.


위에 나열한 모든 절차를 단순하게 줄여 줍니다.


일단 함 보시죠


아두이노 스케치의 소스 코드 입니다


 /*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.
 
  This example code is in the public domain.
 */
 
// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led = 13;

// the setup routine runs once when you press reset:
void setup() {                
  // initialize the digital pin as an output.
  pinMode(led, OUTPUT);     
}

// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);               // wait for a second
  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);               // wait for a second
}


주석을 빼면 

 int led = 13;

void setup() {  
              
  pinMode(led, OUTPUT);  
   
}

void loop() {

  digitalWrite(led, HIGH);   

  delay(1000); 
             
  digitalWrite(led, LOW);    

  delay(1000);              
}



굉장히 직관적입니다.



별거 없습니다. 그냥 C 언어로 함수가 2개 있는 프로그램입니다.



setup에서는 초기화를 수행합니다.  13번 핀을 출력으로 쓰겠다는 것입니다.



loop에서는 전원이 꺼질때 까지 돌면서 LED 에 1과 0 을 반복하여 출력 - 너무 빠르니까 딜레이도 주고 -


무한히 돌아갑니다. 쉽죠 ?


이것은 위의 일련의 작업들을 아두이노 스케치에서 다 해주기 때문에 가능한 것입니다.


자동차 운전자가 자동차 정비를 잘 할 필요는 없겠죠? 



전자공작도 마찬가지 입니다. LED 켜고 끄는 단순한 동작을 위해서 그동안은 시간을 너무많이 투자를 했었어야 



했습니다.


자동차의 본넷트 안에서 일어나는 복잡한 모든일들이 아두이노 스케치 내부에서도 똑같이 일어납니다.


(자세한 것은 너무 깊이있는 내용이기 때문에 다루지 않겠습니다.)
 

이러한 단순한 솔루션을 통해서 많은 사람들이 다시 취미로 디지탈 공작을 할 수 있게 되었습니다.


갈릴레오도 이러한 아두이노 플랫폼의 연장선에 있는 것이구요..


글이 너무 길어졌네요.


그럼 다음에는 실제로 아두이노, 갈릴레오를 제어해 보겠습니다.


감사합니다.


[개봉편] 선 없이 자유롭게 충전하는 무선충전패드 FIT-WPT100P


ICbanQ 에서 무선충전 패드 체험단 공모가 있었습니다.

평소에도 무선충전에 관심이 많았던 터라 기쁜 마음으로 응모 했었죠^^

뭐.. 체험단 응모라는게 응모한다고 100% 되는게 아니니까.. 응모 하고 나서 됬음 좋겠다 라는 심정으로

까먹고 있던 찰나... ^^

 

그러고 나서 몇일 후....

 

두둥......!

 

아침에 출근해서 메일을 확인 하던중! 체험단에 선정 되었으니 신청서 빨리 보내주세요 라는

메일이 한통 와 있지 않는가? 

나~ 는~ 당황하지 않고~ 잽싸게 체험단 응모신청서를 빡~ 하고 보냈습니다.

 

그리고 이틀 뒤에

FIT 무선충전 패드가 도착 했습니다.^^

 

최근에 제 주변에도 무선충전기를 사용하시는분이 드문 드문 보이고 있었습니다.

워낙 주변에 얼리 어답터 들이 많은 터라...  우와~ 하고 부러운 눈으로 보던 참이었거든요.

 

각설하고 아무튼 ICbanQ 덕분에 이런 좋은 체험 기회를 얻어서 먼저 감사의 말씀 드립니다.

 

자.. 이제 FIT 무선 충전 패드에 대해서 살펴 볼텐데요.

그전에 다들 이정도는 알고 리뷰를 해야 하니 무선 충전에 대해서 간단히 알아 보겠습니다.^^

의외로... 무선 충전기술에 대해서 모르는 분들이 많이 있습니다.

 

설명 시작 하면

무선충전 방식에는 2가지 방식이 있습니다.

삼성에서 개발한 [공진 방식] 과 LG전자에서 개발한 [전자기 유도 방식].

 

두방식의 차이점은 뭐냐?

 

일단..

[공진 방식]은 충전패드와 스마트폰의 주파수를 일치시켜 충전하는 방식이구요.
[전자기 유도 방식]은 말그대로 전자기 유도를 통해 충전패드에서 스마트폰으로 전력을 공급하는 방식 입니다.

 

이번에 리뷰할 FIT 충전 패드의 무선 충전 기술은 [전자기유도 방식] 으로 충전 패드에서

1Cm 이상 떨어지면 충전이 안되는 방식 입니다.

 

기술만 놓고 보면 삼성전자 제품의 충전 방식이 조금 더 좋아 보이지만 이놈의 전자파가 항상 말썽이죠..

전자파등의 유해성 문제 등으로 아직까지 상용화 되지는 못하고 있는것 같습니다.

 

아무튼 ... FIT 무선 충전 패드는 LG전자에서 상용화한 [전자기 유도방식]으로 되어 있습니다.


저도 맨처음에 무선충전기들을 볼때 물어 봤던 말이 있는데요.

아마도 똑같은 말을 할껍니다.  대다수...

충전기에 선이 달렸잖아... 근데 왜 무선이라고 부르나?

 

이거 설명을 쉽게 하자면 그냥 무선 커피포트 정도로 생각 하시면 될듯합니다. 

무선 커피포트도 바닥의 밑바침에 코드를 연결해두고 주전자만 거치하고 물을 데우니까요?

선이 달렸지만 무선 커피 포트라고 하죠?

어떤가요?  알아 듣기 쉬운가요? ^^ 

 

자.. 이제 본격적으로 제품 리뷰를 해보겠 습니다.

 

택배 포장이야 뭐.. 그게 그거라 생략 하고 제품부터 살펴 봤습니다.

 

헉... 너무 심플 한거 아니니?

 

네 맞습니다.  보니까.. 무선 충전 패드 한개만 들어 있네요. 아하하 ^^;

 

 

 

일단 느낀점은 제품이 엄청 나게 얇게 되어 있네요..

그만큼 충전패드 만드는 기술력이 좋다고 봐야겠죠.
 

 

 

그래도 크기에 대한 궁금증은 못참 겠는지라 직접 자를 데고 재 봤습니다...

대충 보니 0.5mm 정도 되네요.

 

 

 

제품을 뒷면을 보니 제품에 대한 특징이라든지 LED 표시등에 대한 설명 들이 적혀 있네요.

한글 도메인도 보이는데...

http://무선충전.kr  접속 해봤는데..   헉... 404 에러가.. 홈페이지 신경 쓰셔야 겠네요 ^^;
 

 

 

제품을 꺼내봤습니다.

여기서 느낀점은...

충전 패드만 주실께 아니라.. 충전 패드에 연결할 코드 정도는 기본적으로 들어 있음 좋지 않을까 싶습니다.

심플도 좋은데... 그래도 기본 구성은 되어야 하지 않나 싶은데요.

제품의 가격도 가격인만큼... 충전 케이블이랑 더 나아가서는 어뎁터 정도는 같이 들어 있음

좋을듯 싶습니다.
 

 

 

실제로 제품을 꺼내보니 얇기는 엄청 얇게 만들었네요.  정말 딱... 충전 케이블 굵기 정도일듯 합니다.
 

 

 

손가락을 데고 봤습니다.   제 손가락이 좀 짧고 굵긴 하지만 손가락 크기 정도 밖에 안되네요 ^____^

손가락 굵다고 놀리기 없기 입니다.
 

 

 

이놈의 칫수병...

약..  8센티 정도 되는듯 합니다.  엄청 작죠? 

실제 뒷주머니에 넣어 봤는데.. 뒷주머니에 쏙 들어가구요. 물론 와이셔츠 앞주머니에 쏙 들어가기 때문에

가지고 다니기에는 부담이 없는 사이즈 라고 보여 집니다.

 

 

뒷면을 봤는데요.

미끄럼 방지가 4군데 되어 있고 실제 책상위에 살포시 올려놨는데 밀리는 감이 없네요. 

 

여기 까지 제품에 대해서 살펴봤구요 ^^

 

전반적인 느낌은...

매우 얇고 가볍고 이동에 대한 배려가 잘되어 있다고 보여집니다. 

뭐.. 와이셔츠에다가 넣어도 부담없는 사이즈이며 굵기 이니까요.

다만 기본 구성품에 대한 아쉬움은 남네요.

요즘 충전 케이블이야 많이들 가지고 있는 사람도 있겠지만

제품을 받아 들고 당황하는 사람들도 좀 있을 것 같다는 느낌입니다.

 

"본 제품은 FIT 에서 후원하고 아이씨뱅큐 무상체험단 15기 활동의 일환으로 체험 제품을 제공받아 작성 되었습니다."



15기 무상체험단 무성충전패드 개봉 및 후기.

사무실에서 일을 하고 있는데 
어디선가 들려오는 소리 택배요~ㅋㅋㅋ
드디어 요녀석 무선충전패드가 왔네요~~
생김새는 날씬하니~잘 생겼네요^^ㅋㅋㅋㅋ


사용을 하본 결과...개인적으로
그냥 유선으로 충전하는거랑 다른거는 없는데~~올려놓기만 하면 충전 되는게 신기합니다...ㅎㅎ

만약에 보안되서 나온다면 외장배터리처럼 패드를 충전을하여~(어느 용량처럼)

들고다니면서 on/off 버튼 기능을 넣어~
말 그대로 무선충천패드로 사용 할수 있으면 좋을 것 같다는 
저의 생각입니다.^^


이상 15기 무상체험단 무선충전패드 후기 입니다~^^

 

(사진 올리는 방법을 몰라서 ㅠㅠ)

 

http://cafe.naver.com/icbanq#  <---14기 체험단 작성자(푸른곰),여기에 사진 보실분은 참고하세요^^;;

[14기] 갈릴레오 보드 개봉기..

인텔 갈릴레오 보드 개봉기

 

인텔 갈릴레오 사용단에 선정된 고명호라고 합니다. 

 

갈릴레오 보드는

 

아두이노의 활용성에 인텔의 CPU를 접목한 쿼크칩을 탑재한 최초의 보드라는 점에서 의의가 

 

있겠습니다.

 

뭔가 다른 보드들에 비해서 포지션이 애매하기는 한데요.. 일단 간략한 개봉기와 인텔보드의 

 

응용 분야를 살펴볼까 합니다.

 

보드의 포장은 일반 arm보드들의 투박함에서 벗어나서 뭔가 새롭고 오묘한 느낌을 주고 있습니다.

 


 

(민망하게 다리털이... 죄송합니다.^^)

 

그런데.. 

 

.

.

.

 

 

보드를 개봉하고 나서 내용물을 확인을 했는데, 최초 사용자 가이드가 없습니다.

 

엥 ?o미?? 

 

이리저리 두리번 두리번.. 

 

박스의 내용물을 탈탈 털어서 확인하고 난 뒤에야, 

 

드디어 찾았습니다.~! 

 

여기로 오라는 군요  -> maker.intel.com

 

그것도 상자안 깊숙한 곳에 숨겨 놓았습니다.!!!

 

 

 

<오른쪽 아래 보이시죠 .. maker.intel.com !!>

 

 

아무래도 컨슈머 기기가 아닌.. 뭔가 뚝딱 뚝딱 만들기 좋아하는 그런사람들을 위한 보드라고 

 

생각했는지 여러 미로를 헤치고 들어가고 나서야 드디어 뭔가를 해 볼 수 있었습니다.

 

이 미로를 헤치고 나서야 드디어, '아두이노만큼이나 쉽다.' 라는 느낌을 가질 수 있었습니다.

 

저는 이미 미로를 헤쳐나가는 재미를 맛보았지만 처음 접하는 분들을 위해서 

 

제가 왔던 길을 안내해 드릴까 합니다.

 

사용기를 기대해 주세요~~

버섯돌이의 허큘렉스 다루기 - 개인 미션(로봇 암)

안녕하세요 버섯돌이 유재성입니다.

 

오늘은 개인 미션으로서 로봇 암을 구현했습니다.

아들이 크레인류의 팔을 조작하는걸 좋아해서 직접 구현하는게 목표였기에 비슷한 작품에 관심이 많습니다.^^

작년에 아두이노로 구현된 로봇 암을 보고 나서 아들하고 놀면 재미있을 것 같아서

나중에 스킬이 쌓이면 도전하려고 도전 목표로 잡아 놨었더랬죠.^^

 


출처 : https://www.adafruit.com/blog/2013/11/12/how-to-make-a-trainable-robotic-arm/

 

영상 출처 : http://youtu.be/w9rehmxvOOw

 

당시에는 시간도 그렇고 실력 부족으로 보류하다 허큘렉스 체험단에 응모하면서 스킬이 쌓이면

나중엔 로봇 암도 구현 해 보고 싶다고 적었는데 의외로 허큘렉스 제어가 상당히 간단하더군요.

다만, 플레이트등의 사용 방법이 익숙하지 않다보니 로봇 암이나 크레인을 구현하기 위해 필요한

조립 방법과 부품을 구매하려고 동부로봇에서 제공되는 응용 매뉴얼들을 전부 훑어 봤었습니다.

 

호비스 라이트 중고 구매에 실패해서 서보및 일부 부품이 부족한 관계로 구현하려는 최종 모습하고는 다르지만

하나씩 응용하면서 발전해 나가는 과정을 다루는것도 학습 효과가 좋을 것 같아서 단계별로 조금씩 만들어 볼 생각입니다.

 

최초 생각은 손 부분은 adafruit의 작품처럼 양쪽으로 움직이는 형태로 만들 생각이었으나..

2족 보행 로봇에 서보 4개가 장착되어 있어서 분해할 수 없는 관계로 손의 외형은 emotep님의 작품을 따라 했습니다.

 

emotep님의 작품 : http://cafe.naver.com/openrt/4906

 

저는 물건을 잡으려고 손이 벌어지는 것만 생각했었는데 손 모양은 아이디어가 상당히 좋으신 것 같습니다.*^_^*

 

제가 1차 목표로 잡았던 adafruit 방식은 이미 2족 보행로봇과 모션 캡춰 강좌에 사용된 소스를 그대로 이용하면

별 다른 제어가 필요하지 않아서(?) 조립만 하면 끝나는 수준이라 서보 ID를 2족 보행 로봇처럼 0부터 3까지 통일시키면 됩니다.

향후 다양한 방법으로 제어를 해야하니 시간이되면 짬짬이 글을 작성하도록 하겠습니다.

 

그럼, 쉽다면 쉽고 어렵다면 어려운 조립 과정을 간단히 살펴 보겠습니다.

먼저, 로봇 암을 360도 회전 시키기 위한 가장 하위 부분을 작업하며 서보 ID는 0을 사용합니다.



자세히 보면 2족 보행 로봇 만들때 사용한 방식이죠^^

위에서 내려다보면 위와 같은 모습입니다.

이제 앞/뒤로 구부러지는 관절을 구현하기 위한 서보들을 만들 차례입니다.
서보의 아래 면을 아래 처럼 만듭니다.


기본 골격은 싱글 너트의 1번 조인트 부품과 DRA-0058 볼트를 이용합니다.



이런 형태로 너트가 없는 부분을 서보에 체결합니다.
2족 보행 로봇 만들때 주로 사용하던 방법이라 어렵지 않습니다.


 

모서리 4개 모두 체결했으면 서보 혼에는 아래 처럼 DRB-0011을 체결합니다.


참고로, DRB-0011을 서보 혼에 체결하기전에 DRB-0011 상단에 서보를 먼저 체결하는게 작업하기 쉽습니다.
이렇게 2셋트를 만들어서 각 각 서보1, 서보2로 설정합니다.


즉, 위 사진처럼 되겠지요.

이제 서보0과 서보1을 체결합니다.


서보3의 손을 구현하기 위해 아래와 같은 부품을 준비합니다.



조립 방법은 포크레인 매뉴얼의 13페이지를 참고하시기 바랍니다.


아래 처럼 완성되었습니다.


이제 마지막으로 고정된 손을 연결할 차례입니다.


연결하기 쉽게 모서리 4개에 조인트를 고정합니다.
아무래도 한쪽 면은 서보 혼이있어서 조금 뻑뻑하게 들어가더군요.^^



조인트 위에 손을 나사로 조이면됩니다.
부품 이름과 나사 크기등 세부 내용은 3자유도 그리퍼의 5페이지 내용을 참고 하시면 됩니다.


아래는 최종 완성된 모습입니다.


제일 오른쪽부터 좌측으로 서보 id가 0부터 3까지입니다.

 



케이블까지 연결된 전체 모습입니다.*^_^*

 

미리 매뉴얼도 열심히 봤었는데도 기억력이 나쁘고 손 재주가 없어서 중간 중간에 조립&분해를 수차례 반복하고..ㅜㅜ;;

엉뚱한 볼트를 사용해서 부숴진 부품도있네요.

여러분들은 매뉴얼과 부품 선정만 잘하시면 큰 어려움 없이 만들 수 있으리라 봅니다.^^

 

허큘렉스를 4개 이용했기 때문에 기존에 사용하던 4DOF 2족 보행 로봇의 소스를 그대로 이용 가능합니다.

아래는 간단히 동작 영상을 촬영해 봤습니다.

 

 

간단히 설명하면...

1. 모션 캡춰전에 모든 서보를 기본 위치로 초기화 합니다.

   (즉, 로봇 암을 똑바로 세워 놓습니다.)

 

2. 30초간 원하는 모션을 캡춰(저장)합니다.

 

3. 캡춰(저장)된 모션을 재생하기 전에 혼선을 피하기 위해 다시 서보를 기준 위치로 초기화 합니다.

    반드시 1.번 위치로 옮길 필요는 없습니다만 영상이나 갖고 놀때 이해하기 쉽습니다^^

 

4. 저장된 모션을 재생합니다.

 

ㅋㅋ..갖고 놀때는 잘 되더니 마지막에 간단히 사물을 잡는걸 촬영했는데...

급하게 촬영하느라 엉뚱한 위치에 놓아서 실패했군요.

시간은 금이라 재 촬영하기 귀찮아서 패스~ 합니다.^^;;

 

단순한 동작이지만 녹음 & 재생을 하면 되기 때문에 갖고 놀기도 수월하고..

필요한 경우 몇 가지 모션을 녹음해 놓았다가 불러서 호출하면 되니 어린아이와 갖고 놀기 상당히 재미있습니다.

 

"본 제품은 동부로봇에서 후원하고 아이씨뱅큐 무상체험단 13기 활동의 일환으로 체험 제품을 제공받아 작성되었습니다."

허큘렉스 체험단 13기 2차 미션 완료.


안녕하세요 땡땡이 아부지 입니다.

 

ICBANQ 에서 진행하는 체험단 13기 허큘렉스 모터 마지막 미션입니다.

 

제가 지금 회사가 한참 바쁠 시기여서 좀 늦어 버렸네요...

 

제가 만든것은 예전의 ROBOT_ARM 2탄입니다.

 

 

 

아무래도 전과 최대한 비슷하게 만들고자 하다보니 아래 축 하나가 부족하네요 ㅠㅠ

 

제가 상상력이 좀 적어서 이렇게 밖에 만들질 못했습니다.

 

이번에 진행한 것은 기존에 다뤘던 유선 조이스틱을 이용하여 데이터를 입력받고

 

그 데이터를 라즈베리파이가 다시 허큘렉스 모터로 명령을 내리는 것입니다.

 

예전에 해놨던 조이스틱 소스를 응용하였구요. 동작은 몇번의 테스트 끝에 완료하였습니다.

 

그런데 허큘렉스 모터를 다루다보니 단점이 하나 있더군요. 4개의 모터를 동시에 움직이는것은

 

문제가 없었습니다. 하지만 모터를 움직이고  1초 정도의 딜레이를 주지 않을 경우 모터가 정상 동작 하지

 

않았습니다. 저는 좀더 부드러운 동작을 원했건만 그것은 실패 하였네요 ㅠㅠ

 

좀더 부드럽게 움직일수 있는 방법이 있다면 꼭 가르쳐 주시기 바랍니다.

 

동작 소스 및 동영상은 제 개인 블로그에 올렸습니다.

 

http://blog.naver.com/craezydog/50194155323 

 

소스의 권한은 땡땡이 아부지인 저한테 있으며 비상업적인 배포가 가능하지만 상업적인 용도로 사용을 하실수 없습니다.


"본 제품은 동부로봇에서 후원하고 아이씨뱅큐 무상체험단 13기 활동의 일환으로 체험 제품을 제공받아 작성되었습니다"


Herkulex 13기 무상 체험단 선정 _ 4족보행 로봇제어

안녕하세요~!

 

이번 무상체험단 13기에 선정된 울산과학기술대학교 학생입니다ㅎㅎ

 

이번엔 마지막 자유주제 과제인데요... 처음 생각은 거창했으나 실제로는 매우 힘드네요ㅠㅠ

 

천천히 하나씩 알려드리겠습니다~!

 

먼저 4족 보행 로봇은 흔히들 생각하시는 거미처럼 움직이도록 디자인 해보았습니다

 

다리 하나마다 3DOF로, 총 12개의 모터를 사용해서 만들었습니다.

 


 

위 사진은 다리 하나를 두고 찍은 사진이구요, 사실 조립하면서 과정을 하나하나 찍으려 했으나... 만들다 부품을 계속 잃어버려서 그냥 

후다닥 만들어버렸답니다ㅎㅎ;; 혹시 제작과정이 궁금하신 분들은 fkzld903@gmail.com으로 연락주시면 알려드릴게요~!!

 

아래 사진들은 거미(?) 로봇의 다양한 포즈들을 찍은 사진입니다

 


 

그리고 실제로 일어섰을때의 모습도 한장~!ㅎㅎ

 

 

사실상 조립하는건 어렵지 않으나, 조립할?? 방향! 과 초기위치!(값이 512가 되는 지점이 중간위치입니다.)에 주의하면서 조립하시면 됩니다 ^^

 

만들고 나니 어떻게 움직이게 만들건지가 고민이더군요...ㅠ

사실 아직 답은 찾지 못했지만, 거미나 강아지가 걸어가는걸 보고 계속해서 연구중입니다ㅎㅎ

 

참, 만약 어떤 특정 자세를 취했을때 모터값이 궁급하시다면, 

void petPos(id) 함수가 굉장히 유용하답니다 ㅎㅎ (모터값을 읽어서 .txt 파일로 저장하는 코드는 첨부해두었습니다.)

저도 모션 하나하나 세팅을 해서 모션값들을 배열로 만들어 텍스트파일에 저장한뒤, 실제 프로그램에선 저장된 텍스트파일의 값들만 읽어서 동작하게 

해두었습니다

 

사실 모터 제어를 위해 라즈베리 파이보드의 시리얼포트를 사용하려 했으나...

 

 

여기까진 문제가 아니었는데, 언제부턴가 시리얼핀이 안먹히기 시작했습니다...ㅠㅠㅠ(한번은 시리얼핀에 12v를 주어서 탄적도 있었습니다..)

시리얼 포를 사용하는 법은 다음에 또 포스팅 하겠습니다~ㅎㅎ

 

아무튼 이리저리하여 파이와 컴퓨터를 다이렉트로 연결한 뒤, (이것두 다음에 같이 포스팅 할게요^.^) Xshell로 접속하여 컨트롤해보았습니다ㅎ


 

연구해본 모션중에 두가지 방법이 있어서 둘다 움직여본 영상을 보여드리겠습니다.

 



개인적으로는 두번? 모션이 좀 더 나은 방법인거 같은 생각이 듭니다ㅎㅎ

 

 

좀 더 효과적인 모션이 나올때 까지, 계속해서 연구해볼겁니다..!! 화이팅!!

 

"본 제품은 동부로봇에서 후원하고 아이씨뱅큐 무상체험단 13기 활동의 일환으로 체험 제품을 제공받아 작성되었습니다"