TinyML · Edge AI · ESP32 · Stand Juli 2026

Edge Intelligence.
Direkt auf dem Chip.

Maschinelles Lernen für den ESP32 — von der Spracherkennung über Computer Vision bis zur Anomalieerkennung. Das Ökosystem ist 2026 ausgereifter denn je: stabile Libraries, bewährte Workflows, ESP-IDF 5.4. Alles ohne Cloud, ohne Latenz, mit < 5 mW Verbrauch.

240MHz
Dual-Core CPU
520KB
SRAM
<5mW
Verbrauch
~3
Einstiegspreis

Echtzeit-Inferenz

Millisekunden-Reaktion ohne Serverrundtrip. Modelle laufen lokal auf dem Chip.

Privacy by Design

Sensordaten verlassen das Gerät niemals. Keine Cloud-Abhängigkeit.

Offline-fähig

Funktioniert ohne Internetverbindung — ideal für industrielle und ländliche Umgebungen.

Batteriebetrieb

Mit Deep-Sleep und TFLite Micro bis zu Jahre aus einer Batterie.

Kompakte Modelle

INT8-quantisierte Netze unter 100 KB — optimiert für Flash und RAM.

Was läuft bereits auf dem ESP32?

Reale Projekte aus der Community und Industrie — von einfachen Gestenklassifikatoren bis zu mehrsprachigen Wakeword-Systemen.

Computer Vision

Objekterkennung & Klassifikation

MobileNetV2 und FOMO-Varianten erkennen Objekte in Echtzeit. Mit dem ESP32-CAM (OV2640) bei 320×240 Pixeln und ~5 fps.

MobileNetV2 FOMO OV2640 Edge Impulse
Audio & Sprache

Wakeword & Spracherkennung

„Hey ESP" — das Mikrofon lauscht permanent im Ultra-Low-Power-Modus. Bei Erkennung wacht das System auf und leitet Sprachbefehle weiter.

MFCC Features 1D-CNN I²S Mic TFLite Micro
Sensorfusion

Anomalieerkennung & Predictive Maintenance

Autoencoders oder FOMO-AD auf IMU-Daten erkennen Maschinenfehler frühzeitig — direkt an der Anlage, ohne SPS-Integration. 2026 Standard in IIoT-Projekten.

MPU-6050 Autoencoder Vibration FFT MQTT Alert
Gestenerkennung

Hand- und Körpergesten

Radar-Sensor (Acconeer XM122) oder IMU klassifiziert 8–12 Gesten mit >97 % Genauigkeit. Verwendung in Smart-Home und Industriesteuerung.

IMU / Radar DTW / CNN BLE HID 97% Accuracy
Umwelt

Energieverbrauchsprognose

LSTM-light auf historischen Zählerdaten prognostiziert Verbrauch für die nächsten 24 h — für lokale Heizungssteuerung ohne Cloud-Zwang.

LSTM Zeitreihe SML ~60 KB Modell
NLP / LLM

LLM-Gateway & Edge-NLP

Der ESP32-S3 fungiert als schlankes Intent-Parsing-Gerät: wandelt Sprachbefehle lokal in strukturierte JSON-Commands um. 2026 reifen quantisierte 1B-Modelle (z.B. Phi-3 Mini) für Nano-MCU-Gateways heran.

ESP32-S3 Intent Parsing JSON-RPC WiFi / BLE

Vom Datensatz zum laufenden Modell

In 6 Schritten von der Idee zur produktionsreifen Edge-KI.

01

Daten sammeln

Sensordaten lokal aufzeichnen oder Edge Impulse Data Forwarder nutzen.

02

Feature Engineering

MFCC, FFT, Spektrogramme oder direkte Rohwerte als Merkmale extrahieren.

03

Modell trainieren

Keras/PyTorch in der Cloud trainieren — klein, quantisierungsfreundlich.

04

Optimieren

INT8- oder INT4-Quantisierung mit TFLite Converter; Größe auf <500 KB reduzieren. Mixed-Precision ab TFLite 2.16+.

05

Deployen

Modell als C-Array einbetten, mit TFLite Micro interpretieren und flashen.

06

Monitoren

Konfidenz-Werte per MQTT senden, Drift erkennen, Modell iterieren.

Direkt einsetzbare Snippets

Kopieren, anpassen, flashen — jedes Beispiel läuft auf einem Standard ESP32.

