Питание ESP8266 от сети переменного тока с помощью Hi-Link HLK-PM03
В этой статье вы узнаете, как запитать ESP8266 (или ESP32) от сетевого напряжения с помощью преобразователя Hi-Link HLK-PM03. В качестве примера мы используем ESP8266-01 для управления реле через веб-сервер.
ESP32 и ESP8266 — это дешёвые Wi-Fi модули, идеально подходящие для DIY-проектов в области Интернета вещей (IoT) и домашней автоматизации. Использование ESP32 или ESP8266 с реле позволяет управлять любыми бытовыми электроприборами переменного тока по Wi-Fi (например, через веб-сервер).
Одна из главных проблем таких проектов — найти подходящий источник питания для ESP32/ESP8266, который при этом имел бы компактный форм-фактор (в конечном приложении вы не хотите питать реле и ESP32/ESP8266 от двух разных источников питания). Одно из решений — запитать ESP8266 или ESP32 от сетевого напряжения с помощью AC/DC преобразователя Hi-Link HLK-PM03 (или модели HLK-PM01).
Знакомство с модулями преобразователей Hi-Link HLK-PM03/01
Hi-Link HLK-PM03 — это компактный AC/DC преобразователь, показанный на рисунке ниже.
AC/DC преобразователь HLK-PM03 обеспечивает выходное напряжение 3,3 В от входного напряжения 110 В или 220 В переменного тока. Это делает его идеальным для небольших проектов, которым требуется питание 3,3 В от сетевого напряжения. Также можно получить выход 5 В, используя вместо него модель HLK-PM01.
Более подробную информацию о характеристиках этих модулей можно прочитать здесь: HLK-PM03 и HLK-PM01. Также есть очень хорошая статья о тестировании производительности модуля HLK-PM01.
Для питания ESP8266-01 от сетевого напряжения мы будем использовать HLK-PM03, чтобы подать 3,3 В на вывод VCC. Если вам нужно 5 В для питания других моделей ESP8266 или ESP32 через вывод VIN, вы можете использовать модель HLK-PM01, которая обеспечивает выход 5 В и работает аналогично.
Где купить?
Вы можете найти модули HLK-PM03 или HLK-PM01 на Maker Advisor и выбрать лучшую цену.
Предупреждение о безопасности
В этом проекте используется сетевое напряжение. Убедитесь, что вы понимаете, что делаете. Пожалуйста, внимательно прочитайте приведённое ниже предупреждение о безопасности.
Питание ESP8266 от сети переменного тока с помощью модуля Hi-Link HLK-PM03
Вы можете использовать HLK-PM03 без дополнительной обвязки и подключить его напрямую к выводу VCC ESP8266. Однако я не рекомендую так делать. Целесообразно добавить защитную схему с термопредохранителем и быстродействующими предохранителями.
Добавление конденсаторов на выход HLK-PM03 также является хорошей идеей для сглаживания пиков напряжения и предотвращения неожиданных перезагрузок или нестабильного поведения при питании ESP8266. Мы также добавили варистор на входе сетевого напряжения для защиты схемы от скачков напряжения.
Необходимые компоненты
Вот список всех компонентов, необходимых для сборки схемы проекта:
Предохранитель с задержкой срабатывания (200 мА)
Термопредохранитель (72 °C)
Быстродействующий предохранитель (630 мА)
Варистор
Провода
Вы можете использовать приведённые выше ссылки или перейти непосредственно на MakerAdvisor.com/tools, чтобы найти все компоненты для ваших проектов по лучшей цене!
Принципиальная схема
На следующем рисунке показана принципиальная схема.
Клеммная колодка J1 — это место, куда следует подключить сетевое напряжение.
Линии 3,3 В и GND после конденсаторов будут питать ESP8266-01.
Мы также добавили трёхконтактную клеммную колодку, подключённую к ESP8266, для доступа к 3,3 В, GND и GPIO 2 для управления выходом (модулем реле). Поскольку мы работаем с напряжением 3,3 В, вам следует использовать, например, модуль реле на 3,3 В.
Для тестирования мы спаяли схему на макетной плате. В будущем проекте мы планируем изготовить печатную плату с этой схемой.
Пайка термопредохранителей
Термопредохранитель, используемый в схеме, рассчитан на 73 °C. Это означает, что при пайке нужно быть очень осторожным, так как тепло от паяльника может его сжечь. Чтобы узнать больше о том, как паять термопредохранители, рекомендуем ознакомиться со следующими ресурсами:
Код
В этом примере мы запрограммировали ESP8266 с помощью Arduino IDE. Для программирования ESP8266 в Arduino IDE необходимо установить дополнение (add-on) для ESP8266. Если вы этого ещё не сделали, следуйте следующему руководству для установки дополнения ESP8266.
Следующий код создаёт веб-сервер, к которому вы можете обратиться для управления реле, подключённым к ESP8266 (GPIO 2), по Wi-Fi в вашей локальной сети.
/*********
Rui Santos
Complete project details at https://randomnerdtutorials.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("");
}
}
Настройка сетевых учётных данных
Перед загрузкой кода вам нужно изменить следующие строки, указав ваши сетевые учётные данные: SSID и пароль. В коде есть комментарии, указывающие, где следует внести изменения.
// Replace with your network credentials
const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";
Для объяснения кода вы можете прочитать следующее руководство: Веб-сервер ESP8266 с Arduino IDE.
Примечание: если вы используете ESP32 с модулем HLK-PM01, вы можете использовать код из этого руководства.
Загрузка кода
Загрузите предоставленный код на плату ESP8266-01, используя FTDI-программатор или серийный адаптер ESP8266-01.
Если вы используете FTDI-программатор, вам необходимо выполнить подключение, как показано на следующей схеме:
После загрузки кода откройте Serial Monitor, чтобы получить IP-адрес ESP8266-01. Он понадобится вам для доступа к веб-серверу.
Демонстрация
После загрузки кода в ESP8266 и получения IP-адреса установите его в схему и подайте питание.
Предупреждение
Не прикасайтесь к схеме, когда она подключена к сетевому напряжению!
Откройте браузер, введите IP-адрес ESP и должна загрузиться следующая страница.
Вы должны иметь возможность удалённо управлять реле в вашей локальной сети.
Примечание: мы используем схему на макетной плате в демонстрационных целях. Если вы хотите использовать эту схему в конечном приложении, мы рекомендуем изготовить печатную плату и разместить её в надлежащем корпусе для проекта.
Мы планируем изготовить эту схему на печатной плате в ближайшие недели, если будет достаточный интерес, и мы поделимся всеми файлами и ресурсами, необходимыми для создания собственной печатной платы с модулями HLK-PM03 или HLK-PM01.
Заключение
HLK-PM01 и HLK-PM03 — это модули-преобразователи, которые обеспечивают 5 В и 3,3 В соответственно от сетевого напряжения. Это предоставляет простой способ запитать ваш ESP8266 или ESP32 в проектах IoT и домашней автоматизации.
Мы надеемся, что этот проект был для вас полезен! Если вам интересны эти темы, вам также могут понравиться: