Es hat in der Tat lange gedauert, doch ich habe es nun endlich geschafft mein altes Mini-Anzeige-Modul komplett zu überarbeiten. Dabei konnte ich durch den ein oder anderen Fehler, den ich noch in der ersten Version begangen habe lernen und es nun in der zweiten Version besser machen. Das soll nicht heißen, dass die erste Version voller Fehler war, ganz im Gegenteil. Die erste Version hatte bereits einige tolle Eigenschaften, die ich natürlich in die zweite Version des MAM mit eingebaut habe.

Ich möchte in diesem Artikel ähnlich vorgehen, wie ich es bei der ersten Version des Mini-Anzeige-Moduls getan habe. Demnach stelle ich in dieser Einleitung die Hauptmerkmale des MAM in Kurzform vor und werde im späteren Verlauf detailliert auf die jeweiligen Funktionen eingehen. Dabei werde ich selbstverständlich wieder alle Dateien zum Download zur Verfügung stellen, die für einen unkomplizierten Nachbau benötigt werden.

Die Funktionen des Mini Anzeige Modul 2 in der Übersicht:

  • vollständiger Akkubetrieb möglich (Lithium-Polymer)
  • Darstellung der Uhrzeit im Format hh : mm
  • Anzeige der Raumtemperatur
  • Statusleiste mit Wochentag und Datum im Format wd dd.mm.yyy
  • Überwachung des Li-Po-Ladezustandes
  • Erhalt der Uhrzeit bei Akkuwechsel / -Ausfall
  • Stromverbrauch von unter 1 mA
  • Mikrocontroller überwachtes Laden des LiPo via USB
  • optischer und akustischer Alarm (konfigurierbar)
  • sehr kompakte Bauweise
  • Bedienung über Drehgeber (optional)
  • PC-Tool zur Konfiguration sämtlicher Daten (USB)

Geplante, jedoch noch nicht fertig umgesetzte Funktionen:

  • Übertragung neuer Firmware via USB (optional)
  • Nutzung des DCF77-Funksenders (optional)
  • Anzeige der Außentemperatur (optional)

Hauptmodul

Das Hauptmodul ist das eigentliche Mini-Anzeige-Modul. Auf diesem befindet sich sowohl der Hauptcontroller (PIC18F45K22) sowie das LC-Display zur Anzeige der Informationen. Im weiteren Verlauf dieses Artikels wird zusätzlich noch das Außenmodul vorgestellt, das optional zur Aufnahme und Übertragung der Außentemperatur zum Hauptmodul eingesetzt wird.

Schaltplan

In diesem Kapitel möchte in den vollständigen Schaltplan des Mini-Anzeige-Modul vorstellen und im Detail auf die einzelnen Elemente und deren Funktionen eingehen. Der Schaltplan wurde mit Autodesk EAGLE erstellt.

Für die volle Auflösung bitte auf den Schaltplan klicken.

Das Herzstück des Mini-Anzeige-Modul ist die MCU (Main Control Unit). Ich habe mich für den PIC18F45K22 entschieden, den ich in der Vergangenheit bereits für diverse Projekte eingesetzt habe. Der Controller wird von diverser weiterer Hardware in Form von einfachen Bauelementen, wie Widerständen oder Kondensatoren sowie auch weiteren integrierten Schaltkreisen (zum Beispiel: FT232RL) begleitet um die Aufgaben, die ich dem MAM angedacht habe zu erfüllen.

Beginnen möchte ich bei der Energieversorgung des MAM. Wie auch schon meine erste Version des Mini-Anzeige-Modules wird auch die zweite Version autark vom Stromnetz mit einem Akku betrieben und bietet so größtmögliche Flexibilität beim Aussuchen eines geeigneten Aufstellplatzes. Der Akkubetrieb ist jedoch nur optional. Wer möchte, kann das MAM auch vollständig über ein Mini-USB-Kabel betreiben. Anders als noch bei der ersten Version wird das MAM nun von einem Lithium-Polymer-Akku mit einer Zelle versorgt. Der Akku wird über einen einfachen Steckverbinder mit dem MAM verbunden. Als Anschluss dient hierbei eine einfache zweipolige Stiftleiste. Da dieser Umstand dazu führen könnte, dass man den Akku verpolt an die Schaltung anschließt, ist ein  entsprechender Verpolungsschutz in Form eines PMOS-Transistors (Q1) auf dem Board vorgesehen, der bei Bedarf die Verbindung zu den Schaltkreisen trennt, siehe hierzu auch meinen separaten Artikel zum Verpolungsschutz. Ein Low-Dropout-Spannungsregler (IC5) stellt die 3,3V Spannungsversorgung für die elektronischen Baugruppen des MAM bereit. Der Ladezustand des Lithium-Polymer-Akkus wird vom Controller überwacht um den Anwender auf einen niedrigen Stand aufmerksam zu machen.

