ESP8266 mit OLED Display in Blinddeckel

Begonnen von tomster, 11 März 2016, 13:52:13

Vorheriges Thema - Nächstes Thema

Rince

Oh, ich hab noch nix verdrahtet, mangels Displaylieferung bis jetzt :)
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

wingfighter

Die Verdrahtung ist in diesem Dokument http://www.phys.hawaii.edu/~idlab/taskAndSchedule/HVprojPage/NIM-HV-PSU-Presentation.pdf Seite 9 ganz gut beschrieben.
Sie steht so auch in ähnlicher Form im Originaldokument. Ist hier aber in Details besser dargestellt.

Die PIN's auf Arduino-Seite sind in dem Test-Sketch vereinbart (hier nur die, die für die serielle Datenübertragung notwendig sind):

#define   SDI_PIN    6    // SDI (serial mode) signal connected to pin 6 (DISPLAY-SDI)
#define   SCL_PIN    7    // SCL (serial mdoe) signal connected to pin 7 (DISPLAY-SCL)
#define    RS_PIN    8    // RS signal connected to pin 8 (DISPLAY-D/C)
#define   RES_PIN   11    // /RES signal connected to pin 11 (DISPLAY-/RES)
#define    CS_PIN   12    // /CS signal connected to pin 12 (DISPLAY-/CS)


Wichtig, sind auch alle Verbindungen mit GND. Mit PS an GND legt man z.B. fest, dass die serielle Datenübertragung genutzt werden soll.
Damit auch das Sketch das weiß, musst Du dort den Übertragungsmodus bzw. das Interface ebenfalls festlegen.

/*********************************/
/****** INTERFACE SELECTION ******/
/*********************************/

const unsigned char interface = 1;    // 0 = 8-bit parallel (6800 mode) interface; 1 = 8-bit parallel (8080 mode) interface; 2 = 4-wire SPI interface

/*===============================*/
/*===============================*/
/*===============================*/



Hier steht als Interface original die 1. Dort muss eine 2 eingetragen werden, damit im Sketch die Routinen für die serielle Übertragung genutzt werden.

Die Anpassung des Sketches an den ESP8266 ist wahrscheinlich etwas aufwändiger, da dort einige GPIO's Low-aktiv sind. Das könnte Auswirkungen auf die Ansteuerlogik für die /RES und /CS Eingänge haben. Das gucke ich mir dann mal genauer an.

Nun aber erstmal viel Erfolg beim Testen.


wingfighter

So, das Demo-Sketch läuft jetzt auch auf einem ESP8266-12E NodeMCU.

Das Sketch stell ich hier https://github.com/wingfighter/ESP8266_OLED_NHD-1.69-160128UGC3.git bereit.

Die Pinbelegung ist natürlich etwas anders als beim Arduino UNO.


#define   SDI_PIN    2    // SDI (serial mode) signal connected to D4
#define   SCL_PIN    0    // SCL (serial mdoe) signal connected to D3
#define    RS_PIN    4    // RS (D/C) signal connected D2
#define   RES_PIN   5     // /RES signal connected to D1
#define    CS_PIN   14    // /CS signal connected to D5


Der nächste Schritt wird sein, mal einen DHT22 anzuschließen und die beiden Messwerte auf dem Display auszugeben.

Gruß wingfighter




tomster

#18
Huii, das geht ja zackig bei Dir. Zum Glück hab ich gestern meine nodeMCUs bekommen.
Ich werde morgen Mal versuchen die Löterei hinzubekommen und den Sketch zu flashen.

tomster

#19
Super! Dein Test-Sketch läuft schon Mal! Ich bin schweeer begeistert!
Vielen Dank!

Rince

Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

T.ihmann

Nur mal als Idee, wenn man einen Doppelrahmen nimmt, könnte man unten drunter einen zweiten Blinddeckel setzen. Auf diesem 2. Blinddeckel könnte man mehrere kapazitive Taster realisieren, dazu gibt es im Netz viele Anleitungen z.B. http://playground.arduino.cc/Main/CapacitiveSensor?from=Main.CapSense
Dann hättet Ihr zusätzlich eine schöne Bedienmöglichkeit für das Display. Zusätzlich könnte man sicherlich einige nette Dinge damit realisieren, wie einen Raumcontroller

Wie hattet Ihr Euch eigentlich die Stromversorgung vorgestellt ?

tomster

