Alimentation ESP8266 avec convertisseur HLK-PM03

Alimentation ESP8266 avec convertisseur HLK-PM03

Dans cet article, vous apprendrez à alimenter l’ESP8266 (ou l’ESP32) avec une tension secteur à l’aide du convertisseur Hi-Link HLK-PM03. À titre d’exemple, nous utiliserons l’ESP8266-01 pour contrôler un relais avec un serveur Web.

Alimentation ESP8266 avec convertisseur HLK PM03

L’ESP32 et l’ESP8266 sont des modules Wi-Fi bon marché parfaitement adaptés aux projets de bricolage dans les domaines de l’Internet des objets (IoT) et de la domotique. L’utilisation d’un ESP32 ou ESP8266 avec un relais vous permet de contrôler n’importe quel appareil électronique AC via Wi-Fi (à l’aide d’un serveur Web, par exemple).

L’un des plus gros problèmes avec ces projets est de trouver une alimentation adaptée pour l’ESP32/ESP8266 avec un petit facteur de forme en même temps (dans une application finale, vous ne voulez pas alimenter le relais et l’ESP32/ESP8266 en utilisant deux différentes alimentations). Une solution consiste à alimenter l’ESP8266 ou l’ESP32 à partir de la tension secteur à l’aide du convertisseur AC/DC Hi-Link HLK-PM03 (ou modèle HLK-PM01).

Présentation des modules convertisseurs Hi-Link HLK-PM03/01

Le Hi-Link HLK-PM03 est un petit module convertisseur AC/DC comme illustré dans la figure ci-dessous.

1644346807 617 Alimentation ESP8266 avec convertisseur HLK PM03

Le convertisseur AC/DC HLK-PM03 peut fournir 3,3 V à partir de 110 VAC ou 220 VAC. Cela le rend parfait pour les petits projets nécessitant une alimentation de 3,3 V à partir de la tension secteur. Vous pouvez également obtenir une sortie 5V en utilisant le HLK-PM01 à la place.

Vous pouvez lire plus d’informations sur les spécifications de ces modules : HLK-PM03 et HLK-PM01. Il y a aussi un très bon article sur test de performance du HLK-PM01.

Pour alimenter l’ESP8266-01 à partir de la tension secteur, nous utiliserons le HLK-PM03 pour fournir 3,3 V à la broche VCC. Si vous avez besoin de 5 V pour alimenter d’autres modèles ESP8266 ou un ESP32 via la broche VIN, vous pouvez utiliser le Modèle HLK-PM01 qui fournit une sortie 5V et fonctionne de manière similaire.

Où acheter?

Vous pouvez vérifier les modules HLK-PM03 ou HLK-PM01 sur Conseiller Maker et trouver le meilleur prix.

Alerte de sécurité

Ce projet traite de la tension secteur. Assurez-vous de comprendre ce que vous faites. Veuillez lire attentivement l’avertissement de sécurité ci-dessous.

Alimentation ESP8266 avec convertisseur HLK PM03

Alimentation de l’ESP8266 en courant alternatif à l’aide du module Hi-Link HLK-PM03

Vous pouvez utiliser le HLK-PM03 sans aucun circuit et le fixer directement à la broche ESP8266 VCC. Cependant, je ne recommande pas de le faire. Il est conseillé d’ajouter un circuit de protection avec un fusible thermique et des fusibles à fusion rapide.

L’ajout de condensateurs à la sortie HLK-PM03 est également une bonne idée pour lisser les pics de tension et éviter les réinitialisations inattendues ou les comportements instables alimentant l’ESP8266. Nous avons également ajouté une varistance sur l’entrée secteur pour protéger le circuit des pics de tension.

Pièces requises

Voici une liste de toutes les pièces nécessaires pour construire le circuit pour le projet que nous allons construire :

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 !

1644346807 70 Alimentation ESP8266 avec convertisseur HLK PM03

Schéma

La figure suivante montre le schéma du circuit.

1644346808 712 Alimentation ESP8266 avec convertisseur HLK PM03

Le bornier J1 est l’endroit où vous devez connecter la tension secteur.

Le 3.3V et GND après les condensateurs alimenteront l’ESP8266-01.