Zusätzlich besteht die Möglichkeit den LiPo direkt in der Schaltung / während des Betriebs über den Mini-USB-Anschluss zu laden. Hierfür wurde ein entsprechender Laderegler-IC (IC3) auf dem Board platziert, der das Aufladen des LiPos übernimmt und den Ladestrom überwacht. Wenn gewünscht, kann das MAM auch ausschließlich über USB betrieben werden, der Anschluss eines Akkus ist nicht zwingend notwendig.

Zum Übertragen neuer Firmware auf den Controller stehen grundsätzlich zwei Varianten zur Auswahl. Die erste und konventionelle Methode ist das Übertragen der Firmware über den ICSP-Anschluss (bitte beachten: Für den Einsatz des Bootloaders via USB sollte der DIP-Switch Nr. 1 auf OFF gestellt werden) mit einem geeigneten Programmiergerät (PICKit3, ICD3, …). Die zweite Möglichkeit ist das Übertragen neuer Firmware via USB (bitte beachten: Für den Betrieb des Bootloaders muss der DIP-Switch Nr. 1 auf ON gestellt werden). Je nachdem ob Ihr euren PIC mit einem Bootloader versehen habt, kann eine neue Firmware direkt über USB auf den Controller geladen werden. Hierfür muss sich der Bootloader natürlich schon auf dem PIC befinden (dies geschieht einmalig mit einem Programmiergerät), siehe hierzu auch den Abschnitt FAQ unten. Damit die Datenübertragung über USB generell funktionieren kann, wurde ein FTDI-Chip auf dem Board platziert, der eine UART zu USB Wandlung vornimmt. Über geeignete Treiber ist es somit sehr leicht mit dem PC über die allseits bekannte serielle Schnittstelle zu kommunizieren. Diese Datenschnittstelle soll in einem späteren Stadium diesen Projektes dazu verwendet werden das MAM über den PC mit einem entsprechenden Tool zu konfigurieren.

Eine neue Funktion, die es beim alten Mini-Anzeige-Modul so noch nicht gegeben hat, ist das Unterstützen einer 2,4 GHz Funkschnitstelle. Diese ist zum Messen einer Außentemperatur vorgesehen, weitere Details hierzu findet ihr im Kapitel “Außenmodul”. Die Innentemperatur misst das Mini Anzeige Modul über den weit verbreiteten 1-Wire-Sensor DS18B20. Der Sensor benötigt lediglich eine einzige Datenleitung um die entsprechenden Daten mit dem Host auszustauchen.

Zur Bedienung des MAM steht optional ein Encoder / Drehgeber zur Verfügung, der über den Steckverbinder SV1 an das Hauptmodul angeschlossen werden kann. Der Encoder hat dabei die Funktion der Eingabetaste / Bestätigung sowie das hoch und runterfahren des Cursors / der Auswahl. Wichtig beim Aufbau der (optionalen) Drehgeber-Platine ist das Setzen der Lötbrücke auf der Rückseite der Platine. Das Modul ist universell entworfen, so dass es bspw. auch in anderen Projekten verwendet werden kann. Für den Betrieb am MAM muss die GND Lötbrücke geschlossen werden (siehe Foto). Auf keinen Fall dürfen beide Lötbrücken geschlossen werden! Das MAM zieht das Potential der Drehgeber-Signale im Ruhezustand über Pull-up Widerstände auf 3.3 Volt. Im aktiven Zustand werden sie (über die geschlossene GND-Lötbrücke) auf GND gezogen. Wenn beide Lötbrücken geschlossen werden, entsteht ein Kurzschluss der MAM Hauptplatine!

Wie auch bei der ersten Version habe ich mich wieder für ein Display von electronic assembly entschieden. Jedoch wird dieses mal die unbeleuchtete Version des Displays eingesetzt. Dieses ist dank seines hohen Kontrastes auch bei schlechten Lichtverhältnissen optimal ablesbar. Zusätzlich wird aufgrund des Wegfalles der Hintergrundbeleuchtung Strom eingespart. Dem Display stehen zwei Signal-LEDs zur Seite, die einen Alarm optisch sehr schön zum Ausdruck bringen. Auch ein Summer ist wieder mit an Board um bei aktiven Erinnerungen / Alarmen etwas Lärm zu veranstalten. Dabei können sowohl die LEDs als auch der Summer in ihrer Intensität nahezu stufenlos über PWM-Signale (Pulsweiten-Modulation) reguliert werden.

