Deze twee projecten laten zien hoe je een relais kunt aansturen vanaf je smartphone met behulp van een Arduino Uno, via Bluetooth of via Wi-Fi met een ESP8266-gebaseerde ESP-01-module. Of je nu eenvoudige opdrachten verzendt via een Bluetooth terminal-app of een UDP-app gebruikt op je lokale netwerk, beide methoden bieden een eenvoudige en betaalbare oplossing — zonder complexe interfaces, maar met betrouwbare seriële communicatie en degelijk programmeerwerk. Ideaal als basis voor slimme, draadloze aansturing, zowel voor eenvoudige automatisering thuis als voor experimenteerdoeleinden.

In dit artikel ontwikkelen we projecten met componenten uit de sensorkit in combinatie met het Arduino Uno-ontwikkelboard. Tenzij anders vermeld, zijn de projecten compatibel met de Arduino Uno R3, de Arduino Uno R4 Minima en de Arduino Uno R4 Wi-Fi.

Project block diagram - Arduino projects
Figuur 1: Blokschema van het project.

Aansturen van de Arduino Uno-poorten via een Bluetooth-module

In dit project worden een Bluetooth-module en een relaismodule aangesloten op de Arduino Uno. Het relais wordt op afstand aangestuurd vanaf een smartphone via Bluetooth. De gebruikte opdrachten zijn:

 

R=1# Relais inschakelen

R=0# Relais uitschakelen

 

Figuur 1 toont het blokschema van het project. Het aansluitschema in Figuur 2 laat zien hoe de Bluetooth-module is verbonden met poorten 3 en 4 van de Arduino Uno.

Wiring diagram - Arduino projects article
Figuur 2: Aansluitschema van het project.

Hoewel dit niet in het schema is weergegeven, is de relaismodule aangesloten op poort 5. Een volledig schakelschema is te vinden in Figuur 3.

Project circuit diagram Arduino projects
Figuur 3: Volledig schakelschema van het project.

Listing 1 toont de programmalisting (Arduino_Bluetooth.c). In dit programma wordt gebruikgemaakt van de SoftwareSerial bibliotheek. De TX- en RX-pinnen van de Bluetooth-module zijn respectievelijk verbonden met poorten 3 en 4 van de Arduino Uno. De relaismodule is aangesloten op poort 5, die als uitgang is geconfigureerd en bij de start van het programma gedeactiveerd wordt. Binnen de programmalus wacht het programma op binnenkomende gegevens van de Bluetooth-module. Het teken # wordt gebruikt als dataterminator. Wanneer de ontvangen gegevens R=1, zijn, wordt het relais ingeschakeld. Bij R=0, wordt het relais uitgeschakeld. Merk op dat het terminatorteken geen deel uitmaakt van de ontvangen gegevens.


Listing 1: Aansturen van de Arduino met behulp van de Bluetooth-module.

#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");
  }
 }
}

 


Het project kan worden getest met een Bluetooth-app op je smartphone. De auteur gebruikte de Bluetooth Terminal HC-05-app van mightyIT (Figuur 4) op zijn Android-smartphone.

Bluetooth app
Figuur 4: Bluetooth-app.

De stappen om het project te testen zijn als volgt:

 

  • Bouw de hardware op en upload het programma naar je Arduino Uno.
  • Schakel Bluetooth in en open de Bluetooth-app op je smartphone.
  • Klik op SCAN om naar apparaten te zoeken.
  • De Bluetooth-module van de Arduino Uno zou moeten verschijnen als JDY-31-SPP. Klik om deze te selecteren.
  • Mogelijk wordt gevraagd om een koppelingswachtwoord. Voer 1234 in.
  • Voer de opdracht R=1# in . Je zou het relais moeten horen inschakelen en het bericht Relay turned ON verschijnt op je smartphone.
  • Voer de opdracht R=0# in. Je zou het relais moeten horen uitschakelen en het bericht Relay turned OFF verschijnt op je smartphone.
 

Figuur 5 toont hoe de smartphone opdrachten verzendt naar de Arduino Uno.

Activating and deactivating the relay - Arduino projects
Figuur 5: In- en uitschakelen van het relais.

Aansturen van de Arduino Uno-poorten via Wi-Fi