inference_main.cpp
#include "tensorflow/lite/micro/all_ops_resolver.h"
#include "tensorflow/lite/micro/micro_interpreter.h"
#include "tensorflow/lite/schema/schema_generated.h"
#include "model_data.h"  // xxd-konvertiertes .tflite

namespace {
  const int TENSOR_ARENA_SIZE = 60 * 1024;  // 60 KB Arena
  uint8_t tensor_arena[TENSOR_ARENA_SIZE];
  tflite::AllOpsResolver resolver;
  const tflite::Model* model = nullptr;
  tflite::MicroInterpreter* interpreter = nullptr;
}

void setup() {
  Serial.begin(115200);

  // Modell aus Flash-Array laden
  model = tflite::GetModel(g_model_data);
  if (model->version() != TFLITE_SCHEMA_VERSION) {
    Serial.println("Modell-Schema veraltet!");
    while (true);
  }

  // Interpreter initialisieren
  interpreter = new tflite::MicroInterpreter(
    model, resolver, tensor_arena, TENSOR_ARENA_SIZE
  );

  TfLiteStatus status = interpreter->AllocateTensors();
  if (status != kTfLiteOk) {
    Serial.println("Tensor-Allokierung fehlgeschlagen");
    while (true);
  }

  Serial.printf("Arena genutzt: %d Bytes\n",
    interpreter->arena_used_bytes());
}

void loop() {
  TfLiteTensor* input  = interpreter->input(0);
  TfLiteTensor* output = interpreter->output(0);

  // Eingabedaten normalisieren [-1.0, 1.0]
  fillInputFromSensor(input->data.f);

  // Inferenz ausführen
  TfLiteStatus invoke_status = interpreter->Invoke();
  if (invoke_status != kTfLiteOk) return;

  // Klasse mit höchster Konfidenz ermitteln
  float max_conf = 0.0f;
  int   max_idx  = -1;
  for (int i = 0; i < output->dims->data[1]; i++) {
    if (output->data.f[i] > max_conf) {
      max_conf = output->data.f[i];
      max_idx  = i;
    }
  }
  Serial.printf("Klasse %d — Konfidenz %.2f%%\n",
    max_idx, max_conf * 100.0f);

  delay(200);
}
wakeword.cpp
#include "driver/i2s.h"
#include "esp_dsp.h"
#include "wakeword_model.h"  // TFLite INT8 Modell

// I²S-Konfiguration für INMP441 MEMS-Mikrofon
const i2s_config_t i2s_config = {
  .mode             = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_RX),
  .sample_rate      = 16000,
  .bits_per_sample  = I2S_BITS_PER_SAMPLE_32BIT,
  .channel_format   = I2S_CHANNEL_FMT_ONLY_LEFT,
  .communication_format = I2S_COMM_FORMAT_STAND_I2S,
  .intr_alloc_flags = ESP_INTR_FLAG_LEVEL1,
  .dma_buf_count    = 4,
  .dma_buf_len      = 512,
};

// MFCC-Extraktion: 40 Koeffizienten, 25ms Fenster, 10ms Hop
const int N_MFCC     = 40;
const int FRAME_LEN  = 400;  // 25ms @ 16kHz
const int HOP_LEN    = 160;  // 10ms @ 16kHz
const int N_FRAMES   = 49;   // 1s Audio
float mfcc_buffer[N_FRAMES * N_MFCC];

bool detectWakeword() {
  // 1. PCM-Daten per DMA lesen
  int32_t raw[FRAME_LEN];
  size_t bytes_read;
  i2s_read(I2S_NUM_0, raw, sizeof(raw), &bytes_read, 100);

  // 2. Normalisieren & MFCC berechnen (esp-dsp)
  compute_mfcc_frame(raw, mfcc_buffer, N_MFCC);

  // 3. TFLite Inferenz
  TfLiteTensor* in = interpreter->input(0);
  memcpy(in->data.f, mfcc_buffer, sizeof(mfcc_buffer));
  interpreter->Invoke();

  TfLiteTensor* out = interpreter->output(0);
  float confidence = out->data.f[1];  // Klasse "Hey ESP"

  return confidence > 0.85f;
}
vision_classify.cpp
#include "esp_camera.h"
#include "img_converters.h"
#include "mobilenet_model.h"

// ESP32-CAM AI Thinker Pinout
const camera_config_t cam_config = {
  .pin_pwdn  = 32, .pin_reset = -1,
  .pin_xclk  = 0,
  .pin_sscb_sda = 26, .pin_sscb_scl = 27,
  .xclk_freq_hz = 20000000,
  .pixel_format = PIXFORMAT_GRAYSCALE,  // Graustufen spart RAM
  .frame_size   = FRAMESIZE_96X96,      // MobileNet Eingabegröße
  .fb_count     = 1,
};