Ein weiterer integrierter Schaltkreis auf dem MAM ist die Real-Timer-Clock, MCP79410. Es handelt sich hierbei  um eine RTC mit Kalender von der Firma Microchip (U1) die über das I2C-Interface an den Host angeschlossen wird. Die RTC stellt einem dabei alle relevanten Informationen wie Stunde, Minute, Sekunde, Tag, Monat, Jahr und Wochentag zur Verfügung. Zudem lassen sich weitere Funktionen wie ein frei programmierbarer Multifunktions-Ausgang oder zwei frei wählbare Alarme nutzen. Über einen separaten Eingang kann die RTC beim Ausfall der Hauptversorgung gepuffert werden, so verliert die RTC ihre Informationen nicht, wenn der Anwender zum Beispiel den Akku der MAM wechselt. Zum Puffern wurde ein GoldCap (GC) eingesetzt, der über einen Vorwiderstand (R7) samt Diode (D1) verschaltet ist. Als Taktquelle wird ein handelsüblicher Uhrenquarz mit einer Schwingfrequenz von 32.768 kHz eingesetzt. Die RTC verfügt weiterhin über 1kByte EEPROM Speicher, der für das Speichern wichtiger Daten (Einstellungen, Konfigurationen …) genutzt werden kann.

Für spätere Firmware-Versionen wurde der Anschluss eines DCF77-Moduls eingeplant. Hierfür befindet sich bereits eine entsprechende dreipolige Schnittelle auf dem Board (DCF). Bitte achtet auf die entsprechenden Release-Notes der jeweiligen Firmware-Version ob eine DCF77-Anbindung bereits unterstützt wird oder nicht.

Aufbau

An dieser Stelle möchte ich lediglich kurz zum Aufbau der einzelnen Komponenten sowie des “Gehäuses” eingehen. Wie bei jeder Bestückung von Leiterkarten bietet es sich an mit den flachen Bauteilen anzufangen und sich nach und nach an die Bauteile mit größerer Bauhöhe heran zu tasten. Das LC-Display  bzw. die Buchsenleisten für das Display würde ich erst als aller letztes montieren, da diese sonst beim Einlöten der restlichen Bauteile stören würden.

Wenn alle Bauteile des Mini-Anzeige-Moduls bestückt sind, kann die Firmware aufgespielt werden um auf 100% Funktion zu prüfen. Wenn auch dieser Vorgang erfolgreich abgeschlossen ist, kann mit der Montage des Gehäuses begonnen werden. Das MAM verfügt links und rechts vom LC-Display über Signal-LEDs, die je nach Status als optischer Hinweis dienen. Diese sollten natürlich im Design des Gehäuses berücksichtigt werden, damit sie im eingebauten Zustand noch sichtbar sind (z.B. hinter einer Milchglasscheibe). Aktuell habe ich leider noch kein eigenes Gehäuse für das Mini-Anzeige-Modul entworfen, da mir leider ein wenig die Zeit dazu fehlt.

Der von mir vorgesehene Lithium-Polymer-Akku kann zwischen dem Display und Platine verstaut (maximale Maße für unsichtbare Montage hinter dem Display: 50 x 40 x 5 mm) und ist somit im letztendlichen Aufbau nicht mehr sichtbar. Zum Laden muss der Akku nicht entnommen werden, es reicht aus das MAM via USB mit Strom zu versorgen. Denkbar wäre hier natürlich auch auf einen größeren LiPo mit höherer Kapazität auszuweichen. So würde das MAM noch länger abseits der Steckdose durchhalten. Da Akkus mit steigender Kapazität logischerweise auch größer werden, wird es zunehmend schwieriger diese optisch ansprechend zu verstauen. Ich bin aber sehr auf eure Ideen und Lösungen gespannt!.

Firmware

Dieses Kapitel wird sich um die Software beziehungsweise die Firmware des Mini-Anzeige-Modul kümmern. Ich möchte auf ausgewählte Aspekte der entwickelten Firmware eingehen um dem Anwender zum Einen das MAM so detailliert vorstellen zu können wie möglich und zum Anderen um die Möglichkeit zu bieten, dass das MAM ggfs. eigenständig erweitert oder angepasst werden kann. Die stets aktuellste Version der Firmware ist in meinem  GitHub-Repository zu finden.

Strukturierung des Programms

