Stand 07.12.2013
Anhand dieser Anleitung sollte jedem mit etwas elektronischem Grundwissen und Geschick der Nachbau des RFID Akku Scanners gelingen. Wenn alles vorhanden ist, sollte das locker an einem verregnetem Sonntag zu schaffen sein. Viel Spaß beim basteln.
Als erstes müssen die Teile beschafft werden. Ebay und Pollin sind da die ersten Adressen die man ansteuern sollte. Alle hier verbauten Teile sind dort zu bekommen. Evtl. hat der eine oder andere von euch auch noch etwas passendes in der Bastelkiste liegen. Das benötigte Material findet Ihr hier am Ende der Seite. Info: Ab Software v1.09 ist auch die Verwendung von NDEF formatierten Tags möglich.
Los geht`s mit dem bestellen der Teile und anschließendem installieren der Arduino Software IDE 1.0.5. Diese entsprechend für euer System laden und installieren. (IDE-1.5beta) wurde auch erfolgreich getestet.
Mittlerweile hat der Postbote geklingelt und alle nötigen Teile gebracht. Nun können wir alle benötigten Komponenten in das Gehäuse einbauen. Dazu mit der Laubsäge die entsprechenden Ausschnitte im Kunststoffgehäuse 129x64x45mm für das 1,8″ TFT Display, die beiden Schalter, Ladebuchse und USB Anschluss vornehmen. Danach das Display mit Micro USB Karte und die RFID Platine in den Deckel einbauen. Dazu musste ich bei meinem Gehäuse an dem TFT die Lötleiste abschneiden und direkt auf den Lötpunkten die Kabel anlöten.
Hier noch einmal die Gesamtansicht vom inneren des Gehäuses. Es ist gut zu erkennen, daß ich die RTC komplett in Schrumpfschlauch gepackt habe, damit es mit der Batterie keinen Kurzschluss gibt.
Anschließend nach folgendem Schaltplan mit dem Arduino Mega 2650 Board verdrahten.
Einige Getränke und Stunden später können wir dann mit dem flashen der RFID Scanner Software beginnen. Den benötigten Sketch könnt Ihr aktuell hier RFID_Scanner_1_10 und die von mir dazu benutzten Arduino IDE 1.05_libraries hier laden. EDIT 19.052017: Libraries funktionieren nicht mehr mit der Arduino 1.8.2, deshalb hier die aktuellen RFIDakkuscan_lib_19_05_2017. Es kann auch das Platformio Projekt RFIDakkuscan_1.10_platformio geladen werden. Beides wird an die entsprechenden Stellen entpackt. Als nächstes öffnen wir die Arduino IDE und stecken das Mega 2650 board an den USB Anschluss. Nun öffnen wird den Sketch RFID_Scanner_1_10. Jetzt wählt Ihr unter Tools -> Board -> Arduino 2560 oder ADK aus. Anschließend wählt Ihr den passen Port unter Tools-> Serieller Port aus an dem der Arduino hängt. Als nächstes wird der Sketch zum Test ob alle Libs vorhanden sind kompiliert, dazu den linken Button oben in der Leiste (Überprüfen) drücken. Wenn das ohne Fehler funktioniert hat, können wir mit dem zweiten Button von links (Upload) das Programm (Sketch) in den Mega 2560 laden. Danach sollte das Programm starten und wenn alles richtig gemacht ist auf dem TFT „PC Modus“ anzeigen.
Da jetzt die Software und Hardware soweit funktioniert, muss nur noch die RTC eingestellt werden. Seit Software Version v1.02 kann die RTC auch über sie serielle Schnittstelle eingestellt werden. Dazu wird der folgende String im Format „t;year;month;day;hour;minute;secunde;“ an den Mega2560 gesendet.
„t;2013;2;27;19;36;00;“
Damit wird RTC eingestellt und aktiviert.
Als nächstes sollte man sich eine Liste seiner Akkus in einer Text Datei (Notepad etc.) anlegen. Hier sollte man die Daten Datenformat konform reinschreiben. Damit kann man jederzeit den entsprechenden String kopieren und in dem Seriellen Monitor einfügen. Nachdem die RFID Coins auf den Akkus angebracht wurden,
kann das Programmieren der RFID Coins beginnen. Dazu wird rechts oben der „Serial Monitor“ geöffnet, im Monitor unten rechts „Sowohl NL als auch CR“ und „9600 Baud“ eingestellt. Jetzt die Befehlszeile für den Akku eingegeben:
„n;Lipo ;SLS APL 30C+ ;2;0;850;3;20;25;70;27;01;13;0;8;99;“
Sobald der Befehl mit „Enter“ abgeschickt wurde ist der RFID Scanner bereit den RFID-Coin zu beschrieben. Dazu diesen an die Scanner Fläche bringen. Jetzt werden alle Daten auch im Display angezeigt. Damit die der neue Akku fertig. Wiederhole diesen Vorgang für jeden Akku. Wenn alle Akkus fertig sind,oder auch zwischendurch kann der befehl „r;“ abgesetzt werden. Mit diesem Befehl spuckt der Mega das aktuelle Datum und Uhrzeit und alle bekannten Akkudaten auf der Seriellen Schnittstelle aus.
Das das Booten etwas lange dauert, wenn der original Arduino bootloader aktiv ist, er wartet nach dem einschalten schließlich auf einen Befehl um ein Programm in den controller zu laden, werde wir die Fuse Bits so verändern das der bootloader übersprungen wird. Dazu benötigen wir allerdings einen ISCP Programmer.
Die originalen Fuse Einstellungen des Arduino Boards sind in der Datei boards.txt unter ../arduino-1.0.3/hardware/arduino/boards.txt zu finden. Dort sind als Standard folgende Fuse einsgestellt;
low_fuses=0xFF high_fuses=0xD8 extended_fuses=0xFD
Ein Blick auf http://www.engbedded.com/fusecalc/ verrät was dahinter steckt.
Die einzige Änderung die ich vorgenommen habe ist die high_fuses=0xD8 in high_fuses=0xD9 zu ändern. Damit wird folgende Funktion deaktiviert.
Boot Reset vector Enabled (default address=$0000); [BOOTRST=0]
Das hat zu Folge, das das Programm zwar direkt ohne Bootloader geladen wird, aber der mega 2560 nicht mehr sofort mit der Arduino IDE geflashed werden kann.
Ein ändern der Fuse wird mit avrdude vorgenommen, hier der Befehl als root dazu.
sudo avrdude -c usbasp -v -p m2560 -U hfuse:w:0xd9:m
oder mit
sudo avrdude -c usbasp -v -p m2560 -U hfuse:w:0xd8:m
zurück zum Original. Man kann auch alle Fuses auf einmal schreiben einfach am ende alle Fuses anhängen.
-U lfuse:w:0xff:m -U hfuse:w:0xd9:m -U efuse:w:0xfd:m
Normalerweise kann das Progamm mit folgendem Befehl über USBasp geflashed werden.
sudo avrdude -c usbasp -v -p m2560 -U flash:w:RFID_Scanner_1_00.cpp.hex
Das ändern der Fuse beschleunigt den start von ca 8 Sekunden auf 3 Sekunden was akzeptabel ist.
Wenn alles fertig ist könnte das Gerät im Gebrauch so aussehen: