ich habe diemal was ganz anderes gebaut als sonst. Nämlich einen
Satelliten-Tracker. Die Hardware ist ganz simpel. Einfach ein beliebiges
ESP32-Modul und ein TFT. In meinem Fall ein 2,8" Display mit ILI9341
Chipsatz.
Die Tracker-Software findet man hier:
SatTracker_esp32_v2
wie man sie anwendet und zum Laufen bekommt erfährt ihr in diesem Bericht.
Library-Pfad und das Befüllen des SPIFFS-Speichers beziehen sich auf die Benutzung der IDE 2.x.
Für die Display-Ausgabe wird die bekannte library TFT_eSPI benutzt. Die
Tracker-Software enthält keine eigenen Definitionen für Displaytyp und
Beschaltung. Also konfiguriere ich diese Dinge direkt in der library.
Und zwar im Ordner ..Documents\Arduino\libraries\TFT_eSPI in der Datei
User_Setup.h.
...
// Only define one driver, the other ones must be commented out
#define ILI9341_DRIVER // Generic driver for common displays
//#define ILI9341_2_DRIVER // Alternative ILI9341 driver, see https://github.com/Bodmer/TFT_eSPI/issues/1172
//#define ST7735_DRIVER // Define additional parameters below for this display
//#define ILI9163_DRIVER // Define additional parameters below for this display
//#define S6D02A1_DRIVER
//#define RPI_ILI9486_DRIVER // 20MHz maximum SPI
//#define HX8357D_DRIVER
//#define ILI9481_DRIVER
//#define ILI9486_DRIVER//#define ILI9488_DRIVER // WARNING: Do not connect ILI9488
display SDO to MISO if other devices share the SPI bus (TFT SDO does NOT
tristate when CS is high)
//#define ST7789_DRIVER // Full configuration option, define additional parameters below for this display
//#define ST7789_2_DRIVER // Minimal configuration option, define additional parameters below for this display
//#define R61581_DRIVER
//#define RM68140_DRIVER
//#define ST7796_DRIVER
//#define SSD1351_DRIVER
//#define SSD1963_480_DRIVER
//#define SSD1963_800_DRIVER
//#define SSD1963_800ALT_DRIVER
//#define ILI9225_DRIVER
//#define GC9A01_DRIVER
...
// For ESP32 Dev board (only tested with ILI9341 display)
// The hardware SPI can be mapped to any pins
#define TFT_MISO 19
#define TFT_MOSI 23
#define TFT_SCLK 18
#define TFT_CS 15 // Chip select control pin
#define TFT_DC 2 // Data Command control pin
#define TFT_RST 4 // Reset pin (could connect to RST pin)
//#define TFT_RST -1 // Set TFT_RST to -1 if display RESET is connected to ESP32 board RST
...
durch Entfernen der Kommentarfunktion aktiviert man den gewünschten
Bildschirmtyp. Die Belegung läßt sich im Abschnitt des verwendeten
Boards (ESP32 Dev board) einsehen und anpassen. Das wäre schon alles zur
Hardware.
In der IDE wird wie gesagt als Board "ESP32 Dev board" eingestellt. Ich
habe ein Lolin32 Board eingesetzt. Passend zum Flash-Speicher wird ein
4MB Partitionschema ausgewählt mit Spiffs. Also in dem Fall "Default 4MB
with Spiffs". Auch bei "Flash Size" muß die Speichergröße 4MB
eingestellt sein.
Bevor der Tracker in die IDE geladen wird müssen wir erst das SPIFFS
Dateisystem formatieren und die benötigten Datendateien dorthin
kopieren. Jens (pintel) hatte dazu eine schöne Anleitung
geschrieben. Wir benutzen das dort vorgestellte Programm
ESP32_OTA_FILESYS.ino und achten darauf dass Board und Partitionsschema
wie o.a. eingestellt sind. In dem Programm selbst aktivieren wir als
Dateisystem SPIFFS_FS:
Zitat:#define LITTLE_FS 0
#define SPIFFS_FS 1
#define FILESYSTYPE SPIFFS_FS
und tragen unsere WLAN Daten ein:
#else
const char* ssid = "eigene SSID";
const char* password = "eigenes Passwort";
#endif
dann laden wir das Programm auf den ESP32. Der serielle Monitor zeigt uns den link zum webinterface:
dort sehen wir dass das Dateisystem noch nicht formatiert ist, und holen das nach:
danach ändert sich die Meldung "SPIFFS filesystem not found" in "SPIFFS
filesystem found". Wir laden nun einzeln die Bilder im data-Ordner der
Tracker-Software ins SPIFFS.
Damit ist das Thema Datenordner erledigt und wir können uns mit dem
Tracker beschäftigen. So, wie wir den sketch von github geladen haben,
würde er keine Satellitendaten finden. Der sketch ist nämlich 2 Jahre
all und die Datenquelle SATCAT wurde in der Zwischenzeit auf NORAD
umgestellt. Am einfachsten ersetzen wir den ganzen SATCAT Block mit
diesem Block:
const int Sat = 4;
const String CelestrakUrl = "http://celestrak.org"; //Web address to get TLE (CELESTRAK)http://104.168.149.178
char TLENameChar[Sat][21]; // { "sat0", "sat1", "sat2", "sat3", "sat3", "sat3"};
char TLE1Char[Sat][71];
char TLE2Char[Sat][71];
// Enter the number of tracked satellite //4
// Enter the code of the tracked satellites from Celestrak // "/NORAD/elements/gp.php?CATNR=25544&FORMAT=TLE","/satcat/tle
const char *SatTleURL[] = {
"/NORAD/elements/gp.php?CATNR=25544", //ISS
"/NORAD/elements/gp.php?CATNR=33591", //NOAA 19
"/NORAD/elements/gp.php?CATNR=20443", //ARIANE 40
"/NORAD/elements/gp.php?CATNR=48274", //TIANHE
"/NORAD/elements/gp.php?CATNR=43561", //LEMUR
"/NORAD/elements/gp.php?CATNR=08366" //GEOS 1
};
Informationquelle: ISS Tracker mit ESP32
jetzt kann der Tracker hochgeladen werden. Unbedingt wieder das
Partitionsschema kontrollieren, sonst überschreiben wir womöglich den
SPIFFS und können wieder von vorne anfangen. Ein WLAN können wir nicht
vorkonfigurieren. Laut Beschreibung soll der Tracker aber bei nicht
konfiguriertem WLAN in einen AP-Mode gehen und unter der Adresse
192.168.4.1 eine Eingabemöglichkeit anbieten. Ich kann das leider nicht
mehr nachvollziehen, das Einbuchen ins WLAN kann ich ihm nicht mehr
abgewöhnen. Die WLAN-Daten wurden offensichtlich vom vorherigen Sketch
"ESP32_OTA_FILESYS.ino" übernommen, obwohl der schon wieder überspielt
ist.
Nach dem sehr schönen Eingangsbildschirm erwartet uns eine grobe
Weltkarte. Den 4 konfigurierten Satelliten sind jeweils andere Farben
zugeordnet. Erst erscheinen sie als Punkte, mit der Zeit hinterlassen
sie dann die Leuchtspur ihrer Umlaufbahn.
fliegt die ISS über Europa so wechselt die Weltkarte in eine Europakarte
und der Überflug kann detaillierter beobachtet werden. Im Moment ist
das nicht der Fall, und so bin ich noch ein Bild schuldig.
Legt man beim Einschalten für 5 Sekunden gpio 13 auf Masse so läuft eine schnelllaufende, eindrucksvolle Simulation ab.
Das Pultgehäuse ist diesmal nicht selbst gedruckt, sondern stammt aus
dem Sperrmüll eines Nagelstudios :-) Nur die Front hatte ich
ausgeschnitten und einen gedruckten Displayrahmen aufgeklebt. Gedruckt
ist weiterhin eine Einschiebehalterung für den Lolin32. Lackiert hatte
ich das ganze mit einem Stein-Effektlack.
dies war ursprünglich mal die Bodenseite, jetzt ist es die Rückseite.
Bedanken möchte ich mich bei Siegfried (Siegfried55) für die Idee und die kompetente Hilfe bei der Einrichtung!
Keine Kommentare:
Kommentar veröffentlichen