Projekt HOMEControl Teil 2 Die Zentrale

Die Zentrale verwendet ein ESP 32 Developer Board das sowohl WLAN als auch Blue Tooth unterstützt. Zur Anzeige wird ein 1,8 Zoll TFT Display mit 128 x 160 Bildpunkten, das außerdem einen SD-Card Reader eingebaut hat, verwendet. Zur Eingabe kommt schließlich ein Rotary-Encoder mit Schalter zur Anwendung. In den folgenden Beiträgen werden wir diese Zentrale mit einem Menü und mit Setup Funktionen erweitern. Diese Zentrale kann natürlich auch als Ausgangspunkt für andere Anwendungen verwendet werden, bei denen Display, Eingabe und SD-Card benötigt werden.

Ich habe mich entschlossen die Zentrale fest zu verdrahten und nicht über Steckbrett. Das hat den Vorteil einer höheren Stabilität und ermöglicht es die Zentrale später in ein Gehäuse einzubauen.

Die fertige Zentrale sieht dann so aus:

Liste der verwendeten Bauteile:

Verdrahtungsplan:

ACHTUNG!!

Wichtige Änderung der Anschluss SW des Rotary-Encoders ist jetzt mit GPIO14 und der Anschluss SW jetzt mit GPIO15 verbunden. Die Änderung war notwendig, da GPIO0 und GPIO2 nicht verwendet werden sollten!

 Achtung der Verdrahtungsplan ist von der Display Seite des Sandwich, das heißt die Pin-Beschriftung für den ESP32 ist gespiegelt!

Im folgenden der Beginn des Programms. Am Display wird das Logo angezeigt und der SD-Card Reader wird initialisiert. Es wird erkannt ob eine SD-Karte im Reader steckt und das Ergebnis entsprechend Angezeigt.

 Das Programm benötigt zwei Bibliotheken:

Die Adafruit GFX Library


und die Adafruit ST7735 Library


 

 

#include // Core graphics library
#include // Hardware-specific library
//Einbindung von Font Bibliotheken
#include <Fonts/FreeSans9pt7b.h> //Font für Logo
#include <Fonts/FreeSansBold9pt7b.h> //Font für Logo

#include <SPI.h>
#include <SD.h>

//Definition der verwendeten Pins
#define TFT_CS 5 // Chip select line for TFT display
#define TFT_RST 22 // Reset line for TFT
#define TFT_DC 21 // Data/command line for TFT

#define SD_CS 16 // Chip select line for SD card


//tft instance
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);

//Funktion zum Anzeigen eines Textes am Display in einer bestimmten Farbe
void displayText(char *text , uint16_t color) {
tft.setTextColor(color);
tft.setTextWrap(true); //automatischer Zeilenumbruch wird aktiviert
tft.print(text);
}

//Funktion zum Anzeigen eines Textes an einem beliebigen Punkt (x,y) auf
//dem Display. Die Farbe kann gewählt werden
void displayText(uint16_t x, uint16_t y, char *text , uint16_t color) {
tft.setCursor(x, y);
displayText(text,color);
}

//Funktion zum Anzeigen des Logos ganz oben am Display
void displayLogo() {
//Hintergrund füllen
tft.fillRect(0,0,127,30,ST7735_YELLOW);
//Rahmen zeichnen
tft.drawRect(1,1,125,28,ST7735_BLUE);
//Font für das Wort HOME fett
tft.setFont(&FreeSansBold9pt7b);
//Cursor positionieren
tft.setCursor(7,20);
//Text in schwarz ausgeben
tft.setTextColor(ST7735_BLACK);
tft.print("HOME");
//Font für das Wort Control nicht fett
tft.setFont(&FreeSans9pt7b);
//Text in rot ausgeben
tft.setTextColor(ST7735_RED);
tft.print("Control");
//Font auf default zurücksetzen
tft.setFont(NULL);
}

void setup() {
Serial.begin(115200);
//tft initialisieren und schwarzer Hintergrund
tft.initR(INITR_BLACKTAB);
tft.fillScreen(ST7735_BLACK);
//Logo anzeigen
displayLogo();
//SD-Karte initialisieren und Ergebnis anzeigen
if (!SD.begin(SD_CS)) {
displayText(20,60,"Keine SD-Card",ST7735_YELLOW);
} else {
displayText(20,60,"SD-Card OK",ST7735_GREEN);
}

}

void loop() {
}

 

Letzter Artikel LCD KeyPad Shield

Hinterlasse einen Kommentar

Kommentare müssen vor der Veröffentlichung überprüft werden

Erforderliche Angabe