신에서시작되었다 시스템은리더 정보를저장 하고리더와데이터를교환하는 리더와기업용 사람들이점점더건강을생각하게되고기름값또한고유가의시대로접어들면서자동차의비중이점점 응용프로그램사이에서중계하는미들웨어로구성되어있다 줄어들고있다 자동차의비중이줄어들면서자전거 시스템은 동호회 자전거출 퇴근등자전거를타는사람들은매년꾸준히증가하고있다 이에따라자전거도난사건또한매년증가추세에있다 현재자전거의도난방지를위해다양한자물쇠나잠금장치등이개발되어나오고있지만자전거도난사건자체는크게줄어들지않고있는게현실이다 우리나라의 대도시 서울 부산 대구 인천 광주 대 주파수대역에서 이하 대역의주파수를사용한다 그리고 는태그가송신하는전파의에너지원을얻는동작방법에따라수동형과능동형으로구분할수있으며수동형은리더기로부터수신되는전파에서송신전원을얻고 능동형은별도의전원장치에서전원을얻는다 전 울산 의자전거수단분담률은최근 년간 에 서 로 배이상증가하였다 또한서울시의경우 시스템의개요 년간 에서 로자전거수단분담률이 배증 가하였으며이원인으로는위에서말한바와같이건강 의식의증가와고유가시대자전거인프라의확충으로 들수있다 이와같이자전거를타는사람들이증가 하는가운데서울시민의자전거도난경험은 년 서울시정개발연구원에서발표한자료에의하면 가 도난경험이있다고발표하였고횟수의비율을보면 회도난경험이 회가 회가 회이 상이 로 회이상도난경험이있는자가무려 에달한다 이에자전거도난사건을막고예방하기위해자전거 에 칩내장하여관리하는방법에대해모색해봤 다 위에그림에서보는바와같이크게리더부분 서버 부분이렇게 부분으로나눌수있다 리더부분에서는각리딩할수있는위치마다설치 돼있는부분에서확인자에의해에너지를내보내서 의개념 의역사는초기의군사용신분확인체계와 년대초기술혁신의혁 로부터돌아오는데이터를읽어준다 여기서읽어진데이터는 를통해관리서버로전송된다 관리서버부분에서는전송된데이터를 에전송
졸업논문 2012. 6. 21 되어자전거의현재정보를알려주게된다 시스템의동작절차그림 3-1 리더에서의자전거정보조회동작절차위에동작절차에서알수있듯이리더에서하는동작절차에서는크게 부분으로나눌수있다 리더에서에너지를보내 로부터데이터가전송되면자전거의정보를확인한다 여기서도난당한자전거인지아닌지를확인한후도난당한자전거일경우에는프로그램에표시가되며종료된다 시스템의제작 그래밍하였다 로프로그래밍한소스는다음과 같다 // RFID 통신을열기위한함수 BOOL CRFIDDlg::RFID_Open(int port, int baudrate) switch(baudrate) case 0 : return FS_Open(port, CBR_9600); case 1 : return FS_Open(port, CBR_14400); case 2 : return FS_Open(port, CBR_19200); case 3 : return FS_Open(port, CBR_38400); case 4 : return FS_Open(port, CBR_57600); case 5 : return FS_Open(port, CBR_115200); default : // RFID 통신을닫기위한함수 void CRFIDDlg::RFID_Close(void) FS_Close(); 그림 4-1 RFID Hardware 시스템의 는그림 의 로이시스템에가장적합한모듈인펌시스사의 을사용하였으며이 를이용하여컴퓨터와연동시켰다 소프트웨어는 를이용하여프로 // RFID Tag 를 ContinueMode 로읽기위한부분 void CRFIDDlg::OnBnClickedContinuemode() // TODO: Add your control notification handler code here if(fs_continuemode() == RESPONSE) AfxBeginThread(ThreadFuncReceive, this); void CRFIDDlg::OnBnClickedOpen() if(rfid_open(m_ctrl_comport.getcursel(),
m_ctrl_baudrate.getcursel()) == FALSE) AfxMessageBox("Com Port를열지못하였습니다."); AfxMessageBox("Open!!"); void CRFIDDlg::OnBnClickedClose() RFID_Close(); void CRFIDDlg::Debug_box(CString str) AfxMessageBox(str); void CRFIDDlg::Search_Data(CString str) FILE *fp; char buff[128]; int not_find = 0; CString temp, uid; uid = str.mid(4,16); if(strlen(uid) <= 15) return; FS_Stop(); fp = fopen("database.db", "r"); if(fp!= NULL) for(;;) if(fgets(buff, 128, fp)!= NULL) temp.format("%s",strtok(buff, ",")); if(temp.compare(uid) == 0) // DB에 UID가있을경우 // UID SetDlgItemText(IDC_UID, temp); // 소유주 SetDlgItemText(IDC_NAME, temp); // 모델 SetDlgItemText(IDC_MODEL, temp); // 연락처 SetDlgItemText(IDC_PHONE, temp); // 도난여부 SetDlgItemText(IDC_STEAL, temp); not_find = 0; // 다를경우 not_find = 1; continue; fclose(fp); if(not_find == 1) Init_Database(uid); // DB 파일이없을경우 Init_Database(uid); // RFID TAG 를읽을수있게하는쓰레드 UINT ThreadFuncReceive(LPVOID pparam) CRFIDDlg *dlg = (CRFIDDlg*)pParam; int receive_size; BYTE byrcv[4096]; CString strrcv; CString strtemp; CString str; for(;;) if(fs_receive(&receive_size, byrcv) == RESPONSE)
졸업논문 2012. 6. 21 for(int i = 0;i<=receive_size;i++) strtemp.format("%x", byrcv[i]); strrcv += strtemp; dlg->search_data(strrcv); if(dlg->m_nstop == 1) void CRFIDDlg::Init_Database(CString uid) FILE *fp; fp = fopen("database.db", "a"); if(fp!= NULL) Db_dlg.m_strUID.Format("%s", uid); Db_dlg.DoModal(); fseek(fp, 0, SEEK_END); fprintf(fp, "%s,%s,%s,%s,%s\n", Db_dlg.m_strUID, Db_dlg.m_strName, Db_dlg.m_strModel, Db_dlg.m_strPhone, Db_dlg.m_strSteal); fclose(fp); 그림 4-3 새로운자전거등록화면그림 은위에소스를디버깅한후실행한그림이다 실행한후 리더기를 후 를실행하면 의값을읽어오게된다 이때데이터베이스에저장되지않은 값일경우그림 와같이등록화면뜬다 그림 4-4 Data base 저장화면 등록이완료된 값은그림 과같이 에 저장이된다 이렇게저장된 값을읽어오면 그림 4-2 자전거관리시스템실행화면 그림 4-5 저장된 Tag 값을읽어온화면 그림 와같이 에데이터에등록된정보
가읽어오도록하였다 자전거의이용자가증가하고도난사건또한증가하는지금의시대에서이시스템을이용하여자전거를등록하고도난여부를알수있는시스템이상용화된다고하면자전거이용자들의도난에대한불안감도감소할것이고도난사건또한감소할것이다 본논문에서다루고있는시스템을좀더개발하여무선네트워크시스템과결합한다면더좋은관리시스템을갖출수있을것이다 참고문헌