Die Firmware zum Mini-Anzeige-Modul ist modularisiert (siehe auch Projektstruktur) um eine optimale Wartbarkeit des Codes zu gewährleisten. Wie bereits erwähnt findet ihr die aktuellste Version der Firmware / des Programmcodes stets im  GitHub-Repository. In diesem Unterkapitel möchte ich die einzelnen Teile des Codes vorstellen und beschreiben welche Aufgaben die jeweiligen Module im System übernehmen. Zunächst verschaffen wir uns mit der nachfolgenden Tabelle einen Überblick über die vorhandenen Module der Software:

Modul Dateien Kurzbeschreibung
DCF • dcf.c
• dcf.h
Empfang und Dekodierung des DCF77 Funkzeichensignals zum Bereitstellen der Funktion “Funkuhr”
DOGL • dogl.c
• dogl.h
Enthält die Bibliothek zum verwendeten grafischen Display.
DS1820 • ds1820.c
ds1820.h
Treiber für den 1-Wire Temperatursensor.
EEPROM • eeprom.c
eeprom.h
Funktionen zum Lesen/Schreiben vom/zum EEPROM.
FONT16 • font16.c
font16.h
Beinhaltet den 16 Pixel hohen Font.
FONT32 • font32.c
font32.h
Beinhaltet den 32 Pixel hohen Font.
FONT font.h Beinhaltet den 8 Pixel hohen allgemeinen Font.
FUNC • func.c
func.h
Sammlung vieler sehr wichtiger Kernfunktionen des MAM.
ISR • isr.c
isr.h
Interrupt-Service-Routine
LANG_DE • lang_de.c
lang_de.h
Deutsches Sprachpaket für das User-Interface.
MAIN • main.c
main.h
Main-Funktion inkl. der PIC-Konfiguration.
MENU • menu.c
menu.h
Verwalten und Darstellen von Menüs und Untermenüs.
PERI • peri.c
peri.h
PIC-Treiber-Funktionen (SPI, I2C, UART …).
TIME • time.c
time.h
Verwalten der Uhrzeit sowie Treiberfunktionen für die RTC.
WL_MODULE • wl_module.c
wl_module.h
nRF24L01.h
Treiber für das 2.4 GHz Funkmodul (notwendig für Außensensor).

Zusätzlich zu den in der Tabelle enthaltenen Modulen gibt es noch die Datei common.h die zum vereinfachten Einbinden von Headerdateien herangezogen wird (hilft den Programmcode übersichtlicher zu gestalten) sowie die Datei build.h in der sich die neben der aktuellen automatisch generierten Buildnummer das Datum des letzten Builds befindet. Etwas detaillierter möchte ich gerne auf das Modul FUNC eingehen. Dieses Modul bildet quasi den Kern des Mini-Anzeige-Moduls dar und beinhaltet somit viele der wichtigsten Grundfunktionen der Firmware. Hier möchte ich insbesondere auf die Funktion workload eingehen, siehe folgenden Ausschnitt:

void workload (void)
{
    /* debounce the input keys if nesseccary */
    if( status.debounce )
    {
        status.debounce = 0;
        keyDebounce();
    }

    /* weitere Funktionen hier (gekürzt für bessere Darstellung) */

    /* uart handler */
    if( status.uartRec )
    {
        status.uartRec = false;
        commHandler();
    }
    
    /* check if a complete message frame was received */
    if( status.msgRec )
    {
        status.msgRec = false;
        status.dontSleep = 1;
        // decode the message and call the corresponding function
        funcDistributer();
    }
}

Diese Funktion ist essentiell und muss kontinuierlich immer wieder aufgerufen werden. Das Mini-Anzeige-Modul arbeitet nach dem Prinzip, dass anfallende Aufgaben dezentral erkannt oder gemeldet werden und zentral (durch die Funktion workload) abgearbeitet werden. Beispiel: Über den USB-Anschluss wird eine Nachricht vom PC-Tool empfangen, der User möchte die Firmware-Version des MAM auslesen. Die ankommenden Bytes der seriellen Schnittstelle lösen jeweils einen Interrupt aus. Innerhalb der ISR wird das jeweils letzte Byte gelesen, ein Flag gesetzt und die ISR sofort wieder beendet. Die workload Funktion wertet das gesetzte Flag aus und verarbeitet die empfangenen Bytes weiter. Entspricht eine empfangene Bytefolge einer vollständigen Message (z.b. die Aufforderung die Firmware-Version auszugeben), dann wird in einer Unterfunktion der workload Routine, die die eingehenden Daten aufgrund des in der ISR gesetzten Flags auswertet, ein weiteres Flag gesetzt “vollständige Nachricht / Befehl erhalten”. Auch dieses gesetzte Flag wird in der workload Funktion erkannt und abgearbeitet. Auf diese Weise arbeitet das MAM alle auftretenden Arbeiten ab.

