This content is RFID Reader (Passive) Using Wizwiki-W7500 + RFID-RC522 + Buzzer
Dependencies: MFRC522 WIZnetInterface mbed
Fork of TCPEchoServer-WIZwiki-W7500 by
main.cpp
00001 #include "mbed.h" 00002 // Ethernet 00003 #include "EthernetInterface.h" 00004 // MFRC522(RFID) 00005 #include "MFRC522.h" 00006 00007 #define WEB_SERVER_PORT 80 00008 00009 Serial pc(USBTX, USBRX); 00010 00011 // MFRC522 reset (pick another D pin if you need D8) 00012 #define MF_RESET D8 00013 // Buzzer 00014 #define VOLUME 0.02 00015 #define BPM 100.0 00016 // LED 00017 DigitalOut Led(LED1); 00018 00019 // Buzzer 00020 PwmOut pwm_pin(D3); 00021 00022 float beat_duration; 00023 // Plays a sound with the defined frequency, duration, and volume 00024 void playNote(float frequency, float duration, float volume) { 00025 pwm_pin.period(1.0/(double)frequency); 00026 pwm_pin = ((double)volume/2.0); 00027 wait(duration); 00028 pwm_pin = 0.0; 00029 } 00030 00031 // CARD number 00032 uint8_t CARD_1 = 0x44; 00033 uint8_t CARD_2 = 0xCB; 00034 uint8_t CARD_3 = 0x2A; 00035 uint8_t CARD_4 = 0xA4; 00036 00037 uint8_t CARD_5 = 0xA2; 00038 uint8_t CARD_6 = 0xCE; 00039 uint8_t CARD_7 = 0xEC; 00040 uint8_t CARD_8 = 0xD5; 00041 00042 // RC522 SPI communication 00043 MFRC522 RfChip (D11, D12, D13, D10, MF_RESET); 00044 00045 //HTTP WEB SERVER 00046 char recv_buffer[1024] = {0,}; 00047 char echoHeader[1024] = {0,}; 00048 char * findrfid = 0; 00049 char change_rfid[4] = {1,2,3,4}; 00050 00051 int main (void) 00052 { 00053 // Init. RC522 Chip 00054 RfChip.PCD_Init(); 00055 pc.printf("Init end\r\n"); 00056 // WEB SERVER Start 00057 printf("Wait a second...\r\n"); 00058 // IP Setting.. 00059 #ifdef dhcp 00060 uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x00, 0x01, 0x02}; 00061 EthernetInterface eth; 00062 eth.init(mac_addr); //Use DHCP 00063 eth.connect(); 00064 #else 00065 uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x00, 0x01, 0x02}; 00066 char ip_addr[] = "192.168.1.111"; 00067 char subnet_mask[] = "255.255.255.0"; 00068 char gateway_addr[] = "192.168.1.1"; 00069 EthernetInterface eth; 00070 eth.init(mac_addr, ip_addr, subnet_mask, gateway_addr); //Not Use DHCP 00071 00072 while(1) { //Wait link up 00073 if(eth.link() == true) 00074 break; 00075 } 00076 printf("Check Ethernet Link\r\n"); 00077 printf("Link up\r\n"); 00078 #endif 00079 00080 //eth.connect(); 00081 printf("Server IP Address is %s\r\n", eth.getIPAddress()); 00082 00083 TCPSocketServer server; 00084 server.bind(WEB_SERVER_PORT); 00085 printf("bind complete\r\n"); 00086 server.listen(); 00087 printf("listen complete\r\n"); 00088 while (true) 00089 { 00090 printf("Wait for new connection...\r\n"); 00091 TCPSocketConnection client; 00092 server.accept(client); 00093 client.set_blocking(false, 15000); // Timeout after (1.5)s 00094 00095 printf("Connection from: %s\r\n", client.get_address()); 00096 00097 while (true) { 00098 int n = client.receive(recv_buffer, sizeof(recv_buffer)); 00099 if (n <= 0) break; // n = n < 0 00100 00101 // print received message to terminal 00102 recv_buffer[n] = '\0'; 00103 printf("Received message from Client :'%s'\r\n",recv_buffer); 00104 if(recv_buffer[0] == 'G' && recv_buffer[1] == 'E' && recv_buffer[2] == 'T') 00105 { 00106 printf("GET request incomming.\n\r"); 00107 00108 //setup http response header + data 00109 char send_buffer[] = "<!DOCTYPE HTML>\r\n\n\r<html>\n\r\n\r\n\r<head>\n\r<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\r<title>Wizwiki-W7500 Web Server</title>\n\r<meta name=\"generator\">\n\r</head>\n\r\n\r<body bgcolor=\"white\" text=\"black\" link=\"blue\" vlink=\"purple\" alink=\"red\">\r\n<p>Wizwiki-W7500 Home-Automation RFID</p>\r\n<p>Read RFID = $$$$$$$$$$$</p>\r\n</body>\n\r</html>\r\n"; 00110 00111 findrfid = strstr(send_buffer, "$$$$$$$$$$$"); 00112 memset(findrfid,0,11); 00113 sprintf(change_rfid, "%X,%X,%X,%X", RfChip.uid.uidByte[0],RfChip.uid.uidByte[1],RfChip.uid.uidByte[2],RfChip.uid.uidByte[3]); 00114 memcpy(findrfid,change_rfid,11); 00115 00116 sprintf(echoHeader,"HTTP/1.1 200 OK\n\rContent-Length: %d\n\rContent-Type: text/html\n\rConnection: Closen\n\rRefresh: 5\n\r\n\r\n\r",strlen(send_buffer)); 00117 client.send(echoHeader,strlen(echoHeader)); 00118 client.send(send_buffer,strlen(send_buffer)); 00119 00120 // RFID Area 00121 // Look for new cards 00122 if ( ! RfChip.PICC_IsNewCardPresent()) 00123 { 00124 wait_ms(500); 00125 continue; 00126 } 00127 // Select one of the cards 00128 if ( ! RfChip.PICC_ReadCardSerial()) 00129 { 00130 wait_ms(500); 00131 continue; 00132 } 00133 // Print Card UID 00134 pc.printf("Card UID: "); 00135 for (uint8_t i = 0; i < RfChip.uid.size; i++) 00136 { 00137 pc.printf(" %X02", RfChip.uid.uidByte[i]); 00138 } 00139 pc.printf("\n\r"); 00140 // Print Card type 00141 uint8_t piccType = RfChip.PICC_GetType(RfChip.uid.sak); 00142 pc.printf("PICC Type: %s \n\r", RfChip.PICC_GetTypeName(piccType)); 00143 wait_ms(1000); 00144 00145 // Show RFID Tag 00146 if((RfChip.uid.uidByte[0] == CARD_1) && (RfChip.uid.uidByte[1] == CARD_2) && (RfChip.uid.uidByte[2] == CARD_3) && (RfChip.uid.uidByte[3] == CARD_4)) 00147 { 00148 // Buzzer Sound 00149 pc.printf("TAG Read !\r\n"); 00150 beat_duration = 60.0 / BPM; 00151 playNote(999.999, (0.75 * (double)beat_duration), VOLUME); 00152 } 00153 // Show RFID Card 00154 else if((RfChip.uid.uidByte[0] == CARD_5) && (RfChip.uid.uidByte[1] == CARD_6) && (RfChip.uid.uidByte[2] == CARD_7) && (RfChip.uid.uidByte[3] == CARD_8)) 00155 { 00156 pc.printf("CARD Read !\r\n"); 00157 beat_duration = 60.0 / BPM; 00158 playNote(111.111, (0.75 * (double)beat_duration), VOLUME); 00159 } 00160 } 00161 if (n <= 0) break; 00162 } 00163 client.close(); 00164 } 00165 }
Generated on Fri Jul 15 2022 11:29:58 by
1.7.2
