Найти тему
Amperkot.ru

Гирлянда управляемая через веб сайт. Часть 1

Оглавление

Приближается Новый Год, значит самое время украшать свой дом! Сегодня мы сделаем гирлянду, которой можно будет управлять с помощью веб - сайта!

Для этого проекта вам понадобится:

  • Адресные светодиоды WS2812
  • Контроллер ESP8266

Подключение

У адресных светодиодов есть два основных достоинства:

  1. Для управления необходим всего один пин
  2. Адресные светодиоды можно подключать последовательно, то есть если вам не хватит 8 светодиодов, что вполне вероятно, вы можете подсоединить дополнительные

Подключим светодиоды к контроллеру.

Контакт на светодиодеПин на контроллереGNDGND4-7VDC5VDINGPIO16

Одноцветная гирлянда

Для управления адресными светодиодами чаще всего используется библиотека Adafruit_NeoPixel. Её можно установить, используя Менеджер библиотек Arduino IDE.

Для начала, просто помигаем синим цветом, а затем разберёмся, как сохранить в памяти контроллера несколько режимов работы.

  • #include <Adafruit_NeoPixel.h>

    #define LED_PIN 16
    #define NUMPIXELS 8


    Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, LED_PIN, NEO_GRB + NEO_KHZ800);

    void color(int R,int G, int B)
    {

    pixels.clear();
    for(int i=0;i<NUMPIXELS;i++){

    pixels.setPixelColor(i, pixels.Color(R,G,B));
    }

    pixels.show();
    }

    void blue_blink(int delay_time)
    {
    color(0,0,255);
    delay(delay_time);
    color(0,0,0);
    delay(delay_time);
    }

    void setup() {
    pixels.begin();
    }

    void loop() {
    blue_blink(300);
    }

Для начала, необходимо импортировать библиотеку, затем определить к какому пину подключены светодиоды и сколько их.

После этого необходимо создать переменную типа Adafruit_NeoPixel, c которой мы и будем работать.

Функция color окрашивает все светодиоды в цвет, заданный с помощью RGB-cхемы.

Внутри функции blue_blink, включается и выключается синий цвет, с заданым интервалом. Поскольку это функция вызывается внутри стандартной функции loop, она будет вызываться постоянно.

Добавим цветов

Модифицируем функцию blue_blink так, что бы можно было указывать не только задержку, но и желаемый цвет.

  • void color_blink(int delay_time,char color_v)
    {

    int R = 0,G = 0, B = 0;

    switch (color_v)
    {
    case 'R':
    R = 255;
    break;
    case 'G':
    G = 255;
    break;
    case 'B':
    B = 255;
    break;
    }
    color(R,G,B);
    delay(delay_time);
    color(0,0,0);
    delay(delay_time);
    }

Управление через веб-сайт

Для того, что бы создать веб-сайт, вам понадобится библиотека ESPAsyncWebServer, её можно скачать тут

server.on("/post", HTTP_GET, [](AsyncWebServerRequest *request){
String message;
message = request->getParam("color")->value();
Serial.println(message);
MODE = message[0];
request->send(200, "text/plain", "Цвет обновлён");
});

Основная задача сервера - обрабатывать запросы на смену цвета.
Запрос выглядит так:
192.168.4.1/post?color=цвет, где вместо параметра цвет можно указать
r,g или b.

Вот и всё!

Ваша гирлянда с управлением через веб-сайт готова!
Полный искодный код проекта можно найти в
этом репозитории.
Но не останавливайтесь на достигнутом! Добавляйте свои режимы!

P.S. В следующих уроках мы добавим к нашему сайту интерфейс и научимся управлять им с помощью приложения на компьютер или телефон.