Nous avons également ajouté un bornier à trois bornes connecté à l’ESP8266 pour accéder à 3,3 V, GND et GPIO 2 pour contrôler une sortie (module relais). Parce que nous avons affaire à 3,3 V, vous devez utiliser un Module relais 3.3V comme celui-cipar example.

1644346808 610 Alimentation ESP8266 avec convertisseur HLK PM03

À des fins de test, nous avons soudé le circuit sur une carte prototype. Nous prévoyons de construire un PCB avec ce circuit dans un futur projet.

1644346808 70 Alimentation ESP8266 avec convertisseur HLK PM03

Fusibles thermiques à souder

Le fusible thermique utilisé dans le circuit est un fusible de 73°C. Cela signifie que vous devez être très prudent lorsque vous le soudez car la chaleur du fer à souder peut le faire exploser. Pour en savoir plus sur la façon de souder des fusibles thermiques, nous vous recommandons de consulter les ressources suivantes :

Code

Dans cet exemple, nous avons programmé l’ESP8266 avec Arduino IDE. Pour programmer l’ESP8266 à l’aide de l’IDE Arduino, vous devez avoir installé le module complémentaire ESP8266. Suivez le tutoriel suivant pour installer le module complémentaire ESP8266, si vous ne l’avez pas déjà fait.

Le code suivant crée un serveur Web auquel vous pouvez accéder pour contrôler le relais connecté à l’ESP8266 (GPIO 2) via Wi-Fi dans votre réseau local.

/*********
  Rui Santos
  Complete project details at https://www.raspberryme.com  
*********/

// Load Wi-Fi library
#include <ESP8266WiFi.h>

// Replace with your network credentials
const char* ssid     = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";

// Set web server port number to 80
WiFiServer server(80);

// Variable to store the HTTP request
String header;

// Auxiliar variables to store the current output state
String output2State = "off";

// Assign output variables to GPIO pins
const int output2 = 2;

// Current time
unsigned long currentTime = millis();
// Previous time
unsigned long previousTime = 0; 
// Define timeout time in milliseconds (example: 2000ms = 2s)
const long timeoutTime = 2000;

void setup() {
  Serial.begin(115200);
  // Initialize the output variables as outputs
  pinMode(output2, OUTPUT);
  // Set outputs to LOW
  digitalWrite(output2, LOW);

  // Connect to Wi-Fi network with SSID and password
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  // Print local IP address and start web server
  Serial.println("");
  Serial.println("WiFi connected.");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  server.begin();
}

