RFID(기초/사운드출력)
RFID 란 ?
RF(무선통신) 의 종류 : WiFi, RFID, NFC
RFID(Radio Frequency Identification)란 ?
RFID는 판독 및 해독 기능을 하는 판독기(Reader)와 정보를 제공하는 태그(Tag)로 구성되는데,
제품에 붙이는 태그에 생산, 유통, 보관, 소비의 전 과정에 대한 정보를 담고, 판독기로 하여금
안테나를 통해서 이 정보를 읽도록 한다.
또 인공위성이나 이동통신망과 연계하여 정보시스템과 통합하여 사용된다.
Tip(주파수 상식) : 주파수는 낮아지면 벽을 통과할 수 있는 음파의 성질을 가지고 높아지면 레이저 같은 투과할 수 없는 성질을 가진다.
채널 |
주파수 (GHz) |
1 |
2412 |
2 | 2417 |
3 | 2422 |
4 | 2427 |
5 | 2432 |
6 | 2437 |
7 | 2442 |
8 | 2447 |
9 | 2452 |
10 | 2457 |
11 | 2462 |
12 | 2467 |
- Host로 명령을 전송하면 저장하거나 실행해 준다. yes 가 되면 상태정보를 전송하고 no면 에러 상태를 전송해준다.
- Inventory 에 카드의 주소(UID)를 얻어온다.
- Transponder의 UID가 일치한 것이 있는지 판단.
- yes일 경우 읽어온 Transponder의 상태 데이터를 보내준다.
- 아래표의 n은 기기의 번호를 뜻한다. 본 프로젝트의 장비 번호는 0번으로 통일한다.
- 위 4번 자리의 STATUS는 일종의 return 값이다. 아래표를 참고.
RFID Beep 사운드 출력
코드
unsigned char msg[] = { 0x0D,
0x00,
0x71,
0x00, 0x20,
0x00, 0x01,
0x00, 0x0A,
0x00, 0x00,
0xFF, 0xFF};
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | #include <windows.h> #include <stdio.h> #include <windows.h> #include <stdio.h> int main() { unsigned char msg[] = { 0x0D, 0x00, 0x71, 0x00, 0x20, 0x00, 0x01, 0x00, 0x0A, 0x00, 0x00, 0xFF, 0xFF}; HANDLE hComm; DWORD DW_write; DCB sPS; // 씨리얼 포트 상태 저장 COMMTIMEOUTS cTime; // CreateFile = File open 함수와 같다. COM1은 컴포트1이 열린다. hComm = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); if(INVALID_HANDLE_VALUE == hComm) { printf("Com port open Error !\n"); return 0; } // 버퍼 설정 if( 0 == SetupComm(hComm, 4096, 4096)) { printf("Buffer setting Error !\n"); CloseHandle(hComm); return 0; } /* * 포트 초기화 * DCB 구조체 사용 * 길이 * 속도 */ if( 0 == PurgeComm(hComm, PURGE_TXABORT | PURGE_TXCLEAR)) { printf("Buffer initialization Error !\n"); CloseHandle(hComm); return 0; } sPS.DCBlength = sizeof(sPS); if( 0 == GetCommState(hComm, &sPS)) { printf("Port status read Error !\n"); CloseHandle(hComm); return 0; } sPS.BaudRate = CBR_38400; // 비트,초 sPS.ByteSize = 8; // 데이터 비트 전송 sPS.Parity = EVENPARITY; // 짝수 sPS.StopBits = ONESTOPBIT; // 정지 비트 // 위 세팅값을 핸들에 넣어준다. if( 0 == SetCommState(hComm, &sPS)) { printf("Port status write Error !\n"); CloseHandle(hComm); return 0; } *((unsigned short *)(msg + 11)) = Emb_Crc(msg); WriteFile(hComm, msg, sizeof(msg), &DW_write, 0); printf("Com port open Success !\n"); CloseHandle(hComm); // 터미널은 닫아주어야한다. return 0; } | cs |
함수 사용 결과
RFID ISO 15693 16Bit CRC
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | unsigned short Emb_Crc(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; 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); } } } return crc; } | cs |
RFID(UID/Write Multiple Blocks/Read Multiple Blocks)[20121016] (0) | 2018.12.10 |
---|---|
RFID(Reader control/Host Command)[20121011] (0) | 2018.12.10 |
IoT Module 와이솔 LoRa 전용 모듈 [LOM102A] (0) | 2016.09.13 |