void classifyFrame() {
  camera_fb_t* fb = esp_camera_fb_get();
  if (!fb) return;

  // Pixelwerte normalisieren: [0,255] → [-1.0, 1.0]
  TfLiteTensor* input = interpreter->input(0);
  for (int i = 0; i < 96 * 96; i++) {
    input->data.f[i] = (fb->buf[i] / 127.5f) - 1.0f;
  }

  // Inferenz (~55ms bei 240MHz)
  interpreter->Invoke();

  // Top-1 Klasse ermitteln
  TfLiteTensor* out = interpreter->output(0);
  int   best_cls  = 0;
  float best_conf = out->data.f[0];

  for (int c = 1; c < NUM_CLASSES; c++) {
    if (out->data.f[c] > best_conf) {
      best_conf = out->data.f[c];
      best_cls  = c;
    }
  }

  Serial.printf("%s (%.1f%%)\n",
    labels[best_cls], best_conf * 100.0f);

  esp_camera_fb_return(fb);
}
anomaly_imu.cpp
#include "MPU6050.h"
#include "autoencoder_model.h"  // INT8 Autoencoder

const int WINDOW   = 128;  // 128 Samples @ 200 Hz = 640ms
const int FEATURES = 6;   // ax,ay,az, gx,gy,gz
float window_buf[WINDOW * FEATURES];

float reconstructionError() {
  // Input-Tensor befüllen
  TfLiteTensor* in = interpreter->input(0);
  memcpy(in->data.f, window_buf, sizeof(window_buf));

  interpreter->Invoke();

  // MSE zwischen Eingabe und Rekonstruktion
  TfLiteTensor* out = interpreter->output(0);
  float mse = 0.0f;
  int   n   = WINDOW * FEATURES;
  for (int i = 0; i < n; i++) {
    float diff = window_buf[i] - out->data.f[i];
    mse += diff * diff;
  }
  return mse / n;
}

void loop() {
  collectIMUWindow(window_buf, WINDOW);
  float err = reconstructionError();

  const float THRESHOLD = 0.032f;  // Aus Validierungsdaten ermittelt
  if (err > THRESHOLD) {
    Serial.printf("[ALARM] Anomalie! MSE=%.4f\n", err);
    sendMQTTAlert(err);            // IoT-Backend benachrichtigen
    triggerWarningLED();
  } else {
    Serial.printf("[OK] MSE=%.4f\n", err);
  }
}
platformio.ini
; PlatformIO-Konfiguration für ESP32 TinyML Projekt
; Stand: Juli 2026 — ESP-IDF 5.4 / arduino-esp32 3.x
[env:esp32dev]
platform  = espressif32
board     = esp32dev
framework = arduino

; Empfohlene Partition: 4 MB Flash für Modell + OTA
board_build.partitions = huge_app.csv
monitor_speed          = 115200
upload_speed           = 921600

; TensorFlow Lite Micro + DSP Bibliotheken
lib_deps =
  tensorflow/TensorFlowLite_ESP32
  espressif/esp-dsp
  lorol/LittleFS_esp32   ; Modell aus SPIFFS laden

; Optimierungsstufe für Inferenzgeschwindigkeit
build_flags =
  -O3
  -DCORE_DEBUG_LEVEL=0
  -DESP_NN                  ; Espressif Neural Network Ops
  -DTFLITE_SCHEMA_VERSION=3

; Konvertierungsbefehl (auf Host-Maschine ausführen):
; tflite_convert --output_format=TFLITE \
;   --post_training_quantize \
;   --input_file=model.h5 \
;   --output_file=model.tflite
;
; xxd -i model.tflite > model_data.h

Welches Board für welchen Einsatz?

Alle Varianten unterstützen TFLite Micro — der Unterschied liegt in RAM, Peripherie und Verbrauch.

ESP32

Original · Xtensa LX6
CPU240 MHz Dual
RAM520 KB SRAM
Flash4 MB (ext.)
KI-EignungSensor / Audio
Kamera
~2,50 €

ESP32-CAM

Camera Board · OV2640
CPU240 MHz Dual
RAM4 MB PSRAM
Flash4 MB
KI-EignungComputer Vision
KameraOV2640 2MP
~5 €

ESP32-C3

