RFID Lese-System für wenig Knete

da kannst Du natürlich Recht haben, das Feld habe ich mal schlicht „ignoriert“ :eek:

mit einem Sync Zeichen funktioniert es auch mit „feste Schritte“-Einstellung im Cutter …
… „kaum macht man es richtig, schon funktioniert es“ :wink:

die spannende Frage ist natürlich, welches Sync Zeichen hier richtig und sinnvoll ist? Da ja verschiedene Schlüssel bzw. RFID-Strings eingelesen werden sollen … :confused:

Danke
Tilo

Kommt vom RFID-Leser Hex 0A oder/und Hex 0D ?

Steht für Return Zeilenvorschub oder Wagenrücklauf Zeilenvorschub

Gruß Helmut

Hallo Helmut,

Kommt vom RFID-Leser Hex 0A oder/und Hex 0D ?

naja - es kommt von 3 verschiedenen Schlüssel immer ein „01“ als erstes Hex von insgesamt 5 Stellen. (ein 0A oder ein 0D kommt nicht …)

Damit (Cutter auf Sync Zeichen „01“ eingestellt) funktioniert es einwandfrei. Ich weiß allerdings nicht, ob das Zufall ist oder ob der Leser die „01“ davor sendet (was natürlich mein Problem lösen würde")

also auf jeden Fall - vielen Dank für Eure Unterstützung (und überhaupt für den Tipp mit dem preiswerten RFID-Leser)

Tilo

01 könnte für SOH ( Beginn der Kopfzeile) stehen.
Dann macht das etwas mehr Sinn.
4Byte sind auch gebräuchlicher als Dateninformation als Fünf.
Eventuell noch ein 02 oder 03 dabei ? (STX/ETX)
Michael

Eventuell noch ein 02 oder 03 dabei ? (STX/ETX)

nein, es sind keine weiteren Steuerzeichen dabei.

Es ist nur zu Beginn ein „01“ ein dabei - aber das reicht ja aus, um den Cutter korrekt einzustellen. :slight_smile:

vielen Dank an Helmut & Michael :loveips:

Gruß
Tilo

Hallo Liebe Mitglieder,
ich bin dabei wie hier beschrieben ein RFID Lesesystem zu realisieren.
Den Aufbau der Scripts verstehe ich (danke Helmut) und sollte sie auch einbinden können.
Bevor ich anfange wild drauf los zu löten möchte ich eine zweite Meinung hören.

Folgende Hardware:

RFID Ausseneinheit mit folgender Belegung (siehe auch die Bilder)
Rot = VCC 12V
Schwarz = GND
Grün = RX
Weiss = TX
Blau = LED (wird erstmal nicht benötigt)
Gelb = Summer (wird erstmal nicht benötigt)

Einfacher USB Seriell Adapter

Serielles Kabel

Da ich über USB ja nur 5V bekomme würde ich für die Stromversorgung ein externes 12 V Netzteil verwenden.

So würde ich es belegen:

VCC 12V (Rot) - externes Netzteil Plus
GND (Schwarz) - externes Netzteil Minus

RX (Grün) - An Pin 2 vom Seriellen Adapter
TX (Weiss) - An Pin 3 vom Seriellen Adapter

Liege ich richtig oder habe ich einen Denkfehler? Danke für die Infos!

Unknown.png

Dem Pin 5 vom SuB D Stecker würde ich noch den GND gönnen :wink:

Du könntest auch noch mit einem StepUp Wandler von 5Volt auf 12Volt gehen. Ist wohl eher ein optisches Problem, aber ein extra Netzteil ist eigentlich to much, er braucht ja gar nicht so viel Strom, oder?
Gruß Helmut

Das mit dem StepUp Wandler ist ne richtig gute Idee! Kannte ich bislang gar nicht…
Da das ganze bei mir im Verteilerkasten sitzt, ist die Optik egal :slight_smile:

Kann ich da einfach die Masse (GND) vom Netzteil nehmen auch wenn es extern ist?

Gruß Stefan

Die Potentiale von RX TX beziehen sich immer gegen GND, also muß der Gnd an Pin5 von der Spannungsversorgung des RS232 Adapters.
Gruß Helmut

Hier noch ein WEMOS Script zur Anbindung des seriellen RFID Kartenlesers über einen Client Socket.
SSID und Passwort muss man noch anpassen, der serielle Ausgang geht an den RX-PortPin des Wemos.

Die IP Adresse wird über den Wemos ser. Port (der gleiche seriellen Port, wie der für die Programmierung), bei Verbindungs-Erfolg, ausgegeben.

 #include <ESP8266WiFi.h>

#define MAX_SRV_CLIENTS 3
const char* ssid = "SSID";
const char* password = "PASSWORT";

WiFiServer server(23);
WiFiClient serverClients[MAX_SRV_CLIENTS];

void setup() {
 Serial.begin(9600);
  //test debug  Seriel war Serial1
  //Serial1.setDebugOutput(true);
  delay(50);              // Entprellung 
  WiFi.begin(ssid, password);
  delay(100);              // Entprellung 
  Serial.print("
Connecting to "); Serial.println(ssid);
  uint8_t i = 0;
  while (WiFi.status() != WL_CONNECTED && i++ < 20) delay(500);
  if(i == 21){
    Serial.print("Could not connect to"); Serial.println(ssid);
    while(1) delay(500);
  }
  Serial.begin(9600);
  server.begin();
  server.setNoDelay(true);
  // Serial war Serial1
  Serial.print("Ready! Use 'telnet ");
  Serial.print(WiFi.localIP());
  Serial.println(" Port 23 to connect");
}

void loop() {
  uint8_t i;
  if (server.hasClient()){
    for(i = 0; i < MAX_SRV_CLIENTS; i++){
      if (!serverClients[i] || !serverClients[i].connected()){
        if(serverClients[i]) serverClients[i].stop();
        serverClients[i] = server.available();
        continue;
      }
    }
    //no free spot
    WiFiClient serverClient = server.available();
    serverClient.stop();
  }
  for(i = 0; i < MAX_SRV_CLIENTS; i++){
    if (serverClients[i] && serverClients[i].connected()){
      if(serverClients[i].available()){
        while(serverClients[i].available()) Serial.write(serverClients[i].read());
        //you can reply to the client here
      }
    }
  }
  if(Serial.available()){
    size_t len = Serial.available();
    uint8_t sbuf[len];
    Serial.readBytes(sbuf, len);
    //bello is a broadcast to all clients
    for(i = 0; i < MAX_SRV_CLIENTS; i++){
      if (serverClients[i] && serverClients[i].connected()){
        serverClients[i].write(sbuf, len);
        delay(1);
      }
    }
  }
} 

Die Daten dann vom Client Server über Cutter (übergeordnet ist der Client Socket) und per Registervariable (übergeordnete Instanz Cutter) einem Auswertescript zuführen.

Alles so, wie wenn es direkt über RS232 kommt :wink:
Gruß Helmut

Vielen Dank!
Danach habe ich gesucht!

LG,
Stefan