Hallo
Ich bin mir sicher das mir der eine oder andere hier einen rat und tip geben kann.
Ich versuche gerade eine zutrittskontrolle zusammen zu bauen die mit hilfe eines Arduinos, Ethernet Shield und rfid modul über eine Mysql Datenbank prüft ob der jenige rein darf oder nicht.
ich konnte mir schon mit viel Google und Forum lesen weiter helfen aber jetzt trette ich schon seit geraumer zeit auf der Stelle.
Grunsätzlich geht es mir im moment darum das ich die ID vom rfid chip der vor den Sensor gehalten wird in eine Mysql Datenbank schreibe.
Die verbindung zu DB steht und ich kann auch einen statischen eintrag vor nehmen...
Was ich aber nicht hin bekomme ist das ich die unterschiedlichen rfid ids in das Insert bekomme.
Ich bin was Arduino angeht zimmlicher anfänger und hoffe auf nachsicht
Ich möchte auch keinen fertigen Code haben sondern einfach nur den Denk anstoss weil ich vermutlich einfach zu kompliziert denke.
#include <Ethernet.h>
#include <MySQL_Connection.h>
#include <SPI.h>
#include <RFID.h>
#include <MySQL_Cursor.h>
//Ethernet SHield Konfiguration
byte mac_addr[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,0,177);
//Mysql Datenbank Konfiguration
IPAddress server_addr(192,168,0,245); // IP of the MySQL *server* here
char user[] = "arduino"; // MySQL user login username
char password[] = "123456"; // MySQL user login password
EthernetClient client;
MySQL_Connection conn((Client *)&client);
//Pin belegung für das RFID Shield
#define SS_PIN 8 //SDA
#define RST_PIN 9 //RST
RFID rfid(SS_PIN, RST_PIN);
String ids[2] = {"453B56D16", "8C3B3924AA"}; //Zugelassene ID's
void setup()
{
Serial.begin(115200); // Aufbau der Seriellen verbindung für den Monitor
SPI.begin();
rfid.init();
Ethernet.begin(mac_addr,ip); // Starten der IP Configuration
IPAddress myIPAdress = Ethernet.localIP();
Serial.println(myIPAdress);
delay(1000);
Serial.println("Connecting...");
if (conn.connect(server_addr, 3306, user, password)) {
delay(1000);
// You would add your code here to run a query once on startup.
Serial.println("Verbindung hergestellt.");
}
else
{
Serial.println("Connection failed.");
}
//conn.close(); // Datenbank verbindung wird geschlossen
}
void loop() {
if (rfid.isCard() && rfid.readCardSerial()) {
String serial = parseId(rfid);
boolean serialOK = false;
int counter = 0;
for (counter = 0; counter < sizeof(ids)-1; counter++) {
if (serial == ids[counter]) {
serialOK = true;
break;
}
}
if (serialOK) {
Serial.println("ID wurde gefunden!");
Serial.print("RFID Nummer: ");
Serial.println(serial);
char INSERT_SQL[] = "INSERT INTO arduino.ardu_test (message) VALUES (serial)";
Serial.println("Recording data.");
// Initiate the query class instance
MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);
// Execute the query
cur_mem->execute(INSERT_SQL);
// Note: since there are no results, we do not need to read any data
// Deleting the cursor also frees up memory used
delete cur_mem;
} else {
Serial.println("ID wurde nicht gefunden!");
}
delay(500);
}
rfid.halt();
}
String parseId(RFID rfid) {
String result = "";
int position = 0;
for (position = 0; position <= 4; position++) {
String pos = getNumPosAsHEX(rfid, position);
result = result + pos;
}
result.toUpperCase();
return result;
}
String getNumPosAsHEX(RFID rfid, int position) {
return String(rfid.serNum[position], HEX);
}
So wie ich das verstehe wird ja die ID vom RFID Chip hier gespeichert
String serial = parseId(rfid);
Warum kann ich nicht einfach das "serial" in das Insert übertragen und gut ist?
LG