Zur Werkzeugleiste springen

Last Updated on 17. September 2020 by sfambach

Der ESP32 ist der Nachfolger des erfolgreichen ESP8266 Controllers. Er besitzt eine 32Bit Tensilica Xtensa LX6 CPU in der Regel mit zwei Kernen (RISC Architektur). Hier sammle ich für mich interessante Informationen.

Anwendungsgebiete

  • Haushaltsanwendungen
  • Hausautomation
  • Smarte Steckdosen und Licht Steuerung
  • WLAN Steuerung
  • Babyphone
  • IP Kameras
  • Sensor Networks
  • Wearables
  • Bloototh Applikationen wie Kopfhörer/Lautsprecher …

Innenleben

Das folgende Schaubild zeigt die Architektur des Controllers.
Neben diversen Schnittstellen besitzt er:

  • WLan
  • Bluetooth
  • Einen Temperatursensor
  • Crypto Routinen
Blcokschaltbild ESP32

Dokumentation

https://www.espressif.com/en/products/hardware/esp32/overview

https://github.com/espressif/arduino-esp32

Einrichtung der Programmierumgebung

Arduino Gui

Die Einrichtung mit GIT kann dem folgenden Beitrag entnommen werden

https://fambach.net/esp32-arduino-gui-einrichten/

Sofware Tipps

Hardware Daten auslesen

Die Datei esp.h/Klasse ESP bietet Zugriff auf einige Informationen der Hardware. Wie Id, Versionen, freier Speicher usw.. Der komplette Funktionsumfang kann in Githup eingesehen werden.

https://github.com/espressif/arduino-esp32/blob/master/cores/esp32/Esp.h

Eingebunden werden muss die Esp.h meist nicht diese ist bei den Standardbibliotheken mit dabei. (Danke für den Hinweis an Andreas, siehe Kommentar) . Folgend ein paar Beispiele aus der Datei.

Neustart auslösen

Eine Funktion ist das Neustarten des ESPs. Dies kann nach einem remote Update der Firmware nötig sein oder bei schlampiger Programmierung wenn der Speicher voll ist ;).

ESP.restart();

Speicher Informationen abfragen

Gerade für das Debuggen sind Speicherinfomationen ganz nützlich. Zum Beispiel kann hieran erkannt werden, ob verwendeter Speicher auch wieder frei gegeben wird. Die folgenden können hierfür aufgerufen werden:

Heap/SPI Speicher Größe

uint32_t var = ESP.getHeapSize(); 
uint32_t var2 = ESP.getPsramSize();

Freier Heap/PS Speicher

uint32_t var1 = ESP.getFreeHeap(); 
uint32_t var2 = ESP.getFreePsram();

Minimalwert des Heap/SPI Speichers seit Controller start.

uint32_t var1 = ESP.getMinFreeHeap(); 
uint32_t var2 = ESP.getMinFreePsram();

Maximale Blockgröße des Heap/SPI Speichers

uint32_t var1 = ESP.getMaxAllocHeap(); 
uint32_t var2 = ESP.getMaxAllocPsram();

Spannung am ESP Abfragen

Der ESP 8266 hat noch die Möglichkeit die Spannung zu messen. Beim ESP32 beötigt man eine Hilfsschaltung, ein Spannungsteiler mit 100kOhm und 10kOhm am ADC.

Mehr infos gibts in dem gelinkten Beitrag:

https://www.arduinoforum.de/arduino-Thread-ESP32-Batteriestatus

Formel zur Berechnung der Spannung:

Uin =  (100 + 10) / 10 ((R1 + R2) /R2) 

https://www.arduinoforum.de/arduino-Thread-ESP32-Batteriestatus

Probleme

WiFi Verbindet sich nur jedes 2. Mal (BUG)

Hier ein Beispiel wie es zwar erst beim 2. Mal klappt dafür aber automatisch.

  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    // count ++;
    Serial.print(".");
    WiFi.disconnect();
    WiFi.mode(WIFI_STA);
    WiFi.begin(ssid, password);

  }

  // Print local IP address and start web server
  Serial.println("");
  Serial.println("WiFi connected.");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());

Verwandte Beiträge

Quellen

https://en.wikipedia.org/wiki/ESP32

https://www.espressif.com/en/products/hardware/esp32/overview

https://github.com/espressif/arduino-esp32

Beitrag in Elektronik.net

Von sfambach

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.