Grafisches User-Interface

Verlieren wir ein paar Worte über das grafische User-Interface (kurz GUI) des Mini-Anzeige-Moduls. Selbst mit einem zunächst klein wirkendem 128 x 64 Display, kann man doch einiges an Informationen darstellen. Dabei sollte man immer darauf achten, dass die dargestellten Informationen gut ablesbar und übersichtlich dargestellt sind. So habe ich versucht die wesentlichen Informationen kompakt und optimal lesbar darzustellen. Dabei herausgekommen ist der Homescreen (siehe nachfolgende Grafik oder Fotos des Artikels). Die schwarze (invertiert dargestellte) Statusleiste im oberen Bereich des Displays zeigt einem auf dem Homescreen neben dem aktuellen Wochentag, das Datum mit Tag – Monat  und Jahr und in der rechten Seite den Zustand der Batterie / des Akkus.

Wechselt man mit Hilfe des optionalen Drehgebers in ein Untermenü wird das Datum ausgeblendet und durch den Namen des aktuell geöffneten Untermenüs ersetzt. Die Anzeige des Batteriezustandes wird stets immer eingeblendet. Auf dem Homescreen sehen wir des weiteren im Hauptanzeigebereich in normaler Darstellung die Uhrzeit und die Innenraumtemperatur in großen, gut ablesbaren Ziffern. Im unteren Bereich (optisch durch Begrenzungslinien abgetrennt) wird die Alarm bzw. Wecker-Einstellung angezeigt. In dem gezeigten Beispiel wurde kein Alarm konfiguriert. Das kleine schwarze Dreieck in rechten unteren Bereich soll dem User anzeigen, dass er mit einem Klick auf den Push-Button (Knopf-Funktion des Drehgebers) in eine tiefere Ebene einsteigen bzw. eine Aktion auslösen kann.

Außenmodul

In diesem Kapitel beschreibe ich das Außenmodul, das zum Erfassen einer Außentemperatur verwendet werden kann. Das Modul ist nicht zwingend erforderlich für den Betrieb des MAMs, ist jedoch eine sinnvolle Erweiterung um neben der Raumtemperatur auch die Außentemperatur anzeigen zu können.

Außenmodul ohne bestücktes Funkmodul

Schaltplan

Der Schaltplan des Außenmodules, das zur Messung der Außentemperatur eingesetzt wird, ist in nachfolgender Abbildung gezeigt. Die Grafik kann durch einen Klick in voller Auflösung betrachtet werden. Der Schaltplan wurde mit Autodesk EAGLE erstellt.

Das Außenmodul setzt auf einen etwas kleineren PIC18F13K22 Mikrocontroller. Dieser PIC-Controller ist mit einem NRF24L01+ Funkmodul verbunden um die gemessene Außentemperatur, die wiederum mit Hilfe eines DS18S20-Sensors aufgenommen wurde, zum Mini-Anzeige-Modul zu übertragen. Als Energiequelle dient ein Lithium-Polymer-Akku mit einer Kapazität von 320 mAh. Dank der sehr kompakten Maße des Akkus und sämtlicher weiterer Module findet alles in einem sehr kleinen Gehäuse platz.

Ein Low-Drop-Out-Spannungsregler sorgt für eine konstante und stabile Spannungsversorgung von 3,3V und benötigt dabei selber weit weniger als 1 mA. Das ist auch zwingend notwendig, damit das Außenmodul eine lange Laufzeit mit dem Li-Po-Akku erzielen kann. Eine Signal-LED dient als Hilfe beim Programmieren der Firmware, sowie zur Anzeige verschiedener Zustände. Ein leerer Li-Po-Akku kann auf dem Display des Hauptmoduls durch die fehlende Außentemperatur (stattdessen erscheint “- -“) erkannt werden. Der Anwender wird jedoch frühzeitig vor dem Funkausfall auch über das Display des Hauptmodules über eine niedrige Kapazität des Außenmoduls informiert. Das Außenmodul überwacht ständig die Kapazität des eigenen LiPos und überträgt diese Messwerte zusammen mit der Temperatur in Grad-Celsius via Funk an das Hauptmodul.

Download

