guvenlik sistemi
Dependencies: mbed wave_player mbed-rtos MFRC522 SDFileSystem TextLCD keypad DHT11
main.cpp@1:f01aa6d55b26, 2019-05-22 (annotated)
- Committer:
- marvas
- Date:
- Wed May 22 11:08:14 2019 +0000
- Revision:
- 1:f01aa6d55b26
- Parent:
- 0:d20cd68db570
guvenlik sistemi
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
marvas | 0:d20cd68db570 | 1 | #include "mbed.h" |
marvas | 0:d20cd68db570 | 2 | #include "MFRC522.h" |
marvas | 0:d20cd68db570 | 3 | #include "TextLCD.h" |
marvas | 0:d20cd68db570 | 4 | #include "Keypad.h" |
marvas | 0:d20cd68db570 | 5 | #include "rtos.h" |
marvas | 0:d20cd68db570 | 6 | #include <string.h> |
marvas | 0:d20cd68db570 | 7 | #include <iostream> |
marvas | 0:d20cd68db570 | 8 | #include "SDFileSystem.h" |
marvas | 1:f01aa6d55b26 | 9 | #include "DHT11.h" |
marvas | 1:f01aa6d55b26 | 10 | #include "wave_player.h" |
marvas | 1:f01aa6d55b26 | 11 | //Thread sicaklik; |
marvas | 1:f01aa6d55b26 | 12 | //https://audio.online-convert.com/convert-to-wav |
marvas | 1:f01aa6d55b26 | 13 | Timer isizaman; |
marvas | 1:f01aa6d55b26 | 14 | volatile char deger;//değişken bütün bloklarda kullanılabilecek şekle geldi. Public yapıldı |
marvas | 1:f01aa6d55b26 | 15 | DHT11 isi(D9); |
marvas | 1:f01aa6d55b26 | 16 | |
marvas | 1:f01aa6d55b26 | 17 | AnalogOut DACout(PA_4); |
marvas | 1:f01aa6d55b26 | 18 | wave_player waver(&DACout); |
marvas | 1:f01aa6d55b26 | 19 | |
marvas | 0:d20cd68db570 | 20 | SDFileSystem sd(PC_12, PC_11, PC_10, PD_2, "sd"); // mosi, miso, sclk, cs(scl) |
marvas | 0:d20cd68db570 | 21 | DigitalOut lamba(PA_13);//sinyal pini pa_13 |
marvas | 0:d20cd68db570 | 22 | DigitalOut klima(PA_14); |
marvas | 0:d20cd68db570 | 23 | AnalogIn ldr(A5); |
marvas | 0:d20cd68db570 | 24 | float ldroku; |
marvas | 0:d20cd68db570 | 25 | unsigned char c; |
marvas | 0:d20cd68db570 | 26 | |
marvas | 0:d20cd68db570 | 27 | Serial pc(USBTX,USBRX); |
marvas | 0:d20cd68db570 | 28 | Serial bt(A0,A1); |
marvas | 0:d20cd68db570 | 29 | char gelen[10]={0}; ;//10 adet kapasiteli değişken tanımlandı |
marvas | 0:d20cd68db570 | 30 | char metinbt[10]; |
marvas | 0:d20cd68db570 | 31 | string veri; |
marvas | 0:d20cd68db570 | 32 | uint8_t sayacbt=0; |
marvas | 0:d20cd68db570 | 33 | uint8_t abt,pckontrol=0; |
marvas | 0:d20cd68db570 | 34 | TextLCD lcd(D7, D6, D5, D4, D3, D2); // rs, e, d4-d7 |
marvas | 0:d20cd68db570 | 35 | DigitalOut led(LED1); |
marvas | 0:d20cd68db570 | 36 | void girismetot(); |
marvas | 0:d20cd68db570 | 37 | |
marvas | 0:d20cd68db570 | 38 | |
marvas | 0:d20cd68db570 | 39 | char x,sifre[4]; |
marvas | 0:d20cd68db570 | 40 | uint8_t sayac=0; |
marvas | 0:d20cd68db570 | 41 | char key_table[] = { '1', '2', '3', 'A', |
marvas | 0:d20cd68db570 | 42 | '4', '5', '6', 'B', |
marvas | 0:d20cd68db570 | 43 | '7', '8', '9', 'C', |
marvas | 0:d20cd68db570 | 44 | '*', '0', '#', 'D' |
marvas | 0:d20cd68db570 | 45 | }; |
marvas | 0:d20cd68db570 | 46 | |
marvas | 0:d20cd68db570 | 47 | //KL25Z Pins for MFRC522 SPI interface |
marvas | 0:d20cd68db570 | 48 | #define SPI_MOSI D11 |
marvas | 0:d20cd68db570 | 49 | #define SPI_MISO D12 |
marvas | 0:d20cd68db570 | 50 | #define SPI_SCLK D13 |
marvas | 0:d20cd68db570 | 51 | #define SPI_CS D10//sda |
marvas | 0:d20cd68db570 | 52 | // KL25Z Pin for MFRC522 reset |
marvas | 0:d20cd68db570 | 53 | #define MF_RESET A0//rsT |
marvas | 0:d20cd68db570 | 54 | // KL25Z Pins for Debug UART port |
marvas | 0:d20cd68db570 | 55 | |
marvas | 0:d20cd68db570 | 56 | DigitalOut bzr(PC_8); |
marvas | 0:d20cd68db570 | 57 | MFRC522 RfChip (SPI_MOSI, SPI_MISO, SPI_SCLK, SPI_CS, MF_RESET); |
marvas | 0:d20cd68db570 | 58 | |
marvas | 0:d20cd68db570 | 59 | void girismetot() |
marvas | 0:d20cd68db570 | 60 | { |
marvas | 1:f01aa6d55b26 | 61 | FILE *wave_file; |
marvas | 1:f01aa6d55b26 | 62 | wave_file=fopen("/sd/hosgeldiniz.wav","r"); |
marvas | 1:f01aa6d55b26 | 63 | waver.play(wave_file); |
marvas | 1:f01aa6d55b26 | 64 | fclose(wave_file); |
marvas | 0:d20cd68db570 | 65 | time_t seconds = time(NULL); |
marvas | 0:d20cd68db570 | 66 | lamba=0; |
marvas | 0:d20cd68db570 | 67 | lcd.cls(); |
marvas | 0:d20cd68db570 | 68 | printf("\n Giris basarili"); |
marvas | 0:d20cd68db570 | 69 | lcd.printf("Giris basarili"); |
marvas | 0:d20cd68db570 | 70 | for (int i = 0; i < 1000; i++ ) { //frekans oluşturuldu |
marvas | 0:d20cd68db570 | 71 | // 1 / 2000 = 500uS, 250us + 250us - olacak. 50% duty cycle |
marvas | 0:d20cd68db570 | 72 | bzr=1; |
marvas | 0:d20cd68db570 | 73 | wait_us(200); |
marvas | 0:d20cd68db570 | 74 | bzr=0; |
marvas | 0:d20cd68db570 | 75 | wait_us(200); |
marvas | 0:d20cd68db570 | 76 | } |
marvas | 0:d20cd68db570 | 77 | sayac=0; |
marvas | 0:d20cd68db570 | 78 | for(uint8_t x=0; x<4; x++) { |
marvas | 0:d20cd68db570 | 79 | sifre[x]=0; |
marvas | 0:d20cd68db570 | 80 | } |
marvas | 0:d20cd68db570 | 81 | wait(2); |
marvas | 0:d20cd68db570 | 82 | lcd.cls(); |
marvas | 0:d20cd68db570 | 83 | ldroku=ldr.read(); |
marvas | 0:d20cd68db570 | 84 | if(ldroku<0.50) |
marvas | 0:d20cd68db570 | 85 | lamba=1; |
marvas | 0:d20cd68db570 | 86 | else |
marvas | 0:d20cd68db570 | 87 | lamba=0; |
marvas | 1:f01aa6d55b26 | 88 | if(deger>30) |
marvas | 1:f01aa6d55b26 | 89 | klima=1; |
marvas | 1:f01aa6d55b26 | 90 | else |
marvas | 1:f01aa6d55b26 | 91 | klima=0; |
marvas | 0:d20cd68db570 | 92 | //sd karta yazma |
marvas | 1:f01aa6d55b26 | 93 | FILE *fp = fopen("/sd/ornek.txt", "a"); |
marvas | 0:d20cd68db570 | 94 | if(fp == NULL) { |
marvas | 0:d20cd68db570 | 95 | error("Yazma icin dosya acilamadi \n"); |
marvas | 0:d20cd68db570 | 96 | } |
marvas | 0:d20cd68db570 | 97 | else |
marvas | 0:d20cd68db570 | 98 | { |
marvas | 0:d20cd68db570 | 99 | |
marvas | 1:f01aa6d55b26 | 100 | fprintf(fp, "%s,\n Giris yapan: %X,%X,%X,%X",ctime(&seconds),RfChip.uid.uidByte[0],RfChip.uid.uidByte[1],RfChip.uid.uidByte[2],RfChip.uid.uidByte[3]); |
marvas | 0:d20cd68db570 | 101 | |
marvas | 0:d20cd68db570 | 102 | |
marvas | 0:d20cd68db570 | 103 | fclose(fp); //Dosya kapat |
marvas | 0:d20cd68db570 | 104 | |
marvas | 0:d20cd68db570 | 105 | pc.printf("Yazma islemi bitti! \n"); |
marvas | 0:d20cd68db570 | 106 | |
marvas | 0:d20cd68db570 | 107 | pc.printf("Okuma islemi basladi! \n"); |
marvas | 0:d20cd68db570 | 108 | FILE *fpr = fopen("/sd/ornek.txt", "r"); |
marvas | 0:d20cd68db570 | 109 | //Okunacak dosya seçildi |
marvas | 0:d20cd68db570 | 110 | |
marvas | 0:d20cd68db570 | 111 | //file end of. Okuma işlemi bitene kadar devam et. |
marvas | 0:d20cd68db570 | 112 | //Dosya sonuna kadar okumaya devam et. |
marvas | 0:d20cd68db570 | 113 | while (!feof(fpr)){ |
marvas | 0:d20cd68db570 | 114 | c=fgetc(fpr); |
marvas | 0:d20cd68db570 | 115 | printf("%c",c); |
marvas | 0:d20cd68db570 | 116 | } |
marvas | 0:d20cd68db570 | 117 | fclose(fpr); |
marvas | 0:d20cd68db570 | 118 | } |
marvas | 0:d20cd68db570 | 119 | } |
marvas | 1:f01aa6d55b26 | 120 | /* |
marvas | 1:f01aa6d55b26 | 121 | void sicaklikmetodu() |
marvas | 1:f01aa6d55b26 | 122 | { |
marvas | 1:f01aa6d55b26 | 123 | while(1) |
marvas | 1:f01aa6d55b26 | 124 | { |
marvas | 1:f01aa6d55b26 | 125 | deger = isi.readData(); |
marvas | 1:f01aa6d55b26 | 126 | pc.printf("T:%d, H:%d\r\n", isi.readTemperature(), isi.readHumidity()); |
marvas | 1:f01aa6d55b26 | 127 | wait(2); |
marvas | 1:f01aa6d55b26 | 128 | } |
marvas | 1:f01aa6d55b26 | 129 | }*/ |
marvas | 0:d20cd68db570 | 130 | int main(void) |
marvas | 0:d20cd68db570 | 131 | { //set_time(1558438679); |
marvas | 1:f01aa6d55b26 | 132 | isizaman.start(); |
marvas | 0:d20cd68db570 | 133 | pc.baud(38400); |
marvas | 0:d20cd68db570 | 134 | |
marvas | 0:d20cd68db570 | 135 | bt.baud(38400); |
marvas | 1:f01aa6d55b26 | 136 | wait(1); |
marvas | 1:f01aa6d55b26 | 137 | //sicaklik.start(sicaklikmetodu); |
marvas | 0:d20cd68db570 | 138 | mkdir("/sd", 0777); |
marvas | 0:d20cd68db570 | 139 | Keypad key(PC_4, PB_13, PB_14, PB_15, PB_1, PB_2, PB_12, PA_11); |
marvas | 0:d20cd68db570 | 140 | uint32_t key_num; |
marvas | 0:d20cd68db570 | 141 | // Init. RC522 Chip |
marvas | 0:d20cd68db570 | 142 | RfChip.PCD_Init(); |
marvas | 0:d20cd68db570 | 143 | |
marvas | 0:d20cd68db570 | 144 | while (true) { |
marvas | 0:d20cd68db570 | 145 | |
marvas | 0:d20cd68db570 | 146 | while ((key_num = key.read()) != 0) { |
marvas | 0:d20cd68db570 | 147 | sifre[sayac]=*(key_table + key_num-1); |
marvas | 1:f01aa6d55b26 | 148 | |
marvas | 1:f01aa6d55b26 | 149 | lcd.locate(sayac,1); |
marvas | 1:f01aa6d55b26 | 150 | lcd.printf("*"); |
marvas | 0:d20cd68db570 | 151 | sayac++; |
marvas | 1:f01aa6d55b26 | 152 | if(sayac==3) |
marvas | 0:d20cd68db570 | 153 | if(sifre[0]=='1' && sifre[1]=='2' && sifre[2]=='3' && sifre[3]=='A') { |
marvas | 0:d20cd68db570 | 154 | girismetot(); |
marvas | 0:d20cd68db570 | 155 | |
marvas | 0:d20cd68db570 | 156 | } else if(sifre[0]!='1' && sifre[1]!='2' && sifre[2]!='3' && sifre[3]!='A') |
marvas | 0:d20cd68db570 | 157 | lcd.printf("Giris basarisiz"); |
marvas | 0:d20cd68db570 | 158 | |
marvas | 0:d20cd68db570 | 159 | printf("%c\n", *(key_table + key_num-1)); |
marvas | 0:d20cd68db570 | 160 | // sayi[0]=*(key_table + key_num-1); printf("%f",sayi[0]); |
marvas | 0:d20cd68db570 | 161 | } |
marvas | 0:d20cd68db570 | 162 | // Look for new cards |
marvas | 0:d20cd68db570 | 163 | if ( ! RfChip.PICC_IsNewCardPresent()) { |
marvas | 0:d20cd68db570 | 164 | time_t seconds = time(NULL); |
marvas | 1:f01aa6d55b26 | 165 | if(pc.readable()>0 ){//seri portta veri varmı? |
marvas | 0:d20cd68db570 | 166 | veri=pc.getc(); |
marvas | 1:f01aa6d55b26 | 167 | pc.printf("%c",veri); |
marvas | 0:d20cd68db570 | 168 | /*pc.scanf("%s",gelen); |
marvas | 0:d20cd68db570 | 169 | pc.printf("%s \n",gelen);*/ |
marvas | 0:d20cd68db570 | 170 | |
marvas | 0:d20cd68db570 | 171 | } |
marvas | 1:f01aa6d55b26 | 172 | |
marvas | 1:f01aa6d55b26 | 173 | if(isizaman.read()>2) |
marvas | 1:f01aa6d55b26 | 174 | { |
marvas | 1:f01aa6d55b26 | 175 | |
marvas | 1:f01aa6d55b26 | 176 | lcd.locate(0,0); |
marvas | 1:f01aa6d55b26 | 177 | deger = isi.readData(); |
marvas | 1:f01aa6d55b26 | 178 | lcd.printf("ISI:%d, NEM:%d", isi.readTemperature(), isi.readHumidity()); |
marvas | 1:f01aa6d55b26 | 179 | lcd.printf(" "); |
marvas | 1:f01aa6d55b26 | 180 | isizaman.reset(); |
marvas | 1:f01aa6d55b26 | 181 | } |
marvas | 0:d20cd68db570 | 182 | |
marvas | 0:d20cd68db570 | 183 | continue; |
marvas | 0:d20cd68db570 | 184 | } |
marvas | 0:d20cd68db570 | 185 | |
marvas | 0:d20cd68db570 | 186 | // Select one of the cards |
marvas | 0:d20cd68db570 | 187 | if ( ! RfChip.PICC_ReadCardSerial()) { |
marvas | 0:d20cd68db570 | 188 | wait_ms(500); |
marvas | 0:d20cd68db570 | 189 | continue; |
marvas | 0:d20cd68db570 | 190 | } |
marvas | 0:d20cd68db570 | 191 | |
marvas | 0:d20cd68db570 | 192 | |
marvas | 0:d20cd68db570 | 193 | // Print Card UID |
marvas | 0:d20cd68db570 | 194 | printf("Card UID: "); |
marvas | 0:d20cd68db570 | 195 | for (uint8_t i = 0; i < RfChip.uid.size; i++) { |
marvas | 0:d20cd68db570 | 196 | printf(" %X", RfChip.uid.uidByte[i]); |
marvas | 0:d20cd68db570 | 197 | } |
marvas | 0:d20cd68db570 | 198 | if(RfChip.uid.uidByte[0]==0x93 && RfChip.uid.uidByte[1]==0x84 && RfChip.uid.uidByte[2]==0xB7 && RfChip.uid.uidByte[3]==0x2E) |
marvas | 0:d20cd68db570 | 199 | |
marvas | 0:d20cd68db570 | 200 | { |
marvas | 0:d20cd68db570 | 201 | girismetot(); |
marvas | 0:d20cd68db570 | 202 | } else |
marvas | 0:d20cd68db570 | 203 | printf("\n Giris basarisiz!!!"); |
marvas | 0:d20cd68db570 | 204 | printf("\n\r"); |
marvas | 0:d20cd68db570 | 205 | |
marvas | 0:d20cd68db570 | 206 | // Print Card type |
marvas | 0:d20cd68db570 | 207 | uint8_t piccType = RfChip.PICC_GetType(RfChip.uid.sak); |
marvas | 0:d20cd68db570 | 208 | printf("PICC Type: %s \n\r", RfChip.PICC_GetTypeName(piccType)); |
marvas | 1:f01aa6d55b26 | 209 | |
marvas | 0:d20cd68db570 | 210 | } |
marvas | 0:d20cd68db570 | 211 | } |