Samstag, 18. Februar 2023

Satelliten Tracker mit ESP32

 


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.

Code:

...
// 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:

Code:
#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:

Code:
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