In dieser Rubrik findet Ihr nun alle Dateien, Links, … die notwendig sind um das Mini-Anzeige-Modul vollständig nachbauen zu können. Zu dem Warenkorb bei Reichelt gehört natürlich nicht der mechanische Aufbau mit den Acrylglas-Modulen.

  • Warenkorb Hauptmodul Reichelt PDF 
  • Warenkorb Außenmodul Reichelt | PDF (to do)
  • Laderegler-IC von eBay: Suchen nach “TP4056 IC”
  • Lithium-Polymyer-Akku von eBay: Suchen nach “LiPo 3,7V”
  • Eagle- und Gerber-Dateien beider Platinen ZIP 
  • PC-Tool zur Fernbedienung des MAM über den Computer Exe [~10 MB] 

Die Platinen können im Grunde genommen bei jedem beliebigen Platinenhersteller in Auftrag gegeben werden. Ich habe da einen preisgünstigen Tipp: Auf der Internetseite von Itead Studio (oder auch alternativ: Elecrow) kann man Platinen für sehr günstigen Preis und dennoch guter Qualität herstellen lassen. Einziges Manko: Die Lieferzeiten sind mit 3…4 Wochen etwas lang. Wer jedoch 10€ drauf legt, bekommt die Platinen mit DHL auch innerhalb weniger Tage. Hierbei muss man jedoch aufpassen, dass der gesamte Warenwert (inkl. Versandkosten) nicht zu hoch wird: Ab einem Wert von 22€ muss Einfuhrumsatzsteuer gezahlt werden. Unterhalb von 22€ kommen keine weiteren Kosten hinzu (Außenmodul, Encoderplatine). Eine Alternative ist der Platinen-Service von Jakob Kleinen.

Nachbauten

Auf dieses Kapitel freue ich mich ganz besonders. Ich möchte an dieser Stelle die Gelegenheit nutzen und Eure Nachbauten präsentieren. Hast Du auch ein Mini-Anzeige-Modul gebaut und möchtest es hier vorstellen? Dann schreib mir eine Nachricht und ich werde das für dich erledigen 😉

Häufig gestellte Fragen

In diesem Abschnitt sollen Fragen gesammelt werden die immer wieder zum Mini-Anzeige-Modul gestellt werden. Wenn Du auch eine Frage hast, die hier jedoch nicht beantwortet wird, dann nutz bitte die Kommentarfunktion unter dem Beitrag. Alternativ kannst du mir natürlich auch eine persönliche Nachricht schreiben.

Wie lange halten die Akkus?

Hauptmodul: Der empfohlene Lithium-Polymer-Akku hat eine Kapazität von 1700 mAh. Das Mini-Anzeige-Modul hat einen (über die Zeit gemittelten) Strombedarf von etwa 0,5 mA = 500 µA. Somit hält eine vollständige Akkuladung für \frac {1700\,\text{mAh}}{500\,\text{uA}}=3400\,\text{h}\approx 142\,\text{Tage}. Es steht euch natürlich frei einen Akku mit größerer Kapazität zu verwenden. Ich empfehle das Modell mit 1700 mAh, da es von den Abmaßen genau zwischen Display und Platine passt und somit optimal verstaut ist (maximale Maße für unsichtbare Montage hinter dem Display: 50 x 40 x 5 mm – dann natürlich den mit der größten Kapazität auswhählen). Mit einem 5000 mAh Akku könnte die Laufzeit zum Beispiel auf circa 420 Tage erhöht werden (auf Kosten eines nicht mehr so schönen Aufbaus möglicherweise).

Außenmodul: Beim Außenmodul kommt ein LIPO mit einer Kapazität von 320 mAh zu Einsatz. Hier musste das Optimum zwischen Kapazität und den Ausmaßen des Akkus gefunden werden, damit einerseits die Laufzeit möglichst hoch, das Gehäuse für das Außenmodul jedoch möglichst klein sein kann. Der Stromverbrauch des Außenmoduls beträgt großzügig gerechnet 6,5 µA. Somit beträgt die Laufzeit des Außenmoduls \frac {320\,\text{mAh}}{6,5\,\text{uA}}\approx 50.000\,\text{h}\approx 6\,\text{Jahre}. Dabei ist offensichtlich, dass andere Effekte wie Selbstentladung und Alterung zu einem früheren Versagen des Akkus führen sollten. Mit anderen Worten: Eine Akkuladung des 320 mAh Akkus, sollte für das Außenmodul ein Leben lang ausreichen.

Achtung: Bei der Wahl der Akkus muss jedoch darauf geachtet werden, dass nur Lithium-Polymer-Akkus mit einer Zelle unterstützt werden! Andere Akkus dürfen nicht verwendet werden, da die Ladeschaltung, die auf dem Hauptmodul vorhanden ist, nur für 1C-Akkus vorgesehen ist.