Ultra-Low-Power · RISC-V
CPU160 MHz Single
RAM400 KB SRAM
Flash4 MB
KI-EignungWakeword / BLE
Kamera
~2,50 €

Das Ökosystem für Edge AI

Geprüfte Libraries — direkt per PlatformIO oder Arduino Library Manager installierbar.

Bibliothek Beschreibung Install Reifegrad
TensorFlow Lite Micro
Google
Offizielle TFLite-Implementierung für Mikrocontroller. Interpreter + Ops + INT8/INT4-Support. Stabil seit ESP-IDF 5.x, aktiv gepflegt (Stand 2026). pio lib install tensorflow-lite
Edge Impulse SDK
Edge Impulse
Komplettes SDK für Cloud-trainierte Modelle. Inkl. Data Acquisition, Inferenz, OTA-Update und FOMO-AD Anomalieerkennung. Unterstützt ESP32-S3 nativ (2026). ei-model-deploy zip
EloquentTinyML
Community
C++ Wrapper für TFLite Micro. Vereinfachte API, gut für schnelles Prototyping. Arduino: EloquentTinyML
ESP-NN
Espressif
Espressif-optimierte NN-Ops für ESP32-S3 und C6. Bis zu 4× schneller als generische TFLite-Ops (ESP-IDF 5.4, Juli 2026). idf_component add esp-nn
ESP32-DSP
Espressif
SIMD-beschleunigte DSP-Funktionen: FFT, FIR, MFCC-Extraktion. Essenziell für Audio-KI. idf_component add esp-dsp
MicroML
Community
Leichtgewichtige sklearn-kompatible Modelle (SVM, Random Forest, KNN) für ESP32 ohne TFLite-Overhead. Aktive Community-Pflege. Arduino: MicroML
esp32-camera
Espressif
OV2640/OV7670/OV3660 Treiber mit DMA-Unterstützung. Pflicht für Vision-Projekte. idf_component add esp32-camera

Lernen & vertiefen

Kuratierte Links — Dokumentation, Tools, Community und Bücher für jeden Kenntnisstand.

TFLite Micro Doku

Offizielle Google-Dokumentation mit API-Referenz, Quickstart und Beispielen.

Öffnen →

Edge Impulse Studio

Cloud-Plattform für Datenaufnahme, Training und Deployment auf ESP32. Seit 2025 mit FOMO-AD für Anomalieerkennung. Kostenlos für Maker.

Öffnen →

Netron Model Viewer

Visualisiert .tflite, .onnx und .keras Modelle — Layer, Shapes, Gewichte auf einen Blick.

Öffnen →

Kaggle Datasets

Tausende öffentliche Datensätze für Audio, Sensor, Bild — direkt für Edge-Training nutzbar.

Öffnen →

