Smartphone-gesteuerte Arduino-Projekte
über

Diese beiden Projekte demonstrieren, wie sich ein Relais mithilfe eines Arduino Uno entweder über Bluetooth oder per WLAN mit einem ESP8266-basierten ESP-01-Modul per Smartphone steuern lässt. Ob einfache Befehle über eine Bluetooth-Terminal-App gesendet werden oder eine UDP-App im lokalen Netzwerk genutzt wird – beide Ansätze bieten eine schlanke, kostengünstige Lösung ohne aufwendige Benutzeroberflächen, dafür mit zuverlässiger serieller Kommunikation und ausgereiftem Code. Damit stehen solide Grundlagen für eine intelligente, drahtlose Steuerung zur Verfügung – sei es zur Automatisierung kleiner Aufgaben im Haushalt oder für erste Experimente.
In diesem Artikel entwickeln wir Projekte mit Komponenten aus dem Sensorkit in Verbindung mit dem Arduino-Uno-Entwicklungsboard. Sofern nicht anders angegeben, sind die entwickelten Projekte kompatibel mit dem Arduino Uno R3, Arduino Uno R4 Minima und Arduino Uno R4 Wi-Fi.

Steuerung der Arduino-Uno-Ports über Bluetooth-Modul
In diesem Projekt werden ein Bluetooth-Modul und ein Relaismodul an den Arduino Uno angeschlossen. Das Relais wird aus der Ferne über ein Smartphone per Bluetooth gesteuert. Die verwendeten Befehle sind:
R=1# Relais einschalten
R=0# Relais ausschalten
Bild 1 zeigt das Blockdiagramm des Projekts. Der Schaltplan in Bild 2 zeigt, wie das Bluetooth-Modul an die Ports 3 und 4 des Arduino Uno angeschlossen wird.

Das im Diagramm nicht dargestellte Relaismodul wird an Port 5 angeschlossen. Ein vollständiger Schaltplan ist in Bild 3 zu sehen.

Listing 1 zeigt das Programm (Arduino_Bluetooth.c). In diesem Programm wird die Bibliothek SoftwareSerial verwendet. Die TX- und RX-Pins des Bluetooth-Moduls sind an die Ports 3 und 4 des Arduino Uno angeschlossen. Das Relaismodul ist an Port 5 angeschlossen, als Ausgang konfiguriert und zu Beginn des Programms deaktiviert. In der Programmschleife wartet das Programm auf Daten, die vom Bluetooth-Modul empfangen werden. Das Zeichen # dient als Datenbegrenzer. Wenn die empfangenen Daten R=1 sind, wird das Relais aktiviert. Wenn die empfangenen Daten R=0 sind, wird das Relais deaktiviert. Beachten Sie, dass das Begrenzerzeichen nicht Teil der empfangenen Daten ist.
Listing 1. Steuerung des Arduino über das Bluetooth-Modul.
#include <SoftwareSerial.h>
const int BluetoothTXPin = 3; // TX pin
const int BluetoothRXPin = 4; // RX pin
const int Relay = 5; // Relay pin
String cmd;
SoftwareSerial BluetoothSerial(BluetoothTXPin, BluetoothRXPin);
void setup()
{
pinMode(Relay, OUTPUT); // Relay is output
digitalWrite(Relay, LOW); // Relay deactive
BluetoothSerial.begin(9600); // Bluetooth
}
void loop()
{
if(BluetoothSerial.available() > 0) // Data arrived?
{
cmd = BluetoothSerial.readStringUntil('#'); // Read the data
if(cmd == "R=1") // R=1?
{
digitalWrite(Relay, HIGH); // Relay ON
BluetoothSerial.println("Relay turned ON");
}
if(cmd == "R=0") // R=0?
{
digitalWrite(Relay, LOW); // Relay OFF
BluetoothSerial.println("Relay turned OFF");
}
}
}
Das Projekt kann mit einer Bluetooth-App auf Ihrem Smartphone getestet werden. Der Autor hat die App Bluetooth Terminal HC-05 von mightyIT (Bild 4) auf seinem Android-Smartphone verwendet.

Die Schritte zum Testen des Projekts sind:
- Bauen Sie die Hardware auf und laden Sie das Programm auf Ihren Arduino Uno hoch.
- Schalten Sie Bluetooth ein und öffnen Sie die Bluetooth-App auf Ihrem Smartphone.
- Tippen Sie auf SCAN for devices (Nach Geräten suchen).
- Das Arduino-Uno-Bluetooth-Modul sollte als JDY-31-SPP angezeigt werden. Tippen Sie darauf, um es auszuwählen.
- Sie werden möglicherweise aufgefordert, ein Pairing-Passwort einzugeben. Geben Sie 1234 ein.
- Geben Sie den Befehl R=1# ein. Sie sollten das Relais einschalten hören und die Meldung Relay turned ON (Relais eingeschaltet) sollte auf Ihrem Smartphone angezeigt werden.
- Geben Sie den Befehl R=0# ein. Sie sollten das Relais ausschalten hören und die Meldung Relay turned OFF (Relais ausgeschaltet) sollte auf Ihrem Smartphone angezeigt werden.
Bild 5 zeigt das Smartphone, das Befehle an den Arduino Uno sendet.

