HR20/Master

Aus Wiki Sensornetze
Wechseln zu: Navigation, Suche

Vorbetrachtung

Die originale Master-Software baut auf dem Atmega32a sowie dem RFM12 Funkmodul auf. Da wir jedoch einen anderen µC einsetzen, muss die Software entsprechend portiert werden. Desweiteren nutzt die original-Software den Takt des Funkmodules (@10 MHz), da wir bei unserem Breakout Board an diesem Punkt nichts ändern können, können wir dies so nicht umsetzen.

Hardware

Schaltplan Atmega32u4 + RFM12 vereinfacht
Aufbau HR20 Master

Für den bei uns zum Einsatz kommenden Master wird folgende Hardware verwendet:

  • Atmega32u4 auf einem Breakout Board mit MiniUSB-Anschluss @16 MHz (http://ladyada.net/products/atmega32u4breakout/)
  • RFM12B Funkmodul (868 MHz)
  • da das Breakout Board den µC standardmäßig mit 5 V versorgt, der Funkchip aber nur mit 3,3V betrieben werden darf wurde der µC mit einem Festspannungsregler ebenfalls an die 3,3 V Spannung mit angeschlossen und die 5V Versorgung unterbrochen


Flash-Vorgang

Bei dem µC Atmega32u4 ist bereits ein Bootloader vorinstalliert. Folgendes wird zum Bespielen benötigt (unter Ubuntu)

  • MiniUSB-Kabel zum Anschluss des Controllers an den PC
  • avr-libc
  • avrdude

Zum Flashen folgenden Befehl ausführen

 avrdude -c avr109 -p m32u4 -P /dev/ttyACM0 -e -U flash:w:main.hex

Portierung

Bei der Portierung gab es primär 2 Aspekte die betrachtet werden mussten:

  • Umstellung der Kommunikation mit dem PC von seriell auf USB
  • Anpassung des Quellcodes damit beispielsweise Timer und Interrupts funktionsfähig bleiben

Kommunikation über USB-Schnittstelle

Für die Kommunikation nutzen wir das LUFA-USB-Framework. Der Controller erscheint am PC als virtuelles serielles Interface (Ubuntu: /dev/ttyACMX).

Auf folgender Seite sind Methoden definiert, die für die Kommunikation hierfür genutzt werden http://www.fourwalledcubicle.com/files/LUFA/Doc/091122/html/a00237.html (CDC-Device)

Anpassung des restlichen Quellcodes

Wie eingangs schon beschrieben, arbeitet der originale Master mit 10 MHz, unserer jedoch mit 16 MHz. Diesen Aspekt müssen wir besonders bei der Verwendung des Timers beachten, der für RTC (Real-Time-Clock) Verwendung findet. Desweiteren müssen einige Registernamen angepasst werden, die es bei dem atmega32u4 nicht gibt. Speziell sind das Register für ext. Interrupt und Timer.

Inbetriebnahme

Da wir unseren Master über eine selbst geschriebene Software steuern (OpenHR20ware). Mussten auch mühselig die Befehle, die man an den Master senden kann aus dem Quellcode extrahiert werden, da dies nur schlecht bis gar nicht dokumentiert ist. Beispielsweise erwartet der Master, dass man ihm jede Minute die aktuelle Uhrzeit vom PC sendet.