/*
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# RFID MFRC522 / RC522 Library : #
# #
# Installation : #
# NodeMCU ESP8266/ESP12E RFID MFRC522 / RC522 #
# D2 <----------> SDA/SS #
# D5 <----------> SCK #
# D7 <----------> MOSI #
# D6 <----------> MISO #
# GND <----------> GND #
# D1 <----------> RST #
# 3V/3V3 <----------> 3.3V #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
*/
//----------------------------------------NodeMCU ESP8266 Kütüphanesini Dahil Et---------------------------------------------------------------------------------------------------------------//
#include <ESP8266WebServer.h>
#include <ESP8266HTTPClient.h>
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------//
//----------------------------------------SPI ve MFRC522 kütüphanelerini Dahil Et-------------------------------------------------------------------------------------------------------------//
#include <SPI.h>
#include <MFRC522.h>
#include <Wire.h>
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------//
#define SS_PIN D2 //--> SDA / SS, D2 pinine bağlı
#define RST_PIN D1 //--> RST, D1 pinine bağlı
MFRC522 mfrc522(SS_PIN, RST_PIN); //--> MFRC522 oluştur
#define ON_Board_LED 2 //--> On Board LED tanımlandı, bir wifi yönlendiricisine bağlanma işlemi sırasında göstergeler için kullanılır
//----------------------------------------WiFi yönlendiricinizin SSID ve Parolası-------------------------------------------------------------------------------------------------------------//
const char* ssid = "Destannet_M";
const char* password = "0336030";
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------//
ESP8266WebServer server(80); //--> Port 80 üzerinde sunucu
int readsuccess;
byte readcard[4];
char str[32] = "";
String StrUID;
//-----------------------------------------------------------------------------------------------SETUP--------------------------------------------------------------------------------------//
void setup()
{
Serial.begin(9600); //--> PC ile seri iletişimi başlat
SPI.begin(); //--> SPI veri yolunu başlat
mfrc522.PCD_Init(); //--> MFRC522 kartını başlat
delay(500); // 500 ms bekle
Wire.begin(2,0);
WiFi.begin(ssid, password); //--> WiFi yönlendiricinize bağlanma
Serial.println("");
pinMode(ON_Board_LED, OUTPUT); // On Board Led OUTPUT tanımlama
digitalWrite(ON_Board_LED, HIGH); //--> On Board Led'i kapat
//----------------------------------------Bağlantıyı bekle
Serial.print("Connecting");
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
//----------------------------------------Wifi yönlendiricisine bağlanma işlemi sırasında On Board Flaşör LED'i yapın..
digitalWrite(ON_Board_LED, LOW);
delay(250);
digitalWrite(ON_Board_LED, HIGH);
delay(250);
}
digitalWrite(ON_Board_LED, HIGH); //--> Wifi yönlendiricisine bağlanıldığında On Board LED'i kapatın.
//----------------------------------------Bağlandığınız wifi yönlendiricisine başarılı bir şekilde bağlanırsanız, ziyaret edilecek IP Adresi seri monitörde görüntülenir.
Serial.println("");
Serial.print("Successfully connected to : ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
Serial.println("Please tag a card or keychain to see the UID !");
Serial.println("");
}
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------//
//-----------------------------------------------------------------------------------------------LOOP---------------------------------------------------------------------------------------//
void loop()
{
readsuccess = getid(); // id okuma işlemi başarılı ise 1 döner
WiFiClient client;
if (readsuccess) {
digitalWrite(ON_Board_LED, LOW); // ON_Board_LED LOW yapma
HTTPClient http; //HTTPClient sınıfından nesne bildirimi
String UIDresultSend, postData; // 1 adet string tanımlama
UIDresultSend = StrUID;
//Post Data
postData = "UIDresult=" + UIDresultSend;
http.begin(client, "http://192.168.16.110/NodeMCU-and-RFID-RC522-IoT-Projects/getUID.php"); //İstek hedefini
http.addHeader("Content-Type", "application/x-www-form-urlencoded"); //İçerik türü başlığı
int httpCode = http.POST(postData); //İsteği gönder
String payload = http.getString(); //Yanıt yükünü al
Serial.println(UIDresultSend);
Serial.println(httpCode); //Print HTTP return code
Serial.println(payload); //Print request response payload
http.end(); //Bağlantıyı kapat
delay(1000); // 1 sn bekleme
digitalWrite(ON_Board_LED, HIGH); // ON_Board_LED HIGH yapma
}
}
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------//
//----------------------------------------Bir kart veya anahtarlık okuma ve bir UID elde etme işlemi için prosedür---------------------------------------------------------------------------------//
int getid() {
if (!mfrc522.PICC_IsNewCardPresent()) {
return 0;
}
if (!mfrc522.PICC_ReadCardSerial()) {
return 0;
}
for (int i = 0; i < 4; i++) {
readcard[i] = mfrc522.uid.uidByte[i]; //etiketin UID'sini readcard'a depola
array_to_string(readcard, 4, str);
StrUID = str;
}
Serial.println(StrUID); // arduıno ya UART uzerinden data gönderme her ıd okuduğunda gönderir
mfrc522.PICC_HaltA();
return 1;
}
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------//
//----------------------------------------Diziden string UID okuma sonucunu değiştirme işlemi için prosedür------------------------------------------------------------------------------//
void array_to_string(byte array[], unsigned int len, char buffer[]) {
for (unsigned int i = 0; i < len; i++)
{
byte nib1 = (array[i] >> 4) & 0x0F;
byte nib2 = (array[i] >> 0) & 0x0F;
buffer[i * 2 + 0] = nib1 < 0xA ? '0' + nib1 : 'A' + nib1 - 0xA;
buffer[i * 2 + 1] = nib2 < 0xA ? '0' + nib2 : 'A' + nib2 - 0xA;
}
buffer[len * 2] = '\0';
}