Wie stelle ich die Uhrzeit ein?

Hierfür ist entweder die (optionale) Drehgeber Zusatzplatine oder das PC-Tool und ein Mini-USB-Kabel erforderlich. Ich empfehle die Einstellung der Uhrzeit über das PC-Tool, da es schneller und einfacher ist. Im Folgenden werden beide Varianten kurz beschrieben:

Einstellung der Uhrzeit über MAM-Remote (PC-Tool)

Das Programm MAM-Remote, das zur Einstellung der Uhrzeit verwendet werden soll, kann in meinem separaten  GitHub-Repository heruntergeladen werden ( siehe /store/exe/MAMRemote.exe ). Starte MAM-Remote und verbinde deinen PC mit dem Mini-USB-Kabel mit dem Mini-Anzeige-Modul (bitte beachte, dass Java auf deinem PC installiert sein muss, damit du das MAM-Remote nutzen kannst). Nun öffne das Menü zur Einstellung des seriellen Ports. Hier musst du nun den neu hinzugekommenen Port auswählen um dich mit dem MAM zu verbinden. Im Anschluss kannst du das Menü schließen. Im Hauptfenster kannst du jetzt die aktuelle Zeit des Hosts (der PC auf dem du gerade arbeitest) mit dem MAM synchronisieren, siehe:

Beispieldartellung: Das tatsächliche Aussehen der GUI kann abweichen!

Im Bereich des Terminals (blauer Bereich unten) siehst du den durchgeführten Datentransfer. Die ausgehende Nachricht hat das aktuelle Datum übertragen. Die erhaltene Nachricht (erkennbar an dem “<-” zeigt die Antwort des MAM). Ohne nun ins Detail des Protokolls einsteigen zu wollen, symbolisiert dir hier das 5. Byte (00h), dass die Nachricht erfolgreich empfangen und verarbeitet wurde. Auf deinem Mini-Anzeige-Modul solltest du nun die aktuelle Zeit des Hosts sehen.

Einstellung der Uhrzeit über den Drehgeber

Alternativ zur MAM-Remote, kann die Uhrzeit natürlich auch lokal / direkt an der MAM eingestellt werden. Verbinde hierzu die Zusatz-Drehgeber-Platine mit deinem MAM und drücke einmal auf den Drehgeber um in das Hauptmenü zu gelangen. Im Anschluss navigiere mit Hilfe des Drehgebers ( rauf: Gegen den Uhrzeigersinn / runter: Im Uhrzeigersinn ) zum Untermenü “Uhrzeit und Datum” und öffne es mit einem erneuten Klick auf den Drehgeber. Nun kannst du über “Uhrzeit” die gewünschte Zeit auf die Minute genau und über “Datum” das aktuelle Datum und den aktuellen Wochentag einstellen. Hinweis: Du musst die Uhrzeit für die nachfolgende Minute einstellen! Und exakt beim Eintreten dieser den Menüeintrag “Speichern” anwählen. Beispiel: Es ist gerade 12 : 29 : 33 Uhr – also stellst du im MAM die Zeit auf 12 : 30 Uhr und wartest (mit einer genauen Referenz) auf die nächste Minute (Sekunde 59 –> 0). In diesem Moment klickst du auf “Speichern”. Das MAM übernimmt die Zeit und läuft nun synchron zur verwendeten Referenz.

Wie bereits erwähnt empfehle ich die Einstellung der Uhrzeit mit der MAM-Remote, da es einfacher, komfortabler und zudem genauer ist (kein Warten auf einen Minutenwechsel notwendig) 🙂

Wie richte ich einen Alarm ein?

Um einen Alarm für das MAM einzustellen gibt es zwei Varianten. Natürlich kann der Alarm direkt am Modul selber eingestellt werden. Hierfür wird die optionale Bedieneinheit (Drehgeber) benötigt. Als Alternative Möglichkeit steht die Einstellung über das PC-Tool zur Verfügung (aktuell noch nicht im PC-Tool implementiert).

Einstellung des Alarms am MAM

Öffne mit einem Klick auf den Drehgeber das Hauptmenü des Mini-Anzeige-Moduls und navigiere über die Drehfunktion des Drehgebers zum Menüeintrag “Wecker”. Die Auswahlindikatoren zeigen dir das aktuell angewählte Untermenü an. Mit einem erneuten Klick auf den Drehgeber öffnest du das Untermenü. Hier hast du nun eine Reihe weiterer Einstellungsoptionen. Das nachfolgende Bild zeigt das Untermenü:

