2014-09-17 17:10:56



| NO | 부품명 | 수량 | 상세설명 | 
| 1 | 오렌지 보드 | 1 | 아두이노 호환보드 | 
| 2 | RFID 리더기(ID-12LA) | 1 | RFID | 
| 3 | RFID USB Reader(SEN-09963) | 1 | RFID | 
| 4 | Mp3 쉴드 | 1 | VS1053 breakout board | 
| 5 | 9v배터리 | 1 | 배터리 | 
| 6 | 9v 어댑터 | 1 | 9v 어댑터 | 
| 7 | 점퍼케이블 | 3 | 점퍼케이블 | 
| 8 | 스피커 | 1 | 스피커 | 
| 부품명 | 오렌지 보드 | RFID 리더기 (ID-12LA)  | 
RFID USB Reader (SEN-09963)  | 
Mp3 쉴드 | 9v배터리 | 
| 파트 |  x1 | 
 x1 | 
 x1 | 
 x1 | 
 x1 | 
| 부품명 | 9v 어댑터 | 점퍼케이블 | 스피커 | 
| 파트 |  x1 | 
 x3 | 
 x1 | 







/*
  RFID JUKEBOX
by www.kocoafab.cc
*/
#include <SPI.h>           // SPI library
#include <SdFat.h>         // SDFat Library
#include <SdFatUtil.h>     // SDFat Util Library
#include <SFEMP3Shield.h>  // Mp3 Shield Library
SdFat sd; //  SD카드를 사용하기 위한 오브젝트를 생성합니다. 
SFEMP3Shield MP3player; //  Mp3 라이브러리를 사용하기 위한 오브젝트를 생성합니다.
const uint8_t volume = 0; // MP3 Player volume 0=max, 255=lowest (off)
const uint16_t monoMode = 1;  // Mono setting 0=off, 3=max
char tag1[13] = "6F005C9656F3";   // RFID 태그의 ID입니다. 
boolean state = 0;
void setup()
{
  Serial.begin(9600);
  Serial.println("RFID example start !"); 
  Serial.println('\n');
  /* Set up all trigger pins as inputs, with pull-ups activated: */
 
  initSD();  // Initialize the SD card
  initMP3Player(); // Initialize the MP3 Shield
}
// All the loop does is continuously step through the trigger
//  pins to see if one is pulled low. If it is, it'll stop any
//  currently playing track, and start playing a new one.
void loop()
{
  char tagString[13]; //  tagString를 선언합니다
  int index = 0 ;
  boolean reading = false;
  while(Serial.available()) { //시리얼 포트에 읽을 데이터가 있으면
  // 태그 리더기에 태그를 가져다 대면, 읽기 시작합니다. 
  
   int readByte = Serial.read(); // 시리얼 포트에 있는 데이터를 저장합니다.
  
      // 태그에서 읽은 정보를 출력 
    Serial.println("Serial.read() is "); 
    Serial.print("DEC : "); Serial.println(readByte, DEC  ); 
    Serial.print("HEX : "); Serial.println(readByte, HEX);
    Serial.println("RFID reading..... store string");
    if(readByte >= '0' && readByte <= 'F'){
      Serial.print("readByte input : ");
      Serial.println(readByte);
      tagString[index] = readByte;
      index++;
    }
  }
  
  checkTag(tagString); // 저장된 태그 ID와 RFID 리더에서 읽은 태그 ID와 일치하는지 확인
  clearTag(tagString); // 읽어온 태그 ID를 지움
  delay(100); 
}
void initSD()
{
  
  if(!sd.begin(SD_SEL, SPI_HALF_SPEED)) 
    sd.initErrorHalt();
  if(!sd.chdir("/")) 
    sd.errorHalt("sd.chdir");
}
void initMP3Player()
{
  uint8_t result = MP3player.begin(); 
  if(result != 0) 
  {
    
  }
  MP3player.setVolume(volume, volume);
  MP3player.setMonoMode(monoMode);
}
void checkTag(char tag[]){
// 저장된 태그 ID 와 RFID 리더에서 읽은 태그 ID가 일치하는지 확인 하는 함수
  if (strlen(tag) == 0 ){ // 아무것도 읽지 않았을 경우
   return; 
  }
 if(compareTag(tag, tag1)){ // 저장된 태그 ID와 읽은 태그 ID를 비교합니다.
 
 Serial.println("sucess tag");
 {   
 
    {
      if (state == 1){
        MP3player.stopTrack();
        state = 0;
      }else{
      
      uint8_t result = MP3player.playTrack(1);
      if (result == 0)  //만약 결과가 0일 경우 1번 트랙을 재생합니다.
      {
        // Success
      }
      else 
      {
        
      }
        state = 1;
      }
    }
  }
 }  else { // 읽은 태그와 일치하는 저장 태그가 없을면
   Serial.println("No matching Tag, New tag name is display");
   Serial.println(tag); // 읽은 태그 ID 출력
 }
}
void clearTag(char one[]){   // 읽은 태그 ID를 초기화
  for(int i =0; i < strlen(one); i++){
    one[i] = 0;
  }
}
boolean compareTag(char one[], char two[]){ // 읽은 태그 ID와 저장된 태그 ID를 비교
 
Serial.println("in the compareTag");
 
 if(strlen(one) == 0 ){ // 읽은 태그가 비어 있을 경우
   Serial.println("empty string");
   return false; 
  }
  for (int i=0; i < 11; i++){  // 읽은 태그와 저장된 태그 ID를 한자리 씩 비교
    if(one[i]!=two[i]) { // 제 태그 ID의 앞자리가 이상한 값이 들어와서 수정
      Serial.println("one of the string mismatches");
      return false; // 하나라도 다르면 다른 태그 ID로 정함
    }
  }
  Serial.println("All string matches");
  return true; // 전부 일치할 경우 일치하는 상태 값을 보냄
}
#include <SPI.h>           // SPI library
#include <SdFat.h>         // SDFat Library
#include <SdFatUtil.h>     // SDFat Util Library
#include <SFEMP3Shield.h>  // Mp3 Shield Library
SdFat sd; //  SD카드를 사용하기 위한 오브젝트를 생성합니다. 
SFEMP3Shield MP3player; //  Mp3 라이브러리를 사용하기 위한 오브젝트를 생성합니다.
const uint8_t volume = 0; // MP3 Player volume 0=max, 255=lowest (off)
const uint16_t monoMode = 1;  // Mono setting 0=off, 3=max
char tag1[13] = "6F005C9656F3";   // RFID 태그의 ID입니다. 
boolean state = 0;
if(compareTag(tag, tag1)){ // 저장된 태그 ID와 읽은 태그 ID를 비교합니다.
  Serial.println("sucess tag");
 {   
 
    {
      if (state == 1){
        MP3player.stopTrack();
        state = 0;
      }else{
      
      uint8_t result = MP3player.playTrack(1);
      if (result == 0)  //만약 결과가 0일 경우 1번 트랙을 재생합니다.
      {
        // Success
      }
      else 
      {
        
      }
        state = 1;
      }
    }
  }
 }
			hihyo
			아두이노,RFID,MP3쉴드,쥬크박스,말하는인형,스피커,음악재생