Hello I would like to insert a RFID in a Database. With my code it's possible to connect with the database, read RFID Cards an insert manual values.
How can I insert a variable? I would like to insert the Value of the variable "dump_byte_array".
Here is my code:
/*
Michel Kempf
*/
#include <SPI.h>
#include <MFRC522.h>
#include <Ethernet.h>
#include <MySQL_Connection.h>
#include <MySQL_Cursor.h>
#define RST_PIN 9
#define SS_PIN 8
const byte RFID_CS_pin = 8;
byte mac_addr[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress server_addr(10,44,24,10);
char user[] = "rfid";
char password[] = "jekfuekjJJFKJEfAF";
EthernetClient client;
MySQL_Connection conn((Client *)&client);
MFRC522 mfrc522(SS_PIN, RST_PIN); // Instanz für MFRC522 erzeugen
// Sample query
char INSERT_SQL[] = "INSERT INTO DB2017_RFID.TAG_Data (ID_TAG) VALUES ('dump_byte_array')";
#define NR_KNOWN_KEYS 8
byte knownKeys[NR_KNOWN_KEYS][MFRC522::MF_KEY_SIZE] = {
{0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, // FF FF FF FF FF FF = factory default
{0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5}, // A0 A1 A2 A3 A4 A5
{0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5}, // B0 B1 B2 B3 B4 B5
{0x4d, 0x3a, 0x99, 0xc3, 0x51, 0xdd}, // 4D 3A 99 C3 51 DD
{0x1a, 0x98, 0x2c, 0x7e, 0x45, 0x9a}, // 1A 98 2C 7E 45 9A
{0xd3, 0xf7, 0xd3, 0xf7, 0xd3, 0xf7}, // D3 F7 D3 F7 D3 F7
{0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}, // AA BB CC DD EE FF
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // 00 00 00 00 00 00
};
/*
* Inizialisieren
*/
void setup()
{
Serial.begin(9600); // Initialisiere serielle Verbindung mit dem Computer
while (!Serial); // Mache nichts wenn der serielle Port nicht frei ist
SPI.begin(); // Initialisiere SPI bus
pinMode(RFID_CS_pin, OUTPUT);
digitalWrite(RFID_CS_pin, HIGH); //Deselect the RFID reader
Ethernet.begin(mac_addr);
mfrc522.PCD_Init(); // Initialisiere MFRC522 card
SPI.usingInterrupt(10);
//Serial.println(F("Try the most used default keys to print block 0 of a MIFARE PICC."));
SPI.usingInterrupt(10);
Serial.println("RFID Projekt");
Serial.println("=====================");
Serial.println("Verbinden...");
if (conn.connect(server_addr, 3306, user, password)) {
Serial.println("Verbindung erstellt...");
delay(1000);
}
/*else
Serial.println("Verbindung fehlgeschlagen.");
conn.close();*/
}
/*
* Hex Werte für die Serielle Übertragung
*/
void dump_byte_array(byte *buffer, byte bufferSize) {
for (byte i = 0; i < bufferSize; i++) {
Serial.print(buffer[i] < 0x10 ? " 0" : " ");
Serial.print(buffer[i], HEX);
}
}
//Keytest
boolean try_key(MFRC522::MIFARE_Key *key)
{
boolean result = false;
byte buffer[18];
byte block = 0;
MFRC522::StatusCode status;
if ( ! mfrc522.PICC_IsNewCardPresent())
return false;
if ( ! mfrc522.PICC_ReadCardSerial())
return false;
// Serial.println(F("Authenticating using key A..."));
status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, key, &(mfrc522.uid));
if (status != MFRC522::STATUS_OK) {
//Serial.print(F("PCD_Authenticate() failed: "));
//Serial.println(mfrc522.GetStatusCodeName(status));
return false;
}
// Lesen
byte byteCount = sizeof(buffer);
status = mfrc522.MIFARE_Read(block, buffer, &byteCount);
if (status != MFRC522::STATUS_OK) {
//Serial.print(F("MIFARE_Read() failed: "));
//Serial.println(mfrc522.GetStatusCodeName(status));
}
mfrc522.PICC_HaltA(); // Halt PICC
mfrc522.PCD_StopCrypto1(); // Stopt die RC522 Entschlüsselnung
return result;
}
/*
* Main loop
*/
void loop() {
// Neue Karte
if ( ! mfrc522.PICC_IsNewCardPresent())
return;
// Bekannte Karte
if ( ! mfrc522.PICC_ReadCardSerial())
return;
// Anzeige
Serial.print(F("BAG")); //Überschrift
Serial.println();
Serial.print(F("ID:")); //ID Überschrift
dump_byte_array(mfrc522.uid.uidByte, mfrc522.uid.size); //ID Ausgabe
Serial.println();
Serial.println("---------------------");
delay(1000); // Pause beim Auslesen
Serial.println("Schreiben in Datenbank.");
// Überprüfung von unbekannten Schlüsseln
MFRC522::MIFARE_Key key;
for (byte k = 0; k < NR_KNOWN_KEYS; k++) {
// Kopieren des Chips ind die MIFARE_Key Struktur
for (byte i = 0; i < MFRC522::MF_KEY_SIZE; i++) {
key.keyByte[i] = knownKeys[k][i];
}
// Testen des Chips
if (try_key(&key)) {
// Chip gefunden
break;
}
}
MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);
cur_mem->execute(INSERT_SQL);
delete cur_mem;
}