Steuerung der Arduino-Uno-Ports über Wi-Fi
In diesem Projekt wird ein ESP8266-Modul verwendet, um das Arduino-Uno-Board mit Wi-Fi-Fähigkeit auszustatten (vorausgesetzt, Sie verwenden nicht ohnehin den Arduino Uno R4 Wi-Fi). Mit dem Projekt kann ein an den Arduino Uno angeschlossenes Relais aus der Ferne über eine Wi-Fi-Verbindung mit einem Smartphone aktiviert werden. Die gültigen Befehle sind:
R=1# Relais ein
R=0# Relais aus
Bild 6 zeigt das Blockdiagramm des Projekts.

Der Standard-Arduino-Uno verfügt nicht über integriertes Wi-Fi. Daher muss er mit einem externen Wi-Fi-Modul gekoppelt werden. Eine der einfachsten und günstigsten Möglichkeiten, Wi-Fi-Fähigkeit hinzuzufügen, ist die Verwendung eines ESP-01-Prozessormoduls. Dieses kleine Board (siehe Bild 7), misst nur 2,7 × 1,2 cm, basiert auf dem ESP8266-Prozessorchip und kostet etwa 3 €.

Der ESP-01 verfügt über folgende Merkmale:
- Betriebsspannung: +3,3 V
- Schnittstelle: einfache AT-Befehle über die serielle Schnittstelle/UART
- Integrierter TCP/IP-Protokollstack (802.11 b/g/n)
- Keine externen Komponenten erforderlich
Der ESP-01 kommuniziert mit dem Host-Prozessor über die TX- und RX-Pins seines seriellen Ports. Es handelt sich um ein 8-Pin-Board mit folgender Pinbelegung:
VCC: +3,3 V Stromversorgung
GND: Masse
GPIO0 (oder IO1): I/O-Pin, muss für den normalen Betrieb mit +3,3 V verbunden sein
GPIO2 (oder IO2): universeller I/O-Pin
RST: Reset-Pin, muss für den normalen Betrieb mit +3,3 V verbunden sein
CH_PD (oder EN): Enable-Pin, muss für den normalen Betrieb mit +3,3 V verbunden sein
TX: serieller Ausgangspin
RX: serieller Eingangspin
ESP-01-Pins sind nicht mit Standard-Breadboards kompatibel, daher wird ein Adapter benötigt, wenn das Board auf einem Breadboard verwendet werden soll. Einige Adapterboards enthalten auch einen Wandlerchip von +5 V zu +3,3 V, sodass +5 V direkt mit dem Gerät verbunden werden können. Das mit dem Buch gelieferte Kit enthält einen solchen Adapter. Stecken Sie Ihr ESP-01-Board in das Adapterboard.
Der ESP-01-Prozessor wird mit AT-Befehlen betrieben. Einige häufig verwendete AT-Befehle für die Wi-Fi-Verbindung sind:
AT+RST - ESP-01 zurücksetzen
AT+CWMODE - ESP-01-Modus einstellen (in diesem Fall Station-Modus)
AT+CWJAP - WLAN-SSID und Passwort einstellen
AT+CPIMUX - Verbindungsmodus einstellen (in diesem Projekt auf Mehrfachverbindung eingestellt)
AT+CIFSR - IP-Adresse zurückgeben
AT+CIPSTART - TCP- oder UDP-Verbindungsmodus, Ziel-IP-Adresse und Portnummer festlegen. UDP wird in diesem Projekt mit Port 5000 verwendet. Die Ziel-IP-Adresse ist auf 0.0.0.0 gesetzt, sodass jedes Gerät Daten senden kann, solange Port 5000 verwendet wird. Sie können dies auf die IP-Adresse Ihres Smartphones ändern, um den Zugriff nur darauf zu beschränken.

