본문 바로가기
코스웨어/15년 스마트컨트롤러

20151208_[안향진]_RFID_1

by 알 수 없는 사용자 2015. 12. 8.
728x90
반응형

<RFID>






=프로토콜(절차, 규약)

-시리얼

-네트워크




                                                        

WIRELESS(가전제품 : 전원선 없는 것(배터리) 등..) < RF(더 포괄적인 의미 : 통신..)

RADIO FREQUENCY

무선통신


=운반 CARRIOR

버스/엘리베이터 : 캐리어(데이터 운반을 위해 부가적으로 필요한 것)

사람 : 데이터

주파수가 높을수록 데이터 전송 량 늘어남


-캐리어주파수에 데이터를 Modulation함(변조)

-데이터 Demodulation(복조)

-Modem






=13.56M Hz : 변조 방식에 따라 ==> 프로토콜

(버스..등 다른 것도 사용)




WIFI : 2.4G 5G


(BOOK: RF 아날라시스)

http://www.cornerbook.co.kr/shop/goods/goods_view.php?goodsno=186785421

http://www.rfdh.com/bas_rf/beginer.htm

http://www.rfdh.com/bas_rf/rfbasic/RFbasics_1.pdf



RFID : ISO 15693 (프로토콜)



=스티커, 팔찌, 카드 형





=전자파를 배터리로 사용(안테나가 반드시 필요

칩-안테나  ------- 리더기

전자파가 들어오면 순간적으로 부팅 : 데이터를 받아 프로토콜에 맞게 해석 -> 맞으면 메모리에 읽거나 씀 (TINY OS)


정파회로가 교류(전자파)를 직류로 전환


=전자파를 어떻게 받아들이는가?

-전자기 유도현상


전계 자계 전계 자계 전계 자계(안테나에 도착) => 전계(배터리) => 칩 동작


=> 자계 흡수 물질(알미늄 호일, 물)이 근처에 있으면 통신에 방해


=>전자기학 : 전자가 어떻게 공중에 존재 하는가? (미적분으로 증명)






=

발전기

수력    F => (터빈 === 자석) => 자기 => 전자 이동 => 전기

화력

풍력

원자력


=

RFID

NFC : 리더기가 USB임 (단점은 나중에...)

....

=> 주파수 좀 다르다고 이름 다르게 붙인 것


=칩마다 고유 ID => RFID


=바코드 대체용으로 나왔으나 가격 경쟁 안됨

(물, 자기 흡수..통신 제대로 안됨)







=제품 PDF 봄(원래는 파일 사야 함)


=목표 : 고유 ID읽기



1.1. Configuration Commands and Control Commands







1.2. ISO15693 Host Commands







=


http://wowcat.tistory.com/1030



모던 리더기 설정

속도 : 38400

패리티 : 짝수


모던 리더기 테스트(COM1)


<샘플 코드>

#include <windows.h>

#pragma pack(push, 1)
typedef struct COMMON       COMMON;
struct COMMON
{
  
unsigned char  ucLen;
  
unsigned char  ucComAdr;
  
unsigned char  ucCtl;
};
#pragma pack(pop)
unsigned short MecCRC(void *arg)
{
  
unsigned short i;
  
unsigned short j;
  
unsigned short cnt;
  
unsigned short crc=0xFFFF;
  
unsigned short temp;
  
unsigned char *buf = arg;

  cnt 
= (*buf) - 2;
#ifdef DEBUG
  printf(
"### rfid_crc : SIZE = [%d]\n", cnt);
#endif //DEBUG

  for(i=0 ; i < cnt ; ++i)
  {
    crc^
= *(buf + i);
    
for(j=0 ; j < 8 ; ++j){
      
if(0 != (crc&0x0001))
      {
        crc
=(crc>>1)^0x8408;
      }
      
else
      {
        crc
=(crc>>1);
      }
    }
  }
#ifdef DEBUG
  printf(
"### rfid_crc : Result = [0x%04X]\n", crc);
#endif //DEBUG

  return crc;
}
int main()
{
  u_char    caString[
128];
  COMMON  *stCommon 
= (COMMON  *)caString;

  
// Packet 설정
  stCommon->ucLen            = 0x07//[1]
  stCommon->ucComAdr        = 0x00//[2]
  stCommon->ucCtl            = 0xB0//[3]
  *(caString+sizeof(COMMON))    = 0x01//[4]
  *(caString+sizeof(COMMON)+1)    = 0x00//[5]
  *((unsigned short *)(caString+sizeof(COMMON)+2)) = MecCRC(caString);
 printf(
"%02X, %d\n", MecCRC(caString), sizeof(COMMON));
  
// Packet 송신 - 직접 구현

  // Packet 수신 - 직접 구현
  printf("[%02X] [%02X] [%02X] [%02X] [%02X] [%02X] [%02X]\n",
          *(caString+
0), 
          *(caString+
1), 
          *(caString+
2), 
          *(caString+
3), 
          *(caString+
4), 
          *(caString+
5), 
          *(caString+
6)
          );
  
}



=




728x90