Die Idee mit den kapazitiven Schaltern hatte ich am Freitag auch. Allerdings wollte ich die noch im gleichen Deckel mit unterbringen. Wird aber verdammt eng, wegen der Platine des Displays. Ich hab mit dem Display eh schon einen 4'er Rahmen; noch einer und der WAF ist perdu...
Zudem wollte ich die Sensoren von www.edisen.de verbauen, weil ich die schlichtweg mag ;-)
Der Kleinste liegt aber immer noch bei 15mm x15mm. Im eigenen Deckel ginge das sicher leichter. Um's Ausprobieren wird man aber auch dabei nicht herumkommen.

Stromversorgung hab ich mir mit Netzteil gedacht. Ist nicht günstig, und eigentlich abgekündigt, aber hat einen schönen Formfaktor und passt ggfls auch hinter einen Schalter/ Steckdose:
http://eu.mouser.com/ProductDetail/RECOM-Power/RAC03-33SCR-277/?qs=LQwAcjY4KXhSVRQNSKxrSA%3d%3d
Alternativ als 5V-Variante mit nachfolgendem Spannungsregler.

Für den Endeinbau möchte ich eh auf einen "reinen" ESP zurückgreifen. Der kommt dann auf ein Breadboard, so wie dieses:
http://www.ebay.de/itm/ESP8266-ESP-12E-Serial-Port-Wireless-WIFI-Module-IO-Adapter-Plate-Expansion/252240079584?_trksid=p2047675.c100011.m1850&_trkparms=aid%3D222007%26algo%3DSIC.MBE%26ao%3D1%26asc%3D20140107083420%26meid%3D9439acda22b244caa3b5cfaac84db848%26pid%3D100011%26rk%3D4%26rkt%3D10%26mehot%3Dag%26sd%3D141649607329

Das Board hätte zwar schon Pads vorgesehen für einen Spannungsregler, aber ich hab noch keinen gefunden, der SOT-89-3 ist und genügend mA für ESP und Display zur Verfügung stellt...


Omega-5

Zitat von: tomster am 20 März 2016, 10:57:01
Stromversorgung hab ich mir mit Netzteil gedacht. Ist nicht günstig, und eigentlich abgekündigt, aber hat einen schönen Formfaktor und passt ggfls auch hinter einen Schalter/ Steckdose:
http://eu.mouser.com/ProductDetail/RECOM-Power/RAC03-33SCR-277/?qs=LQwAcjY4KXhSVRQNSKxrSA%3d%3d

Die RECOM Alternativen im Standartgehäuse sind leider ein wenig groß.
Was eventuell geeignet ist, Udo hat in seinem YPORT (volkszaehler.org) dieses Modul PPM2.5SIP-05ELF eingesetzt.
http://www.peak-electronics.de/wp-content/uploads/2015/09/PPMxx-SIP_E_09_13.pdf

Gruß Friedrich
RaspberryPi2, nanoCUL, 3x DS18B20, FS20: 4x Funk-Schalter ST-4, LaCrosseGW,
HomeMatic: HMLAN, HM-WDS10-TH-O, HM_MYS_RelaisBoard,
I2C: HYT221 über modifiziertes Modul I2_I2C_SHT21.pm (Q&D),

wingfighter

So, ich war mal wieder etwas aktiv und habe eine neue Version des Sketches hochgeladen: https://github.com/wingfighter/ESP8266_OLED_NHD-1.69-160128UGC3/blob/master/NHD-1.69-160128UGC3_ESP8266_Temp_Hum.ino

Es ist jetzt folgendes realisiert:

  • Es wird ein DHT22 abgefragt und die Messergebnisse im 2sek-Rhythmus als zentrale Information auf dem Display angezeigt.
  • Das Modul meldet sich per WiFi am W-Lan-Router an (SSID und Password im Sketch eintragen).
  • Wenn eine Internetverbindung besteht, holt sich das Modul per NTP die Zeit aus dem Internet und zeigt Uhrzeit und Datum im unteren Bereich des Displays an
  • Die aus dem DHT22 kommenden Messwerte werden per mqtt an einen Broker (IP in Sketch eintragen) übertragen. Bei mir holt sich der fhem-Server diese Werte per mqtt ab und zeigt sie als Readings an
  • Man kann per mqtt auch einen Ausgang setzen. Ist momentan aber nicht aktiviert.

