ESP8266 mit oled 128x64 als Wetteranzeige

Begonnen von machnetz, 19 April 2016, 10:06:55

Vorheriges Thema - Nächstes Thema

juergs

#45
Hallo Peter,
ja compiliert schon x-Mal.
Der Touch wird über eine separate Touch-Lib eingebunden.
Welche Lib benutzt Du für das TFT?

Die TFT_eSPI-Lib funktioniert gut, und hat auch viele Beispiele für "TFT_eSPI\examples\320 x 240" - Displays.
Manche Displaytypen liefern nicht die richtige Display-ID in der Setup-Methode zurück, dann muss man sie explizit setzen...
Diese Display passt genau für den WEMOS-D1: wemos-tft-2.4-touch-shield
und hat noch durch die Doppel-Buchesenleiste Steckmöglichkeiten für I2C-Sensoren.

Grüße,
Jürgen

PeMue

Hallo Jürgen,

compilieren ist nicht das Problem, aber das Display (ohne Touch) geht nicht an. Ich hatte aber auch eine Einstellung in der Arduino IDE, wo das Display funktioniert hat. Ich weiß nur nicht, welche Libraries ich damals hatte.
Für die Wetterstation werden folgende Libraries verwendet:
Display https://github.com/ThingPulse/minigrafx
Touch https://github.com/PaulStoffregen/XPT2046_Touchscreen

Gruß Peter
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

juergs

#47
Hallo Peter,

die Lib mit Framebuffer scheint mir sehr gut zu sein.
Probiere sie mit diesem Projekt auch mal am WoE aus.

Grüße,
Jürgen

smoudo

Ich hatte damals auch das falsche Display ohne Touch. Habe dann beim compilieren alle screens außer den hauptscreen raus genommen. Hat mich zwar auch nerven gekostet, läuft seitdem aber problemlos. Müsste mal schauen ob ich den Code noch im ide Ordner habe.


Viele Grüße

Matze

PeMue

#49
Hallo Matze,

das wäre klasse, wenn Du das finden würdest. Ich habe auch schon probiert, die Touch Funktionalität auszukommentieren, war aber bis jetzt noch nicht erfolgreich.

Danke + Gruß

Peter
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

juergs

#50
Hallo Peter,

habe mal quick&dirty den Touch rausgenommen.
Die Portpins in settings.h habe ich auf mein Display angepasst.
Evtl. müssen dort auch die Pins des Displays dort angepasst werden, da evtl. wg. fehlendem TouchController abweichend?
Es fehlt mir wohl das SPIFFS Filesystem. Dort hängt es dann bei mir (SD-Karte?) mit wdt-Fehler.

Aber der Sketch lässt sich ohne Touch compilieren.
Also ohne Gewähr  ;)

Grüße,
Jürgen

smoudo

Ich hab das leider nicht mehr da.

Soweit ich mich erinnern kann habe ich an den Touch Einstellungen nichts geändert.
Ich habe lediglich in der Uno Datei im Bereich ,,void loop"
Die ,,else if" für Screen 1-4 raus genommen.

Damit bleibt immer der homescreen und scrollt nur die Vorschau durch.
Mehr Details brauch ich da auch nicht. Ich hoffe das hilft euch.

Viele Grüße

Matze

PeMue

Hallo zusammen,

habe das neue Display (mit Touch) angeschlossen und die compilierten Binaries eingespielt - OLED bleibt aus. Ich weiß, dass ich die Version, die ich in meine ZIP Datei mit verpackt habe, damals compiliert habe, weiß aber nicht mehr, mit welchen Versionen der Libraries bzw. mit welcher IDE.
Könnte mir bitte jemand posten, welche Umgebung (IDE, WeMos Einstellungen, Libraries) er verwendet hat, die funktioniert?

Danke + Gruß

Peter
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

Markus.

Hallo Peter,

also ich verwende die IDE1.8.7 mit den Libs aus der Aufstellung im Anhang und den entsprechenden Wemos-Einstellungen wie im Bild. die Ino hab ich auch mal drangehangen, diese läuft bei mir auf 2,8" Displays mit Touch, natürlich mit den entsprechenden Daten in der Settings.h.

