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 модуля никуда не нужно.