guvenlik sistemi

Dependencies:   mbed wave_player mbed-rtos MFRC522 SDFileSystem TextLCD keypad DHT11

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?

UserRevisionLine numberNew 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 }