Bild 8 zeigt den Schaltplan des Projekts, bei dem die TX- und RX-Pins des ESP-01 an die Ports 2 und 3 des Arduino Uno angeschlossen sind. Zusätzlich ist der S-Pin des Relaisboards an Port 5 angeschlossen.
Listing 2 zeigt das Programm (Arduino_wifi.c). Zu Beginn des Programms werden die TX- und RX-Pins des ESP-01 den Software-Serial-Ports 2 und 3 des Arduino Uno zugewiesen und das Relais an Port 5 als Ausgang konfiguriert. Die Funktion ConnectToWiFi() verwendet die AT-Befehle, um eine Verbindung zum lokalen WLAN-Router herzustellen. Wichtig ist, dass die SSID und das Passwort des Routers mit dem Befehl CWJAP angegeben werden müssen. Die Funktion stellt dann ein UDP-Kommunikationsprotokoll auf Port 5000 her.
Listing 2. Ansteuerung des Arduino mit dem ESP8266 als Wi-Fi-Modul.
#include <SoftwareSerial.h>
const int ESPTxPin = 2; // TX-Pin
const int ESPRxPin = 3; // RX-Pin
const int Relay = 5; // Relais-Port
String buf;
SoftwareSerial ESPSerial(ESPTxPin, ESPRxPin);
// Diese Funktion verbindet sich mit dem lokalen WLAN-Router mittels AT-Befehlen
void ConnectToWiFi()
{
ESPSerial.println("AT+RST");
delay(5000);
ESPSerial.println("AT+CWMODE=1");
delay(3000);
ESPSerial.println("AT+CWJAP=\"BTHub5-6SPN\",\"af4b5e6243\"");
delay(5000);
ESPSerial.println("AT+CIPMUX=0");
delay(3000);
ESPSerial.println("AT+CIPSTART=\"UDP\",\"0.0.0.0\",5000,5000,2");
delay(5000);
ESPSerial.println("AT+CIFSR");
delay(5000);
}
void setup()
{
pinMode(Relay, OUTPUT); // Relais ist Ausgang
digitalWrite(Relay, LOW); // Relais deaktiviert
ESPSerial.begin(115200); // ESP-Seriell
ConnectToWiFi(); // Mit WLAN verbinden
}
void loop()
{
if(ESPSerial.available()) // Daten verfügbar?
{
buf = ESPSerial.readStringUntil('#'); // Daten lesen
int i = buf.indexOf('R'); // Suche nach 'R'
if(i > 0) // i ist Index von R
{
if(buf[i] == 'R' && buf[i+1] == '=' && buf[i+2] == '1')
{
digitalWrite(Relay, HIGH); }
}
}
}
In der Hauptprogrammschleife wird die Funktion ConnectToWiFi() aufgerufen, um eine Verbindung zum lokalen WLAN-Router herzustellen. Anschließend wartet das Programm auf Befehle vom Smartphone über den UDP-Port. Das Zeichen R wird in den empfangenen Daten mit der eingebauten Funktion indexOf() gesucht. Diese Funktion gibt -1 zurück, wenn das gewünschte Zeichen nicht gefunden wird, anderenfalls gibt sie den Index zurück, an dem das Zeichen gefunden wurde. Wenn der empfangene Befehl R=1 ist, wird das Relais eingeschaltet, bei R=0 wird es ausgeschaltet.
Vor dem Testen sollten Sie eine UDP-App auf Ihrem Android-Smartphone installieren. Im Play Store gibt es viele kostenlose UDP-Apps. Die in diesem Projekt verwendete App heißt „UDP/TCP Widget“ von K.J.M, wie in Bild 9 gezeigt.

Die Schritte zum Testen des Programms sind wie folgt:
- Bauen Sie die Schaltung auf.
- Laden Sie das Programm auf Ihren Arduino.
- Starten Sie die App UDP/TCP Widget auf Ihrem Smartphone.
- Tippen Sie auf das Zahnradsymbol und stellen Sie das Protokoll auf UDP. Geben Sie die IP-Adresse Ihres ESP-01 ein (z. B. 192.168.1.160 beim ESP-01 des Autors) und stellen Sie den Port auf 5000, wie in Bild 10 gezeigt.
- Tippen Sie auf das Menü MESSAGE, wählen Sie Text (UTF-8) als Format und geben Sie den Befehl R=1# ein, um das Relais einzuschalten, oder R=0#, um es auszuschalten. Wählen Sie LF\n als Begrenzer.
- Tippen Sie auf den roten Pfeil nach rechts und dann auf die SEND-Schaltfläche, um den Befehl an den Arduino Uno zu senden.
Sie können die IP-Adresse des ESP-01 finden, indem Sie alle Geräte am lokalen WLAN-Router scannen. Zum Beispiel kann die Android-App „Who Uses My WiFi – Net Scanner“ von Phuongpn die IP-Adressen aller mit Ihrem Router verbundenen Geräte anzeigen.

Diese Projekte zeigen, wie einfach der Arduino Uno mit drahtloser Steuerung erweitert werden kann, entweder über klassisches Bluetooth oder durch das Hinzufügen von Wi-Fi mittels eines ESP-01. Sie sind mehr als nur praktische Übungen – sie bieten eine Grundlage für weiterführende drahtlose Kommunikationstechniken und IoT-Anwendungen.
Anmerkung der Redaktion: Dieser Artikel (250325-01) erscheint in der September/Oktober-Ausgabe 2025 des Elektor-Magazins. Er ist ein Auszug aus dem Elektor Universal Sensor Maker Kit. Er wurde formatiert und leicht überarbeitet, um den Konventionen und dem Seitenlayout des Elektor-Magazins zu entsprechen.
Fragen oder Anmerkungen?
Haben Sie Fragen oder Anmerkungen zu diesem Artikel? Schreiben Sie dem Autor unter d.ibrahim@btinternet.com oder wenden Sie sich an Elektor unter editor@elektor.de.
Diskussion (1 Kommentar)