Relais de serveur Web Ethernet Arduino

Relais de serveur Web Ethernet Arduino

Cet article montre comment créer un serveur Web Ethernet Arduino qui contrôle un relais connecté à une lampe.

Vous pouvez accéder à votre serveur Web avec n’importe quel appareil doté d’un navigateur et connecté au même réseau.

Relais de serveur Web Ethernet Arduino

Ressources recommandées :

Si vous aimez les projets Arduino et que vous souhaitez en construire davantage, je vous recommande de suivre mon cours Arduino Step-by-step Projects – Build 25 Projects.

Relais de serveur Web Ethernet Arduino

Remarque : si vous n’êtes pas à l’aise avec la tension secteur, mais que vous voulez quand même essayer de faire le projet, vous pouvez remplacer le module de relais par une LED, par exemple. Le code et les schémas sont très similaires.

Blindage Ethernet

Le blindage Ethernet Arduino connecte votre Arduino à Internet de manière simple. Montez simplement ce module sur votre carte Arduino, connectez-le à votre réseau avec un câble RJ45 et suivez quelques étapes simples pour commencer à contrôler vos projets via le Web.

Noter: vous devez connecter un câble Ethernet de votre routeur à votre blindage Ethernet comme indiqué dans la figure suivante.

Relais de serveur Web Ethernet Arduino

Utilisation des broches

Lorsque l’Arduino est connecté à un blindage Ethernet, vous ne pouvez pas utiliser les broches numériques de 10 à 13, car elles sont utilisées pour établir une communication entre l’Arduino et le blindage Ethernet.

1642872246 575 Relais de serveur Web Ethernet Arduino

Module relais

Un relais est un interrupteur à commande électrique. Cela signifie qu’il peut être allumé ou éteint, en laissant passer ou non le courant. Le module relais est celui de la figure ci-dessous.

1642872246 379 Relais de serveur Web Ethernet Arduino

Ce module de relais particulier est livré avec deux relais (ces cubes bleus).

Concernant la tension secteur, les relais ont 3 connexions possibles :

1642872246 134 Relais de serveur Web Ethernet Arduino

  • COM: broche commune
  • NON: normalement ouvert – il n’y a pas de contact entre la broche commune et la broche normalement ouverte. Ainsi, lorsque vous déclenchez le relais, il se connecte à la broche COM et l’alimentation est fournie à la charge (une lampe, dans notre cas).
  • NC: normalement fermé – il y a contact entre la broche commune et la broche normalement fermée. Il y a toujours contact entre les broches COM et NC, même lorsque le relais est éteint. Lorsque vous déclenchez le relais, le circuit est ouvert et aucune alimentation n’est fournie à la charge.

Concernant ce projet, il est préférable d’utiliser un circuit normalement ouvert, parce que nous voulons allumer la lampe de temps en temps. Lisez ce tutoriel pour en savoir plus sur l’utilisation d’un module relais avec la carte Arduino.

Les connexions entre le relais et l’Arduino sont vraiment simples :

1642872246 772 Relais de serveur Web Ethernet Arduino

  • Terre: va au sol
  • EN 1: commande le premier relais. Doit être connecté à une broche numérique Arduino
  • EN 2: commande le second relais. Doit être connecté à une broche numérique Arduino
  • VCC: passe au 5V

Pièces nécessaires

Voici une liste complète des composants dont vous avez besoin pour ce projet :

Vous pouvez utiliser les liens précédents ou accéder directement à MakerAdvisor.com/tools pour trouver toutes les pièces pour vos projets au meilleur prix !

1642872246 333 Relais de serveur Web Ethernet Arduino

Code

Copiez le code suivant sur votre IDE Arduino et avant de le télécharger sur votre carte Arduino, lisez le « Configuration de votre réseau » section ci-dessous.

/*
 * Rui Santos 
 * Complete Project Details https://www.raspberryme.com
*/

#include <SPI.h>
#include <Ethernet.h>

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = { 
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1, 111);

