Arduino - Controlar Fechadura de Porta via Web
Neste tutorial, vamos aprender a usar o Arduino para controlar uma fechadura de porta por meio de uma interface web, que pode ser acessada pelo navegador de um computador ou celular. Veja como tudo funciona:
- Vamos programar o Arduino para funcionar como um servidor web
- Quando você digita o endereço IP do seu Arduino no navegador, o navegador faz uma requisição HTTP ao Arduino.
- O Arduino responde ao navegador com uma página web. A página web vai mostrar:
- Se a porta está travada ou destravada no momento.
- Um botão para destravar a porta.
- Outro botão para travar a porta.
- Se esta é a primeira vez que você usa o Arduino Uno R4, veja como configurar o ambiente para o Arduino Uno R4 na Arduino IDE.
- Abra o Gerenciador de Bibliotecas clicando no ícone Library Manager no lado esquerdo da Arduino IDE.
- Pesquise Web Server for Arduino Uno R4 WiFi e encontre a biblioteca Web Server criada pela DIYables.
- Clique no botão Install para adicionar a biblioteca Web Server.
- Copie o código acima e abra-o na Arduino IDE
- Altere as informações de wifi (SSID e senha) no código para as suas
- Clique no botão Upload na Arduino IDE para carregar o código no Arduino
- Abra o Serial Monitor
- Confira o resultado no Serial Monitor.
- Você verá um endereço IP, por exemplo: 192.168.0.2. Este é o endereço IP do Servidor Web do Arduino
- Abra um navegador e digite um dos três formatos abaixo na barra de endereços:
- Observe que o endereço IP pode ser diferente. Confira o valor atual no Serial Monitor.
- Além disso, você verá a seguinte saída no Serial Monitor.
- Verifique o estado da fechadura de porta
- Você verá a página web da placa Arduino no navegador, como abaixo:

Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables STEM V4 IoT Starter Kit (Arduino included) | |
| 1 | × | DIYables STEM V4B IoT Starter Kit (Arduino included) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Divulgação: Alguns dos links desta seção são links de afiliado da Amazon. Podemos receber uma comissão pelas compras feitas por meio desses links, sem custo adicional para você. Agradecemos o seu apoio.
Sobre a Fechadura Solenoide e o Arduino Uno R4
Se você ainda não conhece o Arduino Uno R4 e a fechadura solenoide (como a pinagem, como funcionam e como programá-los), pode aprender tudo sobre eles nos seguintes tutoriais:
Diagrama de Ligação

This image is created using Fritzing. Click to enlarge image
Código Arduino
/*
* Este código de Arduino foi desenvolvido por pt.newbiely.com
* Este código de Arduino é disponibilizado ao público sem nenhuma restrição.
* Para tutoriais completos e diagramas de ligação, visite:
* https://pt.newbiely.com/tutorials/arduino/arduino-controls-door-lock-via-web
*/
#include <UnoR4WiFi_WebServer.h>
#define RELAY_PIN 7 // Arduino pin connected to the solenoid lock via relay
const char HTML_CONTENT[] PROGMEM = R"rawliteral(
<!DOCTYPE HTML>
<html>
<head>
<link rel="icon" href="data:,">
<title>Door Control</title>
</head>
<body>
<h1>Door Control System</h1>
<p>The door is <span style="color: red;">%DOOR_STATUS%</span></p>
<br>
<a href="/door/unlock">UNLOCK</a>
<br><br>
<a href="/door/lock">LOCK</a>
</body>
</html>
)rawliteral";
// WiFi credentials
const char WIFI_SSID[] = "YOUR_WIFI_SSID"; // change your network SSID (name)
const char WIFI_PASSWORD[] = "YOUR_WIFI_PASSWORD"; // change your network password
// Door state
int doorState = LOW;
// Create web server instance
UnoR4WiFi_WebServer server;
// Handler for the main door control page
void sendHTML(WiFiClient& client) {
String status = (doorState == LOW) ? "LOCKED" : "UNLOCKED";
String response = HTML_CONTENT;
response.replace("%DOOR_STATUS%", status);
server.sendResponse(client, response.c_str());
}
void handleDoor(WiFiClient& client, const String& method, const String& request, const QueryParams& params, const String& jsonData) {
sendHTML(client);
}
// Handler for unlock command
void handleUnlock(WiFiClient& client, const String& method, const String& request, const QueryParams& params, const String& jsonData) {
doorState = HIGH;
digitalWrite(RELAY_PIN, doorState);
Serial.println("Unlock the door");
sendHTML(client);
}
// Handler for lock command
void handleLock(WiFiClient& client, const String& method, const String& request, const QueryParams& params, const String& jsonData) {
doorState = LOW;
digitalWrite(RELAY_PIN, doorState);
Serial.println("Lock the door");
sendHTML(client);
}
void setup() {
Serial.begin(9600);
delay(1000);
// Initialize relay pin
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, doorState);
Serial.println("Arduino Uno R4 WiFi - Door Lock Web Control");
// Connect to WiFi
Serial.print("Connecting to ");
Serial.println(WIFI_SSID);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println(" connected!");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
// Configure routes
server.addRoute("/", handleDoor);
server.addRoute("/door/unlock", handleUnlock);
server.addRoute("/door/lock", handleLock);
// Start server
server.begin();
Serial.println("\n=== Web Server Ready! ===");
Serial.print("Visit: http://");
Serial.println(WiFi.localIP());
}
void loop() {
server.handleClient();
}
Passos Rápidos

8
Serial.println("Hello World!");
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
Arduino Uno R4 WiFi - Door Lock Web Control
Connecting to YOUR_WIFI_SSID
connected!
IP address: 192.168.0.254
Starting web server on IP: 192.168.0.254
=== Web Server Ready! ===
Visit: http://192.168.0.254
192.168.0.2
192.168.0.2/door/unlock
192.168.0.2/door/lock
8
Serial.println("Hello World!");
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
Arduino Uno R4 WiFi - Door Lock Web Control
Connecting to YOUR_WIFI_SSID
connected!
IP address: 192.168.0.254
Starting web server on IP: 192.168.0.254
=== Web Server Ready! ===
Visit: http://192.168.0.254
Method: GET
Requested path: /
Client disconnected
Method: GET
Requested path: /door/unlock
Unlock the door
Client disconnected
Method: GET
Requested path: /door/lock
Lock the door
Client disconnected

Se você quiser melhorar a aparência da página web com uma interface gráfica (UI) impressionante, pode consultar o tutorial Arduino - Servidor Web para se inspirar e obter orientações.