Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: MFRC522 WIZnetInterface mbed
Fork of TCPEchoServer-WIZwiki-W7500 by
Revision 12:f22ae34e1d95, committed 2015-08-26
- Comitter:
- najgh08
- Date:
- Wed Aug 26 10:55:22 2015 +0000
- Parent:
- 11:0da8667a9201
- Commit message:
- ..
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MFRC522.lib Wed Aug 26 10:55:22 2015 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/users/AtomX/code/MFRC522/#63d729186747
--- a/WIZnetInterface.lib Mon Jun 29 09:46:12 2015 +0000 +++ b/WIZnetInterface.lib Wed Aug 26 10:55:22 2015 +0000 @@ -1,1 +1,1 @@ -http://developer.mbed.org/teams/WIZnet/code/WIZnetInterface/#24a9f2df2145 +http://developer.mbed.org/teams/WIZnet/code/WIZnetInterface/#3b64df29662f
--- a/main.cpp Mon Jun 29 09:46:12 2015 +0000
+++ b/main.cpp Wed Aug 26 10:55:22 2015 +0000
@@ -1,56 +1,165 @@
#include "mbed.h"
+// Ethernet
#include "EthernetInterface.h"
+// MFRC522(RFID)
+#include "MFRC522.h"
-#define ECHO_SERVER_PORT 7
+#define WEB_SERVER_PORT 80
+
+Serial pc(USBTX, USBRX);
+
+// MFRC522 reset (pick another D pin if you need D8)
+#define MF_RESET D8
+// Buzzer
+#define VOLUME 0.02
+#define BPM 100.0
+// LED
+DigitalOut Led(LED1);
+
+// Buzzer
+PwmOut pwm_pin(D3);
+
+float beat_duration;
+// Plays a sound with the defined frequency, duration, and volume
+void playNote(float frequency, float duration, float volume) {
+ pwm_pin.period(1.0/(double)frequency);
+ pwm_pin = ((double)volume/2.0);
+ wait(duration);
+ pwm_pin = 0.0;
+}
+
+// CARD number
+uint8_t CARD_1 = 0x44;
+uint8_t CARD_2 = 0xCB;
+uint8_t CARD_3 = 0x2A;
+uint8_t CARD_4 = 0xA4;
+
+uint8_t CARD_5 = 0xA2;
+uint8_t CARD_6 = 0xCE;
+uint8_t CARD_7 = 0xEC;
+uint8_t CARD_8 = 0xD5;
+
+// RC522 SPI communication
+MFRC522 RfChip (D11, D12, D13, D10, MF_RESET);
+
+//HTTP WEB SERVER
+char recv_buffer[1024] = {0,};
+char echoHeader[1024] = {0,};
+char * findrfid = 0;
+char change_rfid[4] = {1,2,3,4};
int main (void)
{
+ // Init. RC522 Chip
+ RfChip.PCD_Init();
+ pc.printf("Init end\r\n");
+ // WEB SERVER Start
printf("Wait a second...\r\n");
- uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x00, 0x01, 0x02};
- EthernetInterface eth;
- eth.init(mac_addr); //Use DHCP
- eth.connect();
+ // IP Setting..
+ #ifdef dhcp
+ uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x00, 0x01, 0x02};
+ EthernetInterface eth;
+ eth.init(mac_addr); //Use DHCP
+ eth.connect();
+ #else
+ uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x00, 0x01, 0x02};
+ char ip_addr[] = "192.168.1.111";
+ char subnet_mask[] = "255.255.255.0";
+ char gateway_addr[] = "192.168.1.1";
+ EthernetInterface eth;
+ eth.init(mac_addr, ip_addr, subnet_mask, gateway_addr); //Not Use DHCP
+
+ while(1) { //Wait link up
+ if(eth.link() == true)
+ break;
+ }
+ printf("Check Ethernet Link\r\n");
+ printf("Link up\r\n");
+ #endif
+
+ //eth.connect();
printf("Server IP Address is %s\r\n", eth.getIPAddress());
TCPSocketServer server;
- server.bind(ECHO_SERVER_PORT);
+ server.bind(WEB_SERVER_PORT);
+ printf("bind complete\r\n");
server.listen();
-
+ printf("listen complete\r\n");
while (true)
- {
+ {
printf("Wait for new connection...\r\n");
TCPSocketConnection client;
server.accept(client);
client.set_blocking(false, 15000); // Timeout after (1.5)s
printf("Connection from: %s\r\n", client.get_address());
- char buffer[256];
- while (true) {
- int n = client.receive(buffer, sizeof(buffer));
- if (n <= 0) break;
+
+ while (true) {
+ int n = client.receive(recv_buffer, sizeof(recv_buffer));
+ if (n <= 0) break; // n = n < 0
// print received message to terminal
- buffer[n] = '\0';
- printf("Received message from Client :'%s'\r\n",buffer);
-
- // reverse the message
- char temp;
- for(int f = 0, l = n-1; f<l; f++,l--){
- temp = buffer[f];
- buffer[f] = buffer[l];
- buffer[l] = temp;
+ recv_buffer[n] = '\0';
+ printf("Received message from Client :'%s'\r\n",recv_buffer);
+ if(recv_buffer[0] == 'G' && recv_buffer[1] == 'E' && recv_buffer[2] == 'T')
+ {
+ printf("GET request incomming.\n\r");
+
+ //setup http response header + data
+ 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";
+
+ findrfid = strstr(send_buffer, "$$$$$$$$$$$");
+ memset(findrfid,0,11);
+ sprintf(change_rfid, "%X,%X,%X,%X", RfChip.uid.uidByte[0],RfChip.uid.uidByte[1],RfChip.uid.uidByte[2],RfChip.uid.uidByte[3]);
+ memcpy(findrfid,change_rfid,11);
+
+ 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));
+ client.send(echoHeader,strlen(echoHeader));
+ client.send(send_buffer,strlen(send_buffer));
+
+ // RFID Area
+ // Look for new cards
+ if ( ! RfChip.PICC_IsNewCardPresent())
+ {
+ wait_ms(500);
+ continue;
}
-
- // print reversed message to terminal
- printf("Sending message to Client: '%s'\r\n",buffer);
-
- // Echo received message back to client
- client.send_all(buffer, n);
+ // Select one of the cards
+ if ( ! RfChip.PICC_ReadCardSerial())
+ {
+ wait_ms(500);
+ continue;
+ }
+ // Print Card UID
+ pc.printf("Card UID: ");
+ for (uint8_t i = 0; i < RfChip.uid.size; i++)
+ {
+ pc.printf(" %X02", RfChip.uid.uidByte[i]);
+ }
+ pc.printf("\n\r");
+ // Print Card type
+ uint8_t piccType = RfChip.PICC_GetType(RfChip.uid.sak);
+ pc.printf("PICC Type: %s \n\r", RfChip.PICC_GetTypeName(piccType));
+ wait_ms(1000);
+
+ // Show RFID Tag
+ 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))
+ {
+ // Buzzer Sound
+ pc.printf("TAG Read !\r\n");
+ beat_duration = 60.0 / BPM;
+ playNote(999.999, (0.75 * (double)beat_duration), VOLUME);
+ }
+ // Show RFID Card
+ 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))
+ {
+ pc.printf("CARD Read !\r\n");
+ beat_duration = 60.0 / BPM;
+ playNote(111.111, (0.75 * (double)beat_duration), VOLUME);
+ }
+ }
if (n <= 0) break;
}
-
client.close();
}
-
-}
-
+}
\ No newline at end of file
--- a/mbed.bld Mon Jun 29 09:46:12 2015 +0000 +++ b/mbed.bld Wed Aug 26 10:55:22 2015 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/mbed_official/code/mbed/builds/7cff1c4259d7 \ No newline at end of file +http://mbed.org/users/mbed_official/code/mbed/builds/8ed44a420e5c \ No newline at end of file
