Sterowanie taśmą LED 433MHz poprzez WiFi

W sprzedaży są proste sterowniki taśm LED jednokolorowych z pilotem. Sterowniki te (a w zasadzie piloty) działają na częstotliwości 433MHz. Wykorzystując moduł ESP8266 np. Wemos i odbiornik 433MHz możemy sterować taśmą LED poprzez WiFi np. z Domoticza.

W ogóle aby móc sterować taśmą LED należy znać kod przycisku wysyłany z pilota do sterownika. Trzeba poznać kody przycisków jakie chcemy emulować. Znalazłem ciekawy artykuł w sieci (po ang.) jak dowiedzieć się jak te kody odczytać. W opisie tym autor wykorzystuje Arduino oraz odbiornik 433MHz oraz demo biblioteki RCSwitch o nazwie ReceiveDemo_Simple. Cały opis jest tutaj.

Moduł nadajnika i odbiornika 433MHz sprzedawany jest w komplecie. Zarówno sterownik taśmy LED jak i moduły RC 433MHz są dostępne w mojej ofercie.

Nadajnik i odbiornik 433MHz

Kody mojego pilota wyglądają następująco. Podejrzewam, że tak zaprogramowane są wszystkie piloty podobnie wyglądające 🙂

// Received 467713 / 24bit Protocol: 1 // on-off
// Received 467721 / 24bit Protocol: 1 // 25%
// Received 467720 / 24bit Protocol: 1 // 50%
// Received 467719 / 24bit Protocol: 1 // 100%
// Received 467718 / 24bit Protocol: 1 // jaśniej
// Received 467717 / 24bit Protocol: 1 // ciemniej

Nadajnik 433MHz trzeba podłączyć do modułu ESP8266. Sygnał data do D2 w module oraz zasilanie 5V.

Teraz należy napisać program, który poprzez przeglądarkę wysyła kod RC do odbiornika taśmy 🙂

Oto on:

#include <Arduino.h>
#include <RCSwitch.h>
#include <ESP8266WiFi.h>

#define HTTP_REST_PORT 80
#define WIFI_RETRY_DELAY 500
#define MAX_WIFI_INIT_RETRY 50

RCSwitch mySwitch = RCSwitch();

const char* wifi_ssid = "SIEC_WIFI";
const char* wifi_passwd = "HASŁO";

WiFiServer server(80);

int rc_delay = 50;

int init_wifi()
{
int retries = 0;

Serial.println("Connecting to WiFi AP..........");

WiFi.mode(WIFI_STA);
WiFi.begin(wifi_ssid, wifi_passwd);
// check the status of WiFi connection to be WL_CONNECTED
while ((WiFi.status() != WL_CONNECTED) && (retries < MAX_WIFI_INIT_RETRY))
{
retries++;
delay(WIFI_RETRY_DELAY);
Serial.print("#");
}
return WiFi.status(); // return the WiFi connection status
}


void setup() {
Serial.begin(115200);
mySwitch.enableTransmit(4); //D2

if (init_wifi() == WL_CONNECTED)
{
Serial.print("Connetted to ");
Serial.print(wifi_ssid);
Serial.print("--- IP: ");
Serial.println(WiFi.localIP());
}
else
{
Serial.print("Error connecting to: ");
Serial.println(wifi_ssid);
}

server.begin();
Serial.println("Server started");
}

void loop() {
WiFiClient client = server.available();
if (!client)
{
return;
}
Serial.println("Waiting for new client");
while (!client.available())
{
delay(1);
}
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();

// RC CODE from RC-SwitchReciver Demo
// Received 467713 / 24bit Protocol: 1 // on-off
// Received 467721 / 24bit Protocol: 1 // 25%
// Received 467720 / 24bit Protocol: 1 // 50%
// Received 467719 / 24bit Protocol: 1 // 100%
// Received 467718 / 24bit Protocol: 1 // +
// Received 467717 / 24bit Protocol: 1 // -

// on-off
if (request.indexOf("/power") != -1)
{
mySwitch.send(467718, 24);
mySwitch.send(467713, 24);
delay(rc_delay);
}
// down
if (request.indexOf("/down") != -1)
{
mySwitch.send(467718, 24);
delay(rc_delay);
}
// up
if (request.indexOf("/up") != -1)
{
mySwitch.send(467717, 24);
delay(rc_delay);
}
// 25%
if (request.indexOf("/25") != -1)
{
mySwitch.send(467721, 24);
delay(rc_delay);
}
// 50%
if (request.indexOf("/50") != -1)
{
mySwitch.send(467720, 24);
delay(rc_delay);
}
// 100%
if (request.indexOf("/100") != -1)
{
mySwitch.send(467719, 24);
delay(rc_delay);
}

client.println("HTTP/1.1 200 OK");
}

W kodzie należy ustawić nazwę sieci WiFi oraz hasło i wgrać do modułu z Arduino IDE.

Pozostaje w przeglądarkę wpisać adres modułu np: http://192.168.88.117/50 aby ustawić jasność taśmy LED na 50%.

Pozostałe opcje:

http://<adres-ip>/power
http://<adres-ip>/25
http://<adres-ip>/50
http://<adres-ip>/100
http://<adres-ip>/up
http://<adres-ip>/down

Kod nie jest idealny, ale stanowi podstawę do dalszego rozwoju.

Posted in Arduino and tagged , , .

Artur Wronowski

Właściciel firmy digi-led. Od młodych lat jego pasją jest elektronika, informatyka i programowanie(Python).

Dodaj komentarz