손바닥컴퓨터들2012.02.01 23:14
RGB LED는 오색 찬란 무지개 색상을 자유롭게 표현할 수 있는 재료입니다. 하지만 여러개를 사용하기위해서는 회로나 프로그래밍이 복잡해져서 직접 제작하기엔 부담이 큽니다.  이를 위해 지금 소개해 드릴 20개단위로 LED 체인으로 구성된 제품을 사용하면 손쉽게 독립제어되는 다수의 RGB LED 사용이 가능해집니다.  관련제품 사용법을 알려드리겠습니다.

손쉽게 사용가능하도록 라이브러리와 아두이노 예제 소스가 제공됩니다.  한줄 만 수정하면 그대로 이용 가능합니다.
관련 동영상을 보신 후, 아래의 상세과정을 참고하시기 바랍니다. ^^.



- 이하 사용법 안내 -

라이브러리 설치 방법
1.압축해제후,
2. WS2801.cpp 등의 파일이 들어있는 폴더를 아두이노 설치폴더의 Libraries 폴더에 복사후,
3. 폴더명을 WS2801으로 변경하시기 바랍니다.
4. 아두이노 스케치를 재 시작합니다.

 

예제소스 및 수정
소스코드 폴더를 보시면 Example 폴더에 예제파일이 있습니다.
소스코드 상단주석과 설명을 보시면 설명이 되어있습니다.
해당 소스코드에서 통신용(data선, clock선)으로 사용되는 핀 2개의 번호를 확인하셔서 해당핀에 케이블을 연결하시면됩니다.
본 제품은 모듈(pixel)의 수가 20개이므로, 기본 25개로 되어있는 부분을 20으로 수정하시면 됩니다.

 int dataPin = 2;   // 데이타 전송용 데이타 핀번호 ( 다른핀으로 변경 가능)
int clockPin = 3; // 데이타 전송시 클럭용 핀번호 ( 다른핀으로 변경 가능)

WS2801 strip = WS2801(20, dataPin, clockPin);   //LED모듈 개수 25를 20으로 변경한 예

즉,  위 코드 한줄만 바꿔주시면 끝입니다.   20개 모듈체인 2세트를 연결시엔 40으로 변경해야겠죠


케이블 단자 안내 (시작 모듈 기준)

 BLUE  Clock
 GREEN  Data
 RED  VCC ( 5V전원입력선)
 WHITE (2라인)
 GND (아두이노 및 외부전원 GND와 연결)
    (주의. 색상은 시작모듈 기준입니다, 두번째 모듈부터는 시작모듈 기준 배치와 동일하며 케이블 색상은 바뀔수 있으니 잘라서 사용시 주의하시기 바랍니다.아래 그림 참조)

 

  VCC -->   --> VCC 
  GND -->  RGB --> GND 
  DATA-->  모듈 --> DATA 
  CLK -->   --> CLK  


시작모듈/끝모듈 구분법
어디가 시작이고 어디가 끝인지를 구분하시기 위해 모듈 밑면에 있는 화살표를 참고하시면 됩니다.
시작모듈에 케이블을 연결하시면 됩니다.


관련제품 링크

RGB LED 독립 색상 제어 20개 연결형
정전압 아답터 5V 2000mA SMPS
점퍼 와이어 M/F 10개형
아두이노 UNO
브레드보드 점퍼 케이블 ( Solderless Breadboard Jumper Wire 75 pcs )
브레드보드 호환형 DC 잭 아답터 (DC Barrel Jack Adapter - Breadboard Compatible)






아두이노와  GND,  CLOCK, DATA  핀  3개만 연결해주시면 됩니다.


아두이노와 Clock, Data 신호가 연결되는 시작모듈 을 찾기 위해서 모듈 뒷면을 보시면 화살표시가 있습니다.


Male/Female 점퍼 케이블을 이용하시면 케이블 작업이 손쉬워 집니다.


20개 묶음을 2세트(총 40개) 연결한 장면입니다. (단, 전원은 힘 좋은 녀석 사용이 필수겠죠 ^^.)


Tip. 기본 20개 체인형 제품이지만, 2세트를 묶어 40개를 연결하거나  1개나 N개 단위로 잘라서 사용도 가능한 .... 기특한 녀석입니다.

저작자 표시 비영리 변경 금지
신고
Posted by 로보밥 로보밥

댓글을 달아 주세요

  1. 제갈식

    잘 보았습니다.

    그런데, DMX 프로토콜 같은 번지주소 방식 LED제어는 아닌가봐요??

    여하튼 감사...

    http://cafe.naver.com/iphonediy

    2013.05.31 12:04 신고 [ ADDR : EDIT/ DEL : REPLY ]
  2. 질문드려도 되나요?

    2번째 사진에 아두이노 옆에 있는 투명한 기판(?)은 먼지 궁금하네요

    2014.02.09 14:58 신고 [ ADDR : EDIT/ DEL : REPLY ]
  3. 개별제어

    저기 많은 led중 3번째나 5번째 등 특정한 led 한개의 불만 켜고 싶을 때는
    어떤 코드 입력해야 하나요?

    2014.11.28 09:55 신고 [ ADDR : EDIT/ DEL : REPLY ]

다양한 MIDI 작곡 프로그램들에서 MIDI 신호 출력을 지원합니다.  PC의 경우 SW적인 음원으로 연주하는것도 가능합니다만, MIDI 신호를 PC 외부에 있는 전용 사운드모듈(악기,음원모듈)로 보내서 연주시킬 수 도 있습니다.   MIDI 악기 쉴드로 이 신호를 받아서 연주가 되도록 해봤습니다.

PC용 SW는  MIDI 파일을 단순 연주해주는 Sweet MIDI Player 프로그램을 사용했습니다.
물론 기타 전문가용 MIDI 작곡 프로그램도 마찬가지로 연결해서 사용이 가능합니다.  출력되는 MIDI 신호는 모두 동일합니다.

아래의 동영상을 참고하시기 바랍니다.

미션임파서블 등 MIDI 신호로 연주 테스트 동영상





저작자 표시 비영리 변경 금지
신고
Posted by 로보밥 로보밥

댓글을 달아 주세요

  1. 승진

    지난번에 구입하고 시간이 안나 오늘에야 납땜했습니다.

    질문이 있는데 위에 사용한 것처럼 사운드 모듈로 사용하려면 어떤 스케치 프로그램을 아두이노에 넣어야하나요?
    아트로봇 설명을 보긴 했는데, 좀 헷갈리네요.
    자세한 설명이나 관련 주소 좀 알려주세요.

    그리고 [69595] 아두이노 MIDI 콘트롤 쉴드(MIDI Shield) 에는 스위치와 볼륨이 보이던데, 스위치 3개와 볼륨의 역할이 뭔가요. 설명으론 딱 감이 안잡힙니다.

    2012.02.27 01:47 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 아트로봇 QnA에 남겨주신 질문에 답변을 드렸으니 참고하시기 바랍니다. 참고로 두곳에 질문하시면,,, 제가 두번 답변드려야합니다;;;

      조금 질문이 다른것 같아 추가 안내드립니다.
      어떤 소스가 정해진것은 없습니다. 일단 제가 공개한 악기쉴드응용한 자작악기 만들기 소스를 이용하시면 도움이 되실겁니다. 단, MIDI악기쉴드와 MIDI쉴드를 함께 사용하실경우 좀더 MIDI이해가 필요하므로 직접 공부하셔서 소스코딩 작업을 하셔야합니다.

      2012.02.28 00:13 신고 [ ADDR : EDIT/ DEL ]
  2. 비밀댓글입니다

    2012.02.28 12:13 [ ADDR : EDIT/ DEL : REPLY ]
    • 메일 드렸습니다.
      요약하면, 튜토리얼에 공개된 소스에 이미 사운드모듈 기능이 포함되었습니다.

      2012.02.28 17:07 신고 [ ADDR : EDIT/ DEL ]
  3. 승진

    앗 너무 감사합니다. ^^
    역시 모르면 앞에 떡을 줘도 못 찾아 먹는가봅니다.
    이렇게 꼭 집어 가르쳐 주시니 아 이거구나 바로 오네요.
    감사합니다.

    2012.02.28 17:11 신고 [ ADDR : EDIT/ DEL : REPLY ]
  4. 비밀댓글입니다

    2012.04.12 17:00 [ ADDR : EDIT/ DEL : REPLY ]
    • http://robobob.co.kr/81 에 공개해 드린 소스에 MIDI악기쉴드와 콘트롤쉴드 함께 사용할경우도 반영되어있습니다.
      시리얼포트가 두개열려있고 한곳에서 다른곳으로 패스해주는 부분을 참고하시면됩니다.

      2012.04.17 01:08 신고 [ ADDR : EDIT/ DEL ]
  5. 비밀댓글입니다

    2013.09.16 00:34 [ ADDR : EDIT/ DEL : REPLY ]
  6. 비밀댓글입니다

    2014.01.11 05:51 [ ADDR : EDIT/ DEL : REPLY ]

보통 마스터 키보드는 음원내장이 되지 않아 자체적으로 연주가 불가하고, 외부 사운드 모듈(SW 또는 HW)이 필요합니다.  고가의 사운드카드의 경우엔 모르겠지만  보통의 메인보드 내장형 사운드 카드로  SW 사운드 음원을 대체하여 사용한경우,  키보드로 연주시 엄청난 딜레이가 있네요...  건반을 누르고 소리가 날때까지 수백mSec 지연은 있는것 같습니다. (제경우 연주용으로 사용이 불가한 수준이라고 생각됩니다.) 

하지만 MIDI 악기 쉴드에 키보드 MIDI출력 신호를 곧바로 입력시켜 연주를 해본 결과 딜레이를 느낄 수 없었습니다.   고품질의 음원이 필수적이지 않다면 MIDI 악기 쉴드를  외장 악기음원(Sound Module)로 활용하는것도 좋을것 같습니다.

아래의 관련 동영상을 참고하시기 바랍니다. 









저작자 표시 비영리 변경 금지
신고
Posted by 로보밥 로보밥

