Безжичен бутон с два ESP8266

23 август 2025
Безжичен бутон с два ESP8266

Все повече хора използват ESP8266 за умни домашни проекти. Едно от най-интересните и практични приложения е да направим безжичен бутон, който при натискане на един ESP8266 подава команда, а втори ESP8266 я получава и изпълнява – например включва лампа, стартира мотор или подава сигнал към друго устройство.

 

 

Как работи идеята:

 

Проектът се базира на два ESP8266:

 

  • Първи ESP8266 (бутон): следи натискането на физически бутон, свързан към GPIO пин. При натискане изпраща сигнал през Wi-Fi.

  • Втори ESP8266 (приемник): чака да получи съобщението и след това включва/изключва реле, светодиод или друго устройство.

 

 

 

 

 

 

 

Необходими компоненти:

 

 

 

Схема на свързване:

 

ESP8266 (бутон):

  • Бутонът се свързва към GPIO0 (D3) и GND.

  • Добавяме pull-up или pull-down резистор, за да няма фалшиви сигнали.

 

ESP8266 (приемник):

  • Реле или LED на пин D1 (GPIO5).

  • GND и VCC за захранване на модула.

 

 

Принцип на работа:

  1. ESP8266-изпращач проверява дали бутонът е натиснат.

  2. Ако да – изпраща HTTP заявка или MQTT съобщение към приемника.

  3. ESP8266-приемник получава сигнала и включва/изключва изхода.

 

 

Пример с HTTP комуникация:

 

  • ESP1 (бутон) → прави GET заявка към ESP2 (приемник).

  • ESP2 има уеб сървър, който приема командата и задейства релето.

Това е най-простият начин за бърза реализация, без нужда от MQTT брокер.

 

Приложения:

 

  • Управление на лампи без окабеляване.

  • Дистанционен звънец.

  • Аларма – бутон за спешен сигнал.

  • Стартиране/спиране на устройства.

 

Предимства:

  • Лесна реализация.

  • Евтино решение – нужни са само два ESP8266.

  • Работи през домашната Wi-Fi мрежа.

 

 

Недостатъци:

 

  • Зависимост от Wi-Fi покритието.

  • Забавяне при по-големи мрежи.

  • По-безопасно е да се използва MQTT при по-сложни системи.

 

 

 

Код за ESP8266 Бутон (Клиент):

 

 

#include
#include
 
// Задаваме име и парола на Wi-Fi мрежата
const char* ssid = "YOUR_WIFI_SSID";        // смени с твоето Wi-Fi име
const char* password = "YOUR_WIFI_PASSWORD"; // смени с твоята Wi-Fi парола
 
// IP адресът на ESP8266 приемник (трябва да е статичен IP)
const char* serverIP = "192.168.1.50";  // смени според мрежата ти
const int serverPort = 80;              // стандартен HTTP порт
 
// Пин за бутона
const int buttonPin = D3;   // GPIO0 (D3 на NodeMCU)
int lastButtonState = HIGH; // последно състояние на бутона
 
void setup() {
  // Стартираме серийния порт
  Serial.begin(115200);
 
  // Настройваме пина за бутона като вход с вграден pull-up
  pinMode(buttonPin, INPUT_PULLUP);
 
  // Свързваме ESP8266 към Wi-Fi мрежата
  WiFi.begin(ssid, password);
  Serial.print("Свързване към Wi-Fi");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("\nСвързан към Wi-Fi!");
}
 
void loop() {
  int buttonState = digitalRead(buttonPin); // четем бутона
 
  // Проверяваме дали е натиснат (LOW заради INPUT_PULLUP)
  if (buttonState == LOW && lastButtonState == HIGH) {
    Serial.println("Бутонът е натиснат, изпращам сигнал...");
 
    if (WiFi.status() == WL_CONNECTED) {
      HTTPClient http;
      String url = "http://" + String(serverIP) + ":" + String(serverPort) + "/trigger";
      http.begin(url);
      int httpCode = http.GET(); // изпращаме заявка
 
      if (httpCode > 0) {
        Serial.printf("Отговор от сървъра: %d\n", httpCode);
      } else {
        Serial.printf("Грешка при заявката: %s\n", http.errorToString(httpCode).c_str());
      }
      http.end();
    }
  }
 
  lastButtonState = buttonState; // запазваме състоянието на бутона
  delay(50); // малко забавяне за анти-дебоунс
}

 

 

 

Код за ESP8266 Приемник (Сървър):

 

 

#include
#include
 
// Задаваме име и парола на Wi-Fi мрежата
const char* ssid = "YOUR_WIFI_SSID";        // смени с твоето Wi-Fi име
const char* password = "YOUR_WIFI_PASSWORD"; // смени с твоята Wi-Fi парола
 