Vielleicht bekommst Du es ja damit hin.

Viele Grüße

Markus

juergs

#54
Hallo Markus + Peter,

ich habe das Projekt auch kompiliert und hatte einige "komische" Eigenheiten erfahren...
In Verwendung habe ich das Lolin-TFT-Display mit Touch und Wemos D1-Schnittstelle:

TFT: https://www.exp-tech.de/displays/lcd/9184/wemos-tft-2.4-touch-shield
Schematic: https://wiki.wemos.cc/_media/products:d1_mini_shields:sch_tft2.4_v1.0.0.pdf

Hierbei ist die Hardware anders in der Settings.h zu verdrahten:


// Pins for the ILI9341
#define TFT_DC D8
#define TFT_CS D0
#define TFT_LED D4
#define HAVE_TOUCHPAD
#define TOUCH_CS D3
#define TOUCH_IRQ  D3


im Gegensatz zum Original:
/ Pins for the ILI9341
#define TFT_DC D2
#define TFT_CS D1
#define TFT_LED D8

#define HAVE_TOUCHPAD
#define TOUCH_CS D3
#define TOUCH_IRQ  D4

Anmerkung:  Der PIN "TOUCH_IRQ ", der scheinbar nicht von der Touch-Lib verwendet wird ...
Oder kann auf "255" gesetzt oder weggelassen werden:
XPT2046_Touchscreen(uint8_t cspin, uint8_t tirq=255);
Setzen von TOUCH_IRQ auf 255 lässt jetzt den Touchscreen kalibrieren ...  :)
/Edit: .. und funktioniert, finde aber das automatische Durchscrollen irgendwie besser .  ;)

Leider funktioniert der Code für Get_Pos nicht mit dem Touch obwohl der Touch-Controller der gleiche verwendete Typ ist.
Die initiale Touchkalibierung wird einfach übersprungen ...
Deshalb habe ich diesen Teil (der das Umschalten zw. USA und EUR-Zeitformat handelt)  einfach vorläufig auskommentiert.
Jetzt werden die Screens einfach alle paar Sekunden durchgetaktet.

void loop()
{
  gfx.fillBuffer(MINI_BLACK);
 
  /*
  if (touchController.isTouched(0))
  {
    TS_Point p = touchController.getPoint();

    if (p.y < 80)
    {
      IS_STYLE_12HR = !IS_STYLE_12HR;
    }
    else
    {
      screen = (screen + 1) % screenCount;
    }
  }
*/


damit, als Workaround hinzufügen, damit die Screens nicht so schnell umschalten:

 
  screen = (screen + 1) % screenCount;
  //--- add some delay between screens
  delay (4000);
  yield();
  delay (4000);


Dann funktioniert dann schon mal der große Teil.
Die Ursache, dass der Touch nicht funktioniert muss ich leider auch noch klären. Siehe oben.
http://www.esp8266learning.com/a-quick-look-at-the-wemos-tft-2-4-touch-shield.php

Weiterhin den Hinweis auf den Debug-Output, der u.U. das Problem aufzeigt und
das Einschalten des SPIFFS-Dateisystems in der IDE (neueste Version!)  um die TouchKonfigurationsdaten sichern zu können. 

Hatte das Phänomen, dass initial die Touch-Kalibrierung (zu) kurz angezeigt wird. Nach einem Reset hatte ich auf den Kalibrierpunkt gedrückt.
Dann hatte die FW wohl eine calibration.txt angelegt. Nach einem Reboot kam dann nur noch ein weißer Screen ... Debug-Output sah aber gut aus ...
......Connected...Initializing touch screen...
Mounting file system...
SPIFFS opened: OK
Calibration not available

Ein erneutes Flashen setzte diesen Zustand zurück, der DEBUG-Output hat sich aber mit existierender configuration.txt im SPIFFS-Dateisystem geändert.
Beim Flashen kann man auswählen, dass das gesamte Flash gelöscht wird.... Mal schauen ...

Zitat
..Connected...Initializing touch screen...
Mounting file system...
SPIFFS opened: OK
OK, Calibration is available

DST Rules Updated:
DST Start: Sun Mar 31 02:00:00 2019
DST End:   Sun Oct 27 02:00:00 2019

Time difference for DST: 3600
Getting url: http://api.openweathermap.org/data/2.5/weather?id=xxx&appid=yyyyyyyy&units=metric&lang=en
[HTTP] GET...
[HTTP] GET... code: 200
start document
Getting url: http://api.openweathermap.org/data/2.5/forecast?id=xxxxx&appid=yyyyyyyy&units=metric&lang=en
[HTTP] GET...
[HTTP] GET... code: 200
start document

Der Api-Key ist einfach eingerichet, aber der Hinweis auf die "OPEN_WEATHER_MAP_LOCATION_ID" wäre noch angebracht:
Sie befindet sich in der openweathermap-URL: "... id=1234567890&appid"!

Auf alle Fälle ein interessantes Projekt mit vielen Hinweisen auf eigene Gestaltungsmöglichkeiten...  ;)