댓글을 달아 주세요

  1. midi

    그럼 음원 usb메모리 저장한거 마스터 키보드에 꼿아서 사용가능한가여?

    2012.01.26 12:39 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 안녕하세요, MIDI 악기 쉴드는 자체내장된 악기 소리만 재생이 가능하며, USB메모리등에 기록된 음원데이타를 읽어서 이용할 수는 없습니다. 참고로 마스터 키보드등에서 출력되는 MIDI 신호는 음원데이타가 아니고 음원 데이타를 제어하는 메시지입니다.

      2012.01.26 21:44 신고 [ ADDR : EDIT/ DEL ]
  2. midi

    글엄 한가지 더 질문이여? 음원 모듈 사울드모듈 그거는 미디 프로그램 소나 아니면 큐베이스 에서 가능 한건가여?
    저는 저희 행님 께서 구해주셧거든여 큐베이스 2엿나 3이엿나 그럴꺼라는대 어디 까페 에서 컴 잘 하시는 분께서 한글 판으로 따로 만드셧다네여 만든게 아니고 번역 한글로 나오게 끔 해놓으셧다고 행님 컴에 저장 해놧다네여
    그거 써도 별 문제는 없을까여? 저는 MR그게 제가 사고픈게 한곡에 3만원 블럿어여 그리고 좀 떨어지는 품질 아님 별 중요 한게 아닌 음악 인경우에는 반갑 15000원 인대 그것도 싸게 파는 사람 만 그가격 이고 다른사람 은 좀더 비싸네여 가상악기 필요해여 드럼 그리고 라틴 타악기 팀발레스 엿나 아님 탐탐 그런거 하고 까혼 봉고 이런것들이여 콩가는 구지 없어도 되겟네여 봉고 가 없으면 또 모를까여 그리고 현악기 첼로 바이올린 통기타 베이스기타 일렉기타
    기타등틍 키보드 에잇는 음원 그리고 기타 음향 비소리 바람소리 이런 식이여 그리고 리듬악기 소리 등등 여러 가지여 저는 피아노 잘모름니다 그래서 그래여 그냥 코로그 꺼 작은거 트럼페드 만 잇는 컨트롤러 그거하고 같은 크기 의 건반 형 미디 키보드 사려고 생각 해봣는대 첨봣을때 10만원 인가 젤비싸게 본게 12만원이엿어여 그래서 엄두도 못넷엇는대 엠오디오 꺼 보니까 열라 싸네여 좋고여 제가 아는 멕시코 친구 한태 물어봣더니 두모댈 다 좋다고 하네여 멕시코는 한국 보다 성능 좋지만 한국 보다 더 비싸다네여 스타킹 에서 맥시코 팀 나온거 보셧나여? 아빠에 청춘 오동동 타령 라밤바 거기 서 키보드 햇던 친구에여 엠알 만들어 보려고여 그친구는 이미 고국 으로 아에 가버렷지만 다른 사람 올꺼에여 그전에 공연 할때 잇던 몃몃친구 도 잇거든여 열락 메신저 열락 되는 친구여 그것도 키보드 연주 가 담당 파트 엿던 친구여 아니 그 현지 멕시코 에서도 그게 주 담당 파트 고여 말을 잘못해서 좀 글씨 그나라 말로 쓰는것도 흼들고 구글 번역 해도 잘 이해 않간다고 답변오고 그래서 그냥 여기 다 미디 마스터 키보드 에 대한 문의 글 올리는거에여 처음 할때는 마스터 키보드 몃건반 짜리 가 좋을까여? 그리고 일반 키보드 에서 마스터 키보드 용으로 사용 가능 한것은 뭐가 인가여 그리고 가격 대 는 어느정도 인가여? 무진장 비싼것은 않되여 35만원 도 좀 돈 많이 모와야겟네여 저는 엠오디오 꺼 마스터키보드 61건반 그거 최저가 가격이 19500원 이라고 되잇는대 딸랑 그정도 에여 지금 당장 이여 그러나 모와야겟저 열라게 모와대야겟어여 35만원 까지는 가능 할듣싶네여 그러나 지금 다른악기 사려고 페루 친구 한태 문의 해놯기때문에 흼들지도모르겟네여 35만원이여 문의 한게 한친구 말고 또다른친구 한태도 문의 해놯는대 합게 총 가격 최소 에서 최고 까지 50만원~60만원 까지 임니다 그래서 저 올해 적자 나겟네여 일 해도 지갑에 들어오는게 없어여 다 저희 어머니께서 가저가셧어여 통장 과 카드여 ㅠㅠㅠㅠㅠㅠ (저는종달새 임니닼ㅋㅋ)

    2012.01.26 22:20 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 와우~ 질문에 정성을 많이 쏟아 주셔서 감사드립니다.
      MIDI악기쉴드는 GM악기 128개정도와 드럼셋 50개정도의 악기음을 지원합니다만, MIDI 전문가분들이 사용할 정도의 음원일 지는 모르겠습니다. 제경우 MIDI나 관련 소프트웨어 및 작곡에 대해서는 잘 모릅니다. 때문에 관련 전문가분들이 많이 모여있는 커뮤니티에 질문해보시는것이 좋을것 같습니다. 제가 알고 있는 네이버 MIDI카페는 아래와 같습니다.
      참고하시기 바랍니다.
      http://cafe.naver.com/midimania
      좋은하루되세요~

      2012.01.27 21:46 신고 [ ADDR : EDIT/ DEL ]
  3. 질문

    원하는 형태의 미디건반을 만들고싶습니다. 도와주세요...
    카톡연락 부탁드릴게요
    jihoon6894

    2012.09.02 03:47 신고 [ ADDR : EDIT/ DEL : REPLY ]
  4. 질문

    원하는 형태의 미디건반을 만들고싶습니다. 도와주세요...
    카톡연락 부탁드릴게요
    jihoon6894

    2012.09.02 03:47 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 안녕하세요
      문의사항은 가능한 구체적으로 질문주셔야 답변이 가능합니다.
      적절한 설명이 필요하신경우 (이미 메인페이지에 안내해드린) sixgen@gmail.com 으로 보내주시면 답변드리도록하겠습니다.
      카톡 상담은 불가한점 양해부탁드립니다.

      2012.09.14 15:23 신고 [ ADDR : EDIT/ DEL ]
  5. 비밀댓글입니다

    2013.04.01 23:15 [ ADDR : EDIT/ DEL : REPLY ]
    • 죄송합니다만 제작대행을 해드릴 여유가없습니다.
      특히 내부 프로그램을 변경할수있으셔야 활용폭이 넓어지고
      아두이노를 조금만 공부하셔도 직접 제작이 가능하므로 자작을 고려해보시기 바랍니다. 참고로 시중에선 판매되는 USB to MIDI 변환케이블을 이용하시면 PC와 연결가능합니다.(관련글 및 동영상 참고)

      2013.04.02 10:42 신고 [ ADDR : EDIT/ DEL ]
  6. John

    안녕하세요, 악기실드로 외장형 MIDI 음원을 제작하려고 합니다.
    제품 스펙들을 보니, 미디 커넥터 실드와 미디 악기 실드 두 개를 조합하면
    구현할 수 있지 않을까 싶었는데, 예제 동영상들을 보니 모두 아두이노와 결합되어 있어서,
    저처럼 단순한 용도일 때 아두이노가 꼭 필요한 것인지 문의 드립니다.
    즉, 커넥터 실드로 부터 RX 신호를 받아와서 악기실드의 입력에 바로 넣어주는 형태로 제작이 가능할는지요?

    예전엔 저가형 사운드카드도 FM synth가 내장되어 있어서 지연 없는 MIDI 음원으로 사용 가능했었는데, 요즘 나오는 사운드카드는 FM 음원을 탑재하고 있지 않아 S/W 방식으로 밖에 사용할 수 없어서 엄청난 지연시간 때문에 주인장님 말씀처럼 실시간 연주에는 사용할 수 없는 지경에 이르러, 저가형 음원 모듈을 찾아 헤매다가 악기실드라는 멋진 제품을 발견하여 문의를 드립니다.

    2013.04.05 07:57 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 해당 MIDI쉴드는 약간의 초기화작업이 필요하며 이를 아두이노가 처리하게됩니다.(소스코드참조)
      물론, MIDI음원칩의 데이타시트와 쉴드의 회로도를 보시고 약간의 개조를 하면 가능할것도 같습니다. 가격이 부담되신다면 아두이노호환보드 사용이 더 적절한 선택일것 같습니다.

      2013.04.11 11:50 신고 [ ADDR : EDIT/ DEL ]
  7. 비밀댓글입니다

    2013.04.06 01:14 [ ADDR : EDIT/ DEL : REPLY ]
    • 건반수는 49개던 1000개던 상관없습니다.
      소스코드 그대로 사용하셔도 될겁니다. ^^.

      2013.04.11 11:41 신고 [ ADDR : EDIT/ DEL ]
    • 아, 소스코드를 못찾으셨군요...
      MIDI관련글이 여럿입니다. 아래의 링크에서 소스코드를 보실수있습니다.
      http://robobob.co.kr/81

      2013.04.11 18:14 신고 [ ADDR : EDIT/ DEL ]
  8. 일전에 악기실드를 standalone 으로 사용할 수 있는지 문의 드렸던 사람입니다.
    나중에 더 광범위한 응용을 염두에 두고 일단 아두이노 UNO까지 함께 구입하긴 했지만,
    직접 제작해본 결과 아두이노 없이 standalone으로도 가능했습니다.

    http://youtu.be/_9rbprGT2X0
    MIDI 브레이크아웃 보드에서 RX를 따서 악기실드의 MIDI-In에 연결해준 다음,
    PC에서 MIDI 명령을 출력하면 바로 작동하였습니다.

    딜레이 없이 실시간 연주가 가능하다는 점에서 매우 만족스럽습니다.
    단 한가지 아쉬운 점이 있다면, 악기실드에 볼륨저항도 달아서 나오면 좋겠습니다.
    이어폰을 연결해서 들으면 소리가 너무 커서 반드시 볼륨 달린 스피커를 연결해야 하는 불편함이 있네요. ^^

    감사합니다.;

    2013.04.22 13:21 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 와우~ 잘 만드셨네요..
      연주 실력도 너무 멋지십니다. ^^.

      2013.04.26 17:26 신고 [ ADDR : EDIT/ DEL ]
    • 아, 그리고 MIDI 신호(Note ON) 주실때 velocity 값을 줄여주시면 악기 소리도 작게 들립니다. 실제 악기와 같이 강약 조절이 가능하죠 ^^.

      2013.04.26 17:31 신고 [ ADDR : EDIT/ DEL ]
  9. 안태환

    아... 이거 혹시 소스좀 알수 있을까요..... 미디악기쉴드에 미디신호를 어떻게 넣는지 모르겠네요... 앞전에 봤던 소스를 봐도 이해가 안되서요 ㅜㅜ

    2013.09.03 21:29 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 안녕하세요

      공개된 소스코드 그대로 외부에서 MIDI케이블 연결하여 신호 입력하면 연주지원됩니다. 소스는 직접 이해하셔서 활용하셔야합니다 ^^.

      2013.09.04 13:37 신고 [ ADDR : EDIT/ DEL ]


