แก้ให้แล้ว

Dependencies:   NOKIA_5110 mbed

Fork of Lost-Found_BOX by FRA221:A

Committer:
mustwillza
Date:
Mon Dec 07 14:43:15 2015 +0000
Revision:
7:725f5fb7e3a3
Parent:
6:6635082215c7
Child:
8:e683edc8a530
First Working : Integration Tested

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mustwillza 0:8b94afcb61eb 1 //Test of cheap 13.56 Mhz RFID-RC522 module from eBay
mustwillza 0:8b94afcb61eb 2 //This code is based on Martin Olejar's MFRC522 library. Minimal changes
mustwillza 0:8b94afcb61eb 3 //Adapted for Nucleo STM32 F401RE. Should work on other Nucleos too
mustwillza 0:8b94afcb61eb 4 //Connect as follows:
mustwillza 0:8b94afcb61eb 5 //RFID pins -> Nucleo header CN5 (Arduino-compatible header)
mustwillza 0:8b94afcb61eb 6 //----------------------------------------
mustwillza 0:8b94afcb61eb 7 //RFID IRQ=pin5 -> Not used. Leave open
mustwillza 0:8b94afcb61eb 8 //RFID MISO=pin4 -> Nucleo SPI_MISO=PA_6=D12
mustwillza 0:8b94afcb61eb 9 //RFID MOSI=pin3 -> Nucleo SPI_MOSI=PA_7=D11
mustwillza 0:8b94afcb61eb 10 //RFID SCK=pin2 -> Nucleo SPI_SCK =PA_5=D13
kantapon501 1:568e35232180 11 //RFID SDA=pin1 -> Nucleo SPI_CS =PB_6=D10 SlaveSelect
mustwillza 0:8b94afcb61eb 12 //RFID RST=pin7 -> Nucleo =PA_9=D8
kantapon501 5:8e3bd2501b17 13 //3.3V and Gnd to the respective pins
mustwillza 0:8b94afcb61eb 14 #include "mbed.h"
mustwillza 0:8b94afcb61eb 15 #include "MFRC522.h"
kantapon501 1:568e35232180 16 #include "NOKIA_5110.h" // Nucleo Pin for MFRC522 reset (pick another D pin if you need D8)
kantapon501 2:5764ad3214cd 17 #define MF_RESET D9
mustwillza 4:75346bd905c0 18 #include "speaker.h"
mustwillza 7:725f5fb7e3a3 19 #include "myESP.h"
mustwillza 7:725f5fb7e3a3 20 #include "myRFID.h"
mustwillza 7:725f5fb7e3a3 21 #include "myLCD4884.h"
mustwillza 0:8b94afcb61eb 22 DigitalOut LedGreen(LED1);
kantapon501 1:568e35232180 23 DigitalOut spi_address[2] = {SPI_CS,PB_4};
mustwillza 0:8b94afcb61eb 24 //Serial connection to PC for output
mustwillza 7:725f5fb7e3a3 25 Serial esp(D8, D2); //tx rx
mustwillza 0:8b94afcb61eb 26 Serial pc(SERIAL_TX, SERIAL_RX);
mustwillza 4:75346bd905c0 27 Speakers speak(D3);
mustwillza 4:75346bd905c0 28 DigitalOut lock(PB_13);
mustwillza 0:8b94afcb61eb 29 MFRC522 RfChip (SPI_MOSI, SPI_MISO, SPI_SCK, SPI_CS, MF_RESET);
kantapon501 6:6635082215c7 30 char buffers[5]={'\0'};
kantapon501 6:6635082215c7 31 char IDs[17]={'\0'};
mustwillza 7:725f5fb7e3a3 32
mustwillza 7:725f5fb7e3a3 33 void wifiInitial(){
mustwillza 7:725f5fb7e3a3 34 pc.baud(115200);
mustwillza 7:725f5fb7e3a3 35 esp.baud(9600);
mustwillza 7:725f5fb7e3a3 36 string ssid = "1544_2G";
mustwillza 7:725f5fb7e3a3 37 string pass = "fiborobot" ;
mustwillza 7:725f5fb7e3a3 38
mustwillza 7:725f5fb7e3a3 39 if(setupESP(ssid,pass) == 1) {
mustwillza 7:725f5fb7e3a3 40 pc.printf("System connected to %s with %s as password\n",ssid.c_str(),pass.c_str());
mustwillza 7:725f5fb7e3a3 41 pc.printf("System Initialized :: ESP8266 Module Ready!\n");
mustwillza 7:725f5fb7e3a3 42 wait(2);
mustwillza 7:725f5fb7e3a3 43 }
kantapon501 1:568e35232180 44 }
mustwillza 7:725f5fb7e3a3 45
mustwillza 7:725f5fb7e3a3 46
mustwillza 0:8b94afcb61eb 47 int main(void) {
mustwillza 7:725f5fb7e3a3 48 // Init. LCD Pin
kantapon501 1:568e35232180 49 LcdPins myPins;
kantapon501 1:568e35232180 50 myPins.sce = PB_4; //D5 ActiveLow SlaveSelect
mustwillza 0:8b94afcb61eb 51 myPins.rst = PB_10; //D6
kantapon501 1:568e35232180 52 myPins.dc = PA_8; //D7
kantapon501 1:568e35232180 53 myPins.mosi = PA_7; //SPI_MOSI;
mustwillza 0:8b94afcb61eb 54 myPins.miso = NC;
mustwillza 0:8b94afcb61eb 55 myPins.sclk = PA_5; //SPI_SCK;
mustwillza 7:725f5fb7e3a3 56
mustwillza 7:725f5fb7e3a3 57 // Init. LCD Chip
kantapon501 1:568e35232180 58 NokiaLcd myLcd( myPins );
mustwillza 0:8b94afcb61eb 59 myLcd.InitLcd(); // LCD is reset and DDRAM is cleared
mustwillza 7:725f5fb7e3a3 60 myLcd.DrawString("System Initializing...");
mustwillza 0:8b94afcb61eb 61 myLcd.stop();
kantapon501 1:568e35232180 62
mustwillza 7:725f5fb7e3a3 63 // Init. esp8266
mustwillza 7:725f5fb7e3a3 64 wifiInitial();
mustwillza 7:725f5fb7e3a3 65 char name[20];
mustwillza 7:725f5fb7e3a3 66 char sid[20];
mustwillza 7:725f5fb7e3a3 67 char tel[10];
mustwillza 7:725f5fb7e3a3 68 char stat_uid[3];
mustwillza 7:725f5fb7e3a3 69
mustwillza 7:725f5fb7e3a3 70 // Init.RFID Variable
mustwillza 7:725f5fb7e3a3 71 uint8_t RFID[10];
mustwillza 7:725f5fb7e3a3 72 int checker = 0;
mustwillza 7:725f5fb7e3a3 73 int checks = 0;
mustwillza 7:725f5fb7e3a3 74 int mode = 0;
mustwillza 7:725f5fb7e3a3 75 int submode = 0;
kantapon501 1:568e35232180 76 pc.printf("starting...\n");
mustwillza 7:725f5fb7e3a3 77
kantapon501 1:568e35232180 78 // Init. RC522 Chip
kantapon501 1:568e35232180 79 RfChip.PCD_Init();
kantapon501 1:568e35232180 80 pc.printf("Begin RFID!\n");
mustwillza 7:725f5fb7e3a3 81
mustwillza 7:725f5fb7e3a3 82 /* ===== System Initialized ===== */
mustwillza 7:725f5fb7e3a3 83 myLcd.InitLcd();
mustwillza 7:725f5fb7e3a3 84 myLcd.DrawString("Welcome to LOST & FOUND BOX V.1");
mustwillza 7:725f5fb7e3a3 85 myLcd.stop();
mustwillza 7:725f5fb7e3a3 86
mustwillza 7:725f5fb7e3a3 87 getStatus("192.168.1.88","/l-f-box/getdata.php?check=1",stat_uid);
mustwillza 7:725f5fb7e3a3 88 if(stat_uid[0] > 0){
mustwillza 7:725f5fb7e3a3 89 mode = 0; //It have an item
mustwillza 7:725f5fb7e3a3 90 }else{
mustwillza 7:725f5fb7e3a3 91 mode = 1; //Doesn't have an item
mustwillza 7:725f5fb7e3a3 92 }
mustwillza 7:725f5fb7e3a3 93
mustwillza 7:725f5fb7e3a3 94 while(mode == 0){
mustwillza 7:725f5fb7e3a3 95 if(submode == 0){
mustwillza 7:725f5fb7e3a3 96 myLcd.InitLcd();
mustwillza 7:725f5fb7e3a3 97 myLcd.DrawString("PLEASE TAP A CARD");
mustwillza 7:725f5fb7e3a3 98 myLcd.stop();
mustwillza 7:725f5fb7e3a3 99 submode++;
mustwillza 7:725f5fb7e3a3 100 }
mustwillza 7:725f5fb7e3a3 101 if(submode == 1){
mustwillza 7:725f5fb7e3a3 102 if ( ! RfChip.PICC_IsNewCardPresent())
mustwillza 7:725f5fb7e3a3 103 {
mustwillza 7:725f5fb7e3a3 104 wait_ms(500);
mustwillza 7:725f5fb7e3a3 105 continue;
mustwillza 7:725f5fb7e3a3 106 }
mustwillza 7:725f5fb7e3a3 107 // Select one of the cards
mustwillza 7:725f5fb7e3a3 108 if ( ! RfChip.PICC_ReadCardSerial())
mustwillza 7:725f5fb7e3a3 109 {
mustwillza 7:725f5fb7e3a3 110 wait_ms(500);
mustwillza 7:725f5fb7e3a3 111 continue;
mustwillza 7:725f5fb7e3a3 112 }
mustwillza 7:725f5fb7e3a3 113 speak.speak();
mustwillza 7:725f5fb7e3a3 114 submode ++;
mustwillza 7:725f5fb7e3a3 115 }
mustwillza 7:725f5fb7e3a3 116 if(submode == 2){
mustwillza 7:725f5fb7e3a3 117 wait(0.5);
mustwillza 7:725f5fb7e3a3 118 myLcd.InitLcd();
mustwillza 7:725f5fb7e3a3 119 myLcd.DrawString("WAITING...");
mustwillza 7:725f5fb7e3a3 120 myLcd.stop();
mustwillza 7:725f5fb7e3a3 121 GetID(RFID);
mustwillza 7:725f5fb7e3a3 122 getDataHTTP("192.168.1.88","/l-f-box/getdata.php?rfid=",IDs,sid,name,tel);
mustwillza 7:725f5fb7e3a3 123 submode ++;
mustwillza 7:725f5fb7e3a3 124 }
mustwillza 7:725f5fb7e3a3 125 if(submode == 3){
mustwillza 7:725f5fb7e3a3 126 wait(0.5);
mustwillza 7:725f5fb7e3a3 127 myLcd.InitLcd();
mustwillza 7:725f5fb7e3a3 128 myLcd.DrawString("NAME : ");
mustwillza 7:725f5fb7e3a3 129 myLcd.DrawString(name);
mustwillza 7:725f5fb7e3a3 130 myLcd.SetXY(0,1);
mustwillza 7:725f5fb7e3a3 131 myLcd.DrawString("TEL : ");
mustwillza 7:725f5fb7e3a3 132 myLcd.DrawString(tel);
mustwillza 7:725f5fb7e3a3 133 myLcd.stop();
mustwillza 7:725f5fb7e3a3 134 }
mustwillza 7:725f5fb7e3a3 135 }
mustwillza 7:725f5fb7e3a3 136
mustwillza 7:725f5fb7e3a3 137
mustwillza 7:725f5fb7e3a3 138
mustwillza 7:725f5fb7e3a3 139
mustwillza 7:725f5fb7e3a3 140
mustwillza 7:725f5fb7e3a3 141 /*
kantapon501 1:568e35232180 142 while (true) {
mustwillza 0:8b94afcb61eb 143 LedGreen = 1;
mustwillza 0:8b94afcb61eb 144 // Look for new cards
mustwillza 0:8b94afcb61eb 145 if ( ! RfChip.PICC_IsNewCardPresent())
mustwillza 0:8b94afcb61eb 146 {
mustwillza 0:8b94afcb61eb 147 wait_ms(500);
mustwillza 0:8b94afcb61eb 148 continue;
mustwillza 0:8b94afcb61eb 149 }
mustwillza 0:8b94afcb61eb 150 // Select one of the cards
mustwillza 0:8b94afcb61eb 151 if ( ! RfChip.PICC_ReadCardSerial())
mustwillza 0:8b94afcb61eb 152 {
mustwillza 0:8b94afcb61eb 153 wait_ms(500);
mustwillza 0:8b94afcb61eb 154 continue;
mustwillza 0:8b94afcb61eb 155 }
mustwillza 0:8b94afcb61eb 156 LedGreen = 0;
kantapon501 5:8e3bd2501b17 157 myLcd.InitLcd();
kantapon501 5:8e3bd2501b17 158 myLcd.DrawString("Ready");
kantapon501 5:8e3bd2501b17 159 myLcd.stop();
kantapon501 5:8e3bd2501b17 160 checker = check(RFID);
kantapon501 5:8e3bd2501b17 161 if(checks == 1)
kantapon501 1:568e35232180 162 {
kantapon501 5:8e3bd2501b17 163 if (checker == 1)
kantapon501 1:568e35232180 164 {
kantapon501 5:8e3bd2501b17 165 pc.printf("Right\n");
kantapon501 5:8e3bd2501b17 166 myLcd.InitLcd();
kantapon501 5:8e3bd2501b17 167 myLcd.DrawString("Right");
kantapon501 5:8e3bd2501b17 168 myLcd.stop();
kantapon501 5:8e3bd2501b17 169 checks = 0;
kantapon501 5:8e3bd2501b17 170 speak.speakRight();
kantapon501 6:6635082215c7 171 strcpy(IDs,"");
kantapon501 5:8e3bd2501b17 172 continue;
kantapon501 1:568e35232180 173 }
kantapon501 5:8e3bd2501b17 174 else
kantapon501 5:8e3bd2501b17 175 {
kantapon501 5:8e3bd2501b17 176 pc.printf("Wrong!!\n");
kantapon501 5:8e3bd2501b17 177 myLcd.InitLcd();
kantapon501 5:8e3bd2501b17 178 myLcd.DrawString("Wrong!!");
kantapon501 5:8e3bd2501b17 179 myLcd.stop();
kantapon501 5:8e3bd2501b17 180 speak.speakWrong();
kantapon501 5:8e3bd2501b17 181 continue;
kantapon501 5:8e3bd2501b17 182 }
kantapon501 1:568e35232180 183 }
mustwillza 0:8b94afcb61eb 184 // Print Card UID
mustwillza 0:8b94afcb61eb 185 pc.printf("Card UID: ");
mustwillza 0:8b94afcb61eb 186 for (uint8_t i = 0; i < RfChip.uid.size; i++)
mustwillza 0:8b94afcb61eb 187 {
kantapon501 1:568e35232180 188 pc.printf(" %X", RfChip.uid.uidByte[i]);
mustwillza 0:8b94afcb61eb 189 }
kantapon501 5:8e3bd2501b17 190 checker = check(RFID);
mustwillza 4:75346bd905c0 191 speak.speak();
kantapon501 1:568e35232180 192 GetID(RFID);
kantapon501 3:c927196a726f 193 lock = 0;
kantapon501 6:6635082215c7 194 pc.printf("\n\r");
mustwillza 0:8b94afcb61eb 195 wait_ms(1000);
kantapon501 5:8e3bd2501b17 196 checks = 1;
kantapon501 1:568e35232180 197 }
mustwillza 7:725f5fb7e3a3 198 */
mustwillza 0:8b94afcb61eb 199 }