void loop(){
  WiFiClient client = server.available();   // Listen for incoming clients

  if (client) {                             // If a new client connects,
    currentTime = millis();
    previousTime = currentTime;
    Serial.println("New Client.");          // print a message out in the serial port
    String currentLine = "";                // make a String to hold incoming data from the client
    while (client.connected() && currentTime - previousTime <= timeoutTime) { // loop while the client's connected
      currentTime = millis();
      if (client.available()) {             // if there's bytes to read from the client,
        char c = client.read();             // read a byte, then
        Serial.write(c);                    // print it out the serial monitor
        header += c;
        if (c == '\n') {                    // if the byte is a newline character
          // if the current line is blank, you got two newline characters in a row.
          // that's the end of the client HTTP request, so send a response:
          if (currentLine.length() == 0) {
            // HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)
            // and a content-type so the client knows what's coming, then a blank line:
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
            client.println("Connection: close");
            client.println();
            
            // turns the GPIOs on and off
            if (header.indexOf("GET /2/on") >= 0) {
              Serial.println("GPIO 2 on");
              output2State = "on";
              digitalWrite(output2, HIGH);
            } else if (header.indexOf("GET /2/off") >= 0) {
              Serial.println("GPIO 2 off");
              output2State = "off";
              digitalWrite(output2, LOW);
            }
            
            // Display the HTML web page
            client.println("<!DOCTYPE html><html>");
            client.println("<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">");
            client.println("<link rel=\"icon\" href=\"data:,\">");
            // CSS to style the on/off buttons 
            // Feel free to change the background-color and font-size attributes to fit your preferences
            client.println("<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}");
            client.println(".button { background-color: #195B6A; border: none; color: white; padding: 16px 40px;");
            client.println("text-decoration: none; font-size: 30px; margin: 2px; cursor: pointer;}");
            client.println(".button2 {background-color: #77878A;}</style></head>");
            
            // Web Page Heading
            client.println("<body><h1>ESP8266 Web Server</h1>");
            
            // Display current state, and ON/OFF buttons for GPIO 5  
            client.println("<p>GPIO 2 - State " + output2State + "</p>");
            // If the output5State is off, it displays the ON button       
            if (output2State=="off") {
              client.println("<p><a href=\"/2/on\"><button class=\"button\">ON</button></a></p>");
            } else {
              client.println("<p><a href=\"/2/off\"><button class=\"button button2\">OFF</button></a></p>");
            } 
               
            client.println("</body></html>");
            
            // The HTTP response ends with another blank line
            client.println();
            // Break out of the while loop
            break;
          } else { // if you got a newline, then clear currentLine
            currentLine = "";
          }
        } else if (c != '\r') {  // if you got anything else but a carriage return character,
          currentLine += c;      // add it to the end of the currentLine
        }
      }
    }
    // Clear the header variable
    header = "";
    // Close the connection
    client.stop();
    Serial.println("Client disconnected.");
    Serial.println("");
  }
}

Afficher le code brut

Définition de vos informations d’identification réseau

Vous devez modifier les lignes suivantes avec vos informations d’identification réseau : SSID et mot de passe avant de télécharger le code. Le code est bien commenté sur l’endroit où vous devez apporter les modifications.

// Replace with your network credentials
const char* ssid     = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";

Pour une explication du code, vous pouvez lire le tutoriel suivant : ESP8266 Web Server with Arduino IDE.

Noter: si vous utilisez un ESP32 avec le module HLK-PM01, vous pouvez utiliser le code de ce tutoriel.

Télécharger le code

Téléchargez le code fourni sur la carte ESP8266-01 à l’aide d’un programmeur FTDI ou d’un adaptateur série ESP8266-01.

Si vous utilisez un Programmeur FTDI comme celui-civous devez établir une connexion comme indiqué dans le diagramme schématique suivant :

1644346808 897 Alimentation ESP8266 avec convertisseur HLK PM03

Après avoir téléchargé le code, ouvrez le moniteur série pour obtenir l’adresse IP ESP8266-01. Vous en aurez besoin pour accéder au serveur Web.

1644346808 722 Alimentation ESP8266 avec convertisseur HLK PM03

Manifestation

Après avoir téléchargé le code sur votre ESP8266 et obtenu l’adresse IP, placez-le dans le circuit et mettez le circuit sous tension.

Avertissement: ne touchez pas le circuit lorsqu’il est connecté à la tension secteur !

Ouvrez votre navigateur, tapez l’adresse IP ESP et la page suivante devrait se charger.

1644346808 969 Alimentation ESP8266 avec convertisseur HLK PM03

Vous devriez pouvoir contrôler le relais à distance sur votre réseau local.

1644346808 325 Alimentation ESP8266 avec convertisseur HLK PM03

Noter: nous utilisons le circuit sur une carte prototype à des fins de démonstration. Si vous souhaitez utiliser le circuit dans une application finale, nous vous recommandons de construire un PCB et placez-le dans un bon boîtier de projet.

1644346808 900 Alimentation ESP8266 avec convertisseur HLK PM03

Nous prévoyons de construire ce circuit sur un PCB dans les semaines à venir s’il y a suffisamment d’intérêt, et nous partagerons tous les fichiers et ressources dont vous avez besoin pour construire votre propre PCB avec les modules HLK-PM03 ou HLK-PM01.

Conclusion

Le HLK-PM01 et le HLK-PM03 sont des modules convertisseurs qui fournissent respectivement 5V et 3,3V, à partir de la tension secteur. Cela fournit un moyen facile d’alimenter votre ESP8266 ou ESP32 dans vos projets IoT et domotique.

Nous espérons que vous avez trouvé ce projet utile ! Si vous aimez ces sujets, vous aimerez peut-être aussi :