ePaper Display und Google Kalender mit ESP8266 - AZ-Delivery
Heutzutage nutzen viele ihr Smartphone, um Dinge des Alltags, wie das Planen von Terminen, zu erledigen. Doch bei vielen Benachrichtigungen kann man schnell den Überblick über bevorstehende Termine verlieren. In diesem Blogbeitrag werden wir einen Kalender mit einem e-paper Display und einem Esp8266 Mikrocontroller bauen, welcher die bevorstehenden Termine anzeigt. Damit die Termine immer aktuell sind, greifen wir auf diese über das Internet mit einer sogenannten API Schnittstelle zu. Ein Programm, welches diese Funktion beinhaltet, ist der Google Calendar, welcher auch auf vielen Betriebssystemen verfügbar ist. Hierfür wird lediglich ein Google Account benötigt, welcher kostenlos erstellt werden kann, falls noch nicht vorhanden.

Hardware

An Hardware benötigen wir:

2.9“ epaper Display

ESP8266 Mikrocontroller NodeMCU oder D1 Mini

Optional:

Taster

3D gedrucktes Gehäuse

Schrauben & Schmelzgewinde

Als erstes muss das Display an den Mikrocontroller angeschlossen werden. Dieses kann entweder über eine direkt gelötete Kabelverbindung verbunden werden, oder über ein selbstgekrimptes Kabel, welches an die Stiftleiste des Displays gesteckt wird.

ESP8266 Node MCU 2.9“ epaper Display  
3V3 VCC
GND GND
D7 SDI
D5 SCLK  
D4 CS
D2 D/C
D1 Reset
D3 Busy

Verdrahtung mit Buchsenleiste

Buchsenleiste wie gezeigt anlöten

Software

Die benötigte Software besteht aus zwei Teilen:

1 Google Script

Gehen Sie als erstes auf die Google Calendar Website, melden Sie sich mit Ihrem Account an und erstellen Sie links bei „Weitere Kalender“ einen neuen Kalender. Unter diesem Kalender speichern Sie zukünftig alle Termine, welche auf dem Display angezeigt werden sollen.

Öffnen Sie nun in Ihrem Browser die Google Script Website, melden Sie sich hier mit dem gleichen Google Konto wie oben an. Klicken Sie als Nächstes links oben auf den Button „Neues Projekt“,

es öffnet sich nun ein Fenster in welches Sie folgenden Code kopieren:

Zum Schluss drücken Sie auf das blaue Feld „Bereitstellen“ und wählen Sie dort „Neue Bereitstellung“ aus. Im neu geöffneten Fenster wählen Sie unter dem Zahnrad die Bereitstellungsoption „Web-App“.

Tragen Sie nun eine Beschreibung ein und ändern Sie das Zugriffsrecht auf „Jeder“. Im nächsten Schritt wird Ihnen eine „Bereitstellungs-ID“ angezeigt. Dabei handelt es sich um den API-key, über welchen der ESP später auf die Daten zugreifen kann. Dieser muss dann in den Quellcode eingefügt werden. Um das Script zu testen, können Sie den darunter stehenden Link öffnen. Daraufhin sollten die Termine der nächsten 14 Tage mit Start- und Enddatum mit einem Semikolon getrennt angezeigt werden.

Dieses Script liest die Termine nur aus einem Kalender aus. Wenn Sie mehrere Kalender anzeigen lassen wollen, müssen Sie den Block kopieren und mit geändertem Kalendernamen darunter einfügen. (Auf dem Display werden aber nur die ersten 4 Termine der Kette angezeigt).

Falls Sie weitere Daten aus Ihrem Kalender lesen wollen, finden Sie die nötigen Informationen in den Google Developer Docs.

2 Arduino IDE/Platform IO

Arduino IDE

Zuerst müssen Sie noch die zugehörigen Libraries installieren:

ArduinoJSON

HTTPSRedirect

GxEDP2

AdafruitGFX

Falls Sie zum ersten Mal einen Mikrocontroller mit ESP8266 Prozessor programmieren, müssen Sie noch die folgende Zeile unter Preferences in das Boardverwalter-Url Feld kopieren: http://arduino.esp8266.com/stable/package_esp8266com_index.json. Installieren Sie im Anschluss über den Boardmanager das ESP8266 Paket.

Platform IO

Kopieren Sie folgende Zeilen in die platformio.ini Datei ihres Projekts:

Der Sketch

Sketch Download

Als erstes werden die benötigten Bibliotheken und die mit der Display Library installierten Fonts (Schriftarten) eingebunden.

Im Anschluss werden structs für die einzelnen Termine und deren Zeit erstellt. Diese werden dann in Form einer Liste mit vier Elementen gespeichert.

Danach werden Variablen für den Zeilenumbruch bei längeren Namen und für das Netzwerk initialisiert.