ATMega 328 칩이 사용되는 아두이노(Arduino)보드에  MIDI 악기 쉴드(MP3/MIDI 지원 VLSI칩 내장)를 결합한 뒤 반나절만에 만든 전자악기입니다. 허접한 모양새와 달리 소리는 제법 쓸만합니다.( 화음까지 지원)

사운드 카테고리에 소개된 MIDI 악기 쉴드 활용 연관 동영상도 참고하시기 바랍니다.







관련 제품 링크
만드는 방법소개
위 동영상에서 보여드렸던 건반악기 제작법과 소스코드를 아래의 링크에서 참고 가능하십니다!

저작자 표시 비영리 변경 금지
신고
Posted by 로보밥 로보밥

댓글을 달아 주세요

  1. Mr.kim

    훌륭한 작품입니다! 얼릉 건반악기 예제를 보고싶네요... 아두이노 우노가 기다리고있습니다 ㅎㅎ

    2012.02.03 09:41 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 고맙습니다!
      DIY 건반악기 예제소스를 아래의 링크에서 확인 가능하십니다. 참고하시기 바랍니다!
      http://robobob.co.kr/81

      2012.02.05 00:49 신고 [ ADDR : EDIT/ DEL ]
  2. 박승원

    위와같은 스위치 방식이 아니라 피에조를 사용한 입력방식도 동일한지요? 피에조는 선이 두가닥있어서...
    그리고 미디포트연결하여 미디신호 전송도 가능하게 하기위한 방법이 궁금합니다.
    그리고 우노에 USB를 이용하여 미디신호를 컴퓨터에 전송이 가능할까요?

    2013.02.28 08:58 신고 [ ADDR : EDIT/ DEL : REPLY ]
  3. 양창원

    관리자의 승인을 기다리고 있는 댓글입니다

    2013.05.16 16:25 [ ADDR : EDIT/ DEL : REPLY ]

손바닥컴퓨터들2011.12.23 01:40
공식 아두이노의 최신 표준보드 UNO의 R3버전이 나왔습니다.(2011년 12월)

보통 UNO 하면 마이크로콘트롤러 칩 타입에따라 SMD타입과 DIP타입 두 가지가 있었지만, 이제 형제가 더 많아졌네요, 아직 R3버전의 SMD타입은 공개되지 않은것 같으므로 현재 아래와 같은 3종류의 UNO가 있습니다.
UNO R2 DIP형
UNO R2 SMD형
UNO R3 DIP형


[]R2와 R3의 차이점 요약
일단, R2나 R3나 주 마이크로콘트롤러는 ATMega328 칩을 사용하므로
프로그래밍 가능용량이나 제어핀의 개수와 사용방법이 모두 동일합니다.
다만, USB 인터페이스칩이 변경되었고 헤더핀의 개수가 3개 추가되었습니다.
그렇다고 기본성능이 업그레이드 된것도 아니어서 기존 R2와 동일하게 사용하시면 됩니다.


[]변경된것
1.USB 인터페이스칩이 atmega8u2에서 atmega16u2로 변경됨:
단, (주콘트롤러칩은 R2와 동일하므로) 이것이 아두이노 프로그래밍 가능용량의 증가를 의미하지는 않습니다.
단, USB제어칩을 개조하여 사용할 경우 유용할수있음.

2. 노출 헤더 구멍이 3+1개 추가됨:
AREF핀옆에 I2C 헤더소켓 2구가 추가되었음.
단, 여분의 i2c핀이 새로 추가된것이 아니고 기존의 i2c핀(Analog 4번 5번)에 중복 연결된것입니다.
(차후 Mega시리즈 같은 다른 아두이노 보드와의 쉴드 호환성을 위한 고려로 여겨짐)
더불어 IOREF 노출 헤더소켓 1구가 Reset핀 옆에 추가되었습니다.
(이는 쉴드에서 보드의 작동전원을 파악하는 용도로 사용될 것으로 여겨짐)
물론 이핀도 power pin의 노출 헤더출구 1개가 추가된 것일뿐 없던 제어핀이 새로추가된것은 아닙니다.
나머지 1 구는 미사용 예비용이라네요;;

[]변경되지 않은것
1. 모든 UNO(R2 R3)는 프로세서 속도 및 기억 용량이 동일합니다.
2. 제어가능한 핀의 개수도 동일합니다.
3. 보드 크기와 모양도 그대로 유지
4. 쉴드호환성 동일( R1 R2용 쉴드를 R3에서도 그대로 호환사용가능)
5. 드라이버도 동일
6. 업로딩속도도 동일 (스케치에서 보드 종류를 UNO로 선택하면됩니다.)

참고원문링크: http://www.ladyada.net/library/arduino/unofaq.html

제품 링크:  아두이노 UNO R3 (아트로봇)

이하 영문 제품자료

Description: This is the new Arduino Uno R3. In addition to all the features of the previous board, the Uno now uses an ATmega16U2 instead of the 8U2 found on the Uno (or the FTDI found on previous generations). This allows for faster transfer rates and more memory. No drivers needed for Linux or Mac (inf file for Windows is needed and included in the Arduino IDE), and the ability to have the Uno show up as a keyboard, mouse, joystick, etc.

The Uno R3 also adds SDA and SCL pins next to the AREF. In addition, there are two new pins placed near the RESET pin. One is the IOREF that allow the shields to adapt to the voltage provided from the board. The other is a not connected and is reserved for future purposes. The Uno R3 works with all existing shields but can adapt to new shields which use these additional pins.

Arduino is an open-source physical computing platform based on a simple i/o board and a development environment that implements the Processing/Wiring language. Arduino can be used to develop stand-alone interactive objects or can be connected to software on your computer (e.g. Flash, Processing, MaxMSP). The open-source IDE can be downloaded for free (currently for Mac OS X, Windows, and Linux).

Features:

  • ATmega328 microcontroller
  • Input voltage - 7-12V
  • 14 Digital I/O Pins (6 PWM outputs)
  • 6 Analog Inputs
  • 32k Flash Memory
  • 16Mhz Clock Speed

Documents:




저작자 표시 비영리 변경 금지
신고
Posted by 로보밥 로보밥

댓글을 달아 주세요

손바닥컴퓨터들2011.10.02 02:34
오늘은 울트라 하이테크놀로지의 결합체인 디지탈 카메라를 만들어봤습니다.  "정말 피눈물나는 노력을 통해 완성한 나만의 아두이노 호환 똑딱이입니다." 라고 말씀드리면 거짓말이고요,  사실 제가 한 일이라곤 촬영된 이미지를 JPEG 포멧으로 시리얼통신을 통해 전송해주는 카메라와 이값을 수신하여 microSD메모리에 저장해주는 역활을 해주는 JPEG Trigger 아두이노 호환보드를 단순히 조립해주고 버튼한개 달랑 단것이 전부입니다.  아, 그리고 휴대용 카메라의 역활을 다할 수 있도록 3.7V Lipo충전지도 장착해줬습니다.  성능은 최신 카메라에 비길수 없겠지만 그래도 좋은건 센서연동 및 자유로운 제어가 가능한 아두이노 호환형 디지탈 카메라 시스템이라는 점입니다. 

시리얼통신 JPEG 카메라가 무엇인가?
시중에서 많이 구경할 수 있는 카메라들과 달리 촬영된 이미지를 JPEG 이미지 포멧으로 압축하여 시리얼 통신(TTL 레벨)으로 전송해주는 특수 카메라입니다.  즉, 시리얼 통신이 가능한 모든 기기에서 압축된 디지탈 이미지 데이타를 수신할 수 있습니다.(일반적인 video 신호 출력도 지원)  PC의 경우엔 FTDI USB시리얼 변환보드를 경유하여 카메라를 제어하고 이미지를 수신해 볼 수 있습니다. ( 관련글 - 시리얼통신 카메라 PC연결하기 링크)
그리고 무엇보다도 아두이노같은 8bit 저속 MCU 보드들에서도 시리얼통신으로 촬영된 이미지를 수신할 수 있게 되어 유용한 카메라입니다. 물론 압축된 이미지(JPG) 데이타라도 아두이노에서 실시간 처리를하는 것은 무리가 있습니다.  하지만 데이타를 SD메모리에 저장하고 참고하는 형태의 응용이라면 충분히 제 역활을 할수 있게되는데요,  이 역활을 하는 전용 보드(JPEG Trigger)가 있어 함께 사용하면 손쉽게 디지탈 카메라 기능 구현이 가능해집니다.

JPEG Trigger 보드
본 제품은 JPEG Camera와 짝을 이뤄 사용하도록 최적화된 아두이노 호환 보드이지만 몇가지 특수 기능을 갖쳐서 프로그램을 바꿔서 다른 용도로 사용하는것도 좋을 것 같습니다.   JPEG 이미지 저장용 microSD 메모리 인터페이스와   1V~ 5V 사이의 전원을 입력해주면 내장된 승압회로를 통해 5V전원으로 작동되도록 설계되어 건전지(1.5V or 3V)나 Lipo(3.7V) 충전지 하나만으로 작동이 가능합니다.  야호!  더불어 총 6개의 범용 IO핀( 아두이노 D2,D3,D4,A0,A1,A2) 홀이 제공되어 트리거(Trigger, 셔터눌러주기) 용도 및 기타 IO기능으로 사용이 가능합니다. 