In dit project wordt een ESP8266-module gebruikt om Wi-Fi-functionaliteit toe te voegen aan het Arduino Uno-board (ervan uitgaande dat je niet de Arduino Uno R4 Wi-Fi gebruikt). Het project maakt het mogelijk om een relais dat is aangesloten op de Arduino Uno op afstand te activeren via een Wi-Fi-verbinding met een smartphone. De geldige opdrachten zijn:

 

R=1# Relais aan

R=0# Relais uit

 

Figuur 6 toont het blokschema van het project.

Project block diagram.
Figuur 6: Blokschema van het project.

De standaard Arduino Uno beschikt niet over ingebouwde Wi-Fi. Daarom moet deze worden gecombineerd met een externe Wi-Fi-module. Een van de eenvoudigste en betaalbare manieren om Wi-Fi-functionaliteit toe te voegen, is het gebruik van een ESP-01-processorboard. Dit kleine board (zie Figuur 7), met afmetingen van slechts 2,7 × 1,2 cm, is gebaseerd op de ESP8266-processorchip en kost ongeveer $3.

ESP-01 processor board
Figuur 7: ESP-01-processorboard.

De ESP-01 beschikt over de volgende kenmerken:

 

  • Bedrijfsspanning: +3,3 V
  • Interface: eenvoudige AT-commando’s via seriële poort/UART
  • Geïntegreerde TCP/IP-protocolstack, 802.11 b/g/n
  • Geen externe componenten nodig

 

De ESP-01 communiceert met de hostprocessor via de TX- en RX-pinnen van de seriële poort. Het is een 8-pins bord met de volgende pintoewijzing:

 

VCC: +3.3 V voedingsspanning

GND: Aarde

GPIO0 (or IO1): I/O pin, moet verbonden zijn met +3,3 V voor normale werking

GPIO2 (or IO2): Algemene I/O pin

RST: Resetpin, moet verbonden zijn met +3,3 V voor normale werking

CH_PD (or EN): Enable-pin, moet verbonden zijn met +3,3 V voor normale werking

TX: Seriële uitgang

RX: Seriële ingang

 

De pinnen van de ESP-01 zijn niet compatibel met standaard breadboards, en er is een adapter nodig om het board op een breadboard aan te sluiten. Sommige adapterboards bevatten ook een +5 V naar +3,3 V spanningsregelaar, zodat je +5 V direct op het apparaat kunt aansluiten. De kit die bij dit boek wordt geleverd bevat zo’n adapter — sluit je ESP-01-board aan op het adapterboard.

 

De ESP-01-processor werkt op basis van AT-commando’s. Enkele veelgebruikte AT-commando’s voor Wi-Fi-connectiviteit zijn:

 

AT+RST - Reset de ESP-01

AT+CWMODE - Stel de modus van de ESP-01 in (in dit geval Station-modus)

AT+CWJAP - Stel de naam en het wachtwoord van het Wi-Fi-netwerk in

AT+CPIMUX - Stel de verbindingsmodus in (voor dit project wordt gekozen voor meerdere verbindingen)

AT+CIFSR - Geef het IP-adres terug

AT+CIPSTART - Stel de verbindingsmodus (TCP of UDP), het doel-IP-adres en het poortnummer in. Voor dit project wordt UDP gebruikt met poort 5000. Het doel-IP-adres is ingesteld op 0.0.0.0, zodat elk apparaat data kan verzenden zolang poort 5000 wordt gebruikt. Je kunt dit wijzigen naar het IP-adres van je smartphone om de toegang te beperken tot enkel dat apparaat.

Arduino Projects - wiring diagram.
Figuur 8: Aansluitschema van het project.

Figuur 8 toont het aansluitschema van het project, waarbij de TX- en RX-pinnen van de ESP-01 zijn verbonden met respectievelijk poorten 2 en 3 van de Arduino Uno. Daarnaast is de S-pin van het relaisbord aangesloten op poort 5.

 

Listing 2 bevat de programmalisting (Arduino_wifi.c). Aan het begin van het programma worden de TX- en RX-pinnen van de ESP-01 toegewezen aan de softwarematige seriële poorten 2 en 3 van de Arduino Uno. Het relais wordt toegewezen aan poort 5, die als uitgang is geconfigureerd. De functie ConnectToWiFi() gebruikt AT-commando’s om verbinding te maken met de lokale Wi-Fi-router. Belangrijk is dat de SSID en het wachtwoord van de router worden opgegeven met het CWJAP-commando. Vervolgens wordt een UDP-communicatieprotocol opgezet op poort 5000.