// Initialize the Ethernet server library
// with the IP address and port you want to use 
// (port 80 is default for HTTP):
EthernetServer server(80);

// Relay state and pin
String relay1State = "Off";
const int relay = 7;

// Client variables 
char linebuf[80];
int charcount=0;

void setup() { 
  // Relay module prepared 
  pinMode(relay, OUTPUT);
  digitalWrite(relay, HIGH);
  
  // Open serial communication at a baud rate of 9600
  Serial.begin(9600);
  
  // start the Ethernet connection and the server:
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
}

// Display dashboard page with on/off button for relay
// It also print Temperature in C and F
void dashboardPage(EthernetClient &client) {
  client.println("<!DOCTYPE HTML><html><head>");
  client.println("<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"></head><body>");                                                             
  client.println("<h3>Arduino Web Server - <a href=\"/\">Refresh</a></h3>");
  // Generates buttons to control the relay
  client.println("<h4>Relay 1 - State: " + relay1State + "</h4>");
  // If relay is off, it shows the button to turn the output on          
  if(relay1State == "Off"){
    client.println("<a href=\"/relay1on\"><button>ON</button></a>");
  }
  // If relay is on, it shows the button to turn the output off         
  else if(relay1State == "On"){
    client.println("<a href=\"/relay1off\"><button>OFF</button></a>");                                                                    
  }
  client.println("</body></html>"); 
}


void loop() {
  // listen for incoming clients
  EthernetClient client = server.available();
  if (client) {
    Serial.println("new client");
    memset(linebuf,0,sizeof(linebuf));
    charcount=0;
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
       char c = client.read();
       //read char by char HTTP request
        linebuf[charcount]=c;
        if (charcount<sizeof(linebuf)-1) charcount++;
        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
        if (c == '\n' && currentLineIsBlank) {
          dashboardPage(client);
          break;
        }
        if (c == '\n') {
          if (strstr(linebuf,"GET /relay1off") > 0){
            digitalWrite(relay, HIGH);
            relay1State = "Off";
          }
          else if (strstr(linebuf,"GET /relay1on") > 0){
            digitalWrite(relay, LOW);
            relay1State = "On";
          }
          // you're starting a new line
          currentLineIsBlank = true;
          memset(linebuf,0,sizeof(linebuf));
          charcount=0;          
        } 
        else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    // close the connection:
    client.stop();
    Serial.println("client disonnected");
  }
}

Afficher le code brut

Configuration de votre réseau

Jetez un œil à la configuration de l’extrait de code de votre réseau :

byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1,XXX);

Important: vous devrez peut-être remplacer cette variable surlignée en rouge par des valeurs appropriées adaptées à votre réseau, sinon votre Arduino n’établira pas de connexion avec votre réseau.

Remplacez la ligne suivante par une adresse IP disponible et adaptée à votre réseau :

IPAddress ip(X, X, X, X);

Dans mon cas, ma plage IP est 192.168.1.X et avec le logiciel Scanner IP en colère Je sais que l’IP 192.168.1.111 est disponible sur mon réseau, car il n’y a aucun appareil actif sur mon réseau avec exactement la même adresse IP :

IPAddress ip(192, 168, 1, 111);

Schémas

Câblez votre circuit conformément au schéma ci-dessous :

1642872246 698 Relais de serveur Web Ethernet Arduino

Manifestation

Votre serveur Web Arduino ressemble à la figure ci-dessous :

1642872246 641 Relais de serveur Web Ethernet Arduino

Voici une démonstration montrant ce que vous avez à la fin de ce projet :

1642872246 113 Relais de serveur Web Ethernet Arduino

Conclusion

Avec ce projet, vous avez construit un serveur Web Arduino qui active et désactive un relais.

Maintenant, vous pouvez utiliser ce projet pour contrôler n’importe quel appareil électronique que vous voulez.

Ce projet est une version simplifiée de l’un de mes projets dans les projets Arduino étape par étape. Si vous avez aimé ce projet, assurez-vous de consulter le cours qui comprend 23 projets Arduino.

Merci d’avoir lu,

Rui et Sara