오픈 소스 하드웨어
공개된 소스코드와 라이브러리를 설치해주면(이미 프로그램되어 있음) 원하는 방식으로 카메라 구현이 가능하므로 응용범위가 무궁무진해 집니다.




사진. 초간단 디지탈 카메라 구현 연결이미지
카메라 + 보드 + Lipo충전지 + 버튼 을 연결해주기만 하면 프로그래밍 없이도 바로 작동합니다.




동영상. 결합상태 확인 및 사진촬영 테스트

동영상 내용 소개
보드, 카메라, 충전지, 버튼이 연결된게 보입니다. 스위치를 켜주면 상태점검 후 상태 LED가 켜집니다.  이게 안켜지거나 깜빡거리면 카메라나 메모리에 문제가 있는것입니다.   초기상태의 경우  D2,D3,D4 버튼중의 하나를 GND에 연결하는 순간 카메라 셔터가 작동(촬영)되고 JPEG으로 압축된 이미지가 시리얼 통신으로 보드에 전달되고 이 정보가 SD메모리에 저장됩니다. 마침 네모로봇 군이 옆에 있어 버튼을 눌러 촬영을 해봤습니다.  이미지가 저장되는 중에 상태 LED가 깜빡거리는게 보입니다.  저장이 완료되면 상태 LED가 다시 켜집니다.  저장된 이미지는 PC에 연결하여 (변환과정 없이) 볼 수 있습니다.  (단, 초기 프로그램된 상태에선 확장자가 txt로 저장이되는 문제가 있어서 이를 PC에서 jpg 확장자로 변환해야 볼 수 있습니다. 신규 소스로 업로드하시면 이문제는 해결됩니다.)


사진. 촬영된 이미지 예



카메라와 보드 연결
JPEG카메라 <-> JPEG트리거보드
VCC -- 5V
GND -- GND
TXD -- D5(Rx)   주의. 카메라측 송신(Tx)단자가 트리거보드 측 수신(Rx)에 (교차)연결됩니다.
RXD -- D6(Tx)   주의. 카메라측 수신(Rx)단자와 트리거보드 측 송신(Tx)에 (교차)연결됩니다.
TV(미연결)  일반적인 video 신호출력선입니다. 본 예제에서는 사용안함.

전원
배터리 단자에 3.7V 정도의 Lipo충전지를 연결하여 사용하거나,
배터리 단자 옆에있는  GND와 1~5V 핀에   1~5V 전원을 연결해줍니다.
(입력된 전원은 5V승압회로를 통해 5V로 승압되어 공급되게됩니다.)
(FTDI USB시리얼 보드 연결시엔 usb 전원이 상시 연결됩니다.)

보드테스트
(카메라 및 메모리)아무것도 장착하지 않은상태에서
스위치 off상태에서 Lipo단자에 Lipo배터리 연결후, 스위치 on하고 몇초후 LED가 깜빡거려야함.


스위치 기능
배터리 입력전원을 승압회로에 연결여부를 선택해준다.(회로도를 꼭 참고하세요)
배터리 사용시 보드 ON/OFF 기능으로 사용됩니다.
(FTDI USB시리얼 보드 연결시엔 usb 전원이 상시 연결됩니다.)

사용법
카메라와 FAT 포멧된 메모리를 장착후 전원을 켜주면 LED가 ON된다.
메모리가 없거나 포멧상태 문제등으로 초기화가 안되면 LED는 깜빡인다.
카메라가 연결되지않은경우 LED가 안켜진다.
(단, 상태LED 모드는 펌웨어에 따라 다를수있으므로 해당 소스 상단 주석을 확인바랍니다.)

입출력핀
카메라 촬영신호를 받거나 I/O용으로 아래의 6개핀을 사용할 수 있습니다.
아두이노 디지탈핀 D2,D3,D4와
아두이노 아날로그핀 A0,A1,A2를 입출력
보드에는 손쉽게 전원활용을 할수있도록 각 입출력핀마다 GND,5V 홀(구멍)이 함께 있어서
총 18개의 구멍이 있습니다. 이때 GND, 5V 구멍이 안쪽에 있고 바깥쪽이 D2,D3,D4,A0,A1,A2 핀이므로 주의바랍니다.



카메라 촬영법
초기 제공되는 펌웨어(소스참조)의 경우
D2,D3,D4 핀을 GND에 연결하거나 (내부 Pullup되므로 별도 저항없어도 됩니다)
A0,A1,A2 핀을 5V에 연결하는 순간 카메라 촬영이 되고,이미지가 메모리에 저장됩니다.
이때 LED가 깜빡거리고, 저장이 끝날때까지는 재촬영이 안됩니다.


저장된 JPEG이미지
초기 제공되는 펌웨어의 경우,
저장된 이미지는 001.TXT 와 같이 확장자가 TXT로 저장되는 문제가있으며 이를 PC에서 JPG로 변경하셔야 이미지 확인이 가능합니다. 하지만 새로 제공되는 소스코드로 재프로그래밍 하시면 JPG확장자로 저장되므로 꼭 업그레이드 하시기 바랍니다.


주의사항:
보드가 켜있는 상태에서 메모리카드를 뽑지 마세요! 메모리 상태 및 보드 펌웨어 상태가 손상될 수 있습니다.
이경우 보드 펌웨어를 재프로그래밍하고 메모리를 재 포맷해야할 수 있습니다.


재 프로그래밍
  준비물
  FTDI USB시리얼 변환기 5V형
  mini USB 케이블
  소스코드:  제품페이지에 링크된 아두이노 소스코드라이브러리를 이용하시면됩니다.
 
관련제품 링크
 JPEG Camera TTL 시리얼통신 지원
 JPEG Trigger 보드

관련글 링크
  시리얼통신 카메라 PC연결하기
저작자 표시 비영리 변경 금지
신고
Posted by 로보밥 로보밥

댓글을 달아 주세요

  1. 탱크

    안녕하세요..
    제가 이번에 프로젝트로 아두이노와 플루투스 통신을 하여 스마트폰으로 캡쳐된 사진을 넘겨 보려고 하는데요
    도저히 감이 안잡혀서 그러는데 도움좀 요청할 수 있을 까요?

    2013.05.25 00:15 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 혹시 하셨으면 저걸로 블루투스 쓸수있는지 여부만이라도 알수있을까요

      2015.03.23 16:38 신고 [ ADDR : EDIT/ DEL ]
  2. 데니스

    PC용 USB 웹캠을 사용하려면 어떻게 해야할까요?

    2013.07.28 16:10 신고 [ ADDR : EDIT/ DEL : REPLY ]
  3. 푸우

    궁굼합니다.

    2014.08.18 11:42 신고 [ ADDR : EDIT/ DEL : REPLY ]
  4. 푸우

    연락처좀 알수 없을까요? 유선으로 통화좀 하고 싶습니다.
    저의 전화번호는 010-5429-4711 입니다. 꼭 부탁드립니다.
    관리자님

    2014.08.18 11:43 신고 [ ADDR : EDIT/ DEL : REPLY ]
  5. 혹시 이걸 블루투스 형식으로 바꿔서 사용 가능할까요??

    2015.03.15 23:14 신고 [ ADDR : EDIT/ DEL : REPLY ]
  6. 디지털핀 버튼외에 2개의 디지털핀으로 블루투스모듈 (HC-06)에 사용가능할까요????

    2015.03.19 18:27 신고 [ ADDR : EDIT/ DEL : REPLY ]
  7. 디지털핀 버튼외에 2개의 디지털핀으로 블루투스모듈 (HC-06)에 사용가능할까요????

    2015.03.19 18:27 신고 [ ADDR : EDIT/ DEL : REPLY ]

손바닥컴퓨터들2011.09.04 23:55

이번엔 기상측정기구와 이더넷 쉴드가 장착된 아두이노(Arduino)로 기상관측 자료를 트위터(Twitter)에 자동으로 올려주는 기특한 녀석을 소개시켜 드리겠습니다. 제법 시스템이라 불릴 만한 구성입니다.  바람의 방향과 속도 및 강수량을 측정할 수 있는 기상관측 기구로 부터 측정된 값을 모니터링하고 이를 곧바로 인터넷을 통해 트위터(twitter)에 올리는 것입니다.  기상 데이타 측정용으로 사용된 가상 관측기기에 대해선 관련글 링크를 참고하시기 바랍니다.

본 글을 이해하기위해 필요한 사전지식:  기본적인 아두이노 스케치 개발환경 사용법, 라이브러리 설치법, 이더넷쉴드 사용경험, 트위터의 기본적인 이해, 기상관측 기구 센싱방법 등


트위터?
트위터(Twitter)가 뭔지는 저보다 여러분이 더 잘 알고 계실것 같습니다.  제경우 트위터 사용법도 잘 모릅니다만 순서가 뒤바껴서 트위터 포스팅해주는 로봇을 먼저 만들게 되었습니다;;;   이글을 이해하시려면 일단 트위터에 가입하셔서 트위(Tweet) 하나를 올려보시면 됩니다.

아두이노 + 이더넷 쉴드
썰렁한 아두이노(Arduino) 보드에 이더넷 쉴드를 얹으면 인터넷을 통해 전세계와 의사소통이 가능합니다. 더불어 천재적이면서 친절하기까지 하신 분들이 아두이노로 트위터에 메시지를 보내는 예제와 라이브러리를 공개해 주셨으므로 저와 여러분들은 손쉽게 엄청난?;; 시스템 구현을 할 수 있는 상황입니다.  이더넷 쉴드 사용 경험이 없으신 분들은 우선 공개된 정보와 아두이노 스케치IDE에 포한된 기본 예제를 참고하시기 바랍니다.


