ESP32 S3 Kamera - Foto an Telegram senden, wenn eine Bewegung erkannt wird
Dieses Tutorial zeigt Ihnen, wie Sie eine Sicherheitskamera bauen, die ein Foto an Ihr Handy sendet. Ein PIR-Bewegungssensor überwacht den Raum. Wenn jemand davor vorbeigeht, macht der ESP32 S3 ein Foto und sendet es Ihnen mit Telegram. Sie erhalten das Foto in wenigen Sekunden, überall auf der Welt.

Was Sie bauen werden:
- Ihren eigenen Telegram-Bot, der Ihnen Nachrichten sendet
- Eine ESP32 S3 Kamera mit einem PIR-Bewegungssensor
- Ein Foto auf Ihrem Handy, jedes Mal wenn der Sensor eine Bewegung erkennt
- Eine Ruhezeit, damit Sie nicht 50 Fotos derselben Person erhalten
Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
※ Notiz:
Das ESP32 S3 Kamera-Board hat 40 Pins, aber der Schraubklemmenblock und das Breakout-Board haben 44 Pins. Sie funktionieren trotzdem zusammen. Setzen Sie das Kamera-Board in die Mitte des 44-Pin-Boards, sodass links 2 Pins und rechts 2 Pins frei bleiben.
Mit dem Schraubklemmenblock können Sie Drähte mit einem Schraubendreher anschließen, ganz ohne Löten. Das Breakout-Board bietet Ihnen einfache Stiftleisten für ein Steckbrett.
Überblick über Telegram
Telegram ist eine kostenlose Chat-Anwendung für Ihr Handy und Ihren Computer. Mit Telegram können Sie einen Bot erstellen. Ein Bot ist ein Roboter-Freund in Ihrer Chatliste. Ihr ESP32 S3 sendet das Foto an den Bot, und der Bot zeigt es Ihnen.
Sie benötigen zwei geheime Texte:
| Name | Was es ist | Sieht so aus |
|---|---|---|
| Bot-Token | Das Passwort Ihres Bots | 8012345678:AAHxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| Chat-ID | Die Nummer Ihres Chats | 123456789 |
※ Notiz:
Zeigen Sie Ihr Bot-Token niemals jemandem und stellen Sie es niemals auf eine Website oder auf GitHub. Wer Ihr Token hat, kann Ihren Bot steuern.
Schritt 1: Erstellen Sie Ihren Bot
- Installieren Sie Telegram auf Ihrem Handy und erstellen Sie ein Konto.
- Suchen Sie in Telegram nach @BotFather. Er hat ein blaues Häkchen.
- Öffnen Sie den Chat mit BotFather und schreiben Sie ihm so:
BotFather
- Kopieren Sie das Bot-Token aus der letzten Nachricht und bewahren Sie es sicher auf.
Schritt 2: Finden Sie Ihre Chat-ID
- Suchen Sie in Telegram nach dem Namen Ihres neuen Bots und öffnen Sie den Chat.
- Senden Sie eine beliebige Nachricht an Ihren Bot, zum Beispiel hello. Dieser Schritt ist notwendig. Telegram erlaubt einem Bot nicht, Ihnen zu schreiben, bevor Sie ihm geschrieben haben.
ArduinoBot
- Öffnen Sie diese Adresse in Ihrem Webbrowser. Setzen Sie Ihr eigenes Bot-Token anstelle von <YOUR_BOT_TOKEN> ein:
- Der Browser zeigt einen langen Text. Suchen Sie nach "chat":{"id":. Die Zahl dahinter ist Ihre Chat-ID:
※ Notiz:
Zeigt der Browser {"ok":true,"result":[]} ohne Inhalt an? Dann haben Sie Ihrem Bot noch keine Nachricht gesendet. Gehen Sie zurück zu Schritt 2, senden Sie hello an Ihren Bot und laden Sie die Adresse erneut.
※ Notiz:
Viele andere Tutorials empfehlen, den Bot @myidbot mit der Nachricht /getid zu fragen. Dieser Bot gehört jemand anderem und antwortet sehr oft überhaupt nicht. Die obige Webadresse funktioniert immer, weil sie Telegram direkt fragt.
※ Notiz:
Schritt 2 vergessen? Dann zeigt der ESP32 S3 die Antwort Forbidden: bot can't initiate conversation with a user im Seriellen Monitor. Öffnen Sie den Chat mit Ihrem Bot, senden Sie ihm eine beliebige Nachricht und versuchen Sie es erneut.
Schritt 3: Tragen Sie die Werte in den Code ein
Öffnen Sie den Code und ändern Sie diese vier Zeilen:
Überblick über PIR Motion Sensor
Ein PIR-Bewegungssensor erkennt die Wärme eines menschlichen Körpers. PIR bedeutet "Passive InfraRed" (passiv infrarot). Wenn sich ein warmer Körper davor bewegt, geht der OUT-Pin auf HIGH.

Wichtige Spezifikationen
| Eigenschaft | Wert |
|---|---|
| Stromversorgung | 5V |
| Ausgang | 3,3V HIGH bei erkannter Bewegung, LOW wenn nichts erkannt wird |
| Reichweite | 3 bis 7 Meter (einstellbar) |
| Winkel | etwa 110° |
| Aufwärmzeit | 30 bis 60 Sekunden nach dem Einschalten |
Der Sensor hat zwei kleine orangefarbene Schrauben. Drehen Sie die Schraube für die Verzögerungszeit ganz nach links, sodass der Ausgang nur etwa 3 Sekunden lang HIGH bleibt.
Weitere Details zum Bewegungssensor finden Sie im Tutorial ESP32 S3 - Bewegungssensor. Um die Fotos auf einer microSD-Karte zu speichern, anstatt sie an Telegram zu senden, siehe das Tutorial ESP32 S3 Kamera - Foto auf SD-Karte speichern, wenn eine Bewegung erkannt wird.
Wiring Diagram between PIR Motion Sensor and ESP32 S3
Verbinden Sie den PIR-Bewegungssensor mit drei Jumper-Kabeln mit Ihrem ESP32 S3.

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
| PIR-Sensor Pin | ESP32 S3 Pin |
|---|---|
| VCC | 5V |
| GND | GND |
| OUT | GPIO21 |
Sicherheitshinweise
Der PIR-Sensor benötigt 5V an seinem VCC-Pin, nicht 3,3V. Mit 3,3V scheint er zu funktionieren, liefert aber falsche Signale. Sein OUT-Pin liefert 3,3V, was für den ESP32 S3 korrekt ist.
Die Kamera verwendet GPIO4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17 und 18. Verwenden Sie diese Pins nicht für den Sensor. GPIO21 ist frei, deshalb verwenden wir ihn.
Arduino IDE Einstellungen für die ESP32 S3 Kamera
Die Kamera funktioniert nicht mit den Standardeinstellungen der Arduino IDE. Sie müssen einige Punkte im Menü Tools ändern, bevor Sie den Code hochladen.
| Menüpunkt in Tools | Diese Option wählen |
|---|---|
| Board | ESP32S3 Dev Module |
| Flash Size | 16MB (128Mb) |
| PSRAM | OPI PSRAM |
| Partition Scheme | Huge APP (3MB No OTA/1MB SPIFFS) |
| CPU Frequency | 240MHz (WiFi) |
| USB Mode | Hardware CDC and JTAG |
| Upload Mode | UART0 / Hardware CDC |
| Upload Speed | 921600 |
| USB CDC On Boot | Enabled |
※ Notiz:
PSRAM muss OPI PSRAM sein, und Partition Scheme muss Huge APP sein. Ändern Sie zuerst Flash Size, da sich danach die Liste der Partition-Scheme-Optionen ändert.
Wie man ein Foto an Telegram sendet
Sie müssen keine Bibliothek installieren. Der Code spricht direkt mit Telegram.
- Telegram verwendet https, daher benötigen wir einen sicheren Client.
※ Notiz:
setInsecure() bedeutet, dass der ESP32 S3 nicht prüft, wer der Server wirklich ist. Für ein kleines Heimprojekt ist das in Ordnung und spart viel Speicher. Das Foto wird trotzdem über eine verschlüsselte Verbindung gesendet.
- Um ein Foto zu senden, verwenden wir die Telegram-Adresse /bot<TOKEN>/sendPhoto. Das Foto wird innerhalb einer Multipart-Nachricht übertragen. Eine Multipart-Nachricht besteht aus Teilen, und eine Textzeile namens Boundary trennt die Teile. Dieses Projekt verwendet drei Teile: die Chat-ID, den Text und das Foto.
※ Notiz:
Der Teil caption ist der Text unter dem Foto in Telegram. Ändern Sie Motion detected! in eine beliebige Nachricht.
- Die Content-Length muss die Größe von allem sein: dem ersten Teil, dem Foto und dem letzten Teil.
※ Notiz:
Eine falsche Content-Length ist der häufigste Fehler. Telegram wartet dann auf weitere Daten und antwortet nie.
- Senden Sie das Foto in kleinen Stücken. Ein großes write() schlägt bei einer sicheren Verbindung oft fehl.
- Lesen Sie die Antwort. Dieser Teil hat eine Falle. Telegram antwortet und schließt die Verbindung sofort, daher muss Ihr Code auch nach dem Schließen der Verbindung weiterlesen.
※ Notiz:
Eine Schleife der Form while (client.connected() && ...) sieht richtig aus, ist aber falsch. Telegram schließt die Verbindung sehr schnell, daher ist client.connected() oft schon false. Die Schleife läuft dann nie, und Sie verwerfen eine Antwort, die tatsächlich vorhanden ist. Der Serielle Monitor meldet, dass das Foto fehlgeschlagen ist, obwohl das Foto auf Ihrem Handy angekommen ist.
- Wenn alles in Ordnung ist, enthält die Antwort von Telegram "ok":true.
※ Notiz:
Dieses Projekt verwendet eine kleine Bildgröße (FRAMESIZE_SVGA, 800×600), da ein kleines Foto viel schneller gesendet wird. Ein Foto mit 50 KB dauert etwa 3 Sekunden. Ein Foto mit 200 KB dauert etwa 10 Sekunden.
ESP32 S3 Code
Der folgende Code sendet jedes Mal ein Foto an Ihren Telegram-Chat, wenn der Sensor eine Bewegung erkennt. Die Ruhezeit beträgt 30 Sekunden. Um sie zu ändern, ändern Sie die Zeile #define QUIET_TIME 30000.
Schnelle Schritte
- Neu beim ESP32 S3? Absolvieren Sie zuerst unsere Anleitung Erste Schritte mit dem ESP32 S3.
- Erstellen Sie Ihren Telegram-Bot und finden Sie Ihre Chat-ID. Siehe die Schritte oben.
- Ziehen Sie das USB-Kabel ab und verdrahten Sie dann den PIR-Sensor wie in der Tabelle oben.
- Drehen Sie die Schraube für die Verzögerungszeit des Sensors ganz nach links.
- Kopieren Sie den obigen Code und fügen Sie ihn in die Arduino IDE ein.
- Ändern Sie YOUR_WIFI_SSID, YOUR_WIFI_PASSWORD, YOUR_TELEGRAM_BOT_TOKEN und YOUR_TELEGRAM_CHAT_ID.
- Ändern Sie die Einstellungen im Menü Tools. Siehe die Tabelle oben.
- Kompilieren Sie den Code und laden Sie ihn auf das ESP32 S3 Board hoch, indem Sie in der Arduino IDE auf die Schaltfläche Upload klicken.

- Öffnen Sie den Seriellen Monitor in der Arduino IDE.

- Drücken Sie einmal die Taste RESET und verlassen Sie dann den Raum für 30 Sekunden. Der Sensor wärmt sich auf.
- Kommen Sie zurück und gehen Sie vor der Kamera vorbei.
- Schauen Sie auf Ihr Handy. Das Foto kommt in Ihrem Telegram-Chat an, mit dem Text darunter:
ArduinoBot

Serieller Monitor
Die folgenden Messwerte wurden im Jahr 2026 aufgezeichnet:
Fehlerbehebung
Der Serielle Monitor zeigt Forbidden: bot can't initiate conversation with a user.
Sie haben Ihrem Bot nie geschrieben. Öffnen Sie Telegram, suchen Sie Ihren Bot und senden Sie ihm eine beliebige Nachricht. Drücken Sie dann RESET auf dem Board.
Der Serielle Monitor zeigt Unauthorized.
Ihr Bot-Token ist falsch. Kopieren Sie es erneut von BotFather. Das Token besteht aus zwei Teilen, die durch : verbunden sind, und Sie benötigen es vollständig.
Der Serielle Monitor zeigt chat not found.
Ihre Chat-ID ist falsch. Fragen Sie @myidbot erneut mit /getid. Setzen Sie keine Leerzeichen um die Zahl.
Der Serielle Monitor zeigt Telegram did not answer at all.
Das Board hat das Foto gesendet, aber nichts zurückbekommen. Prüfen Sie Ihre Internetverbindung. Manche Schul- und Firmennetzwerke blockieren Telegram, versuchen Sie es daher mit dem Hotspot Ihres Handys. Wenn das Foto auf Ihrem Handy ankommt, obwohl das Board einen Fehler meldet, stoppt Ihre Leseschleife zu früh. Siehe den Hinweis zu client.connected() oben.
Der Serielle Monitor zeigt Sending stopped after ... bytes.
Das WLAN ist abgebrochen, während das Foto gesendet wurde. Stellen Sie das Board näher an den Router oder verwenden Sie eine kleinere Bildgröße.
Der Serielle Monitor zeigt Cannot connect to Telegram.
- Prüfen Sie, ob Ihr WLAN funktioniert. Die IP-Adresse muss im Seriellen Monitor erscheinen.
- Manche Schul- und Firmennetzwerke blockieren Telegram. Versuchen Sie es mit dem Hotspot Ihres Handys.
Telegram antwortet nie, und das Board wartet.
Die Content-Length stimmt nicht mit der tatsächlichen Größe überein. Ändern Sie die Texte head und tail nicht, es sei denn, Sie ändern auch die Größe.
Das Foto dauert lange.
Verwenden Sie eine kleinere Bildgröße. FRAMESIZE_VGA (640×480) ist etwa halb so groß wie SVGA.
Der Sensor erkennt ständig eine Bewegung.
Warten Sie nach dem Start eine volle Minute, drehen Sie die Schraube für die Empfindlichkeit etwas nach links und prüfen Sie, ob VCC an 5V angeschlossen ist.
Ich erhalte zu viele Fotos.
Erhöhen Sie QUIET_TIME von 30000 auf 60000 (eine Minute).
Anwendungen
Eine ESP32 S3 Kamera mit Bewegungssensor und Telegram ist eine komplette Sicherheitskamera, die sehr wenig kostet und keine monatlichen Gebühren erfordert. Hier sind praktische Projekte, die Sie mit diesem Code bauen können:
- WLAN-Sicherheitskamera für zu Hause: Erhalten Sie ein Foto auf Ihr Handy, sobald jemand Ihr Haus, Ihren Flur oder Ihr Treppenhaus betritt.
- Paketlieferungs-Benachrichtigung: Erfahren Sie sofort, wenn der Zusteller an Ihre Tür kommt, und sehen Sie das abgelegte Paket.
- Babyzimmer-Monitor: Erhalten Sie ein Foto, wenn Ihr Kind nachts aus dem Bett steigt.
- Haustierkamera für Hunde und Katzen: Sehen Sie, was Ihr Haustier macht, während Sie bei der Arbeit sind, ohne für eine Cloud-Kamera zu bezahlen.
- Ferienhaus-Wächter: Überwachen Sie ein leeres Haus oder einen Zweitwohnsitz aus einem anderen Land.
- Garagen- und Einfahrtsalarm: Erhalten Sie ein Foto, wenn jemand in die Nähe Ihres Autos, Ihres Fahrrads oder Ihres Motorrads kommt.
- Büro und Geschäft nach Feierabend: Behalten Sie ein Foto von jeder Person, die sich nach Geschäftsschluss im Inneren bewegt.
- Garten- und Wildtierkamera: Fotografieren Sie Vögel, Katzen, Füchse oder die Tiere, die nachts Ihr Gemüse fressen.
- Hilfe bei der Seniorenbetreuung: Wissen Sie, dass sich ein Familienmitglied wie gewohnt im Haus bewegt, ohne dass den ganzen Tag eine Kamera läuft.
- Lagerhalle und Hoftor: Überwachen Sie einen Ort weit weg von Ihrem Haus, an dem eine verkabelte Alarmanlage zu teuer wäre.
Video Tutorial
Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.
Sehen Sie sich unten die Schritt-für-Schritt-Videoanleitung für dieses ESP32 S3 Projekt an.
Herausforderungen
- Einsteiger: Senden Sie eine Textnachricht mit dem Foto, zum Beispiel die Zeit seit dem Start des Boards.
- Fortgeschritten: Fügen Sie einen Schalter hinzu, der den Alarm ein- und ausschaltet, damit Sie keine Fotos erhalten, wenn Sie zu Hause sind.
- Profi: Speichern Sie zusätzlich jedes Foto auf der microSD-Karte, damit Sie eine Kopie behalten, auch wenn das Internet ausfällt.