이전 포스트인 Mac OS X에서 시리얼 터미널 프로그램 (Serial Terminal Emulator in Mac OS X에서 이야기했던것처럼 Mac OS X에는 GUI 인터페이스를 사용하는 쓸만한 무료 시리얼 터미널 프로그램이 없었다. (물론 telnet 터미널 프로그램은 상당히 다양하다.)
일반적인 경우는 시리얼 터미널 소프트웨어가 없어도 불편이 없지만 네트웍, 텔레컴 장비를 다루거나 임베디드 환경에서 작업하는 사람들에게 있어서는 시리얼 터미널은 가장 기본적이고 필수불가결한 툴이다.
그런 의미에서 얼마전에 발표된 CoolTerm은 Mac OS X에 있어 가뭄의 단비(?)와 같은 소프트웨어이다.

프 로그램 설명에도 써 있는것처럼 터미널 에뮬레이션 기능은 빠진 간단한 시리얼 포트 터미널 소프트웨어로 시리얼포트로 데이터를 주고 받는걸 주 목적으로 하는 임베디드 환경에서 작업하는 사람들을 주 타켓으로 하고 있다. (사실 임베디드 환경에서 작업하는 사람들에게는 터미널 에뮬레이션 기능(vt100, xterm 등등)은 없어도 관계없다.) 그렇기 때문에 데이터를 텍스트 포맷 뿐 아니고 헥사값으로도 볼 수 있고 시리얼 포트가 여러개 있는 경우 동시에 복수개의 커넥션 연결, 헥사값으로 데이터 전송 등등 임베디드 작업에 유용한 여러가지 기능들을 가지고 있다.

RTS/CTS, DTR/DSR, DCD, RI 등의 핸드쉐이크 핀의 상태를 볼 수 있다.

Options에서 통신 환경을 설정할 수 있다.

Send String에서 텍스트로 뿐 아니고 헥사값을 보낼 수도 있다.


현재 (Version 1.0) Preferences에서는 Viewer의 폰트설정만 변경할 수 있다.
Posted by nautes

아이팟 터치/아이폰의 시리얼 포트를 사용할 수 있으면 다른 장비들과 연결해서 상당히 재미있는 일들을 많이 할 수 있게 된다.
하지만 시중에서 아이팟용 시리얼 케이블을 팔고 있지 않기 때문에 직접 만들어 보았다.
아이팟 도킹 커넥터의 pinout은 pinouts.ru 에서 확인할 수 있다.

먼저 아이팟 30핀 도킹 커넥터 male 타입은 Devicemart에서 구입할 수 있었다. 구입해야 하는 부품명은 ipod-30p-conn-wire 으로 개당 2500원이다.

커넥터를 구입하면 내용물은 다음과 같다.



커넥터는 30핀인데 위의 사진에서 보는것처럼 서로 엇갈리게 배치되어 자세히 보지 않으면 핀 위치를 찾기가 좀 힘들게 되어 있다.


핀 배치를 좀 보기 쉽게 풀어 그려 본 것이다. 다리가 긴 핀과 짧은 핀이 있어서 다리가 긴 핀은 바깥쪽에 있고 짧은 핀은 안쪽에 배치되어 있다. 그리고 각각의 핀은 조금씩 위치가 어긋나게 배치되어 있다.
이 핀들이 다 있으면 납땜질 하기 불편하기 때문에 필요없는 핀들은 다 뽑아버린다. 롱노우즈 플라이어로 잡아 땡기면 쉽게 빠져나온다. 단 한번 빠져나오면 다시 끼기 힘들기 때문에 뽑아내야 하는 핀의 위치를 확실하게 확인한 다음에 빼기 바란다.

시리얼 케이블에 필요한 핀들이다. 이 중 1,2,15,16,29,30은 모두 GND로 아이팟 내부에서 다 전기적으로 연결되어 있다. 그러므로 다 연결할 필요는 없다.


이 핀들만 남겨놓으면 된다. 15, 16도 땜질에 방해가 되기 쉬우므로 빼 버려도 관계 없다.

배선 연결은 위와 같다. 실제 시리얼 포트에 연결하는건 Tx, Rx, GND 3선이면 된다. 물론 아이팟에 연결하는 장치의 전력소모가 크지 않은 경우 3.3V에 연결해서 아이팟에서 전원을 공급받을수도 있다. (단 이 경우 아이팟 전력소모가 약간이나마 증가하는걸 염두에 둬야 한다.)
또한 Tx, Rx도 3.3V 레벨의 신호이기 때문에 RS-232에 연결하려면 MAX232, 233같은 레벨 컨버터가 필요하다. 저 2개의 저항은 칩 저항을 사용하면 커넥터 케이스 속에 집어넣을 수 있겠지만 현재 가지고 있는 칩 저항이 없기 때문에 이번에는 커넥터에서 Tx, Rx, Serial GND, GND, 3.3V 이렇게 5개의 선을 뽑아내었다.

Grey - GND
Red - Tx
Green - Rx
Orange - +3.3V
Black - Serial GND

단선을 방지하기 위해 열 수축 튜브로 고정시켜 주었다.

커넥터를 금속 케이스에 집어 넣는다.

집어넣은 모양은 다음과 같다.

또 하나의 금속판을 연결시킨다. 여기서 아래 그림과 같이 커넥터의 홈에 맞게 밀어 넣어줘야 한다.

제대로 집어 넣었으면 아래와 같이 양쪽의 걸쇄가 보인다.

플라스틱 케이스에도 위쪽과 아래쪽이 있다.

아래쪽 케이스에 조립된 커넥터를 집어넣는다.

집어넣은 모습은 다음과 같다.

커넥터를 분리할 때 사용하는 양쪽 버튼을 집어 넣는다. 이 때 버튼도 방향이 있으니까 주의해야 한다.

아래 사진처럼 버튼을 잘 보면 홈이 파여있는 쪽이 앞쪽이다.

버튼까지 다 집어넣은 모습이다.

이제 위쪽 케이스를 아래쪽 케이스에 맞춰서 끼워넣기만 하면 된다.

여기서는 프로토타입 보드에 꼽아 아뒤노와 연결하여 테스트하기 위해 반대쪽에도 헤더핀들을 연결시켜 놓았다.

Posted by nautes

구글은 다양한 서비스를 만드는것에 그치지 않고 일반인들이 자신의 서비스를 직접 이용할 수 있도록 거의 대부분의 경우 서비스에 대한 API를 제공해준다. 그 중 상당히 유용하게 사용할 수 있는것중에 하나가 Chart API이다.

이를 사용하면 동적으로 다양한 종류의 그래프를 매우 손 쉽게 그려서 웹 페이지에 보여줄 수 있게 된다.

'백문이 불여일run'이라고 직접 그래프를 만들어 보는것이 장황하게 설명하는것보다 빠를것 같다. 웹 브라우져의 주소창에 'http://chart.apis.google.com/chart?cht=p3&chd=t:60,40&chs=250x100&chl=Hello|World' 을 입력해보기 바란다.

위의 URL을 입력하고 엔터를 누르면 브라우져에 아래와 같은 그래프가 출력된다.


구글 챠트 API는 선 그래프, 막대 그래프, 파이챠트, 스캐터 그래프 등등 다양한 종류의 그래프를 그려줄 수 있으며 물론 각 그래프에 대해서 크기, 칼라, 라벨 등등 다양한 속성을 지정해 줄 수도 있다.

Chart API에서는 모든 데이터와 속성을 URL을 통해 전달해 준다.

URL의 포맷은 다음과 같다.

http://chart.apis.google.com/chart?<parameter 1>&<parameter 2>&...&<parameter n>

여러개의 파라미터는 순서는 상관없고 각 파라미터는 '&'로 연결해준다. 각 파라미터는 속성=값 쌍으로 되어 있다.

위의 예제에서 사용한 URL은 다음과 같이 구성되어 있다.

http://chart.apis.google.com/chart?       Chart API의 위치

cht=p3                                                            그래프 타입

&

chs=250x100                                                   그래프의 크기(픽셀)

&

chd=t:60,40                                                      그래프의 데이터

&

chl=Hello|World                                               그래프 라벨

또한 이 URL을 html문서 내의 <img> 태그에 임베딩해서 해당 웹 페이지가 브라우져에 보여질 때 그래프도 같이 렌더링해서 보여지게 할 수도 있다.

이 경우 <img src="<URL>" /> 의 "<URL>" 부분에 넣어주면 되는데 주의할 점은 '&' 대신 '&amp'를 사용해 줘야 하는것에 주의해야 한다.

구글 Chart API에서 사용할 수 있는 속성은 여러가지가 있는데 그래프를 그리는 경우 항상 다음의 3개 속성은 필수로 지정되어야 한다.

- 타입 (cht)

- 크기 (chs)

- 데이터 (chd)

나머지 속성들은 그래프 타입에 따라 필수이거나 또는 옵션으로 지정해 줄 수 있다.


위의 표를 보면 각 그래프 타입별로 지정할 수 있는 속성의 종류를 알 수 있다. 단 QR chart인 경우 필수 3개 이외에 추가로 지정할 수 있는 속성이 없기 때문에 위의 도표에는 생략되어 있다. 이전 포스트에 보면 구글 챠트 API를 이용해서 QR Code를 만드는 예제를 볼 수 있다.

그래프의 크기는 'chs=<폭>x<높이>'로 지정해 준다. 단위는 픽셀이다. 지도를 제외한 나머지 그래프 타입의 경우 가능한 최대 면적은 30만 픽셀이다. 폭이나 높이의 최대값은 1000 픽셀이므로 그릴 수 있는 최대 크기의 그래프로는 1000x300, 300x1000, 600x500, 500x600, 800x375, 375x800 등등이 있다. (모두 폭에 높이를 곱하면 30만이다.)

단, 지도 타입은 최대 크기가 폭 440 픽셀에 높이 220 픽셀이다.


* 다음번 글에서는 데이터 속성의 포맷과 인코딩 방식에 대해 설명하겠다.

Posted by nautes

Mac OS X는 OS에서 기본적으로 정해진 시간에 컴퓨터를 키거나 끄기 (또는 잠자기 및 깨어나기) 기능을 가지고 있다.

독에서 System Preferences를 선택한다.

System Preferences 화면에서 Energy Saver를 선택한다.

Energy Saver 화면의 오른쪽 아래부분에 있는 Schedule... 을 선택한다.


Schedule... 화면으로 들어오면 아래와 같이 시작 또는 깨어나기, 잠자기 또는 끄기 시간을 지정할 수 있다.


아래쪽에서는 잠자기, 재시동, 끄기중에 선택할 수 있다.

또한 시간 뿐 아니고 매일, 주중에만, 주말에만, 아니면 특정 요일에만 꺼지거나 재시동 하도록 선택해 줄 수도 있다.

이나마도 귀찮은 경우 shutdown 이라는 유틸리티를 이용하면 30, 60, 90 분 후에 컴퓨터가 꺼지게 할 수도 있다.


Shutdown은 대쉬보드 위젯으로 설치한 다음 대쉬보드에서 위젯 버튼을 눌러주면 30분 후 꺼짐->60분 후 꺼짐->90분 후 꺼짐->기능 사용 안함->... 순으로 바뀌게 된다.


Posted by nautes

이전 포스트에서 QR 코드에 대해 설명했었는데 그에 대해 좀 더 이야기 해 보려고 한다.
아직까지 일본에서 정도로 광범위하게 사용되는건 아니어도 다른 나라에서도 QR코드가 조금씩 사용이 늘어나고 있는거 같다.

먼저 QR코드를 생성하는 방법은 여러가지가 있는데 그 중 쉽게 할 수 있는 방법중 하나는 구글 chart를 사용하는 것이다.
구글 챠트에서 QR 코드를 만들때 필요한 파라미터는 다음과 같다.

cht=qr
chs=<size>
chl=<text to encode>
choe=<output encoding>


<size>는 '가로픽셀x세로픽셀'로 지정해준다.
<text to encode>는 QR코드에 집어넣고 싶은 내용으로 UTF-8으로 URL-encoded 되어 있어야만 한다. 즉 'Hello World'를 표시하고 싶으면 'Hello%20World'를 넣어줘야 한다.
<output encoding>은 출력을 어떻게 인코딩 할 것인가를 결정한다. 이 항목이 없는 경우 디폴트 값은 'UTF-8'이다. 현재 여기에 들어갈 수 있는 값은 UTF-8, SHIFT_JIS, ISO-8859-1 밖에 없다.

파라미터는 URL 'http://chart.apis.google.com/chart?' 뒤에 넣어주고 각 파라미터 사이에는 '&'로 연결해준다.

브라우져의 주소창에 넣는 경우는 다음과 같이 입력하면 된다.

http://chart.apis.google.com/chart?cht=qr&chs=100x100&chl=Hello%20World&choe=UTF-8


웹페이지 안에 html로 집어넣는 경우는 <img> 태그를 이용해서 다음과 같이 입력해주면 된다.

<img src="http://chart.apis.google.com/chart?cht=qr&chs=100x100&chl=Hello%20World&choe=UTF-8" alt="QR code sample image" />


둘 중 어느것을 이용해도 아래와 같은 QR코드가 생성된다. 참고로 아래 QR코드도 바로 위의 <img> 태그를 이 페이지의 html에 집어넣어 구글에서 다이내믹하게 만들어 낸 결과이다.



일본의 카메라가 달린 휴대폰은 거의 다 QR코드를 읽을 수 있지만 아직 국내 휴대폰중에 QR코드를 읽을 수 있는 제품은 없는걸로 알고 있다.
단 삼성의 해외판매용 심비안 모델인 경우는 설치할 수 있는 무료 QR코드 리더가 있다.

아이폰의 경우 여러가지 무료 QR코드 리더 소프트웨어가 나와 있는데 아이폰 카메라가 마크로 촬영은 포커스가 잘 맞지 않아 인식률이 별로 좋지 않다. 몇가지 테스트 해 본 결과 NeoReader가 다른 소프트웨어에 비해 월등하게 인식률이 높았다.

(단 다른 소프트웨어도 Griffin Clarifi 같은 제품을 이용해 마크로 렌즈를 사용하면 인식률을 크게 높일 수 있다.)

--
맥 사용자라면 Micono의 QRCodingen, DecodingQR?을 이용하면 직접 QR코드를 만들고 읽을 수 있다. 단 메뉴가 일본어인것이 단점이지만 맥용 소프트웨어 답게 메뉴의 위치가 일정하기 때문에 약간의 한자실력과 통밥을 이용하면 사용하는데 큰 문제는 없다.





Posted by nautes

일명 Poorman's version으로 구현해 본 아뒤노를 위한 마이크로SD(Transflash) 인터페이스이다.

마이크로SD 소켓을 구입하기도 힘들고 구한다 해도 SMD 타입의 좁은 피치를 가지고 있기 때문에 PCB를 만들지 않으면 신호선을 연결하기가 힘들다.
그래서 찾아낸 방법이 마이크로SD를 구입할 때 같이 껴 주는 MicroSD to SD adapter를 소켓 대용으로 이용하는 것이다.
SD의 경우 9개의 핀이 있지만 SPI모드로 동작하는 경우는 7개 핀만 사용한다. 각 핀의 배치는 다음과 같다. 이 7개의 동박면에 직접 신호선을 땜질하는 것이다.

여기서 주의할 점은 SD는 3.3V 디바이스라는 점이다. Vdd뿐 아니고 다른 핀들도 3.3V레벨의 신호를
사용해야 한다.

MicroSD(Transflash)의 핀 배치는 다음과 같다.


Arduino호환보드중에 전원으로 3.3V를 사용하는 경우는 각 핀을 Arduino SPI에 직접 연결시켜 주면 된다. 하지만 대부분의 Arduino 보드들은 5V를 사용하기 때문에 신호 레벨을 바꿔 줘야만 한다.

위 의 회로를 사용해서 Arduino와 연결해주면 된다. 단 위의 회로에서 왼쪽에 uSD to SD adapter는 라이브러리를 따로 그리기 귀찮아서 그냥 MicroSD 소켓을 사용해 버려서 핀 번호가 좀 다르다. 위의 사진을 보고 같은 이름의 핀을 연결시켜 주면 된다. ^^;;;

회로 부분만 만능기판에 만들어 본 것이다.

최종적으로 MicroSD adapter의 핀에 납땜질을 해서 신호선을 뽑아내어 만능기판 회로에 연결하고 아답터를 접착제나 실리콘을 사용하여 기판의 아래쪽에 붙여주면 된다.

이 렇게 구성하여 arduino에 연결하면 MicroSD를 FAT16으로 포맷하여 파일시스템으로 사용할 수 있게 된다. MicroSD가격이 많이 저렴해 졌기 때문에 아주 적은 비용으로 대용량의 파일시스템을 추가할 수 있기 때문에 장시간의 데이터 로그가 필요한 경우에 매우 유용하게 사용할 수 있다.

Posted by nautes

우리가 현재 인터넷에서 일상적으로 사용하고 있는 이메일은 인류 역사상 매우 오랜 기간동안 사용되어 왔던 우편제도를 거의 그대로 모방하여 만들어 졌다.


우리가 편지를 보낼 때를 생각해 보면 편지지에 내용을 적고 편지봉투에 집어넣은 다음 봉투에 발신자 주소와 수신자 주소를 적는다. 그리고 우표를 붙인 다음 우체통에 집어넣으면 보내는 사람의 할 일은 더 이상 없어진다. 나머지 역할인 편지를 수신자에게까지 전달해 주는건 우체국에서 하는 일이고 언제 우체통에서 편지를 수거해 가는가, 어떤 방법으로 어느 경로를 거쳐 우리동네 우체국에서 수신자가 사는 동네의 우체국까지 편지를 옮길 것인가, 수신자네 동네 우체국에서 언제 어떻게 수신자 집으로 편지를 가져다 줄 것인가는 전적으로 우체국이 결정하는 것이지 편지를 보낸 사람이 결정할 수 있는게 아니다. 또한 수신자 집에 편지가 배달되었다고 해도 언제 그 사람이 편지를 읽는지, 아니 편지를 읽었는지 조차 알 수 있는 방법이 없다.
위에 과정이 이메일에도 거의 동일하게 적용된다.



이메일을 작성하는 경우 본문에 원하는 내용을 적고 메일 헤더에 발신자 이메일 주소, 수신자 이메일 주소를 넣어주고 이메일을 발송한다. 여기까지가 이메일을 보내는 사람이 해야 할 일이다. 나머지 역할인 이메일을 수신자 이메일 계정으로 전달해 주는건 인터넷(정확하게 말하자면 인터넷에 있는 메일서버들)이 알아서 하게 된다. 어느 메일서버를 거쳐 언제 이메일을 전달할 것인가는 전적으로 메일서버들이 결정하는거지 이메일을 보낸 사람이 결정할 수 있는게 아니다. 또한 편지와 마찮가지로 이메일이 수신자 메일함에 전달되었다 해도 그걸 읽었는지 여부나 언제 읽었는지는 알 수 있는 방법이 없다.



물론 편지에도 예전부터 본문이나 PS에 '읽었으면 읽었다고 알려달라'고 부탁을 할 수도 있지만 그건 편지를 받은 사람이 그 부탁에 응해주는 경우에만 의미가 있는 것이다. 이메일 표준에도 이와 유사하게 RFC3798등에서 메일 헤더에 메일을 읽었다는 receipt를 보내달라고 요구하는 필드가 추가되기도 했다. 하지만 이 역시 수신자가 receipt를 보낼건지 확인을 해 줘야만 receipt가 보내지는 문제도 있고 모든 이메일 클라이언트가 이 확장필드를 인식하지 못하기 때문에 널리 쓰여지지는 못했다.

그렇다면 '어 내가 쓰는 이메일에는 수신확인 기능이 있는데 이건 뭐냐?'는 사람들이 있을 것이다. 쉽게 이야기하자면 그건 특정 메일 서비스 내에서만 동작하는 일종의 편법을 이용한 방법이다. 하지만 그런 방법들은 표준화가 된 것도 아니고 편법을 이용하는 것이기 때문에 송신자, 수신자 모두 같은 이메일 서비스(예를 들어 둘 다 한메일 또는 네이버메일 등등)를 이용하는 경우에만 "가능할 수도 있는" 방법일 뿐이다. 동작원리는 이메일은 위에서 말했듯이 일단 보내고 나면 송신자는 그 이메일에 대한 통제력(내용수정, 삭제 등등)을 완전히 잊어버리게 된다. 그래서 이메일을 보낼 때 메일서비스가 이메일의 본문 내용 안에 사람들에게는 보이지 않게 조그마한 이미지 주소를 임의로 넣어 보낸다. 그 이미지 파일 주소는 해당 메일 서비스 서버의 주소이다. 그렇기 때문에 수신자가 메일을 읽을 때 눈에는 보이지 않지만 숨어있는 이미지를 화면에 표시하기 위해 메일서비스 서버를 억세스 하게 된다. 그 파일이 억세스 되면 메일을 읽은 것으로 간주하고 그 시간을 메일을 읽은 시간이라고 알려주게 된다.



위쪽 그림이 정상적 이메일인 경우이다. 송신자의 메일 서버가 수신자의 메일서버로 메일을 전달하면 수신자가 메일을 읽을 때 그냥 수신자의 메일서버에서 메일을 읽을 뿐 송신자 서버에 아무 통보가 없다. 그에 비해 아래쪽의 편법을 사용하면 메일 내에 <img> 태그가 들어있고 그 태그가 송신자 메일서버에 있는 이미지 파일을 가르키고 있기 때문에 메일을 보여줄 때 그 파일을 요구하게 된다. 송신자 메일서버는 그 파일이 요구된 시간을 기록하고 그걸 수신자가 메일을 읽은 시간이라고 알려주게 된다.

그런데 최근에는 대부분의 이메일 서비스나 이메일 클라이언트들은 메일 본문에 들어있는 이미지 파일들을 기본적으로 보이지 않게 되어있는 경우가 많다. 이렇게 되어 있으면 메일을 읽더라도 그 안에 안보이게 숨어있는 이미지를 억세스 하지 않기 때문에 심지어 송신자/수신자가 같은 메일 서비스를 사용하더라도 수신자가 웹으로 억세스하지 않고 POP3/IMAP을 통해 이메일 클라이언트를 사용하면 메일을 읽었더라도 수신확인에는 읽지 않았다고 나오게 된다.

결론적으로 이메일 수신확인 서비스라는건 정확하지도 않은 편법일 뿐임으로 너무 믿지 말라는 것이다. 수신확인을 했는데 혹시 언제 읽었다고 나오면 그건 일단 읽었다고 생각해도 큰 무리는 없지만 아직 읽지 않았다고 나오는건 진짜 안 읽은건지 편법이 먹히지 않아 읽었는데 안 읽은걸로 나오는건지 확인할 방법은 전혀 없다는 것이다.
요점은 국내 웹메일들의 수신확인 서비스라는걸 너무 믿지 말라는 것이다.
Posted by nautes

아래의 사진에 있는 WIZNet의 WIZ810MJ을 사용해서 Arduino를 이더넷에 연결시켜 보았다.

이 모듈에 사용된 WIZNet의 이더넷 컨트롤러 Arduino Ethernet libaray에서 기본 지원하기 때문에 매우 손쉽게 사용할 수 있다. 한국에서는 제조사의 온라인샵인 http://www.ewiznet.co.kr/ 에서 22,866원(그냥 23000원으로 하지 끝에가 866원은 뭔지 모르겠다.)에 구입할 수 있다.

다만 단점은 3.3V전원을 사용한다는 것과 커넥터가 일반적으로 사용하는 2.54mm 피치가 아니고 2mm를 사용하기 때문에 PCB를 뜨지 않으면 일반적으로 구할 수 있는 만능기판에 들어가지가 않는다는 것이다.

이 모듈은 MCU data interface와 SPI인터페이스를 지원해 준다.

SPI인터페이스를 사용하는 경우는 저 핀들중에 아주 일부만 사용하면 되기 때문에 매우 편리하다.

아래의 그림이 핀 배치도인데 저 중에 빨간색으로 표시된 신호만 사용하면 된다. 특히 그 중에 SPI_EN은 SPI 모드를 사용할것이기 때문에 Vcc에 연결해 버리면 되고 리셋만 제외하면 나머지 필요한 신호를 모두 한쪽의 커넥터(JP1)에서 얻을 수 있다. 리셋은 전원이 인가될 때 자동리셋이 되기 때문에 없어도 되긴 하지만 혹시 몰라 조그마한 푸쉬버튼을 연결해 모듈에 접착시켜 버렸다.

그 덕에 집에 가지고 있던 2mm 피치의 14핀 커넥터를 사용해 JP1의 앞쪽만 연결해서 별도의 추가 비용 없이 손쉽게 연결할 수 있었다.

 Arduino WIZ810MJ
 D13 SCLK (7)
 D12 MISO (12)
 D11 MOSI (9)
 D10 SCS (10)

매우 손쉽게 인터넷을 사용할 수 있는데 단점은 DHCP를 기본적으로 지원하지 않기 때문에 IP address를 수동으로 지정해 줘야 하는 것이다.

일단 arduino의 samples중에 ethernet에 속해있는 아무거나 선택해서 다운로드 하고 컴퓨터에서 ping을 날려 보았다.


일단 ip address만 할당되고 나면 arduino에 어떤 프로그램이 실행되는가 관계 없이 모듈이 ping에 대한 응답을 해 준다.


예제중에 WebServer를 실행하고 컴퓨터의 웹 브라우져에서 접속한 화면이다. 이 예제는 arduino의 아날로그 입력을 브라우져에서 볼 수 있게 해 준다.

모듈은 기본적으로 3.3V에서 동작하게 되어 있지만 5V I/O tolerant 하다. 그래서 이번에는 전원도 5V를 넣고 실험을 해 봤는데 별 문제는 없었지만 모듈이 조금 많이 뜨거워 진 것 같아서 3.3V 레귤레이터를 사용해 줘야겠다.

Posted by nautes

이전 포스트에서 arduino에 PD2437을 연결해서 동작시켜 본 걸 확장한 것이다.

윗줄에 4개, 아랫줄에 4개, 총 8개의 PD2437을 사용하여 16x2 디스플레이를 설계하였다. 기본적인 부분은 이전 회로와 차이가 없지만 신호의 팬아웃(fan-out)을 고려하여 74LS245 버퍼를 사용해 주었고 8개의 PD2437중 하나를 선택하기 위해 3-to-8 decoder인 74LS138을 사용하였다.

물론 저렴한 LCD방식의 디스플레이 모듈도 있지만 그에 비해 글자 크기도 크고 백라이트 없이 자체발광을 하기 때문에 어두운 곳에서도 훨씬 더 확실하게 눈에 띈다. 약 2~3미터 정도 거리에서도 표시 된 내용을 쉽게 확인할 수 있다.

Arduino의 PD2~PD12까지 연결을 해 주면 된다. 시리얼 포트를 통해 표시될 문자를 전송하면 되도록 소프트웨어를 작성하였다. 입력받은 문자를 바로 출력하게 되어 있고 '\'를 escape sequence로 사용한다.

 Input
 Description
 \\
\
 \C
 Clear entire display
 \F
 Flash entire display
 \f
 Flash next one character
 \B#
 Brightness control
  0 - 25%
  1 - 50%
  2 - 75%
  3 - 100%
 \G##
 Change cursor location
  ## <= 00~1F
  (00~0F: upper line, 10~1F: lower line)


Posted by nautes

최근에는 대부분의 주변기기가 USB 인터페이스를 이용해서 다양한 종류의 USB 장치가 컴퓨터에 연결되는 경우가 많다. 그런데 항상 아답터를 꼽아놓으면 사용하지 않는 경우에도 전력을 소모하게 되고 그렇다고 매번 사용할 때 마다 플러그를 뽑는것도 귀찮다.

그래서 컴퓨터의 USB포트에서 나오는 전원을 일종의 스위치로 이용해서 컴퓨터가 켜지면 자동으로 USB 장치의 전원을 켜 주고 컴퓨터가 꺼지면 USB 장치의 전원도 같이 꺼지는 회로를 생각해 보았다.

바로 이전의 포스트에서 만든 110/220V 전원 스위칭 모듈(이것 역시 저렴한 비용으로 간단하게 만들 수 있다.)을 사용하면 별도의 추가 회로 없이 USB 케이블에 커넥터만 만들어 주는 것만으로 쉽게 해결된다. 물론 아무 소프트웨어도 필요없고 단순히 USB 포트의 5V 전원만 사용하기 때문에 (너무나 당연한것이지만) OS의 종류나 컴퓨터 기종에 아무 상관없이 모든 경우에 사용할 수 있다. :)