// Създаваме уеб сървър на порт 80
ESP8266WebServer server(80);
 
// Пин за релето/LED-а
const int relayPin = D1; // GPIO5 (D1 на NodeMCU)
bool relayState = false; // текущо състояние на релето
 
// Функция за обработка на заявката /trigger
void handleTrigger() {
  relayState = !relayState; // обръщаме състоянието (ON/OFF)
  digitalWrite(relayPin, relayState ? HIGH : LOW);
 
  server.send(200, "text/plain", relayState ? "ON" : "OFF");
  Serial.printf("Състояние на релето: %s\n", relayState ? "ON" : "OFF");
}
 
void setup() {
  // Стартираме серийния порт
  Serial.begin(115200);
 
  // Настройваме пина за релето като изход
  pinMode(relayPin, OUTPUT);
  digitalWrite(relayPin, LOW);
 
  // Свързваме ESP8266 към Wi-Fi мрежата
  WiFi.begin(ssid, password);
  Serial.print("Свързване към Wi-Fi");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("\nСвързан към Wi-Fi!");
  Serial.print("IP адрес: ");
  Serial.println(WiFi.localIP());
 
  // Настройваме маршрути
  server.on("/trigger", handleTrigger);
 
  // Стартираме сървъра
  server.begin();
  Serial.println("HTTP сървър стартиран!");
}
 
void loop() {
  // Обработваме входящи заявки
  server.handleClient();
}

 

 

 

 

В света на електрониката и особено при микроконтролерите често използваме устройства, които работят на различни логически нива – най-разпространените са 3.3V и 5V. Разбирането на тези нива е важно, защото грешното им свързване може да доведе до неправилна работа или дори повреда на компонентите.

прочети още

Шумът в електронните схеми е един от най-честите проблеми, които водят до грешни показания, нестабилна работа и непредсказуемо поведение. Един от най-простите и ефективни начини за намаляване на този шум е използването на RC филтри. Те са леки, евтини и се прилагат във всичко – от аналогови сензори до микроконтролери като Arduino. В тази тема ще обясним какво представляват RC филтрите, как работят и кога да ги използваш.

прочети още

В електрониката често работим с цифрови устройства – микроконтролери, компютри, сензори. Те обработват информацията като поредица от нули и единици. Проблемът е, че голяма част от реалния свят е аналогов – звук, светлина, температура, движение. Точно тук се появява DAC (Digital-to-Analog Converter) – устройство, което превръща цифрови данни в плавен аналогов сигнал. В тази статия ще обясня по прост и разбираем начин какво е DAC, как работи, защо ни трябва и как можем да го използваме в проекти с Arduino и други микроконтролери.

прочети още

Аналогово-цифровият преобразувател (ADC) е един от най-важните елементи в съвременната електроника. Благодарение на него устройствата могат да „разбират“ аналоговия свят – звук, светлина, температура, налягане – и да го превръщат в числа, които микроконтролерите и компютрите могат да обработват. Накратко: без ADC нямаше да съществуват Ардуино проекти със сензори, цифрови мултиметри, аудио интерфейси, смартфони и още много други устройства.

прочети още

RFID (Radio Frequency Identification) е технология за безжично разпознаване на обекти чрез радиовълни. Благодарение на нея информацията може да се предава между малък електронен етикет (RFID таг) и устройство, наречено RFID четец, без нужда от директен контакт или видимост. Това прави технологията изключително удобна, бърза и точна за различни системи за идентификация.

прочети още

Инфрачервената (IR) комуникация е една от най-разпространените технологии за безжично управление на устройства в дома — телевизори, климатици, DVD плейъри, аудио системи и много други. Тя е проста, евтина, надеждна и работи отлично на къси разстояния. В тази статия ще разгледаме подробно какво представлява IR комуникацията, как работят IR дистанционните, какви компоненти използват и защо технологията продължава да бъде популярна дори днес.

прочети още

LoRa (Long Range) е безжична технология за комуникация, създадена специално за устройства, които трябва да изпращат малки количества данни на много големи разстояния, като същевременно използват изключително малко енергия. Тя е една от най-популярните технологии в света на IoT (Internet of Things), защото позволява евтини, надеждни и енергийно-ефективни връзки между устройства, които могат да бъдат разположени на километри разстояние едно от друго.

прочети още

В света на електрониката и микроконтролерите има два изключително популярни начина за комуникация между устройства – SPI и I2C. Те позволяват на микроконтролера да общува със сензори, памети, дисплеи и други периферни устройства. Въпреки че често се използват за едни и същи цели, техният начин на работа и предимства са различни. По-долу ще ти дам ясно и разбираемо обяснение, така че да можеш лесно да прецениш кой протокол да използваш в твоя проект.

прочети още

