제조공정
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
|
| ||||
|
집 및/또는 사무실에 RFID 태그/카드 보안 시스템 또는 모니터링 시스템을 추가하는 것을 생각해 본 적이 있습니까? 글쎄, 당신이 여기에 왔다면 당신은 이미 그들이 $200에서 $2000에 이르기까지 얼마나 비싼지 찾아보았을 것입니다. 너무 옳습니다!?? 친구와 저는 100달러 미만의 비용이 들고 문에 접근하는 것보다 훨씬 더 많은 일을 할 수 있는 시스템을 만들기로 결정했습니다. 그래서 이것이 우리가 생각해 낸 것입니다. 인터넷 지원 arduino rfid 태그 리더. 20달러를 더 내면 문을 열 수 있습니다. 이 시스템은 우리 고등학교의 학생을 추적하도록 설계되었으며 학교에서 승인하기를 바랍니다.
다음은 프로토타입입니다:
시간이 오래 걸릴지도 모른다고 생각하실 수도 있습니다. yatta yatta yatta. 그러나 이 작업은 약 6시간 밖에 걸리지 않았지만(전원 문제가 있었기 때문에) 위의 예와 같이 설정하는 데 약 30분이 소요될 수 있습니다. 모든 코드와 그림이 아래에 있으므로 다음 단계에서 혼란스럽다면 계속 진행하여 아래 그림/코드를 살펴보세요.
다음은 모든 단계입니다.
카드 스캔을 시작하고 Telnet/TCP 서버로 보내기 전에 몇 가지 라이브러리가 필요합니다. 여기에서 UIPEthernet을 받으세요 https://github.com/ntruchsess/arduino_uip
여기에서 MFRC522를 받으세요 https://github.com/miguelbalboa/rfid
Program Files(x86)/Arduino/Libraries/ Restart arduino
에 이 두 라이브러리를 모두 넣습니다.
그리고 아마도 수정해야 할 다른 코드:
arduino가 계속 느려지면 다음 트릭을 시도하여 문제를 해결하세요.
Windows 방화벽 끄기
그렇지 않으면 IP 주소를 입력했거나 연결 주소를 잘못 입력했을 수 있습니다.
<리>문제가 있으면 [email protected]으로 연락하십시오.
도어록 시스템에 대한 코드가 없다는 것을 기억하십시오. 저는 코드가 없기 때문에 이를 추적 시스템뿐만 아니라 도어록 추적 시스템으로 사용하려면 몇 가지 코드를 추가해야 합니다.
아래를 읽어주세요:
섹션> <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">/* * ------------를 조정하기만 하면 됩니다. ---------------------- * MFRC522 Arduino * 리더/PCD 나노 v3 * 신호 핀 핀 * -------------- -------------------- * RST/리셋 RST D9 * SPI SS NSS D10 * SPI MOSI MOSI D11 * SPI MISO MISO D12 * SPI SCK SCK D13 */// 설치해야 할 첫 번째 라이브러리는 UIP 이더넷 두 번째는 MFRC522입니다. 둘 다 GITHUB에 있습니다#include#include //키 선택을 위해#include // RFID 키 라이브러리#define RST_PIN 9 // 구성 가능, 위의 일반적인 핀 레이아웃 참조 - 이것은 Arduino Nano용입니다. - RFID용#define SS_PIN 8 //이더넷 모듈이 10바이트 섹터 =0을 사용하기 때문에 RFID에 8을 사용하고 있습니다. 바이트 blockAddr =0; ////////카드의 특정 섹터/블록에 액세스합니다. 트레일러 블록은 마지막 블록 바이트입니다. trailerBlock =1;int red =3;int blue =4; //RGB LED용 핀 녹색 =5;EthernetClient 클라이언트; //이더넷 인스턴스MFRC522 mfrc522(SS_PIN, RST_PIN); // MFRC522 instance.MFRC522::MIFARE_Key 키 생성; // 키 instancesigned 긴 시간 초과 설정; //시간이 초과되어 FOREVERvoid setup(){ //UI BEGIN pinMode(red, OUTPUT); 핀모드(파란색, 출력); //RGB LED pinMode 초기화(녹색, OUTPUT); 초기화(); // led를 끈 상태에서 시작합니다. Serial.begin(9600); //초당 9600비트의 속도로 컴퓨터 연결 시작 //UI END //ETHERNET MODULE INITIAL SPI.begin(); // SPI 버스 초기화 uint8_t mac[6] ={0x00,0x01,0x02,0x03,0x04,0x05}; //MAC =000102030405 IP주소 mip(192,168,1,160); //IP =192.168.1.160 IP주소 mdns(8,8,8,8); //DNS =8.8.8.8 IP 주소 mgate(192,168,1,5); //게이트웨이 =192.168.1.5 IP주소 msubnet(255,255,255,0); //SUBNET =255.255.255.0 Ethernet.begin(mac, mip, mdns, mgate, msubnet); //위를 사용하여 연결 Serial.println("성공적인 연결"); // 이더넷의 끝 for(int t =255; t> 0; t--) { analogWrite(red, t); ////더 많은 것을 보여주지만 이더넷의 SPI와 RFID delay(10) 사이에 최소한 1초를 둡니다. } //RFID 초기화 mfrc522.PCD_Init(); // MFRC522 카드 초기화 for (byte i =0; i <6; i++) { // 키 준비(키 A와 키 B 모두로 사용) key.keyByte[i] =0xFF; // 공장 출하시 칩 출하시 기본값인 FFFFFFFFFFFFh 사용 } Serial.println(F("Scan a Card")); dump_byte_array(key.keyByte, MFRC522::MF_KEY_SIZE); //키 바이트 크기 가져오기 타임아웃 =0; 지연(2000); Reset();}//END RFID INITIALvoid loop() //영구 실행{ // 새 카드 찾기 if ( ! mfrc522.PICC_IsNewCardPresent()) { digitalWrite(blue, LOW); 반품; } // 카드 중 하나 선택 if ( ! mfrc522.PICC_ReadCardSerial()) return; 디지털 쓰기(파란색, 높음); //사용자에게 카드를 읽었음을 보여줍니다. byte piccType =mfrc522.PICC_GetType(mfrc522.uid.sak); // Mifare 카드와의 호환성 확인 if ( piccType !=MFRC522::PICC_TYPE_MIFARE_MINI &&piccType !=MFRC522::PICC_TYPE_MIFARE_1K &&piccType !=MFRC522::PICC_TYPE_MIFARE_4K) { Error 반품; } 바이트 상태; 바이트 버퍼[18]; 바이트 크기 =sizeof(버퍼); 상태 =mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, trailerBlock, &key, &(mfrc522.uid)); if (상태 !=MFRC522::STATUS_OK) { Serial.print(F("PCD_Authenticate() 실패:")); Serial.println(mfrc522.GetStatusCodeName(상태)); 오류(); 반품; } // 블록에서 데이터 읽기 status =mfrc522.MIFARE_Read(blockAddr, buffer, &size); if (상태 !=MFRC522::STATUS_OK) { Serial.print(F("MIFARE_Read() 실패:")); Serial.println(mfrc522.GetStatusCodeName(상태)); 오류(); } // PICC 중지 mfrc522.PICC_HaltA(); // PCD에서 암호화 중지 mfrc522.PCD_StopCrypto1(); // 읽기 완료 후 서버로 카드 보내기 if (client.connect(IPAddress(192,168,1,100),23)) { timeout =millis()+1000; Serial.println("클라이언트 연결됨"); const 문자열 ID =dump_byte_array(버퍼, 크기); client.println(ID); Serial.println("보낸:" + ID); 지연(10); while(client.available()==0) { if (timeout - millis() <0) goto close; } 정수 크기; while((크기 =client.available())> 0) { uint8_t* msg =(uint8_t*)malloc(크기); 크기 =client.read(msg,크기); Serial.write(msg,크기); if(크기 ==sizeof("g") - 1) { 통과(); } else { 오류(); } 무료(메시지); }닫기:client.stop(); } else { Serial.println("서버에 연결할 수 없습니다."); 오류(); } //서버로 보내기 끝 Reset(); //LED가 켜지지 않은 루프 다시 시작}// 버퍼 어레이를 대문자로 된 단일 문자열로 전환하여 섹터 ID와 BLOCKString dump_byte_array(byte *buffer, byte bufferSize) { String out =""; for (byte i =0; i 서버 코드의 예Python
다음은 serverimport SocketServerclass MyTCPHandler(SocketServer.BaseRequestHandler)를 사용하는 방법의 완전한 예입니다. def handle(self):# self.request는 클라이언트에 연결된 TCP 소켓입니다. self.data =self.request.recv (1024).strip() print "{} write:".format(self.client_address[0]) print self.data """ SQL STUFF HERE if(self.data ==SQL NAME 또는 무언가) { self.request .sendall("g")//좋은 보내기 // INSERT TIME AND LOCATION INTO SQL HERE { else { self.request.sendall("bb")//send 나쁜 //아무것도 arduino 잘못된 데이터로 보내지 마십시오 } "" " self.request.sendall("g")if __name__ =="__main__":HOST, PORT ="", 23 서버 =SocketServer.TCPServer((HOST, PORT), MyTCPHandler) server.serve_forever()GitHub의 업데이트된 코드
여기에서 가장 업데이트된 코드를 얻을 수 있습니다.https://github.com/smerkousdavid/InternetRFIDTags
제조공정
수많은 Arduino 프로젝트를 실행합니까? 그리고 엄청난 양의 중요한 정보와 로그 데이터를 저장해야 합니까? 해결책은 Arduino SD 카드를 사용하는 것입니다. 어떻게 작동합니까? 이 문서에서는 기기가 무엇인지, 연결하는 방법, 사용하는 방법 등 기기에 대해 알아야 할 모든 정보를 제공합니다. 계속 읽어서 알아야 할 모든 정보를 찾아보세요. Arduino에서 SD란 무엇입니까? 아두이노 SD 카드 이미지 출처:Pixlr SD 카드 또는 마이크로 SD 카드는 두 가지 주요 구성 요소가 있는 장치입니다. 그리고 이러한
스위칭 전원 공급 장치 기술은 최근 몇 년 동안 고집적 칩의 개발과 함께 소형, 고주파 및 고효율로의 발전을 목격했습니다. 고집적 제어 칩은 설계 소프트웨어에 따라 스위치 전원 공급 장치를 설계하기가 비교적 쉽기 때문에 필요한 주변 부품을 단순화합니다. 그러나 고집적화의 문제는 낮은 설계 자유도, 낮은 칩 가용성 및 낮은 가격으로 이어집니다. 각 제조업체에서 개발한 설계 소프트웨어는 일부 유형의 고유한 칩을 시뮬레이션할 수 있습니다. 실제 적용에서는 우수한 작동 조건과 함께 제품 요구 사항과 호환되는 스위치 전원 공급 장치를 설계하