Elektroda.de
Elektroda.de
X

Thermometer f├╝rs Schlafzimmer in Form eines Rahmens

krzbor 4530 9
This content has been translated flag-pl » flag-de View the original version here.
  • Thermometer f├╝rs Schlafzimmer in Form eines Rahmens
    Zu Beginn eine Erkl├Ąrung zum Titel - es ist kein typisches Thermometer, denn es misst nichts, sondern zeigt einfach die von anderen Sensoren gemessene Temperatur an. Allerdings fand ich, da├č die "Temperaturanzeige" seltsam klingt. Aber ,,f├╝rs Schlafzimmer" hat seine Begr├╝ndung, ├╝ber die ich sp├Ąter schreiben werde.

    Etwas Geschichte

    Anzeige der Au├čentemperatur im Schlafzimmer macht Sinn - schlie├člich entscheiden wir dort, wie wir uns kleiden. Anfangs wurde die Temperatur von einem alten Lenovo-Tablet angezeigt - dank des Chrome-Browsers und der M├Âglichkeit, sie im Vollbild anzuzeigen, sah sie ziemlich anst├Ąndig aus. Das Problem war die Helligkeit - nachts soll es im Schlafzimmer dunkel sein. Der Browser kann die Hintergrundbeleuchtung nicht steuern. Ich habe das Problem teilweise gel├Âst, indem ich ein halbtransparentes "div" basierend auf den Daten der astronomischen Uhr eingestellt habe. Es funktionierte sogar ganz gut, aber die WLAN- oder Power-Symbole leuchteten trotzdem hell auf. Allerdings reichte es, den Bildschirm so zu drehen, dass man ihn vom Bett aus nicht sehen konnte und es war OK. Einmal bemerkte ich jedoch, dass sich das Display ausbeulte, und nach einer Weile, als die Ausbeulung zunahm, begann das Display zu versagen. Ich habe gelesen, dass Batterien bei konstanter Stromversorgung anschwellen, aber ich dachte, Lenovo w├╝rde davon nicht betroffen sein. Es stellte sich das Problem - ein neues Tablet zu bekommen oder es "auf eigene Weise" zu machen. Als ich an meine eigene Temperaturanzeige dachte, kaufte ich mir einmal ein TFT-Modul 480x320px. Grunds├Ątzlich wollte ich ein gro├čes Display, keine hohe Aufl├Âsung, aber dann konnte ich nichts Interessanteres finden als dieses 4" Display. Also beschloss ich, meine eigene Konstruktion auf Basis von ESP8266 zu bauen.

    Bau des Rahmens

    Das Grundproblem beim Bau eines Ger├Ątes "in Sichtweite" ist nat├╝rlich das Geh├Ąuse. Ich habe mich entschieden, das Ganze in Form eines Bilderrahmens zu gestalten. Es gibt auch noch andere Rahmen mit echten Fotos auf der Kommode, wo sich das "Thermometer" befindet - ich dachte, dass alles gut passen w├╝rde:
    Thermometer f├╝rs Schlafzimmer in Form eines Rahmens
    Es war mein erstes Projekt mit einem TFT-Display - deshalb habe ich erstmal ein paar Tests gemacht:
    Thermometer f├╝rs Schlafzimmer in Form eines Rahmens
    Normalerweise baue ich Schaltungen auf einer Universalplatine, aber ich hatte f├╝r ein ganz anderes Projekt eine fertige Platine f├╝r ESP-12 (bekanntes Problem - man muss ein paar St├╝ck bestellen) - so habe ich mich f├╝r "Recycling" entschieden. Ich werde keinen Schaltplan zeichnen, da die entsprechenden ESP-Pins (SPI-Schnittstelle) einfach mit dem Display verbunden sind. Zus├Ątzliche Stifte sind:
    Code: c
    Melde dich an, um den Code zu sehen

    und GPIO15 zur Steuerung der TFT-Hintergrundbeleuchtung. Die Wahl von GPIO15 war kein Zufall. W├Ąhrend des Starts wird dieser Pin auf Low gesetzt (ESP8266 erfordert dies). Dadurch wird der Bildschirm w├Ąhrend der gesamten Dauer des ESP-Starts nicht hinterleuchtet und erst wenn alles bereit ist, wird die Hintergrundbeleuchtung eingeschaltet.
    Wie bereits erw├Ąhnt, war das Dimmen wichtig, daher wurde der Rahmen mit einem Fotowiderstand ausgestattet:
    Thermometer f├╝rs Schlafzimmer in Form eines Rahmens
    Der einzige ADC-Eingang des ESP8266-Prozessors erwies sich als n├╝tzlich. Der hohe Widerstand von R4 mag ├╝berraschen. Dies resultiert aus der Tatsache, dass die Schaltung eine gute Aufl├Âsung bei sehr geringer Beleuchtung haben sollte.

    Konstruktion

    Nachdem ich den Rahmen gekauft und den hinteren Fu├č abgerissen hatte, schnitt ich ein Loch f├╝r das Display:
    Thermometer f├╝rs Schlafzimmer in Form eines Rahmens
    Die Pr├Ązision des Schnitts ist nicht besonders wichtig - es wird vorne ein Passepartout sein, das alles verdeckt. Es ist jedoch wichtig, das Loch vertikal zu platzieren - der aktive Teil des Displays befindet sich nicht in seiner Mitte, was beim Schneiden des Lochs ber├╝cksichtigt werden sollte.
    Nach der Montage des Displays auf der Vorderseite sieht es so aus:
    Thermometer f├╝rs Schlafzimmer in Form eines Rahmens
    Die Schrauben mit Senkkopf werden versenkt, dass vorne eine ebene Oberfl├Ąche entsteht. Da die Platte d├╝nn ist, habe ich einen kleinen Tropfen Kleber unter die Schraubenk├Âpfe gegeben, um das Ganze zu verst├Ąrken. Seitenansicht:
    Thermometer f├╝rs Schlafzimmer in Form eines Rahmens
    Die Dicke der Platte und der Mutter passte perfekt zur Dicke des Displays.
    Und so sieht es nach dem Zusammenbau aus:
    Thermometer f├╝rs Schlafzimmer in Form eines Rahmens
    Die oberen Schrauben der Platine sind nicht mit dem Display verbunden - sie dienen nur als Abstandshalter.
    R├╝ckansicht des fertigen Rahmens:
    Thermometer f├╝rs Schlafzimmer in Form eines Rahmens
    Da ich den Touch┬şscreen nicht verwende, habe ich das Original-Plexiglas im Rahmen gelassen.

    Software

    ESP-Programmierung habe ich wie gewohnt mit Arduino gemacht. Zur Unterst├╝tzung des Displays habe ich mich f├╝r die TFT_eSPI-Bibliothek entschieden, die mit meinem Display sehr gut funktioniert. Die Autoren der Bibliothek haben das Problem der Konfiguration der Steuerpins und des Anzeigetyps auf interessante Weise gel├Âst - alles befindet sich in der Datei "User_Setup.h". Diese L├Âsung hat den Vorteil, dass Sie nach einer einmaligen Konfiguration Musterprojekte bauen k├Ânnen, die sofort funktionieren! Zuerst war das Beispiel der Anzeige eines JPG-Bildes - es funktionierte sehr gut, und ich fand heraus, dass ich ein gut verbundenes und funktionsf├Ąhiges Display hatte. Der n├Ąchste Schritt ist die Anzeige vom Text - Beispiele sind auch hier verf├╝gbar. Ich beschloss, sie ein wenig zu modifizieren und zu pr├╝fen, was ist es mit polnischen Zeichen. Leider gab es sie nicht. Sp├Ąter las ich, dass es m├Âglich ist, aber es ist nicht einfach. Das k├╝hlte meinen Enthusiasmus etwas ab, um so mehr, weil ich sch├Âne, gro├če Zeichen verwenden wollte.
    Ich entschied mich, das Problem anders zu l├Âsen - ich entschied, dass der Rahmen nur das gesamte Bild anzeigen w├╝rde, das auf der Serverseite mit PHP und der GD-Bibliothek erstellt werden w├╝rde. Die GD-Bibliothek gibt mir Zugriff aufs Schreiben mit TrueType, und da PHP eine interpretierte Sprache ist, ist es sehr einfach zu ├Ąndern - ich muss nicht kompilieren, hochladen usw.
    Das Problem blieb, wie man ein Bild von PHP nach ESP hochl├Ądt. Ich habe die JPEG-Komprimierung abgelehnt - es ist eine verlustbehaftete Komprimierung, und ich wollte kein verschwommenes Bild an den R├Ąndern haben. Das Modul f├╝r die PNG-Komprimierung funktionierte nicht (erfordert wahrscheinlich mehr RAM). Ich habe noch ├╝ber GIF nachgedacht, aber am Ende habe ich mich f├╝r eine eigene L├Âsung mit eigener Komprimierung entschieden.
    Ich habe entschieden, dass PHP das Bild sofort f├╝r die Anzeige vorbereitet, d. h. es wird es in 65k Farben (RGB 565) kodieren, was f├╝r das TFT-Display erforderlich ist. Zun├Ąchst wurden die Daten unkomprimiert gesendet - jede Zeile bestand aus 320 Pixeln oder 640 Bytes. Das gesamte Bild war somit 307.200 Byte gro├č. Es funktionierte sehr sch├Ân und interessant, aber langsam. Ich fand das WLAN auf dem ESP8266 sehr langsam. Das Neuzeichnen dauerte ├╝ber 2 Sekunden. Da es ausgef├╝hrt werden kann, ohne den vorherigen Inhalt zu l├Âschen, wurde ein interessanter "Rolladen" ├ťbergangseffekt erzeugt, der n├╝tzlich sein kann, wenn jemand einen elektronischen Fotorahmen erstellen m├Âchte.
    Ich wollte jedoch Geschwindigkeit, also habe ich RLE-basierte Komprimierung hinzugef├╝gt. Nachfolgend finden Sie eine Beschreibung der verwendeten Methode.

    Kompression

    Da ein Pixel 2 Bytes sind, habe ich mich entschieden, alles auf zwei Bytes zu codieren - in der weiteren Beschreibung werde ich es als "Wort" bezeichnen, das Zahlen oder eine RGB-Farbe (im 565-System) enthalten kann. Die Grundannahme war auf der ESP-Seite leichtes Ablesen. Daher enth├Ąlt das erste Wort die Anzahl der W├Ârter in der Zeile. Das n├Ąchste Wort ist das Steuerwort (nennen wir es n) - wenn es kleiner als 10000 ist, bedeutet dies, dass die n├Ąchsten n W├Ârter als Pixel umgeschrieben werden sollten. Wenn n gr├Â├čer als 10000 ist, sollte das n├Ąchste Wort (Pixel) (n-10000) Mal wiederholt werden. Wir verwenden eine solche Codierung bis zum Ende der Zeile, also dem n├Ąchsten Steuerwort und Daten usw. Nach dem Codieren der Zeile pr├╝ft der PHP-Code, ob der codierte String (Pixelreihe) nicht l├Ąnger als unkomprimiert ist. In diesem Fall wird die Komprimierung f├╝r diese Zeile abgebrochen, und ESP wei├č, wenn es liest, dass die Zeile 320 W├Ârter lang ist, dass sie nicht komprimiert ist. F├╝r das Bild unten:
    Thermometer f├╝rs Schlafzimmer in Form eines Rahmens
    Die Komprimierung ergibt eine resultierende Gr├Â├če von 43.160 Bytes, was 14 % des Originals entspricht. Ich fand es ein sehr ordentliches Ergebnis.

    Arduino-Code

    Code: c
    Melde dich an, um den Code zu sehen

    Cool? DIY-Rangliste
    Hast du ein Problem mit Arduino? Stelle bei uns eine Frage. Besuche unser Arduino-Forum.
    ├ťber den Autor
    krzbor
    Niveau 25  
    Offline 
    krzbor hat 1014 Beitr├Ąge geschrieben mit der Bewertung 557 geschrieben, und dabei 21 Mal geholfen. Er ist seit 2004 bei uns.
  • #2
    gulson
    Forenbetreiber
    Vielen Dank f├╝r die Vorstellung der eigenen Konstruktion und das Einf├╝gen des Logos von Elektroda. Das Ergebnis ist super. Ich denke, dass der Rahmen immer problematisch ist, damit er ├Ąsthetisch ansprechend aussieht und alles hineinpasst.
    Schreiben Sie mich f├╝r ein bescheidenes Geschenk an! :)
  • #3
    error105
    Niveau 14  
    Cooles Design.
    Das einzige, was mich st├Ârt, ist dieses d├╝rftige TFT ohne Blickwinkel :( Es tut ein bisschen weh, dass es im Grunde keine guten SPI-Displays gibt oder sie mehr kosten als 27-Zoll Monitore :(
  • #4
    ADI-mistrzu
    Niveau 30  
    Haben Sie nicht daran gedacht, TFT durch E-Ink zu ersetzen? Sogar bunt.
  • #5
    krzbor
    Niveau 25  
    error105 hat geschrieben:
    Cooles Design.
    Das einzige, was mich st├Ârt, ist dieses d├╝rftige TFT ohne Blickwinkel :( Es tut ein bisschen weh, dass es im Grunde keine guten SPI-Displays gibt oder sie mehr kosten als 27-Zoll Monitore :(

    Die Winkel sind nicht so schlimm. Es lohnt sich jedoch, dies zu ├╝berpr├╝fen, da sie vertikal unterschiedlich zu sein scheinen, je nachdem, wie wir den Bildschirm drehen. Es gibt praktisch kein billiges Display mit SPI ├╝ber 4 Zoll, oder wie Sie schreiben, haben sie einen kosmischen Preis.

    ADI-mistrzu hat geschrieben:
    Haben Sie nicht daran gedacht, TFT durch E-Ink zu ersetzen? Sogar bunt.

    Das Foto des Rahmens wurde am Abend aufgenommen - daher der hohe Kontrast zwischen dem Rahmen und dem auf dem TFT angezeigten Inhalt. Tags├╝ber sieht es normalerweise viel besser aus. Au├čerdem verst├Ąrkt die Kamera den Kontrast zwischen Rahmen und TFT.
    Ich stimme zu, dass die angewandte L├Âsung gut f├╝r E-Ink geeignet ist - obwohl ich in diesem Fall eine Pr├╝fsumme des ├╝bertragenen Bildes hinzuf├╝gen w├╝rde. Wenn sich die Pr├╝fsumme nicht ├Ąndert, erfolgt keine Aktualisierung. Ich hatte nur TFT, E-Ink musste gekauft werden. Ich wollte, da├č es auch nachts sichtbar ist.
  • #6
    ADI-mistrzu
    Niveau 30  
    @krzbor, es gibt E-Ink mit der M├Âglichkeit der Hintergrundbeleuchtung, aber ich wei├č leider nicht, ob sie erh├Ąltlich sind.
  • #7
    ArturAVS
    Moderator HP/Truck/Electric
    @krzbor, und was f├╝r ein Display ist es genau?
  • #8
    krzbor
    Niveau 25  
    Chinesisch :) Genaue "polnische" Beschreibung: ''3,95 "/ 4,0" Zoll 320 * 480 ST7796S TFT-Farb-LCD-Display mit Touchscreen f├╝r Arduino UNO Mega2560 8/16 Bit". Bild des Steckers:
    Thermometer f├╝rs Schlafzimmer in Form eines Rahmens
    Ich h├Ąnge User_Setup.h an:
  • #10
    krzbor
    Niveau 25  
    Kein Rahmen sieht von hinten sch├Ân aus. Wenn die R├╝ckseite irgendwie sichtbar w├Ąre, w├╝rde ich ein Geh├Ąuse oder eine Art Abdeckung hinzuf├╝gen. Allerdings wusste ich, dass bei der Gr├Â├če des Rahmens im Verh├Ąltnis zu Display und Elektronik nichts zu sehen wird. Ich habe versucht, es so flach wie m├Âglich zu machen - daher der nicht sehr ├Ąsthetisch geneigte Stabilisator. Ideal w├Ąre nat├╝rlich sch├Âne Leiterplatte, von Grund auf neu gestaltet, am besten mit einem Sockel, der direkt auf die Pins des Displays passt - so ein Sandwich. Ich denke jedoch, dass die anderen den anderen Weg gehen werden - einfach eine NodeMCU verwenden - dort haben sie eine Strombuchse, einen Stabilisator und eine einfachere Programmierung. Ein kleines Problem wird jedoch die Notwendigkeit sein, den ADC-Eingang zu ├╝berarbeiten.
    [F]