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

20 декабря 2019

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

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

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

Подключение

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

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

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

Контакт на светодиоде Пин на контроллере
GND GND
4-7VDC 5V
DIN GPIO16

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

Для управления адресными светодиодами чаще всего используется библиотека 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. В следующих уроках мы добавим к нашему сайту интерфейс и научимся управлять им с помощью приложения на компьютер или телефон.


Данная статья является собственностью Amperkot.ru. При перепечатке данного материала активная ссылка на первоисточник, не закрытая для индексации поисковыми системами, обязательна.


Поделиться: