이전 포스트에서 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

댓글을 달아 주세요

  1. 2009.05.19 13:00

    마지막줄이 의미심장하군요. 네이버의 수신확인 서비스가 마지막 말씀과 강력한 연관이 어쩌면 있을 수도 있겠다는 생각이 듭니다. :D

  2. 2009.05.19 13:15 신고

    그렇죠... imap으로 읽는데... 게다가 image는 항상 block 시켜놓는데... 왜 메일 안읽고 있냐고 자꾸 뭐라 그러는 학생들이 있어서 피곤합니다 ㅜㅠ

  3. 2009.05.21 07:24 신고

    이런 이메일 확인 기술들은 스펨메일에 메일주소 유효성 확인을 위해 더 많이 쓰이죠 ^^

아래의 사진에 있는 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

댓글을 달아 주세요

  1. 2009.05.13 17:05 신고

    좋은 정보 이군요~ !!

  2. 2009.05.13 20:50

    I/O TTL(5V) tolerant는 IO핀들이 5V를 견딜 수 있다는 것으로 모듈에는 3.3V를 넣어 주셔야 되요! :)
    아두이노 이더넷 라이브러리가 메모리를 얼마나 사용하는지 혹시 알 수 있을까요?

    • 2009.05.14 05:33 신고

      예..그건 알고 있긴 한데 당장 테스트하려고 할 때 regulator를 구할데가 없어서 그냥 해 봤죠. ^^;

      Arduino에서 라이브러리만 따로 컴파일하는건 방법을 모르겠고 chatserver(그냥 echo해주는 제일 간단한 예제) 돌리면 4442 byte 나오는걸로 봐서 대략 순수하게 라이브러리만이면 한 4K정도 될거 같습니다.

이전 포스트에서 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

댓글을 달아 주세요

Arduino에서 110/220V 전원을 제어하려면 고전압을 스위칭 해 줄 수 있는 회로가 필요하다. Relay나 SSR(Solid State Relay)를 사용하는 방법도 있지만 아래 회로에서는 Traic을 사용하였다.

고압 전원부를 arduino쪽과 전기적으로 분리하기 위해 opto-coupler인 MOC3021을 사용한다. 전원을 스위칭하기 위해서는 bi-directional triode thyristor인 BT136을 사용한다. 다만 부품샵에는 BT136이 없어 같은 rating의 Motorola MAC218을 사용하였다. 그리고 발열이 있기 때문에 충분한 크기의 방열판을 붙여줘야 한다.


BT136의 특성은 다음과 같다.

----------------

MOC3021 -  $0.89

MAC218 -  $0.79

Heat sink -  $0.69

R (1/4W) -  $0.03 each

C -  $0.08

----------------

물론 기판과 AC 콘센트, AC 리셉터클이 있어야 하지만 그걸 제외한 위의 부품은 약 $2.6정도면 구할 수 있다.

이 경우 최대 240 VAC @ 500 W 까지의 로드를 연결할 수 있다. 더 큰 로드를 구동해야 하는 경우라면 BT136대신 Fairchild의 FKPF12N80 같은 칩을 사용해주면 된다.

아래가 완성된 사진이다.

오른쪽의 커넥터에 arduino의 GND와 디지털 출력 신호를 연결해주면 된다.

기판의 아래쪽이다. 고전압이 흐르는 회로이기 때문에 단선이 발생하지 않고 충분한 전류가 흐를 수 있도록 주의해야 한다.

Arduino의 digital 포트를 pinMode()로 이 회로에 연결한 포트를 출력모드로 설정해 주고 digitalWrite()로 제어해주면 된다.

* 물론 arduino 뿐 아니고 아무 마이크로 프로세서의 digital i/o에 연결해도 사용할 수도 있다.

Posted by nautes

댓글을 달아 주세요

calllog2ical(or iphonelogd)는 아이폰의 통화내역을 iCal로 옮겨주는 역할을 하는 루비 스크립트이다.

아이폰은 내부적으로 sqlite3를 DB로 사용하고 있고 통화목록은 CallHistory라는 이름의 DB로 관리된다.

이 DB는 /private/var/root/Library/CallHistory/call_history.db 에 위치하고 있고 구조는 다음과 같다.


Jail-broken 된 아이폰에 terminal 같은 콘솔 프로그램이 깔려 있으면 아이폰 콘솔에서 다음 명령으로 db를 직접 억세스 할 수도 있다.

% sqlite3 /private/var/mobile/Library/CallHistory/call_history.db

SQLite version 3.5.9

Enter ".help" for instructions

sqlite> SELECT * FROM call;

아이튠에서 sync를 하면 아이폰의 데이터가 백업되면서 이 정보 역시 맥에 저장되게 된다. calllog2ical.rb 스크립트는 이 백업된 내용에서 통화 목록을 읽어 그 내용을 iCal에 개별 이벤트로 집어넣어 준다.


