RFID RDM6300 v4.0 подделка, не работает как RDM6300 v0.3 . Решено.
- Войдите на сайт для отправки комментариев
RFID RDM6300 v4.0 v0.3 оба HW-205 .
Пришёл такой RFID , и то работает , то нет . Долго понять не мог почему не работает.
Если подаёшь питание всё в сборе, то работает ,
ежели перетыкиваешь разъём , то уже нифига не арбайтен.
Методом тыка резисторами, выяснилось, что прежде чем включать свой Tx, модуль смотрит что на этом пине,
если ничего (или электроника своим Rx не подтянутым, в его Tx смотрит), то модуль не включается,
а если Tx притянуть к "+" , к примеру через 10к , тогда модуль запускается и начинает передавать через Tx .
Причём подтягивание к "+" через светодиод с резистором , не помогало.
Бред , но только так работает. Обычно же Rx притягивать резистором к "+" желательно, чтоб он ничего не нахватался.
Ещё один косяк , этот модуль не работает с либами,
оказывается он не выдаёт ожидаемый байт 0x03 конца передачи. Да и начало 0x02 посылки тож не выдаёт. И контрольной суммы нет. Остаётся ориентироваться по конечным 0x20 .
формат :
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();
}
В версии платы V4.2 RDM6300 ( физически похожа на V4.0 ), китайцы уже убрали этот недочёт , и она теперь повторяет оригинал. Подключать притягивать Rx модуля никуда не нужно.