Безжичен бутон с два 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();
}

 

 

 

 

В съвременната електроника енергийната ефективност е критично важна, особено при устройства, работещи на батерия – IoT сензори, носими устройства, дистанционни управления и автономни системи. Микроконтролерите разполагат с различни power consumption режими, които позволяват значително намаляване на консумацията на енергия, когато пълната производителност не е необходима. В тази статия ще разгледаме какви са тези режими, как работят и кога да ги използваме правилно.

прочети още

Всеки, който е работил с микроконтролери – Arduino, STM32, ESP32, PIC или други – рано или късно се е сблъсквал с проблема „забиване“. Програмата спира да реагира, изходите замръзват, комуникацията прекъсва и единственият изход често изглежда като рестарт. Но какво реално се случва вътре в микроконтролера, когато той „забие“, и защо това се случва? В тази статия ще разгледаме основните причини, симптоми и механизми зад този често срещан проблем.

прочети още

В embedded програмирането (Arduino, микроконтролери, PLC логика) има два основни начина, по които програмата „разбира“, че нещо се е случило: polling и interrupt-based логика. И двата подхода се използват масово, но имат коренно различна философия, предимства и недостатъци.

прочети още

В embedded програмирането (Arduino, микроконтролери, PLC логика) има два основни начина, по които програмата „разбира“, че нещо се е случило: polling и interrupt-based логика. И двата подхода се използват масово, но имат коренно различна философия, предимства и недостатъци.

прочети още

В реалния свят електронните устройства почти никога не работят в „чиста“ среда. Шумът и електрическите смущения са навсякъде – в захранването, в сигналните линии, в сензорите и дори във въздуха. Микроконтролерите, като Arduino, ESP32, STM32 и други, са особено чувствителни към тези проблеми, защото работят с ниски напрежения и прецизни логически нива.

прочети още

GPIO (General Purpose Input/Output) пиновете са едни от най-важните елементи във всеки микроконтролер. Чрез тях микроконтролерът комуникира с външния свят – бутони, сензори, дисплеи, релета, мотори и много други устройства. Въпреки че изглеждат прости, GPIO пиновете имат строги електрически ограничения. Неправилното им използване може да доведе до нестабилна работа или директно до повреда на микроконтролера. В тази статия ще разгледаме подробно всички важни параметри – напрежение, ток и защити.

прочети още

PWM (Pulse Width Modulation – широчинно-импулсна модулация) е един от най-използваните методи за управление на мощност в електрониката. Чрез него можем да регулираме скоростта на DC мотори, яркостта на LED, позицията на сервомотори и много други устройства, без реално да променяме захранващото напрежение. В тази статия ще разгледаме как PWM работи на хардуерно ниво, а не само как се използва софтуерно.

прочети още

В съвременната електроника и софтуерна разработка надеждността е изключително важна. Системите често работят без човешка намеса – в индустриални машини, автомобили, сървъри, медицинска техника и IoT устройства. Но какво се случва, ако софтуерът „забие“? Точно тук идва watchdog таймерът – незаменим механизъм за защита и самовъзстановяване.

прочети още

Всеки микроконтролер, независимо дали е Arduino, STM32, ESP32 или друг, след reset изпълнява строго определена последователност от стъпки, наречена boot процес. Този процес определя: От къде ще започне изпълнението на програмата Как се инициализира хардуерът Как се зарежда потребителският код В тази статия ще разгледаме подробно всяка стъпка, за да разбереш какво реално се случва вътре в чипа.

прочети още

В съвременните микроконтролери паметта играе ключова роля за стабилната и ефективна работа на системата. Най-често използваните типове памет са: Flash SRAM EEPROM Всеки от тези типове има различна архитектура, предназначение и ограничения. В тази статия ще разгледаме: Как са организирани вътрешно За какво се използват Какви реални ограничения имат Често срещани грешки при работа с тях

прочети още

Clock системата (тактова система) е „сърцето“ на всеки микроконтролер. Тя генерира периодичен електрически сигнал, който определя: колко бързо работи процесорът кога се изпълнява всяка инструкция синхронизацията между всички вътрешни модули Без clock сигнал микроконтролерът не може да работи.

прочети още

Прекъсванията (Interrupts) са един от най-важните механизми в микроконтролерите и вградените системи. Те позволяват на процесора да реагира незабавно на външни или вътрешни събития, без да чака текущата програма да завърши. В тази тема ще разгледаме: Какво представляват прекъсванията Как работят вътрешно Как се определят приоритетите Как процесорът превключва между задачи Практически примери и реални приложения

прочети още

Таймерите са едни от най-важните хардуерни модули във всеки микроконтролер. Те позволяват измерване на време, генериране на точни закъснения, управление на PWM сигнали, броене на събития и много други функции. Без таймери почти нито един вграден проект не би бил възможен. В тази статия ще разгледаме: Какво представляват таймерите Как работят Видове таймери Основни режими на работа Практически приложения Примери от реални проекти

прочети още

В света на embedded системите изборът на архитектура на процесора е изключително важен. Двете най-популярни архитектури са Harvard и Von Neumann. Те определят начина, по който микроконтролерът или процесорът работи с паметта и данните. Разбирането на разликите между тези две архитектури помага на инженерите да изберат правилния хардуер за конкретно приложение – било то Arduino проект, индустриален контролер или IoT устройство.

прочети още

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

прочети още

В съвременния свят сме заобиколени от електронни устройства – телефони, компютри, индустриални машини, автомобили, IoT устройства и много други. Всички те излъчват или са чувствителни към електромагнитни сигнали. Когато тези сигнали започнат да си пречат един на друг, възниква явление, наречено EMI (Electromagnetic Interference) – електромагнитни смущения. EMI може да доведе до грешки, нестабилна работа, загуба на данни или дори повреда на устройства. Затова разбирането на EMI и начините за защита е изключително важно.

прочети още

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

прочети още

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

прочети още

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

прочети още

В света на електрониката и особено при микроконтролерите често използваме устройства, които работят на различни логически нива – най-разпространените са 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.

прочети още