Arduino - Contrôle de serrure de porte via le Web
Dans ce tutoriel, nous apprendrons à utiliser un Arduino pour contrôler une serrure de porte via une interface web accessible à l'aide d'un navigateur web sur un ordinateur ou un smartphone. Voici comment tout cela fonctionne :
Nous programmerons Arduino pour qu'il agisse comme un serveur web.
Lorsque vous saisissez l'adresse IP de votre Arduino dans le navigateur web, le navigateur envoie une requête HTTP à Arduino.
Arduino renvoie au navigateur web une page web. La page web affichera :
Si la porte est actuellement verrouillée ou déverrouillée.
Un bouton pour déverrouiller la porte.
Un autre bouton pour verrouiller la porte.
Or you can buy the following sensor kits:
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.
Si vous ne connaissez pas l'Arduino Uno R4 et le verrou à solénoïde (comme leur brochage, leur fonctionnement et comment les programmer), vous pouvez tout apprendre à leur sujet dans les tutoriels suivants :
This image is created using Fritzing. Click to enlarge image
#include <WiFiS3.h>
#define RELAY_PIN 7
const char ssid[] = "YOUR_WIFI_SSID";
const char pass[] = "YOUR_WIFI_PASSWORD";
int status = WL_IDLE_STATUS;
int doorState = LOW;
WiFiServer server(80);
void setup() {
Serial.begin(9600);
pinMode(RELAY_PIN, OUTPUT);
String fv = WiFi.firmwareVersion();
if (fv < WIFI_FIRMWARE_LATEST_VERSION) {
Serial.println("Please upgrade the firmware");
}
while (status != WL_CONNECTED) {
Serial.print("Attempting to connect to SSID: ");
Serial.println(ssid);
status = WiFi.begin(ssid, pass);
delay(10000);
}
server.begin();
printWifiStatus();
}
void loop() {
WiFiClient client = server.available();
if (client) {
String HTTP_req = "";
while (client.connected()) {
if (client.available()) {
Serial.println("New HTTP Request");
HTTP_req = client.readStringUntil('\n');
Serial.print("<< ");
Serial.println(HTTP_req);
break;
}
}
while (client.connected()) {
if (client.available()) {
String HTTP_header = client.readStringUntil('\n');
if (HTTP_header.equals("\r"))
break;
Serial.print("<< ");
Serial.println(HTTP_header);
}
}
if (HTTP_req.indexOf("GET") == 0) {
if (HTTP_req.indexOf("door/unlock") > -1) {
doorState = HIGH;
digitalWrite(RELAY_PIN, doorState);
Serial.println("Unlock the door");
} else if (HTTP_req.indexOf("door/lock") > -1) {
doorState = LOW;
digitalWrite(RELAY_PIN, doorState);
Serial.println("Lock the door");
} else {
Serial.println("No command");
}
}
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<head>");
client.println("<link rel=\"icon\" href=\"data:,\">");
client.println("</head>");
client.println("<p>");
client.println("The door is ");
if (doorState == LOW)
client.println("<span style=\"color: red;\">LOCKED</span>");
else
client.println("<span style=\"color: red;\">UNLOCKED</span>");
client.println("</p>");
client.println("<br>");
client.println("<a href=\"/door/unlock\">UNLOCK</a>");
client.println("<br><br>");
client.println("<a href=\"/door/lock\">LOCK</a>");
client.println("</html>");
client.flush();
delay(10);
client.stop();
}
}
void printWifiStatus() {
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
Serial.print("signal strength (RSSI):");
Serial.print(WiFi.RSSI());
Serial.println(" dBm");
}
Copiez le code ci-dessus et ouvrez-le avec Arduino IDE
Modifiez les informations wifi (SSID et mot de passe) dans le code pour les vôtres
Cliquez sur le bouton Upload dans Arduino IDE pour charger le code sur Arduino
Ouvrez le moniteur série
Consultez le résultat sur le moniteur série.
Attempting to connect to SSID: YOUR_WIFI
IP Address: 192.168.0.2
signal strength (RSSI):-39 dBm
Vous verrez une adresse IP, par exemple : 192.168.0.2. C'est l'adresse IP du serveur Web Arduino.
Ouvrez un navigateur web et entrez l'un des trois formats suivants dans la barre d'adresse :
Veuillez noter que l'adresse IP peut être différente. Assurez-vous de vérifier la valeur actuelle sur le moniteur série.
De plus, vous observerez la sortie suivante sur le moniteur série.
Attempting to connect to SSID: YOUR_WIFI
IP Address: 192.168.0.2
signal strength (RSSI):-41 dBm
New HTTP Request
<< GET /door/unlock HTTP/1.1
<< Host: 192.168.0.2
<< Connection: keep-alive
<< Cache-Control: max-age=0
<< Upgrade-Insecure-Requests: 1
<< User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
<< Accept: text/html,application/xhtml+xml,application/xml
<< Accept-Encoding: gzip, deflate
<< Accept-Language: en-US,en;q=0.9
Unlock the door
Si vous souhaitez améliorer l'apparence de la page web avec une interface graphique utilisateur (UI) impressionnante, vous pouvez consulter le tutoriel Arduino - Serveur Web pour inspiration et orientation.