/edit: Noch der Hinweis: nur die neusten Lib-Versionen (ESP8266 core !) verwenden, ältere haben noch Bugs in Verbindung mit der ADAFRUIT-TFT-Llib!
Quelle hier (2018/09/13): https://wiki.wemos.cc/tutorials:shields:get_started_with_tft_2.4_shield
ZitatMake sure you using lastest ESP8266 core for Arduino, otherwise it may not work properly:
The pin D0(GPIO16) will be not work when you use older version ESP8266 core for Arduino , because the older version ESP8266 core for Arduino's digitalPinToBitMask(), portOutputRegister(), portInputRegister() and portModeRegister() fuction have some bugs which Adafruit_ILI9341 Library will use.
This bug was fixed after commit 799193888a553de8876052019842538396f92194


Grüße,
Jürgen

JoWiemann

#55
Hallo,

anbei der Sketch mit den Modifikationen:
- Helligkeitssteuerung
- BME280
- flackern auf dem ersten Screen beseitigt. CPU Frequenz auf 160 MHz stellen!

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

JoWiemann

Ok, noch zwei kleine Anpassungen im Sketch:

- LCD Hintergrundbeleuchtung wurde nicht beim Hochfahren eingeschaltet
- prüfen, ob BME vorhanden ist
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

JoWiemann

#57
Noch etwas eingebaut:

- Konfiguration für WiFi
  Es wird ein Access Point: AutoConnectAP aufgebaut und auf eine Konfigurationsseite umgeleitet
  In der setting.h ist unter // Setup folgendes einzufügen:
  #define WM_SSID "AutoConnectAP"
  #define WM_PASS "esp8266"
  #define WM_HOSTNAME "ThingPulse-weather-station-color"

  und es sind die beigefügten Libraries notwendig.

  Wird während der Progressbalken mit "WiFiManager: Initializing..." sichtbar ist auf den Bildschirm getippt, dann wird die WiFi
  Konfiguration gelöscht und der Zugang muss neu ausgewählt werden.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

Markus.

Hallo Jörg,

Super Sache :-)

Hab das mal auf einen meiner Displays geflasht. Ich habe aber das Problem auf der Übersichtsseite das der Forecast ganz schön nervös blinkt. Habe aber auch keinen BME verbaut. Blinken tut wie gesagt nur der Forecast selber der von rechts nach links läuft.

Hast du da eine Idee?

Gruß

Markus



JoWiemann

Zitat von: Markus. am 18 März 2019, 19:00:25
Hallo Jörg,

Super Sache :-)

Hab das mal auf einen meiner Displays geflasht. Ich habe aber das Problem auf der Übersichtsseite das der Forecast ganz schön nervös blinkt. Habe aber auch keinen BME verbaut. Blinken tut wie gesagt nur der Forecast selber der von rechts nach links läuft.

Hast du da eine Idee?

Gruß

Markus

Hast Du die CPU auf 160 MHz umgestellt?

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM