INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Mit RFID relais schalten
10.07.2014, 09:12 (Dieser Beitrag wurde zuletzt bearbeitet: 10.07.2014 09:22 von Dillinger.)
Beitrag #1
Question Mit RFID relais schalten
Hallo,

zuerst möchte ich alle hier im Forum begrüßen und mich vorstellen. Ich bin 27 Jahre alt und komme aus Karlsruhe.
Mit Arduino habe ich noch so gut wie keine Erfahrungen. Bin also ein blutiger Anfänger Tongue
Mit C programmiere ich schon seit fast einem Jahr. Leider kann ich nicht so viele parallelen zu Arduino herstellen wie ich zuerst dachte.

Nun zu meinem eigentlichen Problem. Ich habe einen Arduino Duo mit einem Grove - 125KHz RFID Reader ( http://www.seeedstudio.com/wiki/Grove_-_...FID_Reader ).
Dazu habe ich mir auch die Programmierung von seeedstudio geladen und eingespielt.
Das Ganze funktioniert soweit auch ganz gut. Wenn ich einen Transponder davorhalte wird mit der Code im Serial Monitor angezeigt.
Ist es möglich diesen Code umzuschreiben das ich dort die Codes direkt hinterlege und damit ein Ausgang ansteuere (z.B. Relais oder LED) Huh

///////////////////////////////////////////////////////////////////////////////////////////
// link between the computer and the SoftSerial Shield
//at 9600 bps 8-N-1
//Computer is connected to Hardware UART
//SoftSerial Shield is connected to the Software UARTBig Grin2&D3

#include <SoftwareSerial.h>

SoftwareSerial SoftSerial(2, 3);
unsigned char buffer[64]; // buffer array for data recieve over serial port
int count=0; // counter for buffer array
void setup()
{
SoftSerial.begin(9600); // the SoftSerial baud rate
Serial.begin(9600); // the Serial port of Arduino baud rate.

}

void loop()
{
if (SoftSerial.available()) // if date is comming from softwareserial port ==> data is comming from SoftSerial shield
{
while(SoftSerial.available()) // reading data into char array
{
buffer[count++]=SoftSerial.read(); // writing data into array
if(count == 64)break;
}
Serial.write(buffer,count); // if no data transmission ends, write buffer to hardware serial port
clearBufferArray(); // call clearBufferArray function to clear the storaged data from the array
count = 0; // set counter of while loop to zero


}
if (Serial.available()) // if data is available on hardwareserial port ==> data is comming from PC or notebook
SoftSerial.write(Serial.read()); // write it to the SoftSerial shield
}
void clearBufferArray() // function to clear buffer array
{
for (int i=0; i<count;i++)
{ buffer[i]=NULL;} // clear all index of array with command NULL
}
/////////////////////////////////////////////////////////////////////////////////
Quelle: http://www.seeedstudio.com/wiki/Grove_-_...FID_Reader

Ach ja noch etwas habe ich vergessen. Ich verstehe auch nicht warum im Kommentar in der 3 Zeile steht "//Computer is connected to Hardware UART".
Da der Computer ja über USB angeschlossen ist und der Leser auf PIN 2 3.

Ich möchte auf keinen Fall unhöflich erscheinen aber ich brauche die Programmierung bis spätestens Sonntag. Für die Umstände bitte ich um Entschuldigung. Desweiteren biete ich eine Aufwandsentschädigung für denjenigen der mir helfen kann.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.07.2014, 09:51
Beitrag #2
RE: Mit RFID relais schalten
Hi,

Ich habe zwar kaum Ahnung von RFIDs, aber versuchen wir mal was...
Laut der Doku hinter Deinem Link hat das, was vom RFID geschickt wird, ein Start- und ein Stop-Byte. Wahrscheinlich kommen die in den eigentlichen Daten nicht vor. Du musst also in Deinem Sketch erstmal auf das Start-Byte warten. Dann alles "aufsammeln" bis das Stop-Byte kommt.
Das zwischen Start- und Stop-Byte musst Du dann mit den hinterlegten Codes vergleichen und bei einem Treffer entsprechend reagieren.

Wenn Du bis Sonntag gar nichts anderes vor hast, dann könntest Du das schaffen.

Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.07.2014, 10:26
Beitrag #3
RE: Mit RFID relais schalten
Hallo Thorsten,

das mit den Start und Stop Bytes habe ich auch soweit verstanden. Nur wie ich das Ganze realiseren soll weiß ich nicht da meine Kentnisse nicht ausreichend sind.
Ich verstehe nur Bruchstücke der Programmierung.

mfg
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.07.2014, 10:36
Beitrag #4
RE: Mit RFID relais schalten
Hi,
tja, dann hast Du wirklich ein Problem. Ich würde folgendermaßen vorgehen:
1. Schmeiss das "clearBufferArray" Zeugs raus. Das zeigt meiner Meinung nach nur, dass der Entwickler nicht verstanden hat, was er tut. Es ist zu nichts gut. (Das meiste vom restlichen Coding ist auch nicht so toll...)
3. Schreib den Sketch so um, dass das Ding erst anfängt, was in den "buffer" zu schreiben, nachdem das Start-Byte erkannt wurde. Dazu brauchst Du noch eine globale Variable, die Du setzt, wenn das Start-Byte ankommt.
4. Sobald das Stop-Byte erkannt wurde setzt Du die neue Variable zurück und rufst Du eine Funktion auf, die das, was im buffer ist mit dem gespeicherten Code vergleicht. Bei einem Treffer tust Du, was auch immer dann getan werden soll.

Hilft das erstmal?
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.07.2014, 10:46
Beitrag #5
RE: Mit RFID relais schalten
Hallo!
Die Seite könnte auch noch hilfreich sein:
http://sheepdogguides.com/arduino/art3rfid1.htm

mfg Martin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.07.2014, 12:23 (Dieser Beitrag wurde zuletzt bearbeitet: 10.07.2014 12:25 von Dillinger.)
Beitrag #6
RE: Mit RFID relais schalten
Hallo,

in meinem Fall brauche ich das einlesen bzw schreiben in den Buffer ja garnicht. Ich möchte die Codes direkt in der Programmierung hinterlegen.
Kann ich den Array nicht einfach umschreiben?
So in der Art hab ich mir gedacht.

#include <SoftwareSerial.h>

SoftwareSerial SoftSerial(2, 3);
unsigned char buffer[2] = {"123456789ABC", "ABC98765421"};
int count=0; // counter for buffer array
void setup()
{
SoftSerial.begin(9600); // the SoftSerial baud rate
Serial.begin(9600); // the Serial port of Arduino baud rate.

}

void loop()
{
if (SoftSerial.available()) // if date is comming from softwareserial port ==> data is comming from SoftSerial shield
{
while(SoftSerial.available()) // reading data into char array
{
buffer[count++]=SoftSerial.read(); // writing data into array
if(count == 2)break;
}
Serial.write(buffer,count); // if no data transmission ends, write buffer to hardware serial port
count = 0; // set counter of while loop to zero


}
if (Serial.available()) // if data is available on hardwareserial port ==> data is comming from PC or notebook
SoftSerial.write(Serial.read()); // write it to the SoftSerial shield
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.07.2014, 12:52
Beitrag #7
RE: Mit RFID relais schalten
Hi,
ich verstehe anhand Deines Codings nicht einmal, was Du eigentlich vorhast. Ich dachte, Du entwickelst schon seit einem Jahr in C...
Na egal. Schauen wir mal.
Code:
unsigned char buffer[2] = {"123456789ABC", "ABC98765421"};
Das geht so nicht. Du deklarierst ein Array mit zwei Bytes und versuchst dem dann zwei Zeichenketten zuzuweisen. Das geht aus verschiedenen Gründen schief. So würde das vielleicht funktionieren:
Code:
char* codes[] = {"123456789ABC", "ABC98765421"};
Damit hast Du ein Array mit den beiden codes, die Du haben willst.

Das hier:
Code:
buffer[count++]=SoftSerial.read(); // writing data into Array
...überschreibt Dir dann die Codes einfach nur. Wozu?

Code:
if(count == 2)break;
Das habe ich gar nicht verstanden.

Fang erst mal mit einem "Soll"-Code an, etwa so:
Code:
char code[] = "123456789ABC";
Du brauchst aber nach wie vor einen Buffer, um den Kram einzulesen. (Es würde auch anders gehen, aber das ist noch schwieriger zu verstehen.
Code:
char buffer[32];
int count = 0;
Innerhalb der while(available) dann vielleicht sowas:
Code:
char c = SoftSerial.read();  
if( c == <startbyte> ){
  count = 0;
  started = true;   // started muss global als boolean deklariert sein
}else if (c == <stopbyte>) {
   if(started) {
     buffer[count+1] = 0;  // strcmp braucht das
     if(strcmp(buffer, code) == 0) {
        // hier muss das hin, was Du dann tun willst...
     };
   };
   count = 0;
   started = false;    
}else if(started) {
   if(count >= 30) {  // dann stimmt was nicht, zuruecksetzen
     count = 0;
     started = false;
   }else{
     buffer[count] = c;
     count++;
   }
};
...ohne Gewähr.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.07.2014, 10:38
Beitrag #8
Thumbs Up RE: Mit RFID relais schalten
Hallo Thorsten,

ich habe den Code ja nicht geschrieben sondern nur von der oben angegebenen Seite kopiert. Daher kann ich dir leider nicht sagen wozu das "if(count == 2)break;" ist.
Ich habe von einer anderen Seite noch einen Code gefunden den ich soweit anpassen konnte.
Den Arduino habe ich wohl unterschätzt was seine Komplexität angeht. Ich werde mich wohl intensiv damit beschäftigen müssen.
Trotzdem danke für Deine Hilfe.


mfg

PS: Viel Spaß beim Fußball schauen Smile
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  RFID ID Differenz RonSH 10 242 14.10.2016 08:42
Letzter Beitrag: RonSH
  Ethernet Modul Enc28j60 Pin13 LED Schalten BennIY 16 514 27.09.2016 20:30
Letzter Beitrag: BennIY
  Problem: RFID code mit Inhalt einer Textdatei auf einer SD Karte vergleichen MartinK 6 514 29.03.2016 16:45
Letzter Beitrag: MartinK
  Mit RFID Sensor NFC Tags steuern WIMunios 14 926 15.03.2016 12:07
Letzter Beitrag: WIMunios
  Ansteuerung von einem Relais mit einem PS2 Controller minigarage 2 339 11.03.2016 15:31
Letzter Beitrag: minigarage
  RFID-Reader an Analog Pins inski 9 654 02.03.2016 12:43
Letzter Beitrag: ArdHolger
  Wieso schaltet das SS-Relais nicht ab? mat21his 5 572 28.01.2016 18:24
Letzter Beitrag: Bitklopfer
  Pin anhand Variable schalten ! b3ta 13 827 12.01.2016 08:30
Letzter Beitrag: b3ta
Question Rfid Authentifizierung klebeband 16 1.402 06.01.2016 11:48
Letzter Beitrag: hotsystems
  Schalten mit dem ESP-Webserver und dem Purebasicprogramm und dem Arduino arduinofan 10 1.032 28.12.2015 12:16
Letzter Beitrag: Bitklopfer

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste