La sede centrale utilizza un comitato per sviluppatori ESP 32 che supporta sia il Wi-Fi che Blue Tooth. Per la visualizzazione viene utilizzato un display TFT da 1,8 pollici con 128 x 160 pixel, che dispone anche di un lettore di schede SD installato. Infine, un codificatore Rotary con un interruttore viene utilizzato per l'input. Nei seguenti post espanderemo questo pannello di controllo con un menu e con funzioni di configurazione. Questo pannello di controllo può ovviamente essere utilizzato anche come punto di partenza per altre applicazioni in cui sono necessari display, ingresso e scheda SD.
Ho deciso di collegare il pannello di controllo strettamente e non sopra la scheda. Questo ha il vantaggio di una maggiore stabilità e permette al pannello di controllo di essere installato in un secondo momento in un alloggiamento.
Il pannello di controllo finito si presenta quindi così:
Elenco delle parti utilizzate:
- Modulo Dev ESP 32
- Display TFT da 1,8 pollici
- Piastra griglia fori 70mm x 50mm
- Strisce a socket e intestazioni dei pin
Piano di cablaggio:
Attenzione!!
Un cambiamento importante alla porta SW dell'encoder Rotary è ora collegato a GPIO14 e la porta SW a GPIO15. Il cambiamento è stato necessario perché GPIO0 e GPIO2 non devono essere utilizzati!
L'attenzione del piano di cablaggio si riflette dal lato del display del panino, cioè l'etichetta del perno per l'ESP32!
Di seguito è riportato l'inizio del programma. Il logo viene visualizzato sul display e viene inizializzato il lettore di schede SD. Rileva se una scheda SD è nel lettore e visualizza il risultato di conseguenza.
Il programma richiede due librerie:
La biblioteca Adafruit GFX
e la Biblioteca Adafruit ST7735
#include "adafruit_st7735.h" Libreria specifica dell'hardware
Integrazione delle librerie dei tipi di carattere
#include <Fonts/FreeSans9pt7b.h> Tipo di carattere per logo
#include <Fonts/FreeSansBold9pt7b.h> Tipo di carattere per logo
#include "spi.h"<SPI.h>
#include sd.h><SD.h>
Definizione dei perni utilizzati
TFT_CS #define 5 Linea di selezione chip per il display TFT
#define TFT_RST 22 Riga di reset per TFT
#define TFT_DC 21 Dati/riga di comando per TFT
#define SD_CS 16 Linea di selezione chip per scheda SD
istanza tft
Adafruit_ST7735 tft - Adafruit_ST7735 (TFT_CS, TFT_DC, TFT_RST);
Funzione per visualizzare il testo sul display in un colore specifico
void displayText(char : testo , uint16_t colore)
tft.setTextColor(colore);
tft.setTextWrap(true); l'interruzione di riga automatica è attivata
tft.print(testo);
}
Funzione per visualizzare il testo in qualsiasi punto (x,y)
Visualizzazione. Il colore può essere selezionato
void displayText(uint16_t x, uint16_t y, char s'text, uint16_t colore)
tft.setCursor(x, y);
displayText(testo;colore);
}
Funzione per la visualizzazione del logo nella parte superiore del display
void displayLogo()
Riempimento dello sfondo
tft.fillRect(0.0,127.30.ST7735_YELLOW);
Cornici di disegno
tft.drawRect(1,1,125,28,ST7735_BLUE);
Tipo di carattere per la parola HOME grassetto
tft.setFont(&FreeSansBold9pt7b);
Posizionamento dei cursori
tft.setCursor(7,20);
Testo di output in nero
tft.setTextColor(ST7735_BLACK);
tft.print("HOME");
Tipo di carattere per il controllo parola non in grassetto
tft.setFont(&FreeSans9pt7b);
Testo di output in rosso
tft.setTextColor(ST7735_RED);
tft.print("Controllo");
Ripristinare il tipo di carattere predefinito
tft.setFont(NULL);
}
void setup()
Serial.begin(115200);
tft inizializza e sfondo nero
tft.initR(INITR_BLACKTAB);
tft.fillScreen(ST7735_BLACK);
Mostra logo
displayLogo();
Inizializzare la scheda SD e visualizzare il risultato
se (! SD.begin(SD_CS))
displayText(20,60,"No SD-Card",ST7735_YELLOW);
- altro
displayText(20,60,"SD-Card OK",ST7735_GREEN);
}
}
void loop()
}
3 commenti
Andreas Wolter
Der Schaltplan wurde ausgetauscht.
Grüße.
Volker
Hallo,
vielen Dank für die Anleitung.
Könnt ihr bitte die Grafiken so einstellen, dass die Schrift lesbar ist.
Das wäre sehr hilfreich.
Danke :)
Volker
Frank
Hallo Herr Lechner,
können Sie bitte den Verdrahtungsplan so darstellen das man die Pinnummern lesen kann,
mein ESP32 hat eine etwas andere Belegung ,deshalb kann ich mich nicht nach den Verbindungslinien
richten.
mit freundlichen Grüßen
Frank