먼저 http://code.google.com/p/iphonelogd/ 에서 프로그램을 다운받는다. 맥에서만 동작하고 현재 버전은 calllog2ical.0.10.pkg  이다.

다운받은 패키지를 실행하면 인스톨러가 실행되어 프로그램이 설치되게 된다. 설치되는 위치는 /usr/local/bin 이다.

설치가 완료되면 먼저 아이폰을 맥에 연결하고 아이튠에서 아이폰을 sync하도록 한다.

싱크가 끝나면 터미널 창을 열고 쉘 프롬프트에서 다음의 명령어를 실행해주면 된다.

% calllog2ical.rb

그러면 백업된 파일에서 통화목록 db를 읽어 각 통화를 위의 화면과 같이 iCal에 이벤트로 넣어준다. 전화번호가 Address Book에 등록되어 있으면 자동으로 이름으로 변환해서 보여주고, 등록되어 있지 않은 번호인 경우 unidentified 로 표시되지만 그래도 url필드에 전화번호는 기록된다.

* 이 스크립트는 디폴트로 'Call Log' 캘린더에 통화목록을 넣어준다. 스크립트를 실행하기 전에 iCal에 'Call Log' 캘린더가 만들어 져 있어야만 한다. 만일 없으면 실행 중 에러를 발생하고 멈춘다.

* 다른 이름의 캘린더를 사용하려면 calllog2ical.rb 뒤에 캘린더 이름을 넣어주면 된다.

Posted by nautes

댓글을 달아 주세요

Arduino에 Magtek의 magnetic strip reader를 연결하여 보았다.


현재 가지고 있는 리더기는 TTL 인터페이스를 가지고 있는 single track reader이다. 5핀 커넥터를 가지고 있고 Vcc, GND, Card present, Clock(Strobe), Data 신호를 제공해 준다.


신호 타이밍은 아래와 같다.


Arduino의 D2, D3, D5를 각각 리더기의 Data, Clock, Card present에 연결해 주면 된다.

코드는 다음과 같다.


카드를 리더기에 긁어주면 아래와 같이 카드의 데이터가 시리얼포트로 출력된다.

문제점은 위의 코드로는 디코딩 루틴이 카드를 정방향인 경우에만 동작하고 반대 방향으로 긁어주는 경우에는 데이터를 정상적으로 디코딩 해 주지 못한다. 역방향인 경우도 정상적으로 디코딩이 가능하도록 코드를 수정 할 예정이다.

Posted by nautes

댓글을 달아 주세요

동네의 부품샵을 구경하다 우연히 구하게 된 부품이다. 저렴한 가격($1.99)때문에 메뉴얼 여부에 관계 없이 일단 구입하여 버렸다. 물론 '구글신'을 믿고 있었기 때문이지만...


부품 명칭은 PD2437로 OSRAM에서 나온 4-character 5x7 dot matrix alphanumeric programmable display with built-in CMOS control functions 이다. DIL 패키지 안에 5x7 매트릭스가 4개 들어있고 디스플레이 컨트롤러를 내장하고 있다.

이 부품을 사용하기 위해 구글의 도움으로 유저메뉴얼과 어플리케이션 노트를 찾아내었다.


일반적인 메모리같이 8-bit bidirectional data bus를 사용해서 마이크로컨트롤러와 데이터를 교환하고 ASCII 코드를 입력받아 그에 해당하는 문자를 표시하게 되어 있었다.

Arduino에 연결하려고 하는데 8-bit data bus를 모두 digital i/o에 연결해 버리면 arduino에 다른 주변기기를 붙일 수 없을거 같아 74LS164(8-Bit Parallel-Out Serial-In Shift Registers)를 같이 사용하기로 하였다.

이를 토대로 구성한 회로는 다음과 같다.


Arduino의 D2-D9까지를 사용하였다.

실제 기판에 만들기 전에 먼저 브레드보드에서 프로토타입으로 확인을 해 보았다.


큰 문제 없이 원하는 글자를 표시해 주었다. 테스트에 사용한 코드는 다음과 같다.


PD2437은 매우 쉽게 여러개를 cascading이 가능하기 때문에 현재 총 10개의 PD2437을 연결하여 20x2 LED display를 만들어 볼까 생각중이다. LCD에 비해 직접 발광을 하기 때문에 시야각 문제도 없고 시중에서 구할 수 있는 20x2 LCD보다 크기도 크기 때문에 야간에도 글자를 정확하게 확인할 수 있기 때문에 signboard로 적합할 거 같다.

Posted by nautes

댓글을 달아 주세요

  1. 2011.02.10 00:40 신고

    좋은 디스플레이소개 감사합니다.. 옛날 스타택이 생각나게 하네요.. ^^

이전버튼 1 2 3 4 5 6 7 ··· 10 이전버튼