Arbeitsprozessbericht

  • Juli - August 2014

    Als erstes recherchierte ich nach Grundlagen über ein RFID Zeiterfassungssystem, dabei stieß ich auf den RFID Bauteilesatz von Pollin. Nachdem ich den Bauteilesatz in den Ferien bestellt hatte machte ich mich daran die Platine zu löten in der Hoffnung sie danach in den Betrieb nehmen zu können. Nach dem ich die Platine vollständig bestückt und gelötet habe, konnte ich mit den ersten Tests anfangen. Der Bauteilesatz konnte einen RFID Transponder erkennen und dessen ID auf den Display wiedergeben. Nun machte ich mich daran die Grundfunktionen für mein Projekt festzulegen. Dabei kam es mir auf folgende wesentliche Punkte an:

    • Erkennen eines RFID Transponders in Reichweite
    • Jeder Mitarbeiter bekommt seine eigene ID Nummer
    • Die Mitarbeiterzeiten werden in Echtzeit Online gespeichert.
    • Jeder Mitarbeiter kann seine Zeiten auf einer entsprechenden Internetseite abfragen
    • Der Personalleiter hat Adminrechte
    • Anzeige des aktuellen Datums und Uhrzeit
    • Optische/Akustische Anzeige der Zeiterfassung
    • Tastatur zum Auswählen der Kommen/Gehen Zeit

    Durch die von mir selbstgesteckten Ziele, musste ich weitere Informationen über Ethernet Schnittstellen in Erfahrung bringen. Durch diverse Foren bin ich auf verschiedene Beiträge gestoßen: RS232 zu LAN Schnittstellen.

    Daraufhin bin ich auf die LS100 von der Firma Sena aufmerksam geworden. Dieser serielle Geräteserver ermöglicht mir den direkten Netzwerkzugriff für mein Terminal, eine Kommunikation zwischen der RS232 und einer Ethernet LAN Verbindung ist hiermit gegeben. Auf diese Weise kann ich mein Terminal über das Netzwerk überwachen und steuern.

  • September 2014

    Mit den nun gewonnenen Informationen konnte ich mit meinen Schaltplan beginnen. Als erstes übernahm ich die Grundfunktionen aus dem Pollin Bausatz den ich dann für meine Schaltung weiterentwickelte. Dazu kamen noch der ATmega32, eine Echtzeituhr (RTC) inkl. Pufferbatterie die ich über die I²C Schnittstelle anspreche, ein LCD Display 4x20 in 4 Bit Modus für die Pinneinsparung, eine ISP Programmierschnittstelle sowie eine standartmäßige Matrixtastaturschaltung.

    Die einzelnen Beschaltungen der genannten Komponenten habe ich mir aus dem Datenblätterberg entnommen :). Um keine Zeit zu verlieren habe ich mich danach sofort mit dem Platinen Layout beschäftigt. Dabei hatte ich mir selber noch keine Gedanken bezüglich der Größe für ein späteres Gehäuse gemacht.

    Nach Abschluss des Routings habe ich die Platine bei einem Platinen Hersteller in Auftrag gegeben und die ersten Bauteile bestellt. Nach kurzfristiger Lieferung konnte ich mit der Bestückung meiner Platine anfangen und diese bis zum Ende des Monats fertigstellen.

  • Oktober 2014

    Nun konnte ich mit der Inbetriebnahme beginnen. Zur Sicherstellung das kein direkter Kurzschluss auf meinem Board vorhanden ist, habe ich es mit einem Multimeter auf Kurzschluss gepruft. So konnte ich wenigstens sicher sein das beim ersten Spannung anlegen sich mein Board nicht in Rauch auflöste.

    Um das LCD Display in Betrieb nehmen zu konnen habe ich ein Flachbandkabel mit einem Wannenstecker verlotet. Da ich es kaum erwarten konnte meine Schaltung in Betrieb zu nehmen habe ich das LCD Display mit dem Board verbunden und Spannung angelegt. Die LED's fur die einzelnen Spannungsversorgungen haben geleuchtet, soweit so gut. Um das LCD Display anzusteuern musste ich ein kleines Testprogramm mit dem zugehorigen LCD Treiber von Peter Danegger auf meinem ATmega32 flashen. Eine Ausgabe auf dem Display mit dem zugehorigen Text kam leider nicht. Nun war ich erstmal ein paar Tage an diesem vermeintlich kleinen Problem beschaftigt. Zuerst dachte ich an ein Hardware Problem, ich überprüfte meine Beschaltung noch einmal ganz genau. Nach dem ich keine Hardware Fehler gefunden habe, habe ich mich mit dem LCD Treiber auseinandergesetzt. Nach dem ich dort aber auch keine Probleme gefunden habe war ich erstmal verunsichert.

    Irgendwann bin ich auf sogenannte Fusebits in einem Forum aufmerksam geworden. Diese Fusebits dienen dem µController zur Konfiguration. Anhand der Fusebits Tabelle konnte ich feststellen dass bei gesetztem JTAGEN Bit die Ports (PC2, PC3, PC4, PC5) nicht benutzt werden konnen. Genau diese Ports sind fur die Ansteuerung meines LCD Displays erforderlich. Nach deaktivieren des JTAGEN Bit hatte ich endlich eine Ausgabe auf dem Display. Mein erster Meilenstein war gelegt, das Display funktionierte!

  • November 2014

    Bei der Besprechung des Zwischenberichtes mit Herrn Groß stellte sich heraus dass die Matrix Folientastatur überflüssig ist. Er gab mir den wichtigen Ratschlag einer "Toggle" Funktion. Anhand dieser, könnte ich die Mitarbeiterzeiten Kommen und Gehen ohne eine Tastatur registrieren.

    Nun machte ich mich an die Programmierung der RTC. Diese wird angesteuert über den I²C Bus den wir parallel im Unterricht bei Herrn Eisenmann behandeln. Hierzu habe ich den Treiber von Peter Fleury zur i²C Schnittstelle verwendet. Nach anfänglichen Problemen mit dem Treiber konnte ich es dennoch erfolgreich umsetzen.

    Die Pufferbatterie zur Erhaltung des Taktes der RTC hat auf Anhieb funktioniert. So wurden die Daten nach Spannungsunterbrechung richtig ausgegeben.

    Der 2. Meilenstein ist geschafft. Das Datum und die Uhrzeit werden richtig angezeigt!

  • Dezember 2014

    Jetzt konnte ich es kaum noch erwarten meine ersten RFID Transponder einzuscannen. Nach Informationen von vielen RFID Projekten aus diversen Foren konnte ich mich an die Programmierung des RFID Quellcodes machen.

    Diese Programmierung hat mir die meiste Zeit und Nerven gekostet. Immer wieder testete ich mit einem RFID Transponder die Interrupt Funktion. An vielen verschiedenen Stellen in der Interrupt Routine habe ich mir eine Testausgabe ausgeben lassen umso einen Einblick darüber zu gewinnen ob ein Transponder richtig erkannt wird.

    Da die Erkennung der RFID Transponder nicht immer erfolgreich waren, konnte ich mir einen Fehler meiner Software nicht vorstellen. Es gab Tage da hat es wunderbar funktioniert und an manchen einfach nicht. Schließlich ersetzte ich die Lesespule durch eine neue, in der Hoffnung das Problem damit zu lösen. Anfangs hat dies auch ganz gut funktioniert bis sich doch wieder das alte Problem bemerkbar gemacht hat.

    Da ich selber nicht mehr weiter wusste, habe ich Kontakt zu einem Ingenieur von der Firma Pollin aufgenommen. Dieser gab mir den Hinweis die Polung der Demodulationsdiode zu wechseln.



    "Da der U2270b sehr kritisch mit der Demodulationsfrequenz ist und diese sehr schnell zum "kippen" bei Fehlanpassung neigt, hilft es ab und zu die Demodulations-Diode (laut Deinem Schaltplan D5) umzupolen bzw. verkehrt herum einzubauen"

    Nun war ich gespannt darauf ob die Schaltung endlich stabil ist. Der Tipp zeigte sich als erwiesen. Seit dem ich die Diode gedreht habe funktionierte es einwandfrei. Kurze Zeit später gelingt es mir sogar die Transponder ID auf dem Display darzustellen.

    Ein weiterer Meilenstein wurde gelegt.

  • Januar 2015

    Um die freien Tage der Weihnachtsferien noch zu nutzen habe ich mich sofort mit der RS232 Schnittstelle beschäftigt. Hierzu habe ich mir einen kostengünstigen RS232/USB Adapter über Ebay gekauft. Parallel dazu habe ich mich an die Programmierung der RS232 Schnittstelle gewagt. Die Grundlagen hierfür habe ich über den Unterricht bei Herrn Eisenmann vor den Weihnachtsferien bekommen. Schnell konnte ich ein kleines Testprogramm für die RS232 schreiben. Mit diesem Testprogramm war ich erfolgreich, so konnte ich z.B. verschiedene Strings über die serielle Schnittstelle übertragen und auf meinem PC in einem Terminal Programm wieder anzeigen. Nun musste ich nur noch die Transponder ID's ebenfalls über die serielle Schnittstelle übertragen. Hierzu habe ich meine Programmierung modifiziert. Nach Fertigstellung des Programms war ich gespannt ob ich die Transponder ID auf dem PC anzeigen lassen kann. Dies war jedoch nicht der Fall. Das ganze System hängte sich jedes Mal auf, nach dem ich einen Transponder eingescannt habe. Nun hatte ich wohl doch ein größeres Problem. Das Ganze hat mir sehr viel Zeit und Nerven gekostet. So konnte ich Transponder einscannen sie aber nicht gleichzeitig über die serielle Schnittstelle übertragen? Wie kann das sein? Ich hatte zwar eine Vermutung aber die konnte ich bisher nicht belegen. Um mir Hilfe zu holen hatte ich im µController Forum einen Beitrag eröffnet. Leider habe ich keine sinnvollen Antworten bekommen mit denen ich etwas anfangen konnte. Nun habe ich dieses Problem erstmal bei Seite gelegt ich wollte einfach vorankommen.

    Deshalb bestellte ich mir nu n einen Linux V Server von der Firma Alfahosting. Diesen musste ich erstmal nach meinen Vorstellungen konfigurieren. Um die Daten im Internet zu speichern richtete ich mir einen Webspace mit der dazugehörigen Domain Adresse und einer mySQL Datenbank ein. Anschließend musste ich nur noch die LS100 konfigurieren. Hierzu hat mir das Handbuch die nötigen Informationen geliefert.

    Da wir uns in der Schule regelmäßig zum Erfahrungsaustausch getroffen haben und dort auch verschiedene Tests durchgeführt haben, kam ich auf die Idee den RS232/USB Adapter von meinem Mitschüler Wolfgang Peter auszuleihen. Nun hat es funktioniert, meine Vermutungen bezüglich der gekauften Hardware über Ebay haben sich hiermit bestätigt. Mein Adapter hatte einen Konflikt mit den RFID Komponenten.

    Um die Performance zu steigern kam ich auf die geniale Idee die Taktfrequenz meines ATmegas32 zu erhöhen. Hierzu muss ich vielleicht noch anführen dass der ATmega32 über verschiedene Wege seinen Takt erhalten kann. Anfangs war meine Hardware so konzipiert das der ATmega32 über einen externen Takt versorgt wird. Also fing ich an mit den Fusebits zu experimentieren, ohne Wissen dass dies später schlimme Folgen haben kann. Plötzlich ging gar nichts mehr!!!! Ich hab die komplette Kontrolle über den ATmega32 verloren. Hierbei gilt zu erwähnen, dass ich einen SMD bestückten ATmega32 auf meinem Board habe. Genial! Super! Toll gelaufen! Klasse Benni!

    Ich wusste nicht mehr weiter, somit blieb mir nur noch den Weg über die Foren. Nach ein paar Tagen habe ich einen genialen Beitrag gelesen den ATmega32 wieder zum Leben zu erwecken. Hierzu musste ich nur einen externen Takt an den Pin XTAL1 anlegen. Dies konnte ich am besten in der Schule an meinem Experimentierboard ausführen. Ich habe hierzu einfach einen Port vom Experimentierboard als Ausgang deklariert und Togglen lassen. Der erzeugte Takt habe ich dann auf den Pin XTAL1 des ATmega32 gelegt. Nun konnte ich ihn wieder ansprechen und die Fusebits wieder in die ursprüngliche Lage versetzen. Gerettet!!

  • Februar 2015

    Nachdem nun meine RFID Platine Softwaremäßig vollständig funktioniert, begann ich die Programmierung des Servercodes. Die Programmierung konnte ich mit dem Buch "C von A bis Z" sehr gut umsetzen. Das Programm war nach wenigen Tagen fertig. Bei den ersten Tests hatte ich jedoch Probleme mit der zeitlichen Kommunikation um den Puffer zu leeren. Deshalb musste ich noch ein paar Tage intensive Zeit dafür investieren. Parallel arbeitete ich an den mySQL Tabellen. Schlussendlich konnte ich es so lösen, dass eine gute Kommunikation zwischen Server und RFID Terminal stattfindet. Ein weiterer Schritt war nun die Darstellung im Internet. Ich machte mir Gedanken über den Seitenaufbau und begann mit der Suche nach einem entsprechenden Design. Hierzu verwendete ich ein Template das ich im Internet gefunden hatte das meinen Vorstellungen weitestgehend entsprochen hat. Diese Seiten musste ich nur noch entsprechend anpassen und mit meiner mySQL Datenbank verknüpfen.

    Bei der Suche nach einem geeigneten Gehäuse musste ich feststellen dass meine RFID Platine zu groß geworden ist. Als ich mein Wunschgehäuse gefunden habe, aber die Kosten hierfür meinem Budget nicht entsprachen musste ich versuchen ein Gehäuse als Muster für meine Technikerarbeit zu bekommen. Nach einem sehr freundlichen Gespräch mit Herrn Etienne von der Firma Bopla habe ich kostenlos und mit kompletten Zubehör mein Wunschgehäuse bekommen.

    Da meine Platine einige Hardwarekomponenten (Matrixtastatur, ext. Quarz, EEProm) hatte die entfallen können, konnte ich das Layout entsprechend der Gehäusegröße umgestalten. Die neue bestückte Platine konnte ich nun leicht einbauen. Nach erfolgreichen Tests wollte ich noch das äußere Erscheinungsbild verbessern. Hierzu habe ich das Layout einer Klebefolie entworfen und diese bei der Firma Artwork! Kostenlos produzieren lassen. Das Projekt war somit vollständig fertiggestellt und konnte Termin gerecht abgegeben werden.