Desta vez, proponho fazer um pouco de mágica (por que não?) E criar um cristal mágico para nossas necessidades diárias. Vamos usá-lo para o propósito a que se destina - para adivinhar várias entidades e eventos não óbvios. E precisamos apenas de dois ingredientes para fazer esse artefato - o Arduino Mega Server e o controlador de faixa de LED sem fio nooLite SD111-180 .O cristal não será decorativo (para enganar um público crédulo), mas o mais funcional, com muitas propriedades mágicas.Então, vamos começar ...Escola de Magia
Como você mesmo entende, você não pode simplesmente realizar e realizar alguns milagres; primeiro você deve passar pela escola de magia e aprender o básico dessa arte difícil. E aqui estou lhe referindo uma série de artigos ( um , dois , três ) sobre a integração de equipamentos nooLite em sistemas de automação residencial e recomendo que você se familiarize com eles antes de ler mais. Nesses artigos, são detalhados todos os detalhes básicos e técnicos de como o Mega Server do Arduino funciona com equipamentos sem fio nooLite. Portanto, continuarei a narrativa inteira assumindo que você já leu os artigos anteriores.Módulo
Realizaremos todos os experimentos com o controlador sem fio nooLite SD111-180, que permite controlar as faixas de LED "over the air", sem fios. Conexão, como sempre no nooLite, o mais simples são dois fios para a fonte de alimentação para fitas de LED e quatro para a própria fita: mais e três canais R, G, B.
Parte do software
Os artigos anteriores falaram sobre o núcleo de controle nooLite integrado ao sistema Arduino Mega Server. E também foi mencionado lá que o conjunto principal de funções para controlar dispositivos nooLite foi implementado no kernel e foi oferecido a todos que desejavam, por analogia, adicionar outras funções necessárias ao kernel. Agora vamos facilitar essa tarefa e adicionar funções para o controle sem fio de faixas de LED ao kernel.Primeiramente, adicionamos a função “main”, que gera comandos de controle para o módulo nooLite MT1132 .void nooSendCommandLed(byte channel, byte command, byte r, byte g, byte b, byte format) {
byte buf[12];
ledLastState[0] = r;
ledLastState[1] = g;
ledLastState[2] = b;
for (byte i = 0; i < 12; i++) {
buf[i] = 0;
}
buf[0] = 85;
buf[1] = B01010000;
buf[2] = command;
buf[3] = format;
buf[5] = channel;
buf[6] = r;
buf[7] = g;
buf[8] = b;
int checkSum = 0;
for (byte i = 0; i < 10; i++) {
checkSum += buf[i];
}
buf[10] = lowByte(checkSum);
buf[11] = 170;
for (byte i = 0; i < (12); i++) {
Serial1.write(buf[i]);
}
}
Essa é a irmã da função nooSendCommand, abordada no primeiro artigo. É apenas ligeiramente modificado para as necessidades específicas de controle de faixas de LED. Adicionada instalação de 6, 7, 8 bytes do comando de controle, que contém brilho nos três canais R, G, B. E uma matriz é adicionadabyte ledLastState[] = {127, 127, 127};
contendo o último valor de cor definido da faixa de LEDs. Isso é necessário para que você possa ligar e desligar a luz, mantendo o valor da cor definida. Se isso não for feito, depois de desligá-lo e ligá-lo, a cor será redefinida para branco, o que não é muito conveniente.E para trabalhar com faixa de LED, selecione o terceiro canalbyte const NOO_CHANNEL_3 = 2;
Você pode escolher qualquer um dos 32 canais com os quais o módulo nooLite MT1132 trabalha.Agora temos a função básica que controla a operação do controlador de faixa de LED nooLite SD111-180 e, consequentemente, a própria faixa de LED. E agora podemos começar a escrever funções de invólucro que tornam mais fácil escrever código para controlar a cor do brilho da fita.Invólucro da basevoid nooLed (byte ch, byte r, byte g, byte b) {
nooSendCommandLed(ch, 6, r, g, b, 3);
}
Apenas indique o canal e as cores do brilho. À nossa disposição 16 milhões de tons. Em seguida, escrevemos funções de invólucro para as cores base (você pode adicionar essas funções para suas cores favoritas).void nooRed (byte ch, byte v) {nooSendCommandLed(ch, 6, v, 0, 0, 3);}
void nooGreen (byte ch, byte v) {nooSendCommandLed(ch, 6, 0, v, 0, 3);}
void nooBlue (byte ch, byte v) {nooSendCommandLed(ch, 6, 0, 0, v, 3);}
void nooYellow (byte ch, byte v) {nooSendCommandLed(ch, 6, v, v, 0, 3);}
void nooMagenta(byte ch, byte v) {nooSendCommandLed(ch, 6, v, 0, v, 3);}
void nooCyan (byte ch, byte v) {nooSendCommandLed(ch, 6, 0, v, v, 3);}
Apenas indique o canal e a intensidade do brilho no intervalo de 0 a 255. E mais algumas funções "conceituais". Intensidade branca, preta e cinza.void nooBlack (byte ch) {nooSendCommandLed(ch, 6, 0, 0, 0, 3);}
void nooWhite (byte ch) {nooSendCommandLed(ch, 6, 255, 255, 255, 3);}
void nooGray (byte ch, byte v) {nooSendCommandLed(ch, 6, v, v, v, 3);}
E a última função que adicionaremos ao núcleo nooLite no sistema Arduino Mega Server é a função de restaurar a última cor do brilho da fita (os módulos nooLite não se lembram desse valor). Esta função é usada para ligar a fita (depois de desligada, que redefine a cor para branco).void nooSetLedLastState(byte ch) {
nooSendCommandLed(ch, 6, ledLastState[0], ledLastState[1], ledLastState[2], 3);
}
Aqui está o código completo para o novo kernel de gerenciamento nooLite.Código completo do kernel
#ifdef NOO_FEATURE
byte const PIN_TX = 18;
byte const PIN_RX = 19;
byte const NOO_CHANNEL_1 = 0;
byte const NOO_CHANNEL_2 = 1;
byte const NOO_CHANNEL_3 = 2;
byte const NOO_CHANNEL_4 = 3;
byte const NOO_CHANNEL_5 = 4;
void nooInit() {
Serial1.begin(9600);
modulNoo = MODUL_ENABLE;
started("nooLite");
}
void nooWork() {
}
void nooSendCommand(byte channel, byte command, byte data, byte format) {
byte buf[12];
for (byte i = 0; i < 12; i++) {
buf[i] = 0;
}
buf[0] = 85;
buf[1] = B01010000;
buf[2] = command;
buf[3] = format;
buf[5] = channel;
buf[6] = data;
int checkSum = 0;
for (byte i = 0; i < 10; i++) {
checkSum += buf[i];
}
buf[10] = lowByte(checkSum);
buf[11] = 170;
for (byte i = 0; i < (12); i++) {
Serial1.write(buf[i]);
}
}
byte ledLastState[] = {127, 127, 127};
void nooSendCommandLed(byte channel, byte command, byte r, byte g, byte b, byte format) {
byte buf[12];
ledLastState[0] = r;
ledLastState[1] = g;
ledLastState[2] = b;
for (byte i = 0; i < 12; i++) {
buf[i] = 0;
}
buf[0] = 85;
buf[1] = B01010000;
buf[2] = command;
buf[3] = format;
buf[5] = channel;
buf[6] = r;
buf[7] = g;
buf[8] = b;
int checkSum = 0;
for (byte i = 0; i < 10; i++) {
checkSum += buf[i];
}
buf[10] = lowByte(checkSum);
buf[11] = 170;
for (byte i = 0; i < (12); i++) {
Serial1.write(buf[i]);
}
}
void nooBind (byte ch) {nooSendCommand(ch, 15, 0, 0);}
void nooUnbind (byte ch) {nooSendCommand(ch, 9, 0, 0);}
void nooOn (byte ch) {nooSendCommand(ch, 2, 0, 0);}
void nooOff (byte ch) {nooSendCommand(ch, 0, 0, 0);}
void nooTrigger(byte ch) {nooSendCommand(ch, 4, 0, 0);}
void nooCancel (byte ch) {nooSendCommand(ch, 10, 0, 0);}
void nooUp (byte ch) {nooSendCommand(ch, 3, 0, 0);}
void nooDown (byte ch) {nooSendCommand(ch, 1, 0, 0);}
void nooRevers (byte ch) {nooSendCommand(ch, 5, 0, 0);}
void nooValue (byte ch, byte v) {nooSendCommand(ch, 6, v, 1);}
void nooLed (byte ch, byte r, byte g, byte b) {nooSendCommandLed(ch, 6, r, g, b, 3);}
void nooBlack (byte ch) {nooSendCommandLed(ch, 6, 0, 0, 0, 3);}
void nooWhite (byte ch) {nooSendCommandLed(ch, 6, 255, 255, 255, 3);}
void nooGray (byte ch, byte v) {nooSendCommandLed(ch, 6, v, v, v, 3);}
void nooRed (byte ch, byte v) {nooSendCommandLed(ch, 6, v, 0, 0, 3);}
void nooGreen (byte ch, byte v) {nooSendCommandLed(ch, 6, 0, v, 0, 3);}
void nooBlue (byte ch, byte v) {nooSendCommandLed(ch, 6, 0, 0, v, 3);}
void nooYellow (byte ch, byte v) {nooSendCommandLed(ch, 6, v, v, 0, 3);}
void nooMagenta(byte ch, byte v) {nooSendCommandLed(ch, 6, v, 0, v, 3);}
void nooCyan (byte ch, byte v) {nooSendCommandLed(ch, 6, 0, v, v, 3);}
void nooSetLedLastState(byte ch) {nooSendCommandLed(ch, 6, ledLastState[0], ledLastState[1], ledLastState[2], 3);}
#endif
Isso é tudo, com isso, com a descrição dos complementos do kernel, terminamos e vamos para a interface de gerenciamento de cores de faixa AMS LED.Interface de gerenciamento de faixa de LED
Nos artigos anteriores, você lembrará da interface de controle de instrumento nooLite do sistema Arduino Mega Server. Não seremos particularmente sofisticados e apenas adicionaremos outra seção às três existentes (duas seções para controlar os dispositivos e uma seção para "vincular" / "desatar" os módulos).
Capturas de tela de outras seções com explicações detalhadas podem ser vistas em artigos anteriores sobre a integração do AMS com o sistema nooLite. A nova seção possibilita ligar e desligar a faixa de LEDs e escolher a cor do brilho entre várias opções predefinidas.Este é apenas um exemplo de integração e você pode criar qualquer outra interface com base neste exemplo. Você pode fazer escolhas de cores, alterar facilmente as cores ou fornecer cenários para ativar, desativar e alterar a cor da luz de fundo, etc., etc.Cozinha doméstica
A interface de controle é apenas parte dos recursos que o Arduino Mega Server fornece com o núcleo de controle de instrumento integrado nooLite. E isso, por assim dizer, é a parte da superfície do iceberg. E a parte subaquática é a capacidade de usar funções de invólucro no código do próprio sistema. Você pode facilmente, literalmente, em uma linha de código, controlar o brilho da fita e usá-lo para indicar quaisquer parâmetros internos do sistema (temperatura, funções de segurança, ligar os dispositivos etc.) e externos que chegam pela rede na forma de comandos de outros dispositivos da Smart Home .E aqui vamos ao mais interessante.Cristal mágico
Agora vamos falar sobre o "cristal mágico" em si. Do que você está falando? Imagine qualquer ambiente artificial de uma pessoa - o interior de um apartamento ou escritório, um salão para a realização de eventos, o ambiente urbano de nossas cidades (paradas, postes, meio-fio, etc.), etc. Então, a idéia é que No atual nível de desenvolvimento da tecnologia, qualquer assunto pode ser transformado em um "indicador" de qualquer evento e parâmetro. Você pode ir ainda mais longe e tornar qualquer assunto interativo ou "animado", também pode equipar qualquer assunto com uma voz distinta etc. (oi, Alice!). Mas este é um tópico para outro artigo, falaremos sobre isso outra vez.
Tome, por exemplo, seu quarto. Na prateleira, ao lado da TV, ou apenas no meio da "bagunça criativa" em cima da mesa, pode haver um pequeno objeto, por exemplo, uma "bola mágica" que, dependendo de alguns parâmetros ou eventos, muda de cor, sombra ou brilho do brilho. Não incomoda ninguém e não atrai a atenção, não faz barulho, mas você só precisa dar uma olhada rápida e fica claro qual é a temperatura lá fora, se você recebeu um e-mail por e-mail, quanta cerveja resta na geladeira, é hora de alimentar o peixe ou tome pílulas de esclerose prescritas pelo seu médico.
Eventos particularmente importantes “cristal mágico” podem ser indicados por piscar ou mesmo som. E você mesmo define todos os parâmetros deste sistema, dependendo de suas necessidades e imaginação: a cor e a intensidade do brilho, os eventos e parâmetros aos quais o “cristal mágico” reage, etc. Pode haver vários desses “cristais” e eles podem ser qualquer tipo, não necessariamente na forma de uma bola.Agora, de coisas pequenas e "imperceptíveis", vamos para formas médias. Pode ser iluminação de piso ou teto, paredes luminosas (partes de paredes) ou nichos, etc. elementos interiores. Por exemplo, uma luz de fundo pode servir como um relógio colorido, quando à noite muda de luz dependendo da hora e, pela manhã, gradualmente se torna mais brilhante e serve como um despertador "natural".
E, finalmente, este é um armazém inesgotável de idéias para várias performances e o design de eventos de massa, como festas, eventos corporativos etc. reuniões de pessoas, onde um pequeno cristal mágico se transforma em cubos e bolas de 2 metros que mudam de cor dependendo da , por exemplo, os resultados da votação a favor ou contra algo.
Conclusão
E tudo o que você precisa para realizar todas essas idéias é o Mega Server do Arduino , o controlador de faixa de LED sem fio nooLite SD111-180 e um pouco de imaginação. Todas as inovações descritas neste artigo aparecerão na próxima versão 0.15 do sistema AMS, e o mais impaciente de você pode usar o código do módulo do kernel nooLite deste artigo e começar a trabalhar maravilhas agora.Artigos anteriores:Equipamento sem fio nooLite e Smart Home (parte 1).Equipamento sem fio Arduino nooLite e Smart Home (parte 2). Arduino Mega ServernooLite Equipamento sem fio e Smart Home (Parte 3).Promoção da estação de solda Arduino Mega Server no Youtube, demonstrando o trabalho com um sistema promocional real doservidor Arduino Mega Server