Obsługa modułu ESP-01 z 2 przekaźnikami

W tym wpisie postaram się pokazać jak obsługiwać gotowy moduł ESP-01 z dwoma przekaźnikami. Istnieje podobny moduł ESP-01 z jednym przekaźnikiem i tam sprawa jest bardzo prosta, wystarczy zmienić stan z niskiego na wysoki na odpowiedniej nóżce naszego ESP-01 i przekaźnik również zmieni swój stan. Z modułem z 2 przekaźnikami sprawa komplikuje się o tyle, że płytka oczekuje konkretnej komendy, która została zaprogramowana przez producenta modułu i różny HEX jest dla otwarcia i zamknięcia każdego z dwóch przekaźników.

moduł ESP-01 z przekaźnikami kupicie w naszym sklepie internetowym

Jak sterować ESP-01 z przekaźnikami?

Każdy producent ma swoje komendy HEX, które działają z jego modułem. Należy zwrócić się bezpośrednio do sprzedawcy, od którego kupiliśmy nasz moduł jeśli nie możemy poradzić sobie ze znalezieniem odpowiedniego HEXa samemu. Moduły, które aktualnie posiadamy w ofercie działają z następującymi kombinacjami:

1 ON {0xA0, 0x01, 0x01, 0xA2};

1 OFF = {0xA0, 0x01, 0x02, 0xA3};

2 ON = {0xA0, 0x02, 0x01, 0xA3};

2 OFF = {0xA0, 0x02, 0x02, 0xA4};

Czym programować ESP-01?

Jak programować ESP-01 w wygodny sposób? Odpowiedzią jest moduł z podstawką dla ESP-01 dostępny w ofercie naszego sklepu. Programator ESP-01 moduł, który polecamy w linku ma tą przewagę nad tańszym zamiennikiem opartym o CH340, że nie trzeba tutaj bawić się w dodatkowe lutowanie przycisków i robienie zworek, aby ESP-01 wprowadzić w tryb programowania. W tym poradniku napiszemy i wgramy program przez darmowe środowisko ArduinoIDE.

Aby w ArduinoIDE wgrać program należy wybrać następujące ustawienia pamiętając, że ustawiamy u siebie port do jakiego podpięliśmy aktualnie nasz programator:

Jeśli nie masz dodanego repozytorium do obsługi modułów ESP8266 zrób to w ten sposób:

Zakładam, że posiadacie już środowisko Arduino IDE. Uruchamiamy je i wchodzimy kolejno w Arduino -> Preferencje.

W polu „Dodatkowe adresy URL do managera pytek” wklejamy następujący link: http://arduino.esp8266.com/stable/package_esp8266com_index.json

Teraz wybieramy płytkę ESP8266 Generic oraz ustawienia jak na poniższym screenie:

ustawienia dla ESP8266

Kod programu do wgrania znajdziecie na końcu wpisu.

Sterowanie ESP-01 z przekaźnikami przez przeglądarkę

Kiedy zaprogramujemy nasze ESP-01 wpinamy je do modułu jak na zdjęciu. Pamiętamy, że ESP wysyła komendy w hexie do modułu pinami TX RX, dlatego musimy mieć wpięte zworki łączące TX i RX naszego ESP i płytki z przekaźnikami. Prawidłowo wpięte zworki ilustruje poniższy obrazek.

zworki modułu ESP-01 z przekaźnikami

Teraz wystarczy podpiąć zasilania 5V DC do płytki z przekaźnikami.

Kod programu do sterowania przekaźnikami z ESP-01

Teraz zajmiemy się kodem. Będziemy pisać program, który pozwoli podpiąć się naszemu ESP-01 do naszej sieci WiFi, a każde urządzenie podpięte w tą samą sieć będzie mogło poprzez wpisanie odmiennego adresu w oknie przeglądarki zmienić stan przekaźników. W SSID podajemy nazwę sieci WiFi, do której ma podpiąć się nasze ESP oraz hasło do niej. Następnie logujemy się do naszego routera i sprawdzamy jaki adres IP przydzielił naszemu ESP-01. Teraz znając ip w przeglądarce wykorzystujemy następujące komendy do kontrolowania modułu podmieniając server_ip na adres przydzielony naszemu ESP-01:

  • http://wpiszIP/1/on włącz 1 przekaźnik
  • http://server_ip/1/off wyłącz 1 przekaźnik
  • http://server_ip/2/on włącz 2 przekaźnik
  • http://server_ip/2/off wyłącz 2 przekaźnik
/*
 * W miejsce server_ip podaj adres ip ESP-01 jakie uzyska po podpięciu się do routera
 *    http://server_ip/1/on włącz 1 przekaźnik
 *    http://server_ip/1/off wyłącz 1 przekaźnik
 *    http://server_ip/2/on włącz 2 przekaźnik
 *    http://server_ip/2/off wyłącz 2 przekaźnik
 */

#include <ESP8266WiFi.h>

  const char* ssid = "NazwaSieciWIFIgdzieSiePodpinasz";
  const char* password = "HasloDoSieci";
  WiFiServer server (80);
//hexy do kontrolowania przekaźników włącz/wyłącz
 
  byte relON[]  = {0xA0, 0x01, 0x01, 0xA2};

  byte relOFF[] = {0xA0, 0x01, 0x02, 0xA3};

  byte rel2ON[]  = {0xA0, 0x02, 0x01, 0xA3};

  byte rel2OFF[] = {0xA0, 0x02, 0x02, 0xA4};
void setup () 
{
  delay (10);
  Serial.begin (115200);
  
  WiFi.begin(ssid, password);
  
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
  }
  
  // Start  servera
  server.begin();
  delay(50);
}

void loop() {
  int val;


  //sprawdź połączenie
  WiFiClient client = server.available();
  if ( ! client ) {
    return;
  }
  
  // czekaj na dane
  while ( ! client.available () )
  {
    delay (100);
  }
  
  // czytaj 1 linie zapytania
  String req = client.readStringUntil ('\r');
  client.flush ();
  
  // porównaj
  if (req.indexOf ("/1/on") != -1)
  {
    Serial.write (relON, sizeof(relON)); 
    val = 1; 
  } else if (req.indexOf ("/1/off") != -1) {
      Serial.write (relOFF, sizeof(relOFF)); 
      val = 0;
  } else if (req.indexOf ("/2/on") != -1) {
      Serial.write (rel2ON, sizeof(rel2ON)); 
      val = 1;
  } else { 
    if (req.indexOf ("/2/off") != -1)
      Serial.write (rel2OFF, sizeof(rel2OFF)); 
      val = 0; // if you want feedback
  }

  client.flush ();
  
 
  // odpowiedz
  String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nRelay is now ";
  s += (val)?"on":"off";
  s += "</html>\n";
  
  // wyślij do klienta
  client.print (s);
  delay (10);
}

Odpowiedz

Twój adres e-mail nie zostanie opublikowany