Beispiel mit aktiviertem Alarm

Innerhalb dieses Untermenüs kannst du nun den Alarm deinen Wünschen entsprechend konfigurieren. Bei aktivierter Option des optischen Alarms, wird zusätzlich zum akustischen Alarm eine Indikation des Alarms über die Signal-LEDs des MAM ausgelöst. Über die Uhrzeit sowie die aktivierten Wochentage kann der Alarm weiter konfiguriert werden. Wenn ein Alarm aktiv ist, wird dieser entsprechend seiner Konfiguration zusätzlich auf dem Homescreen dargestellt.

Warum ist mein Alarm stumm?

Vermutlich hast Du den stummen Alarm in den Einstellungen des Mini-Anzeige-Modul aktiviert. Schau mal unter den Einstellungen (Anzeige und Ton) nach und setze den Haken bei Lautsprecher. Wenn das Problem weiterhin besteht solltest Du überprüfen ob der Piezosummer <BUZ> richtig montiert ist um evtl. kalte Lötstellen oder einen Wackelkontakt auszuschließen. Wenn auch das nicht hilft ist der Summer evtl. falsch rum eingebaut oder sogar defekt.

Wie kann ich die Firmware aktualisieren?

Hier gibt es im wesentlichen zwei Methoden: Wenn Du selber ein Programmiergerät wie etwa ein PICKit3 oder ICD3 besitzt, dann kannst Du ganz einfach die zur Verfügung gestellte *.hex Datei der neuen Firmware in den Controller laden. Bitte achte bei dieser Methode darauf, dass der Jumper <BL> unbedingt entfernt werden sollte, damit der FT232RL keinen Schaden durch die Programmierspannung davon trägt. Die zweite Methode ist etwas bequemer: Du verwendest den Bootloader auf dem Controller um eine neue Firmware zu übertragen.

Wenn ich noch Platinen von meiner Bestellung übrig habe, kann ich euch den PIC auch auf die Platine löten und mit dem Bootloader bespielen. Somit würdet Ihr gar kein Programmiergerät mehr benötigen. Ihr könnt mich gerne über das Kontaktformular ansprechen ob ich noch Platinen übrig habe, dann klären wir den Rest per Mail.

Eine aktuell noch nicht final umgesetzte Variante um neue  Firmware auf das MAM zu übertragen ist die Verwendung des PC-Tools. Hierbei schließt du das MAM einfach via USB an einen PC deiner Wahl an und lädst die neue Firmware mit einem Mausklick über das PC-Tool (was wiederum ein Microchip Tool nutzt) auf das MAM. Eine genauere Anleitung werde ich hier veröffentlichen, sobald diese Variante des Firmware-Updates fertig in das Projekt implementiert wurde. Achtung: Wenn der Controller mit einem Programmiergerät neu geflasht wird, wird in der Regel der gesamte Flash zuvor gelöscht, so dass auch der Bootloader gelöscht wird und dann nicht mehr für Firmware-Updates verwendet werden kann!

Können auch mehrere Raumtemperaturen ermittelt werden?

Grundsätzlich ist das möglich, Ja. Hierzu müssten lediglich Anpassungen an der Firmware vorgenommen werden. Wenn Du dir das zutraust ist es jedoch kein Problem das System auf mehrere externe Temperatursensoren (oder auch Sensoren für andere Größen, zum Beispiel Luftfeuchtigkeit) zu erweitern.

Kann ich meinen Nachbau präsentieren?

Selbstverständlich. Ich würde mich wirklich sehr darüber freuen, wenn Du deinen Nachbau des Mini-Anzeige-Modul hier vorstellen möchtest. Schreib mir einfach mal über das Kontaktformular, dann besprechen wir alles 🙂

Mein Nachbau funktioniert nicht, was kann ich tun?

Ups… Hier scheint beim Aufbau oder beim Bespielen mit der Software irgendetwas schief gelaufen zu sein. Diese Frage lässt sich leider so ohne weiteres nicht beantworten. Ich würde vorschlagen, dass Du die Kommentarfunktion unter diesem Beitrag verwendest und dein Problem schilderst. Dann werden wir das Problem zusammen beseitigen.

Siehe auch

  • Bootloader – Eine Erklärung samt praktischer Anwendung
  • FTDI FT232 RL – USB zu Seriell Wandler-IC
  • DS18S20 – 1-Wire-Temperatursensor
  • EA DOGL – LC-Display mit geringem Strombedarf

Weblinks

Leave a Comment