TinyML (O'Reilly)

Das Standardwerk von Pete Warden & Daniel Situnayake. Vollständig mit ESP32-Beispielen.

Öffnen →

ESP32 Forum

Offizielles Espressif-Forum mit aktiver TinyML-Sektion und Entwicklern die direkt antworten.

Öffnen →

ESP-IDF GitHub

Espressif IoT Development Framework — aktuell v5.4 (Juli 2026). Quellcode, Issues und Roadmap für neue ESP32-P4 und C6 Features.

Öffnen →

YouTube: TinyML

Video-Tutorials: ESP32-CAM Vision, Wakeword, Anomalieerkennung — von Grundlagen bis Deployment.

Suchen →

Dein erstes Edge-AI Projekt

In 30 Minuten zum laufenden TFLite-Modell auf dem ESP32 — mit PlatformIO (ESP-IDF 5.4), einem Beispieldatensatz und diesem Startercode. Oder buche direkt ein Meeting mit unserem Team.

ESP32 AI in der Daseinsvorsorge

People First Public-Private Partnerships setzen auf digitale, kosteneffiziente und gemeinschaftsorientierte Infrastruktur. Der ESP32 liefert Edge Intelligence direkt in die Projekte — ohne Cloud-Abhängigkeit, mit minimalem Betriebsaufwand und messbarem Nutzen für die Bevölkerung.

People Planet Prosperity Public Private Partnership
People · Planet

Intelligentes Wassermonitoring

ESP32-S3 Nodes überwachen Leitungsnetze auf Druckabfall, Trübung und Leckagen — in Echtzeit, ohne SCADA-Cloud. In Kommunen mit veralterter Infrastruktur reduziert das unentdeckte Verluste um bis zu 30 %. Daten werden lokal ausgewertet und per LoRaWAN an die Leitstelle gemeldet.

Drucksensor Trübungssensor Anomalie-KI LoRaWAN SDG 6
30%
Leckage-Reduktion
<8€
Kosten/Node
5 J.
Batterie-Laufzeit
Prosperity · Public

Präventive Straßeninstandhaltung

Vibrationssensoren an Fahrzeugen des kommunalen Fuhrparks klassifizieren Fahrbahnschäden per IMU und CNN direkt auf dem ESP32. Die GPS-getaggten Schadensklassen werden aggregiert und priorisiert an den Straßenbaulastträger übermittelt — ohne manuelle Begehung.

IMU MPU-6050 CNN Klassifikator GPS Tagging MQTT SDG 9 · 11
60%
Weniger Begehungen
94%
Klassifikationsgenauigkeit
~12€
Kosten/Fahrzeug
Planet · Prosperity

Dezentrale Energiesteuerung

ESP32-basierte Edge-Controller steuern Photovoltaik-Speicher in kommunalen Liegenschaften. Ein LSTM-Modell prognostiziert den Verbrauch der nächsten 24 h lokal und optimiert Lade-/Entladezyklen. Integration in bestehende BMS ohne proprietäre Cloud-Anbindung.

LSTM Prognose PV Speicher Modbus RTU No Cloud SDG 7
18%
Eigenverbrauch +
<5mW
Controller-Verbrauch
0€
Cloud-Kosten/Monat
People · Partnership

Telemedizin in ländlichen Regionen

Niedrigschwellige Vitalparametererfassung (SpO2, Herzrate, Temperatur) mit ESP32 und KI-gestützter Erstbewertung — auch ohne Internetzugang. Bei kritischen Werten wird ein Alert per SMS-Modul ausgelöst. Einsatz in Community Health Posts in unterversorgten Gemeinden.

MAX30102 Anomalie-KI SMS Alert Offline-First SDG 3
2s
Messung + Bewertung
97%
Sensitivität krit. Werte
<15€
Gerätekostem
Planet · Public

Intelligente Abfalllogistik

Ultraschallsensoren mit KI-Füllstandserkennung am ESP32-C3 melden Containerauslastung bedarfsgerecht. Ein routenoptimierender Algorithmus reduziert Leerfahrten um bis zu 40 %. Pilotprojekte in drei deutschen Kommunen zeigen CO2-Einsparungen von 12 t/Jahr pro Fahrzeug.

Ultraschall HC-SR04 Füllstand-KI NB-IoT Routenoptimierung SDG 11 · 13
40%
Leerfahrten-Reduktion
12 t
CO2/Fzg./Jahr
<4€
Sensor/Container
People · Partnership

Inklusive Stadtinfrastruktur

Wakeword-basierte Sprachsteuerung (ESP32-S3 + Mikrofon) für barrierefreie Ampeln, Aufzüge und Informationsterminals — lokal, ohne Internetverbindung, datenschutzkonform. Gesten- und Sprachkommandos werden auf dem Gerät klassifiziert. Kein Audio verlässt das Gerät.

Wakeword Gestenklassifikation Privacy by Design BLE HID SDG 10 · 11
0 ms
Cloud-Latenz
DSGVO
Konform
<10€
Kosten/Terminal

Warum People First PPP + ESP32?

People First PPPs nach dem UNECE-Rahmen priorisieren Sozialwirkung, Nachhaltigkeit und wirtschaftliche Effizienz. Der ESP32 erfüllt diese Anforderungen technisch: kein Cloud-Lock-in, geringer Energieverbrauch, offene Standards und Kosten, die auch für Kommunen mit kleinen Budgets tragbar sind.

PPP-Projekt besprechen
Kein Cloud-Lock-in
DSGVO-konform
Offen & replizierbar
Niedrige Betriebskosten
Wartbar durch Kommunen
SDG-konform
Offline-First
Skalierbar auf Regionen

Schreib uns oder buch ein Meeting

Fragen zu ESP32-AI Projekten, Kooperationen oder technischer Unterstützung — wir antworten innerhalb von 24 h.

Kontaktanfrage

Direkte Nachricht an unser Team

Meeting buchen

ImPPPact Germany Alliance

30-Minuten-Gespräch mit unserem ESP32-AI Team — Projektbesprechung, Demo oder technische Beratung.

  • Kostenloses Erstgespräch
  • Online via Video-Call
  • Flexibler Termin wählbar
Termin buchen

Direktkontakt