Listing 2: Aansturen van de Arduino met behulp van de ESP8266 als Wi-Fi-module.

#include <SoftwareSerial.h>
const int ESPTxPin = 2; // TX pin
const int ESPRxPin = 3; // RX pin
const int Relay = 5; // Relay port
String buf;
SoftwareSerial ESPSerial(ESPTxPin, ESPRxPin);

// This function connects to the local WiFi router using AT commands
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); // Relay is output
 digitalWrite(Relay, LOW); // Relay deactive
 ESPSerial.begin(115200); // ESP serial
 ConnectToWiFi(); // Connect to WiFi

void loop() 
{
 if(ESPSerial.available()) // Data available?
 {
  buf = ESPSerial.readStringUntil('#'); // Read data
  int i = buf.indexOf('R'); // Look for 'R'
  if(i > 0) // i is index of R
  {
   if(buf[i] == 'R' && buf[i+1] == '=' && buf[i+2] == '1')
   {
    digitalWrite(Relay, HIGH);
   }
   if(buf[i] == 'R' && buf[i+1] == '=' && buf[i+2] == '0')
   {
    digitalWrite(Relay, LOW);
   }
  }
 }

 


In de hoofdprogrammalus wordt ConnectToWiFi() aangeroepen om verbinding te maken met de Wi-Fi-router. Daarna wacht het programma op inkomende opdrachten via de UDP-poort vanaf de smartphone. In de ontvangen data wordt gezocht naar het teken  R met behulp van de ingebouwde functie indexOf(). Deze functie retourneert –1 als het teken niet wordt gevonden; anders geeft het de indexpositie van het teken terug. Bij de opdracht R=1,wordt het relais ingeschakeld; bij R=0, wordt het relais uitgeschakeld.

 

Voordat je begint met testen, moet je een UDP-app installeren op je Android-smartphone. In de Play Store zijn diverse gratis UDP-apps beschikbaar. De app die in dit project wordt gebruikt is UDP/TCP Widget van K.J.M (zie Figuur 9).

UDP/TCP Widget apps for Android.
Figuur 9: UDP/TCP Widget-apps voor Android.

Stappen om het programma te testen:

 

  • Bouw de schakeling op.
  • Download het programma naar je Arduino.
  • Start de UDP/TCP Widget-app op je smartphone.
  • Klik op het tandwielpictogram, stel het protocol in op UDP, voer het IP-adres van je ESP-01 in (bijv. 192.168.1.160 voor de ESP-01 van de auteur) en stel poort 5000 in zoals weergegeven in Figuur 10.
  • Klik op het menu MESSAGE selecteer Text (UTF-8) als formaat, en voer de opdracht R=1# in om het relais in te schakelen of R=0# om het uit te schakelen. Kies LF\n als terminator.
  • Klik op de rode pijl naar rechts en vervolgens op SEND om de opdracht naar de Arduino Uno te sturen.

 

Je kunt het IP-adres van de ESP-01 achterhalen door alle apparaten op de lokale Wi-Fi-router te scannen. De Android-app Who Uses My WiFi – Net Scanner van Phuongpn toont bijvoorbeeld de IP-adressen van alle verbonden apparaten.

Configure the apps.
Figuur 10: Configuratie van de apps.

Deze projecten tonen aan hoe eenvoudig de Arduino Uno kan worden uitgebreid met draadloze aansturing — via klassieke Bluetooth of met Wi-Fi dankzij de ESP-01. Ze vormen niet alleen praktische oefeningen, maar ook een basis voor het verkennen van geavanceerdere draadloze communicatietechnieken en IoT-toepassingen.


Opmerking van de redactie: Dit artikel (250325-01) is verschenen in Elektor september/oktober 2025. Het is een uittreksel uit de Elektor Universal Sensor Maker Kit. Het is opgemaakt en licht bewerkt om aan te sluiten bij de conventies en paginalay-out van Elektor Magazine.


Vragen of opmerkingen?

 

Heeft u vragen of opmerkingen over dit artikel? Stuur een e-mail naar de auteur via d.ibrahim@btinternet.com of neem contact op met de redactie van Elektor via redactie@elektor.com.


Inschrijven
Schrijf u in voor tag alert e-mails over Wireless & Communication!