ToDo:

  • Der Font, der für die Anzeige der Messwerte verwendet wird, ist im Moment Verdana, Bold, 48pt. Das ist ein Mü zu groß.
  • Der Font enthält nur die nötigsten Zeichen (0,1,2,3,4,5,6,7,8,9, °,C,.,%). Der Punkt ist programmtechnisch extra behandelt, damit der Platz reicht. Ist keine schöne Lösung . ;-(
  • Wenn keine NTP-Erfolg, muss die Anzeige ausgeblendet werden. Eventuell kann auch ein lokaler Router als NTP-Server dienen. (Noch nicht getestet)
  • Die OLED-Funktionen müssen in eine Bibliothek ausgelagert werden. Es fehlen Zeichenfunktionen (Linien, Kreise, Rechtecke, Füllen etc.)
  • Wenn man - wie von T.ihmann vorgeschlagen - Taster einbaut, kann man auch für eine Anwendung des Displays im Küchenbereich eine prima Eieruhr mit Startknopf und evtl. Zeitwahltasten (4:45, 5:00, 5:30 min etc) realisieren ;-) 
  • Je nachdem, was Eure Test so ergeben ;-)

Die Sache mit dem Näherungssensor hatte ich auch schon überlegt. Wenn das Display mit der Helligkeit und der ständig wechselnden Anzeige im TV-Sichtfeld ist, dürfte es auf Dauer stören. (WAF!!!)
Eventuell lässt es sich dimmen und bei Annäherung auf volle Helligkeit schalten. Das sah beim ersten Lesen der Doku allerdings nicht so aus, als ob es diese Funktion gäbe. Also ginge noch - Display löschen und dann neu zeichnen.

Viele Spaß jetzt erst mal beim Testen

Gruß
wingfighter

tomster

Coool! Bin leider die näxten 10 Tage auf der (fast) anderen Seite der Welt. Testen geht leider nicht von hier.
Aber Anfang April hol ich alles nach. Ich möchte den Sketch vorallem auf dem ESP8266-07 an's Laufen bekommen, aus Platzgründen.
Wie man das Display dimmt muss ich suchen. Ich hatte da auf einer der 1000 Seiten, die ich durchgrschaut habe, was gelesen. Das war aber glaub ich gar nicht so leicht, wenn ich mich recht erinnere. Die wollten das aber auch mit einem Photowiderstand lösen. Ich schsu, ob ich die Seite wiederfinde.
Ist in meinem Fall (Schlafzimmer) sonst der WAF-Killer Nr. 1

Wegen der Schriftart:
Wenn man alle Zeichen hardcodet, wird's wohl schnell Essig mit dem Speicher. Sollte man nicht überlegen einen SD-Reader anzubinden und dort Graphiken und evtl. auch Zeichensätze unterzubringen?

Ansonsten, natürlich vielen Dank Wingfighter an Dich. Du hängst dich da ziemlich rein. Bin Dir was schuldig...
LG,
Tom

Rince

#26
Ich habe ja auch ein Display am ESP im Hinterkopf.
Sming hätte:
Ein Dateisystem
Einen FTP Server (http auch)

Prinzipiell kann MQTT Bilder als Payload verschicken, wobei ich das nicht verstehe. Link im Link-Post der Uhr.

So oder so:
Bilder auf Server generieren, per HTTP/FTP/MQTT auf den ESP übertragen, dann anzeigen lassen.

Bei 160x120 Pixel auch mit 24Bit Farbtiefe sollte die Bildübertragung recht schnell gehen. Und so ein Messwert muss jetzt nicht sekündlich aktualisiert werden.

Ein Auswahlmenü würde ich permanent vorgerendert auf dem ESP lagern, das was sich verändert (Temperaturverläufe) remote Rendern lassen bei Bedarf.
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

mrpj

Je nachdem wieviel EEprom ihr auf euren ESP Platinen habt, lohnt es sich auch das Dateisystem zu nutzen.
Das Dateisystem beim ESP hat jedoch eine Limitierung - es können maximal 1MB Blöcke gleichzeitig "geöffnet" sein - sprich das Dateisystem ist auf 1 MB limitiert

Wobei ich finde in 1MB kann man seeeeehr viel reinpacken - wenn man dann noch kompression verwendet (es gibt auch libs für arduino) lässt sich da noch mehr machen

oli82

Ich erinnere mich irgendwo gelesen zu haben, dass das EEprom nicht das hochwertigste ist. Wäre ja schade, wenn nach ein paar Monaten der Speicher hinüber wäre. Da sollte man evtl auf einen externen zurück greifen?!

Rince

@oli82
Gelesen habe ich das auch. Allein, mir fehlt der Glaube:
Ich denke diese Vermutung stammt noch aus der Anfangszeit der ESP-Programmierversuche, wo noch nicht klar war wie man den Flash-Speicher des ESPs komplett löschen kann.

Ergänzend:
http://www.esp8266.com/viewtopic.php?f=32&t=6109
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)