아두이노 + 이더넷 쉴드의 한계
이더넷 쉴드를 장착하면 아두이노 보드로 정보서비스를 제공해주는 서버 역활을 할 수 있습니다.  외부 접속이 가능한 IP주소를 사용한다면 전세계의 인터넷 접속가능 기기를 통해 정보를 제공받을 수 있습니다.  하지만 동시 접속수 제한이나 퍼포먼스 문제로 원할한 서비스 제공에는 한계가 있습니다. 이때문에 아두이노를 데이타 센싱이 용이한 현장에 설치 후 취합한 데이타를 웹서비스를 담당하는 PC급 서버로 전달하여 제대로된 웹서비스 환경에 응용하는 것이 더 안정적인 방법일 수 있습니다.

이때 손쉽게 사용가능한 서비스가 HTTP Client입니다. 즉, 아두이노는 웹클라이언트로써 웹서버에 필요할 때만 접속하여 데이타를 송/수신 하는 방식입니다.    이더넷 라이브러리와 함께 제공되는 기본예제(WebClient)를 조금만 수정하면 활용이 가능합니다.  IP주소로 접속이 가능한 웹서버가 있는경우 추천할만한 방법입니다.  다만 문제는 기본 이더넷 쉴드 라이브러리를 이용한 Web Client 로는 domain name ( http://robobob.co.kr 같은) 을 통한 서버 접속이 안되고  123.123.123.123  같은 숫자형식의 ip를 이용한 접속만 가능하다는 점입니다.  예전에는 ip주로를 통한 접속 주소를 지원하는 웹호스팅 서비스가 있었지만 요즘엔 이를 지원하지 않는곳이 대부분인것 같습니다. 때문에 특정 웹호스팅 서비스나 단독 호스팅서비스를 사용하지 않으면 Web Client 사용한 접속이 불가한 상황입니다.  (일반적인 URL 주소를 통한 아두이노의 HTTP Client 접속 방법을 아시는 분은 안내 부탁드립니다.)

트위터 활용
HTTP Client 활용에 문제가 있으나 오히려 더 효과적일 수 있는 데이타 공유 방법이 있으니 바로 트위터입니다. 짧은 단문을 포스팅하면 수많은 팔로워에게 전달되는 효과적인 데이타 공유시스템을 활용하는 것입니다. 게다가 요즘 대세인 스마트폰에서도 손쉽게 접근이 가능한 최신병기입니다. 그런데 방법이 어렵냐고요???  제가 해보니 생각보다 매우 간단했습니다.   트위터 엡 개발을 위해 API니 뭐니 습득하고 복잡한 절차가 필요한지 알았는데요, 그게 아니고 그냥 사용만 하면 되네요...


트위터 포스팅 방법
방법은 요 사이트에 잘 요약되어있습니다. http://arduino-tweet.appspot.com/
별 설명이 필요없습니다만, 정리하자면 아래와 같습니다.
1. 트위터 앱(O Auth)에 접속하여 승인을 해주면 복잡한 문자열로 된 토큰 정보가 생성됩니다. 이 값을 복사하여 잘 보관합니다.
2. 관련 라이브러리들을 설치해줍니다. 두군데 정도 접속하여 파일을 받아서 아두이노 library 폴더에 적절한 이름으로 복사합니다.
3. 예제소스를 실행해봅니다.
   위 라이브러리를 제대로 설치하면 스케치 IDE  Examples 리스트에 Twitter가 생깁니다.
   File menu > Examples > Twitter > SimplePost 예제를 선택해줍니다.

이더넷 쉴드 사용시 수정해주는  ip주소와 네트웍정보 몇개만 수정해주시고 추가로  "YOUR-TOKEN-HERE" 부분을  위에서 발급받은 토큰값으로 대체해 주면 준비 끝~ 입니다.
이젠 잘 전송되는지 확인을 위해 시리얼 모니터링 창을 열고 속도(9600)를 맞쳐줍니다.

SimplePost 예제 소스 내용보기

#if defined(ARDUINO) && ARDUINO > 18   // Arduino 0019 or later
#include <SPI.h>
#endif
#include <Ethernet.h>
#include <EthernetDNS.h>
#include <Twitter.h>

// Ethernet Shield Settings
// 쉴드 밑면에 있는 mac 정보를 적어줍니다. 쉴드가 하나인경우 안바꿔도 무방
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; 


// substitute an address on your own network here
byte ip[] = { 192, 168, 2, 250 };   //공유기에서 사용되지않는 IP값을 지정

// Your Token to Tweet (get it from http://arduino-tweet.appspot.com/)
Twitter twitter("YOUR-TOKEN-HERE");   // 발급받은 토큰값을 이곳에 붙여넣으세요

// Message to post
char msg[] = "Hello, World! I'm Arduino!";   // 한글 전송도 가능합니다!

void setup()
{
  delay(1000);
  Ethernet.begin(mac, ip);
  Serial.begin(9600);
 
  Serial.println("connecting ...");
//부팅시 1회 포스팅 시도합니다.
  if (twitter.post(msg)) {
    // Specify &Serial to output received response to Serial.
    // If no output is required, you can just omit the argument, e.g.
    // int status = twitter.wait();
    int status = twitter.wait(&Serial);
    if (status == 200) {
      Serial.println("OK.");
    } else {
      Serial.print("failed : code ");
      Serial.println(status);
    }
  } else {
    Serial.println("connection failed.");
  }
}

void loop()
{ //아무것도 안합니다. 
}

SimplePost 예제 소개
예제로 사용된 소스에는 아두이노가 부팅할때마다 1회 포스팅을 하고, 포스팅 될때마다 결과 상태를 시리얼 통신으로 전달해 줍니다. (참고로 시리얼 창 새로 열거나 통신속도를 변경하여도 아두이노가 재부팅이되어 새로 포스팅을 시도합니다.)
결과가 Okay로 뜬다면 잠시 후 여러분의 트위터 페이지에 새 트윗이 올라온것이 보일 겁니다.
Okay 외의 오류 메시지를 잘 살펴보시면 디버깅에 도움이 됩니다.

포스팅 시도후 오류메시지가 뜨는 경우가 종종 있는데요  제가 발견한 주요 오류 내용은 아래와 같습니다.
1. 동일한 내용을 중복하여 전송한 경우: 이경우 중복 전송된 값은 무시됩니다.
2. 트윗 작성 한계치 초과 :  시스템 보호를 위해 일정 시간당 한정된 개수의 트윗만 허용됩니다.   이 수량을 초과시 일정기간 동안 트위 작성이 불가하며 일정 시간이 지난뒤에 다시 작성이 가능해집니다.   가령  수십초에 한번씩 계속 트윗을 하신다면 얼마지나지 않아 트윗 등록이 거부될 겁니다.   아래의 예제에서는 1시간에 1회 트윗을 발신하게됩니다.




드디어 트위터 기상로봇

이제 포스팅될 정보를 여러분의 용도에 맞게 잘 구성해주시면 여러분만의 활용도 만빵인 트위터 포스팅 봇이 완성됩니다.
제 경우 이미 소개드렸었던 기상측정기기를 활용하여 1시간마다 기상데이타를 측정하여 전송해주는 예제를 만들어봤습니다.
실제 포스팅된 내용들을 아래의 페이지에서 확인 가능합니다.

로보밥 기상측정 로봇 트위터 메시지 보러가기 :   http://twitter.com/artrobot_bot1
한동안 실내 테스트만 하다가 2012년 1월 29일 현재,  옥외 설치하여 운영중입니다.  위 링크에 가보시면 실제 기상자료를 참고하실 수 있습니다. (경기도 수원시 오목천동)

위에서 트윗된 메시지의 포스팅 시간을 보시면 (오차가 1분도 안되네요^^.)1시간 간격으로 전송이 된것을 보실 수 있습니다. 하지만 가끔씩  몇 시간에 한번만 트윗된 것도 보이실 겁니다. 이때는 테스트를 위해 실내에서 측정된 풍량/풍속/강수량 수치의 변화가 없어서 동일한 내용을 반복 포스팅한것으로 인지되어 무시된 경우입니다.  (계속 변화하는 시간값이나 랜덤숫자를 함께 전송하시면 이문제가 해결됩니다.)

사진. 기상측정 기구


+

사진. 아두이노로 만든 트위터 포스팅해주는 로봇



사용된 예제 소스 소개
값의 정밀도나 완성도를 무시하고 필요하신 분들에게 참고가 될 수 있도록 예제소스를 공개합니다.  풍향, 풍속, 강수량의 측정치 산정의 기준은 기상측정기기 제조사에서 제공한 데이타 시트를 참고하여 계산된 값입니다. 센서 연결 방법 및 기본 사용법 소개는 관련글 링크에 있는 글을 참고하시기 바랍니다.


/*
* 풍향, 풍속, 강수량을 Twitter에 포스팅하는 예제
  수정일시:  (2011.09.08a)  디버깅 및 기능개선을 위해 수시로 변경될 수 있습니다.

 풍향: 포스팅시 1회 계산 (16방위 중 하나로 측정)
 풍속: 20ms 주기로 10초간 모니터링 후 풍속계산
 강수량: 20ms 주기로 모니터링하여 1시간동안 누적(1시간에 1회 공식 데이타로 사용)
 
 핀연결
 풍향계: A0   풍향센서 전선 2개 중 하나는 GND에 나머지선은 A0에 연결 및 10k저항 거쳐 5V에 연결
 풍속계: D2   풍속센서 전선 2개 중 하나는 D2에 나머지는 GND
 강수계: D3   강수센서 전선 2개 중 하나는 D3에 나머지는 GND

 기타 핀 연결 (없어도 무방)
 D7: 풍속계 상태 LED
 D8: 강수량계 상태 LED
 D9: 버튼 ( 버튼을 누르면 10초내로 즉시 포스팅)

* http://ArtRobot.co.kr
* http://RoboBob.co.kr
*/

#include <SPI.h>
#include <Ethernet.h>
#include <EthernetDNS.h>
#include <Twitter.h>
#include <stdio.h>

#define WIND_N    0
#define WIND_NNE  22.5
#define WIND_NE    45
#define WIND_ENE  67.5
#define WIND_E    90
#define WIND_ESE  112.5
#define WIND_SE    135
#define WIND_SSE  157.5
#define WIND_S    180
#define WIND_SSW  202.5
#define WIND_SW   225
#define WIND_WSW  247.5
#define WIND_W    270
#define WIND_WNW  292.5
#define WIND_NW   315
#define WIND_NNW  337.5

// Ethernet Shield Settings
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //바꿔주세요

// substitute an address on your own network here
byte ip[] = { 192, 168, 100, 55 }; //바꿔주세요

// Your Token to Tweet (get it from http://arduino-tweet.appspot.com/)
Twitter twitter("발급받으신 토큰값을 적어주세요");  //바꿔주세요

// Message to post
char msg[100] = "";

const int windVanePin = A0;  // 풍량계 센서 입력핀
int windVaneValue = 0;        //
float windSpeed = 0;
float rainGauge = 0;
float windDirection = 0;
char windName[4];  // N (North)  S South,   NS(north south)   NNS(north north south) etc

  unsigned long windSpeedTimer;
  int windSpeedState = true;
  int windSpeedPin = 2;
  int windSpeedCounter = 0;
  unsigned long rainGaugeTimer;
  int rainGaugeState = true;
  int rainGaugePin = 3;
  int rainGaugeCounter = 0;
  int buttonState = true;
  int buttonPin = 9;
  int postTrigger = false;
  int postingCounter = 0;

void setup()
{
  delay(1000);
  Ethernet.begin(mac, ip);
  Serial.begin(9600);
 
  //wind speed sensor
  pinMode(windSpeedPin, INPUT);
  digitalWrite( windSpeedPin, HIGH);
 
  //rain gauge sensor
  pinMode(rainGaugePin, INPUT);
  digitalWrite( rainGaugePin, HIGH);

  //button for postMessge
  pinMode(buttonPin, INPUT);
  digitalWrite(buttonPin, HIGH);
 
  //wind speed sensor status LED
  pinMode(7, OUTPUT);
  digitalWrite(8,HIGH);
 
  //rain gauge status LED
  pinMode(8, OUTPUT);
  digitalWrite(8,HIGH);
 
}

// 문자배열변수값을 시리얼로 확인할경우만 사용
void printChars(char *msg, int len){
  if(len == 0) return;
  for(int i=0; i<len ; i++)
    Serial.print( msg[i]);
  Serial.println();
}

// sprintf함수에서 float형 print문제 대체용 함수 , float의 정수부인쇄
int f2h( float num){
  return int(num);
}

// sprintf함수에서 float형 print문제 대체용 함수 , float의 소수부인쇄
int f2p( float num){
  return (num - int(num)) * 100;
}


void loop()
{
  // 10초마다 샘플링 반복
  windSpeedTimer = millis() + 10000;
  windSpeedCounter = 0;
  while( millis() < windSpeedTimer ){
    delay(20); // 20ms 주기로 버튼이나 센서 스위칭 감시
    //wind speed
    if( (windSpeedState == true ) && !digitalRead( windSpeedPin) ){
        windSpeedCounter++;
        windSpeedState = false;
    }else if( (windSpeedState == false) && digitalRead(windSpeedPin) ){
        windSpeedState = true;
    }   
    //rain gauge
    if( (rainGaugeState == true ) && !digitalRead( rainGaugePin) ){
        rainGaugeCounter++;
        rainGaugeState = false;
    }else if( (rainGaugeState == false) && digitalRead(rainGaugePin) ){
        rainGaugeState = true;
    }       
   
    //button
    if( (buttonState == true ) && !digitalRead( buttonPin) ){
        postTrigger = true;
        buttonState = false;
    }else if( (buttonState == false) && digitalRead(buttonPin) ){
        buttonState = true;
    }      
    digitalWrite(7, windSpeedState);  
    digitalWrite(8, rainGaugeState);      
  }

  windSpeed = windSpeedCounter * 0.24;   // 1초당 1회 스위칭시 2.4km/h
  //Serial.print( "winSpeed: ");
  //Serial.println( windSpeed);

  rainGaugeTimer++;
  if( rainGaugeTimer > 360){  //1시간( 10 * 360 sec) 마다 postTrigger On
    rainGauge = rainGaugeCounter * 0.2794;
    rainGaugeCounter = 0;
    rainGaugeTimer = 0;
    postTrigger = true;
  }
  getWindDirection(); 

// 1시간마다 or 버튼이 눌릴때마다 Trigger 가 true가 되고 이때 포스팅된다.
  if( postTrigger ){ //post Message
    postTrigger = false;
    sprintf( msg, "[%d]기상측정로봇: 풍향:%s/%d.%d 풍속:%d.%d(km/h) 1시간당 강수량 %d.%d(mm/h).",postingCounter++ , windName, f2h(windDirection), f2p(windDirection), f2h(windSpeed), f2p(windSpeed),  f2h(rainGauge), f2p(rainGauge) );

    printChars( msg, sizeof(msg) );  //시리얼창으로 확인용, 생략가능
    postMessage();
  }

}

void postMessage(){
  Serial.println("connecting ...");
  if (twitter.post(msg)) {
    // Specify &Serial to output received response to Serial.
    // If no output is required, you can just omit the argument, e.g.
    // int status = twitter.wait();
    int status = twitter.wait(&Serial);
    if (status == 200) {
      Serial.println("OK.");
    } else {
      Serial.print("failed : code ");
      Serial.println(status);
    }
  } else {
    Serial.println("connection failed.");
  }
}

float getWindDirection(void){
 // 풍향센서의 출력 전압을 아날로그 센서로 읽어옴
  int readValue = analogRead(windVanePin);           
  // ADC입력치를 0~5V 범위로 변환, 데이타시트 값과 대응이 쉽도록.
  windVaneValue = map(readValue, 0, 1023, 0, 500); 
 
  // 해당 전압치에 따라 16가지 방향 중 하나의 풍향을 결정
  if( windVaneValue < 35){
    // DIR5  112.5  0.32v (31 32)    0~35
    windDirection = WIND_ESE;
    strcpy(windName ,"ESE");       
  }else if( windVaneValue < 43 ){
    // DIR3  67.5  0.41v(40 41)    ~42   
    windDirection = WIND_ENE;
    strcpy(windName , "ENE");       
  }else if( windVaneValue < 50 ){
    // DIR4  90  0.45v(44 45)      ~50   
    windDirection = WIND_E;
    strcpy(windName , "E");       
  }else if( windVaneValue < 70 ){
    // DIR7  157.5  0.62v(60 62)   ~70
    windDirection = WIND_SSE;
    strcpy(windName , "SSE");       
  }else if( windVaneValue < 100 ){
    // DIR6  135  0.90v(89 90)      ~100
    windDirection = WIND_SE; 
    strcpy(windName , "SE");       
  }else if( windVaneValue < 130 ){
    // DIR9  202.5  1.19v(119 120)  ~130
    windDirection = WIND_SSW; 
    strcpy(windName , "SSW");       
  }else if( windVaneValue < 170 ){
    // DIR8  180  1.40v(140 141)   ~170
    windDirection = WIND_S; 
    strcpy(windName , "S");       
  }else if( windVaneValue < 210 ){
    // DIR1  22.5  1.98v(198 199)  ~210
    windDirection = WIND_NNE; 
    strcpy(windName , "NNE");           
  }else if( windVaneValue < 250 ){
    // DIR2  45  2.25v(226 227)    ~250
    windDirection = WIND_NE; 
    strcpy(windName , "NE");           
  }else if( windVaneValue < 300 ){
    // DIR11 247.5  2.93v(293 294)  ~300
    windDirection = WIND_WSW; 
    strcpy(windName , "WSW");       
  }else if( windVaneValue < 320 ){
    // DIR10 225  3.08v(308 310)   ~320
    windDirection = WIND_SW; 
    strcpy(windName , "SW");       
  }else if( windVaneValue < 360 ){
    // DIR15 337.5  3.43 (343 345)  ~360
    windDirection = WIND_NNW; 
    strcpy(windName , "NNW");       
  }else if( windVaneValue < 395 ){
    // DIR0  0  3.84v(384~385)    ~395
    windDirection = WIND_N; 
    strcpy(windName , "N");
  }else if( windVaneValue < 415 ){
    // DIR13 292.5  4.04v(405 406)  ~415
    windDirection = WIND_WNW; 
    strcpy(windName , "WNW");   
  }else if( windVaneValue < 450 ){
    // DIR14 315  4.34(433 434)  ~450
    windDirection = WIND_NW; 
    strcpy(windName , "NW");       
  }else if( windVaneValue < 490 ){
    // DIR12 270  4.62v(461 463)    ~490
    windDirection = WIND_W; 
    strcpy(windName , "W");       
  }else{
   //error  알수없는 값범위
  }

}





관련제품 링크

관련글 링크

추가사항 (2011.11.29)
아두이노와 이더넷 쉴드를 하나로 결합한 Ethernet Pro 보드로 기상측정 트위터 기능을 구현할 수도 있습니다. 특히 PoE 케이블을 이용하시면 전원과 이더넷케이블을 하나로 줄일 수 있어 더욱편리합니다. 가령 위의 시스템을 아래의 이미지와 같이 간소화 시킬 수 있습니다.





저작자 표시 비영리 변경 금지
신고
Posted by 로보밥 로보밥

댓글을 달아 주세요

  1. thecminus

    혹시, thermal printer 예시 파일을 열어서 2번을 누르면 원하는 글자대로 타이핑을해서 serial 통신을 통해 프린팅이 되던데, 동시에 그 타이핑 된 값을 트위터에도 올리는 게 이론상 가능할까요?

    2011.10.18 23:21 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 네, 아두이노 이더넷 쉴드를 이용하면 트위터에 직접 메시지 전송이 가능합니다. 블로그 관련글(http://robobob.co.kr/68)을 참고하시기 바랍니다.

      2011.10.20 21:44 신고 [ ADDR : EDIT/ DEL ]
  2. 정준영

    라이브러리가 설치가 안되서 나는오류였더라구요 감사합니다

    2011.12.09 09:03 신고 [ ADDR : EDIT/ DEL : REPLY ]
  3. http://robobob.co.kr 주소에 HTTP Client로 접속을 하려면 먼저 DNS를 이용해서 해당 서버의 실제 IP를 받아서 접속을 해야 합니다. 물론 DNS 쿼리를 날릴 8.8.8.8 같은 DNS 서버의 IP도 설정을 해야 하구요...

    2012.02.09 15:07 신고 [ ADDR : EDIT/ DEL : REPLY ]
  4. 회로도자료는없나요?

    2012.05.07 16:34 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 소스코드 상단에 핀연결 방법을 적었습니다.
      기상측정기구 자체 회로도와 위 연결안내만 보셔도 제작가능하십니다.

      2012.05.07 18:48 신고 [ ADDR : EDIT/ DEL ]
  5. 강세윤

    Ethernet Pro를 사용 하는데 이더넷 케이블 경유 전원 공급 킷을 보드에 결합하여 랜선과 연결 해보았는데 전원이 안들어 왔습니다. 전원 공급을 어떻게해야 하는지 알려 줄수 있나요?

    2012.05.09 14:46 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 8선 표준 이더넷 케이블을 사용해야 합니다. 시중의 많은 케이블이 4선만 사용하고 있습니다.

      멀티테스터와 제품메뉴얼에 소개된 내부회선도를 참고하셔서 확인후 사용하셔야합니다.

      2012.05.10 13:11 신고 [ ADDR : EDIT/ DEL ]
  6. 강세윤

    그런데 위 예제 소스를 가지고 실험을 하려고 하는데 트위터에 전송이 안됨니다. 아두이노1.0 스케치를 사용하는데
    토큰 까지 받고 Ethernet Pro 보드에 전송을 해보았는데 안되던데 그러면 회로구성이 문제가 있는 건가요??

    2012.05.10 14:23 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 1시간 마다, 버튼 누를때 마다 전송됩니다. 버튼누를때 반응을 하는지 체크해보시기 바랍니다. 시리얼 모니터를 이용하시면 확인하는데 좋습니다.

      2012.05.10 15:16 신고 [ ADDR : EDIT/ DEL ]
  7. 강세윤

    위 핀연결에서는 버튼을 만들지 않아도 무방 하다고 써져있는데 버튼은 꼭 만들어야 하는건 가요??

    2012.05.10 15:25 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 테스트할때만이라도 있으면 좋겠죠
      안 그러면 작동 확인하기가 어렵잖아요 ^^;;
      참고로, 트윗을 짧은 시간내에 너무 많이 쏘면 몇시간동안 잠겨버립니다.(제한이 있어요) 그래서 저도 한시간에 한번 전송 한겁니다.

      2012.05.10 22:05 신고 [ ADDR : EDIT/ DEL ]
  8. 이동재

    제가요 EthernetDNS.h파일이 없다고 애러가 나는데요 어디서 구하는지 아시나요?ㅠ

    2012.10.23 16:19 신고 [ ADDR : EDIT/ DEL : REPLY ]
  9. 아두이노

    http://www.artrobot.co.kr/front/php/product.php?product_no=53&main_cate_no=34&display_group=1
    저는 와이파이쉴드(wifly shield)를 샀는데 이걸 사용하려면 어떻게 해야하나요?
    저는 주변에 있는 AP에 접속한다음에 거기서받은 ip와 맥주소를 썼는데 틀린걸까요?(simplepost.pde코드에 ip 맥주소쓰는부분)
    이더넷쉴드말고 와이플라이쉴드이용시 어떻게 해야하는지도 알려주셨음 좋겠습니다~

    2013.01.08 21:22 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 공개된 소스코드 폴더내에 README.txt 파일을 읽어보시기 바랍니다.
      MAC 주소는 로컬넷에서만 유일한 값이면 상관없습니다.

      2013.01.23 11:55 신고 [ ADDR : EDIT/ DEL ]
  10. 송영운

    감사합니다 좋은 정보 얻고 갑니다 ^^

    2013.01.11 20:02 신고 [ ADDR : EDIT/ DEL : REPLY ]
  11. 고상규

    관리자의 승인을 기다리고 있는 댓글입니다

    2013.05.04 14:12 [ ADDR : EDIT/ DEL : REPLY ]
  12. 제갈식

    잘 보았습니다.

    저 트위터 구성이면 PC는 필요 없는거지요??

    감사합니다.

    http://cafe.naver.com/iphonediy

    2013.05.31 12:06 신고 [ ADDR : EDIT/ DEL : REPLY ]
  13. 김현우

    본 글을 토대로 트위터에 글을 포스팅을 해봤는데여
    같은글을 포스팅 하려고 하면 1번밖에 포스팅이 안되고 오류가 납니다
    어디를 수정해야되나여??

    2013.11.20 16:59 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 글을 너무 자주 보내면 일정시간 등록이 불가한것과 더불어 똑같은 글을 반복하여 보내면 불필요한 데이타로 생각하여 무시해버립니다. 동일한 값으로 인식되지 않게하려면 카운터 숫자 같은 매번 조금이라도 변경되는 정보를 포함해서 전송해야 합니다.

      2014.06.13 00:49 신고 [ ADDR : EDIT/ DEL ]
  14. 안녕하세요? 위즈네트입니다. 아두이노 이더넷에 사용되는 W5100 칩 개발 업체 입니다.
    본 글을 저희 블로그/커뮤니티 사이트에 소개하고 싶은데, 괜찮으실까요?
    => http://kr.wizwiki.net

    2014.08.18 13:52 신고 [ ADDR : EDIT/ DEL : REPLY ]
  15. 야옹이

    카메라 기능도 구현해보고 싶은데 아두이노에서 글과 함께 사진을 트위터로 업로드할 수 있을까요??

    2015.03.31 19:29 신고 [ ADDR : EDIT/ DEL : REPLY ]

로보틱스2011.07.21 01:23
아두이노로 제어하기 좋은 로봇을 찾아오다 얼마전 드디어 쓸만한 녀석을 발견했습니다.

바로 무선제어 6족보행 로봇이란 제품입니다.





6족 보행로봇으로 전진,후진,좌회전,우회전이 가능하며 제공되는 적외선 리모컨을 통해 무선 조정이 가능합니다.
여러대의 로봇을 동시에 조정할 수 있도록 점퍼세팅으로 총 6대의 로봇을 동시에 조정할 수 있게 제작되었습니다.
조립도 간단하고 접착제같은건 사용하지 않아 신속하고 깔끔하게 제작이 가능합니다.

왜 좋은가?

1. 저렴한 가격
2. 손쉬운 제작 ( 8세이상 조립가능, 납땜불필요)
3. 손쉬운 아두이노 연동 가능( 전선 결합 불필요, 적외선 통신으로 제어)


조립시 필요한 것:
1.5V 알카리인 건전지 4개( 조정기용 2개, 로봇본체용 2개,  1.2V 충전지로도 잘 작동됩니다.)
스크류 드라이버

아두이노로 제어할 경우 필요한 재료:
 아두이노, IRED(적외선 LED) 1개,  저항 1개
(5미터 이상의 장거리 제어를 원하면 트랜지스터 1개, 저항 1개가 추가로 필요합니다.  관련글 링크 참고)


동영상1. 로봇 기본동작 보기

리모컨 제어로 전진, 후진, 좌회전, 우회전이 가능합니다.


아두이노로 제어하기

1. 하드웨어 준비
적외선 리모컨 신호를 아두이노 디지털 출력을 통해 출력하면됩니다.  이를 위해서 IRED(적외선LED) 1개와 저항 1개가 전부입니다.   원거리에서 제어하려면 트랜지스터를 사용해야 합니다.  연결방법은 일반 LED와 동일하게 저항1개와 함께 직렬 연결해주시면 됩니다.  본 예제에서는 PWM출력을 지원하는 아두이노 디지털 3번핀을 사용합니다.

리모콘 신호 전송을 위해 아두이노에 IRED 연결


IRED연결은 일반 LED 연결과 유사합니다.



2. 라이브러리 준비
적외선 리모컨의 역활을 아두이노가 대신하려면 여러분이 직접 38KHz의 캐리어 주파수에 수신기의 코드부호를 실어서 출력해주면 됩니다.  하지만 많은분들에게 쉽지 않은 도전과제이므로 천재적이면서 친절하기까지 하신 분들이 미리 만들어둔 라이브러리를 활용하여 비교적 손쉽게 아두이노로 리모컨 신호를 발신할 수 있습니다. 

아래의 링크에 가셔서 해당 라이브러리를 아두이노 스케치 library 폴더안에 복사하여 라이브러리 설치를 완료합니다.


위에서 준비해놓은 라이브러리는  RC5, SONY, NEC 코드 등의 송신 및 수신을 위한 기능이 제공되며 여기서는 NEC코드 발신 함수만 사용하면 됩니다. 리모컨 신호를 이용해 가전기기를 제어하는 것에 대해 일전에 소개해 드린적이 있는데요  이번에도 마찬가지로 코드부호를 스캔하여 해독한 결과 이 로봇도 NEC코드와 유사한 전송방식을 사용하는것을 알게되었습니다.
차이점은 데이타 전송폭이 짧다는 점과 반복표시용 코드를 사용하지 않는다는 것입니다. 

하지만 로봇제어를 위해 복잡한 내용은 모르셔도 상관 없습니다.  단지, 아래와 같은 함수 하나만 사용하기 때문입니다.


  irsend.sendNEC( codedata , nbits );   // codedata에 수신기용 코드값과   nbits에 코드값의 비트 수를 적어주면 됩니다.

위와 같은 함수로 해당코드값을 전송하면,  아두이노의경우 디지탈 3번핀에 해당되는 코드신호가 출력되고 이곳에 연결된 IRED를 통해 빛신호로 변환되어 출력되고  로봇에 내장된 적외선 수신기에서 해당 코드를 수신한뒤 대응되는 모터의 작동이 이뤄지게 되는 것입니다.


아래의 소스는 1초에 한번씩 전진, 후진, 좌회전, 우회전 신호를 발신하는 예제입니다.


#include <IRremote.h>

IRsend irsend;  

void setup()
{
// 특별한 초기화 설정이 불필요합니다.
}

void loop() {
   irsend.sendNEC( 0xc5000000, 8); //전진
   delay(1000);
   irsend.sendNEC( 0x45000000, 8); //후진
   delay(1000);
   irsend.sendNEC( 0x25000000, 8); //좌회전
   delay(1000);
   irsend.sendNEC( 0x85000000, 8); //우회전
   delay(1000);
  
}


위의 소스는 1초에 한번씩만 코드를 발송하므로 지속적으로 작동상태가 유지되지 않습니다. 따라서 만약 전진을 지속적으로 하려면 1초에 수회 정도 전진에 해당되는 코드를 반복하여 전송해야합니다. 


동영상2. 위 소스로 로봇 제어되는 장면

보통 이동형 로봇을 제작시 아두이노같은 마이크로콘트롤러 보드에 모터 구동 회로를 장착하고 모터 2개를 제어할 경우 방향제어를 위해 최소 4개의 전선을 연결하여 제어하게 됩니다. 이에 반해 본 로봇킷의 경우 모터 회로 구현이 이미 되어있는데다 전선의 연결이 불필요하고 빛으로 연결되어 있으므로 비용도 절감되고 제어도 간단해 질 수 있으므로 기초 이동형 로봇 제어 학습시 효과적으로 응용할 수 있는 방법으로 판단됩니다.  (물론 전용 모터드라이버 연결법이 더 다양한 제어가 가능합니다. 가령 속도조절이 가능함)

거리센서 등을 통해 주변 물체를 감지하고 회피하는 로봇의 제작이나  전파(Zigbee, Bluetooth, Wifi 등 활용)를 통한 무선통신으로 신호를 수신 받고 이를 광통신으로 변환하여 원격제어되는 로봇의 구현도 가능합니다.

게다가 수신모듈+모터드라이버 역활을 하는 제어기만 활용할 수도  있습니다.


사진. 리모컨 수신기 및 모터구동 드라이버 보드: 
좌측에 전원연결(2핀)부, 우측에 모터2개 연결부(4핀), 상부에 ON/OFF스위치,  하부에 리모컨 채널 조정용 헤더핀(6핀)이 있으며 가운데에 IR수광모듈이 보입니다.


기타.  작동중 오동작이 계속되면 건전지를 교체해 보시기 바랍니다.  모터 구동시 전력소모가 큰 편이므로 배터리 소모가 빨리 됩니다.


관련 제품 링크

 무선제어 6족보행 로봇

 아두이노 UNO

 적외선 무선통신킷



내용추가
2011.July.26 
아래의 관련글 링크에 리모콘 신호 송수신 회로와  PC에서 키보드 입력으로 로봇을 제어하는 소스 예제를 포함한 글을 새로 등록하였습니다. 참고하세요


관련글 링크

 .IR무선 리모콘 송수신 회로로 로봇 제어하기



저작자 표시 비영리 변경 금지
신고
Posted by 로보밥 로보밥

댓글을 달아 주세요

아두이노에 WaveShield를 얹히면 음악재생기가 됩니다.  여기에 9V 전지등을 연결해주면 곧바로 휴대형이 되는데요, 무공해 에너지를 사용하면 더욱 좋겠죠?!  그래서 건전지 없이 태양전지를 연결하여 구동해 봤습니다.  쨍쨍 비치는 태양에너지를 쓸모있게 활용하는데 태양전지만한게 없겠죠...  날씨가 좋은경우 그늘에서도 문제없이 구동되네요.  생각과 달리 태양전지는 흐린날에도 약간이지만 전기를 생산합니다.  눈으로 한번 보시죠,  여러분의 창작품에도 응용하시면 좋을것 같습니다.




동영상1.음원은 개구리 우는소리로 넣었습니다.  개구리 우는 소리가 제법 큽니다.   확인을 위해 태양전지를 뒤집자 개구리가 울음을 끄치네요 ^^.   다시 태양을 바라보자 소리를 내기 시작합니다.



동영상2. 이제 제법 여름 기운이 느껴집니다.  너무 덥죠!  그늘에서도 작동하는지 테스트 해봤습니다.  잘~ 나오네요..  낮잠잘때 배경음으로 딱 좋을것 같습니다.  공원 밴치등에 불필요한 전력없이 태양전지로 작동되는  자연의 소리를 넣어주면 좋을것 같습니다.


동영상3.공원에서 되돌아 오는길에 자전거 뒷자석에 태양전지를 달고, 달려오면서 음악을 감상해 봤습니다.   제법 좋네요 ^^.
건전지 걱정없고,  스위치도 필요없습니다.  실내에 들어오면 자연히 꺼지고요,  밝은 곳으로 이동하면 다시 자동 재생됩니다.  와우~ Wow!!


관련 제품링크
 1. 아두이노 UNO [링크]
 2. 아두이노용 Wave Shield [링크]
 3. 태양전지 [링크]




저작자 표시 비영리 변경 금지
신고
Posted by 로보밥 로보밥

댓글을 달아 주세요

  1. cchead

    우와 태양전지에 아두이노라.. 응용하면 앞으로 엄청나게 쓰일수도 있을거같네요 특히 자전거나.. 태양을 보기 쉬운곳에

    2011.08.16 01:53 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 네, 태양전지와 아두이노를 함께 결합한 아이디어 작품을 공공 시설물에 응용하면 좋겠다는 생각이 드네요^^.

      2011.08.17 17:14 신고 [ ADDR : EDIT/ DEL ]
  2. dal_j

    아두이노를 처음 접하는 학생입니다. 키트를 조립하고 아두이노 프로그램을 연결했는데 시리얼 모니터로 확인해보니 sd메모리를 인식하지 못하고 있는데 원인을 도저히 모르겠네요ㅠㅠ... 여기저기 뒤저보다가 혹시 몰라서 한번 여쭤봅니다ㅠㅠ card.init failed // SD error // errorCode: 1 // errorData: FF 이렇게 뜨는데... 에러코드 1이 뭘 의미하는건가요?ㅠㅠ

    2012.12.10 14:59 신고 [ ADDR : EDIT/ DEL : REPLY ]
  3. 전류가 일정하지 않을텐데...저렇게 아무런 장치없이 바로 input에 꽂아도 되는건가요?

    2013.10.22 15:04 신고 [ ADDR : EDIT/ DEL : REPLY ]


^^. 로보밥 얼뚱연구소에 또하나의 재밌는 제품이 들어왔습니다. 예전부터 이제품 찾는 분들이 많았는데 드디어 입수하게 되었습니다.
 자세한 소개이전에 일단 테스트 영상을 올려봅니다.



Adafruit Industries사의 아두이노용 웨이브 쉴드이며,  직접 납땜하여 조립하는 DIY형 제품입니다.
mp3플레이어의 경우 전용 하드웨어 코덱칩을 사용하곤 하는데요, 요제품은 걍 wav파일을 곧바로 DAC칩으로 재생해버리므로 코덱같은거 없습니다.  단점일수있지만 반대로 장점일 수 도있죠,
low level 의 wav데이타를 곧바로 DA로 변형후 OPamp로 증폭하여 출력합니다.
그리고, 사실 mp3 배우기 전에  wav부터 배우는게 순서가 맞을것 같습니다.
SD메모리 슬롯도 내장하여 용량문제없이 음악재생이 가능하고, SD메모리만 응용할 수도 있습니다.

아래의 예제는 sd메모리에 미리 넣어둔 wav파일 몇개를 지정된 키를 누를때마다 재생하는 예제입니다.
관련예제는 해당제품 안내페이지에서 모두 보실 수 있습니다.
기회가 되면 상세 리뷰도 소개해 드리겠습니다.

참고자료
 . 제품소개 페이지 -아두이노 웨이브 쉴드 (Adafruit Wave Shield for Arduino)
 . 웨이브쉴드 버튼 연동 예제 소개
 . 웨이브쉴드 사용법 소개






PCB와 조립용 부품이 제공되며 직접 납땜으로 완성시키는 DIY형 제품입니다.



저작자 표시 비영리 변경 금지
신고
Posted by 로보밥 로보밥

댓글을 달아 주세요

  1. moonsflow

    저는 이거 살려고 adafruit 에 직접 주문했었는데, 이렇게 국내서도 구매할 수 있다니 반갑네요.

    2011.06.10 10:04 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 로보밥

      안녕하세요~
      좋은물건을 국내에 소개할 수 있게 되어 뿌듯한 마음입니다. 국산형 웨이브 쉴드도 곧 나오면 좋겠고요 ^^.

      2011.06.10 22:27 신고 [ ADDR : EDIT/ DEL ]
  2. brownee

    안녕하세요 지금 이 웨이브 쉴드와 직비를 이용하여 보내는 신호에 따라 소리가 나게하는 로봇을 만들고 있는 학생 입니다.
    우노에 직비E쉴드를 이용하여 직비를 올리면 디지털 IO포트가 0~7까지 사용 을 못합니다. ㅜㅠ 그런데
    LCS, CLK , DI ,LAT가 2 3 4 5 입니다. ㅜㅠ 이것을 8 9 11 12로 바꾸고 라이브러리에서
    WavePinDefs 라는 헤더파일에서 핀을 위와같이 바꾸었습니다.
    현재 SD 카드는 읽히는데 이어폰으로 소리만 나오지 않습니다. ㅠㅠ
    위와같이 핀을 바꾸면 문제가 있나요?

    그리고 우노에 전원을 넣어주는데 쉴드에도 따로 전원이 필요한가요 ??
    정말 몇일째 이 문제로 골골 앓고 있네요 ㅠ 도움 부탁드립니다.

    2012.09.11 19:02 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 위와 같이하시려면 소스코드만 바꾸시면 안되고 하드웨어 핀연결도 바꾸셔야합니다. 그보다는 그냥 XBee 쉴드를 케이블로 연결하시고 하드웨어 Serial핀인 0,1번에 연결하시면 될 것 같습니다.
      참고로, 제품문의는 아트로봇 QnA 게시판을 이용해주셔야 바로 답변이 가능합니다. 현재 블로그는 자주 못들리고 있고 링크등의 관련자료가 부족하여 답변이 어렵습니다.

      2012.09.14 15:19 신고 [ ADDR : EDIT/ DEL ]
  3. bio ablation

    관리자의 승인을 기다리고 있는 댓글입니다

    2015.09.22 16:38 [ ADDR : EDIT/ DEL : REPLY ]