Ангел-шоу - комплекс устройств и программ для управления светодиодными костюмами

Ангел-шоу — комплекс устройств и программ для управления светодиодными костюмами
Проект создания светодиодного костюма, в моем случае управляемого с компьютера (нетбук) с ОС Linux.
Костюм управляетя удаленно, используется радиомодули FS1000A, работающие на частоте 433 МГц
Приемник и передатчик

Компонеты комплекса
1) компьютер OC Linux, на котором установлена программа — редактор сценариев для управления RGB светодиодной лентой
2) передатчик — плата Arduino, соединенная по последовательному порту с нетбуком, на плате установлен передатчик FS1000A
3) приемники — платы Arduino — контроллеры RGB-лент, c установленными приемниками FS1000A
Приемников несколько — каждый управляет своей светодиодной лентой,
каждый приемник имеет свой код
Схема передатчика

Печатная плата не создавалась, внешний вид устройства

Схема приемник

Транзисторы TIP120
Печатная плата сразу на 2 приемника

Файл в формате lay в архиве в конце статьи
И внешний вид


Программа — редактор сценариев (написана на python, используются библиотеки Tkinter (графический интерфейс) и pygame (использовал только для встраивания медиапроигрывателя))
состоит из 6 окон
— выбор сценария;
— просмотр сценария;
— подбор цвета;
— настройки (порт подключения, коды для устройств)
— редактирование сценария;
— звуковая шкала.
каждое из которых может быть показано/скрыто нажатием на соответствующую кнопку


Программа позволяет создавать сценарии с использованием звуковой дорожки — файла для музыкального сопровождения светодиодного шоу
По кнопке Запуск происходит запуск музыкального файла и отправка команд сценария на плату Arduino — передатчик
Можно прогнать файл и без отправки на плату
Внизу на кнопках происходит эмуляция изменения цвета светодиодной ленты во время проигрывания музыкального ролика

Программа на python по последовательному порту передает команды на плату Arduino — передатчик, которая просто ретранслирует команды в эфир
Скетч для платы передатчика
Для Arduino имеются библиотеки для работы с разными управляемыми по 433/315 МГц исполнительными устройствами. Я использовал такую:
rc-switch — Arduino library to operate low cost 315 MHz / 433 MHz remote control devices — Скачать

#include <VirtualWire.h>

char msg[10]={char(55),char(0),char(0),char(0),char(0),char(0),
               char(0),char(0),char(0),char(0)};
int id1=0;

void setup()
{
  Serial.begin(115200);	  // Debugging only
  Serial.println("setup");

  // Initialise the IO and ISR
  vw_set_ptt_inverted(true); // Required for DR3100
  vw_set_tx_pin(10);	 // Bits per sec
  vw_setup(5000);	 // Bits per sec
  delay(5000);
}

void loop()
{
  while(Serial.available()>0)
    {
    byte c=Serial.read();
    msg[id1]=c;

    id1=id1+1;  
    } 
    if(id1>0)
      {
      digitalWrite(13, true); // Flash a light to show transmitting
      vw_send((uint8_t *)msg,id1);
      vw_wait_tx(); // Wait until the whole message is gone
      digitalWrite(13, false);
      }
   //if(id1>0)   
   //   {Serial.print("id1=");Serial.println(id1);}
   id1=0;  
 
} 

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


#include <VirtualWire.h>


#define REDPIN 6
#define GREENPIN 11
#define BLUEPIN 5
  
unsigned long time1=0;
uint8_t color[]={0,10,10,10};
// Код линии
byte kod=55;
//byte kod=66;

uint8_t buf[10];
uint8_t buflen = 10;


void setup() {
  pinMode(REDPIN, OUTPUT);
  pinMode(GREENPIN, OUTPUT);
  pinMode(BLUEPIN, OUTPUT);
  Serial.begin(115200);
  //mySwitch.enableReceive(0);  // Receiver on inerrupt 0 => that is pin #2
  Serial.println("setup01");
    // Initialise the IO and ISR
    vw_set_ptt_inverted(true); // Required for DR3100
    vw_setup(5000);	 // Bits per sec
    vw_set_rx_pin(2);         // Arduino pin to connect the receiver data 
    vw_rx_start();       // Start the receiver PLL running
}
  

void loop() {

    if (vw_get_message(buf, &buflen)) // Non-blocking
    {
	int i;

        digitalWrite(13, true); // Flash a light to show received good message
       if(kod==buf[0])
          {
          color[1]=buf[1]-1;
          color[2]=buf[2]-1;
          color[3]=buf[3]-1;
          }
	//Serial.println(buf[1]);
        digitalWrite(13, false);
    }
    if(millis()-time1>500)
      {
      time1=millis();
      //Serial.println(millis());
      flash();
      }
}

void flash()
  {
  
  analogWrite(REDPIN,color[1]);
  analogWrite(GREENPIN, color[2]);
  analogWrite(BLUEPIN, color[3]);
  
  }


Скетчи Arduino — скачать
Программа python — скачать

Комментарии (4)

RSS свернуть / развернуть
+
0
очень интересная тема, занимаюсь организацией праздников, и над световыми эффектами управляемыми с ардуино тоже думал…
а где можно увидеть ваши костюмы в действии, как это происходит?
avatar

SLOM

  • 14 марта 2015, 20:10
+
0
Сейчас костюм 3 версия недоделан, 2 версии отработали по нескольку раз, переделку вели из-за плохих соединений частей лент. Но работало нормально для в целом статического варианта (персонаж — Ангел играющий на флейте (белое платье)). Съемок не получалось сделать, поэтому увидеть нельзя. И заказов сейчас нет и времени.
avatar

victoruni

  • 15 марта 2015, 10:53
+
0
если вопросы есть пишите victor.petin@gmail.com или skype victor.petin1
avatar

victoruni

  • 15 марта 2015, 10:55

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.