Серво моторите са едни от най-често използваните задвижващи механизми в роботиката, радио управлението, автоматизацията и Arduino проектите. Те дават точен контрол върху ъгъла, позицията и движението, без да изискват сложни драйвери. За начинаещи и напреднали те са идеалното решение, когато трябва да движим нещо точно и повторяемо.

прочети още

В света на електрониката и автоматизацията електрическите мотори играят ключова роля. Те задвижват роботи, CNC машини, 3D принтери, интелигентни устройства, играчки, домашни системи и още много други устройства. Но за да може един микроконтролер – като Arduino, ESP32 или Raspberry Pi – да управлява мотор, е нужен специален елемент: драйвер за мотор. В тази статия ще разгледаме какво представлява драйверът, защо е толкова важен и как работи.

прочети още

Калибрирането на сензор е една от най-важните стъпки за осигуряване на точни и надеждни измервания във всяка електронна система – от малък Arduino проект до професионални индустриални устройства. Ако сензорът не е правилно калибриран, данните му могат да бъдат грешни, нестабилни или напълно безполезни. В тази статия ще разбереш какво точно представлява калибрирането, защо е необходимо и как се прави по най-лесния и правилен начин.

прочети още

В света на електрониката и автоматизацията сензорите играят ключова роля. Те са „очите и ушите“ на системите, защото събират информация от заобикалящата среда и я предават към контролер, например микроконтролер или компютър. Но когато започнем да се занимаваме с тях, често се сблъскваме с два термина: аналогови и цифрови сензори. Какво точно означават и по какво се различават? Нека да ги разгледаме по прост и ясен начин.

прочети още

Въведение Ако си се занимавал с Arduino, сензори или микроконтролери, вероятно си виждал надписа I2C, понякога написан и като I²C или TWI (Two Wire Interface). Но какво всъщност представлява това? I2C е комуникационен протокол, който позволява на няколко електронни устройства да обменят данни помежду си само с два проводника.

прочети още

В електрониката и комуникационните системи често се говори за диференциални сигнали. Те се използват навсякъде — от USB и Ethernet до сензори и индустриални интерфейси като RS-485 и CAN. Но какво всъщност представлява диференциалният сигнал и защо е толкова важен?

прочети още

В индустриалната автоматизация често се срещат различни протоколи за обмен на данни между устройства – сензори, контролери, задвижващи механизми и SCADA системи. Един от най-старите и все още най-широко използвани протоколи е Modbus. Създаден през 1979 г. от Modicon (сега Schneider Electric), Modbus се е наложил като стандарт заради своята простота, надеждност и съвместимост с безброй устройства.

прочети още

В света на индустриалната автоматизация и управлението на машини комуникацията между устройствата е от решаващо значение. Едно от най-популярните и надеждни решения за това е RS485 – комуникационен стандарт, който се използва в различни индустрии вече десетилетия.

прочети още

В съвременния свят на електрониката и вградените системи обменът на данни между различни устройства е изключително важен. Един от най-разпространените и лесни за използване методи за комуникация е UART (Universal Asynchronous Receiver-Transmitter). В тази статия ще разгледаме какво представлява UART, как работи и как можем да го използваме за комуникация между микроконтролери, компютри и други периферни устройства.

прочети още

В днешно време преносимите устройства като телефони, таблети и смарт аксесоари са част от ежедневието ни. Често се случва батерията да се изтощи, когато нямаме контакт наблизо. Именно тук се появяват power bank-овете – малки преносими батерии, които могат да зареждат всякакви устройства чрез USB портове. Но възможно ли е да използваме power bank и за захранване на електронни проекти, например с Arduino или Raspberry Pi?

прочети още

В днешно време умните устройства вече са част от ежедневието ни. Една от най-полезните им функции е да следят околната среда – температура, влажност и атмосферно налягане. В тази статия ще ти покажа как можеш да създадеш собствена система за измерване на температура и влажност с помощта на ESP8266 и сензора BME280, която да предава данните по WiFi.

прочети още

Ако си ентусиаст в света на електрониката или разработваш IoT проекти, почти сигурно си се сблъсквал с въпроса: ESP32 или ESP8266? И двата модула са създадени от Espressif Systems, но имат сериозни разлики, които могат да повлияят на избора ти в зависимост от проекта. В тази статия ще сравним двете платки по най-важните параметри и ще ти помогнем да вземеш информирано решение.

прочети още

ESP8266 е евтин Wi-Fi модул, който се използва за IoT (Internet of Things) проекти. Той позволява на микроконтролерите като Arduino да се свързват към Wi-Fi мрежа и да изпращат/получават данни през интернет. Освен това, ESP8266 сам по себе си има микроконтролер и може да се програмира директно, без нужда от външен контролер като Arduino.

прочети още