110/220V 전원 스위칭 모듈을 만들었다면 케이블 제작에 필요한 부품은 다음과 같다.

- USB type A male connector

- USB type A female connector

- 2 pin connector

USB 커넥터의 핀 순서를 먼저 정확하게 확인해준다.

Male connector의 핀 순서이다.

Female connector의 핀 순서이다.

케이블은 D+, D- 신호는 그냥 pass-through하고 Vcc와 GND만 전원 스위치 모듈의 입력으로 넣어주면 된다.



이렇게 만든 케이블의 오른쪽 커넥터는 컴퓨터에, 왼쪽 커넥터에 USB장비 케이블을 연결하고 2 pin 커넥터를 전원 스위치 모듈의 입력에 연결해 주면 된다. 그리고 해당 USB장비의 아답터를 전원 스위치 모듈에 꼽아주면 된다.

위의 그림처럼 연결되어 있는 것을 아래와 같이 연결해주면 된다.

그리고 어짜피 컴퓨터 전원을 사용하는 장비는 이 커넥터가 필요없고 외부아답터를 사용하는 장비는 USB포트에서 많은 전류를 끌어쓰지 않기 때문에 전원 스위치 모듈의 opto-coupler가 약간의 전류를 먹는 정도는 문제가 되지 않는다.

* 컴퓨터의 BIOS 셋팅에서 컴퓨터 전원이 꺼져도 USB포트로 전류를 흐르게 할 수 있는 옵션이 있는데 이 옵션이 선택되어 있으면 이 회로는 동작을 하지 않는다. 즉, 컴퓨터가 꺼져도 USB장비의 전원은 꺼지지 않게 된다.

Posted by nautes

이전버튼 1 2 이전버튼