Nun erstellen wir Objekte für den WiFiClient, welcher später für das Lesen der Daten vom Server verwendet wird und ein Objekt für das Display. Sollte ihr Display nicht funktionieren (ältere Version), wählen Sie einen anderen Treiber aus der Liste, indem Sie die Kommentarzeichen der Zeile entfernen.

Im Folgenden können Sie die Farben des Titels, der Terminnamen und der Terminzeit, sowie den Titel festlegen.

Im setup() wird lediglich das Display und die Status LED initialisiert.

Im loop() verbindet sich der ESP zuerst mit dem WLAN, während dessen blinkt die Status LED. Ist nach 20 Sekunden immer noch keine Verbindung aufgebaut, wird der ESP neugestartet. Nach erfolgreicher Verbindung wird das Display unter Verwendung der Methode displayEvent() beschrieben.

Folgende Methode baut eine Verbindung zum Server auf, liest die Daten in Form eines String und extrahiert durch den Aufruf von extractData() die einzelnen Daten (Startzeit, Name, Endzeit).

In der nächten Funktion wird nach den Semikolons gesucht, welche die einzelnen Daten trennen und diese Daten anschließend als String in der Liste, in den zugehörigen Elementen, gespeichert.

Die folgende Methode liest aus dem String, welcher die Zeit speichert, die Minute, Stunde, den Tag und den Wochentag heraus und speichert diese im struct Time der einzelnen Elemente.

Die Methode convDayName() wandelt den englischen Wochentagsnamen in den deutschen um.

displayEvent() wird in der loop() Funktion aufgerufen, um das Event mit dem übergebenen Index auf dem Display anzuzeigen.

Die folgende Methode wird aufgerufen, um eine Störung über die Status LED anzuzeigen:

Zusammenbau und Bedienung

Drucken Sie das Gehäuse mit einem 3D-Drucker aus und pressen Sie mit einem heißen Lötkolben die Schmelzgewinde (M3) in die vorgesehenen Löcher. Zuletzt kleben Sie das Board mit der USB-Buchse in der Aussparung an und schrauben das Display zuletzt mit den passenden Schrauben von außen fest.

Nachdem Sie eine Stromversorgung angeschlossen haben, werden auf dem Display nun automatisch jede Stunde die nächsten vier Termine angezeigt. Nach Betätigung des Tasters werden die Termine sofort aktualisiert. Das Display wird während des Beschreibens mehrfach aufblinken. Dies ist normal, dabei werden die Farbkapseln im Display ausgerichtet.

Viel Spaß beim Nachbauen :)

DisplaysEsp8266Projekte für anfänger

8 Reacties

Reimund

Reimund

Hallo wie druckt man denn das Gehäuse ? Mit Support?

Henry

Henry

Korrektur, man muss natürlich etwas in den Kalender eintragen, dann kommt etwas.
Die Berechtigung muss aber erteilt werden.

Jetzt muss nur noch der “richtige” Kalender laufen.

cu

Henry

Henry

Hallo,
auch bei einem neu angelegtem Kalender erfolgt diese Abfrage, da dies ja noch nichts mit dem Kalendernamen zu tun hat.
Zugriffsberechtigte “jeder” kann nur bei ausführen als “ich” ausgewählt werden.
Nach → weiter kommt die Abfrage.
Auch nach zulassen des Zugriffes der Webapp auf den Kalender kommen mit der URL keine Daten.

cu

Bastian Brumbi

Bastian Brumbi

Sehr geehrter Leser,
erstellen Sie einfach wie unter Punkt 1 beschrieben einen neuen Kalender auf der Google Calendar Website. Hier müssen Sie einen Namen für den Kalender eintragen, diesen Namen tragen Sie in die Google Script Datei anstatt Test ein. Eine weitere Autorisierung ist hier nicht notwendig.
Ich hoffe ich konnte ihnen Weiterhelfen.
Grüße,
Bastian Brumbi

Henry

Henry

Ganz so einfach wie beschrieben ist es nicht.
Wo findet man denn den korrekten Kalendernamen von Google, der statt (test) eingetragen werden muss?
Und “jeder” funktioniert auch nicht wie beschrieben, hier muss anschließend autorisiert werden, nur wie?

cu

Andreas Wolter

Andreas Wolter

If you use the download, it should work. The original source code on the homepage may have been changed during translation.

Best regards,
Andreas Wolter
AZ-Delivery Blog

laatste

laatste

use the code from the german language page because the the english translation makes a mess of the original code.

Rob Versteden

Rob Versteden

The code to copy has several flaws. Use the printed one to correct it before implementing. I guess you have used an overactive spelling corrector.
But it’s a nice project!

Laat een reactie achter

Alle opmerkingen worden voor publicatie gecontroleerd door een moderator

Aanbevolen blogberichten

  1. ESP32 jetzt über den Boardverwalter installieren - AZ-Delivery
  2. Internet-Radio mit dem ESP32 - UPDATE - AZ-Delivery
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1 - AZ-Delivery
  4. ESP32 - das Multitalent - AZ-Delivery