RFID RDM6300 v4.0 подделка, не работает как RDM6300 v0.3 . Решено.

slider
Offline
Зарегистрирован: 17.06.2014

RFID RDM6300 v4.0  v0.3 оба HW-205 .

Пришёл такой RFID , и то работает , то нет . Долго понять не мог почему не работает.
Если подаёшь питание всё в сборе, то работает ,
ежели перетыкиваешь разъём , то уже нифига не арбайтен. 
   Методом тыка резисторами, выяснилось, что прежде чем включать свой Tx, модуль смотрит что на этом пине, 
если ничего (или электроника своим Rx не подтянутым, в его Tx смотрит), то модуль не включается,
а если Tx притянуть к "+" , к примеру через 10к  , тогда модуль запускается и начинает передавать через Tx . 
Причём подтягивание к "+"  через светодиод с резистором , не помогало.

     Бред , но только так работает. Обычно же Rx притягивать резистором к "+" желательно, чтоб он ничего не нахватался.

Ещё один косяк , этот модуль не работает с либами, 
оказывается он не выдаёт ожидаемый байт 0x03 конца передачи. Да и начало 0x02 посылки тож не выдаёт. И контрольной суммы нет. Остаётся ориентироваться по конечным 0x20 .

подделка:
HEX        30 38 30 30 39 31 37 34 38 42 20   
ASCII      08 00 91 74 8B 
 
оригинал:
 HEX   02 30 38 30 30 39 31 37 34 38 42 36 36 03
ASCII       08 00 91 74 8B 66 ..

формат :
          0x02 - 10byte ASCII Data   -  2byte Checksum - 0x03 

//десятич. номер написанный на карте:
           000095322555  что правильно соответствует  00 91 74 8B  в HEX

 

//// для Raspberry, где всё уже настроено с либами трабблы, пришлось покупать нормальный модуль. 

 

Скетч RFID RDM6300 OLED arduino uno, выдаёт ASCII на дисплей. RFID подключается 3мя проводами + - A0

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <SoftwareSerial.h>

#define OLED_RESET 4 // not used / nicht genutzt bei diesem Display
Adafruit_SSD1306 display(OLED_RESET);

SoftwareSerial softSerial(A0, A1); // RX TX
 char inChar;
 String string;


void setup()   { 
  
 // initialize with the I2C addr 0x3C / mit I2C-Adresse 0x3c initialisieren
 display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // 0x3C 128x32 
                 
  softSerial.begin(9600);
  string.reserve(50);

  display.display();
  delay(2000);
  display.clearDisplay();
//  display.setTextSize(1);
  display.setTextSize(2);
  display.setTextColor(INVERSE); 
  display.display();
}

void loop()
{ 
  
  if (softSerial.available()){
               // хорошо бы проверить что это начало посылки , но не до жиру    
                display.clearDisplay();
                inChar = softSerial.read();
                string+=inChar; // складываем всю посылку в строку, пока не встретится признак  0x03 конца посылки        
                display.setCursor(0,0); 
                display.print(string);               
               // display.display();  // выводить всё подряд сразу , не дожидаясь конца посылки. Сильно замедляет. 
         
              // если char конец посылки , то выведем всю строку на дисплей в ASCII
              if( inChar == '\r' || inChar ==0x20 || inChar ==0x03  )
                  { 
                    display.display();                
                    delay(1000);
                    string="";
                    display.clearDisplay();
                    display.display();
                    // очистим накопишийся буфер , вычитав его полностью
                    while (softSerial.available()) { softSerial.read(); }
                  }                      
 }  
  
  //display.display(); 
  
}

 

 

 

slider
Offline
Зарегистрирован: 17.06.2014

В версии платы V4.2 RDM6300 ( физически похожа на  V4.0 ),  китайцы уже убрали этот недочёт , и она теперь повторяет оригинал. Подключать притягивать Rx модуля никуда не нужно.