Equipamento sem fio NooLite e Smart Home (parte 2). Arduino Mega Server

imagem

Então, passamos à segunda parte de nossa história sobre a integração do controle sem fio nooLite em sistemas de automação residencial. E nesta parte, falaremos sobre o módulo de controle nooLite MT1132 e sua integração ao popular sistema Arduino Mega Server. Isso amplia os recursos AMS já altamente desenvolvidos, controlando sem fio as luzes e os aparelhos elétricos em sua Smart Home.

Sobre a primeira parte


A primeira parte desta série falou sobre como o controle sem fio nooLite funciona e como você pode controlar este equipamento a partir de esboços no Arduino. E na primeira parte, foram fornecidas informações detalhadas sobre a conexão do módulo MT1132 e sua programação. E isso vai nos ajudar muito agora.

Porque

Porque o Arduino Mega Server é o Arduino. E tudo o que está escrito no artigo anterior também se aplica ao Arduino Mega Server. Portanto, antes de ler este artigo, é recomendável que você se familiarize com a primeira parte do ciclo.

Algumas palavras sobre o Arduino Mega Server


O Arduino Mega Server é um sistema multifuncional com muitos recursos exclusivos. Você pode aprender mais sobre isso no site do projeto. É claramente e com "fotos" descreve suas principais características. Em resumo, este é o sistema operacional dos controladores Arduino. E os recursos do controlador simples diferem dos recursos do controlador com o AMS integrado, da mesma maneira que os recursos do computador básico diferem dos recursos de um computador com Windows ou Linux integrado.

Essa é uma comparação figurativa, mas fornece uma boa idéia do que é o Mega Server do Arduino.

Integração


Agora vamos ver como o módulo de controle MT1132 é integrado ao sistema. Fisicamente, conectar o módulo não é diferente de conectar a um Arduino Mega ou Arduino Due, descrito em um artigo anterior. Portanto, refiro-lhe novamente ao artigo anterior para não repetir a mesma coisa aqui.

Com fios - energia, terra e RX para receber comandos de controle do Arduino e o módulo está pronto para funcionar. Na verdade, o nooLite MT1132 é o campeão na facilidade de conectar equipamentos ao microcontrolador.

A parte do software também é muito semelhante à descrita no artigo anterior e coincide com ela em 85%. As diferenças estão apenas nas variáveis ​​e funções específicas do AMS, que examinaremos em detalhes neste artigo.

Kernel de gerenciamento NooLite


Por núcleo de controle nooLite, queremos dizer código que executa as funções básicas de geração de comandos e controle do módulo MT1132 (que, por sua vez, envia comandos ao ar).

Este código, de acordo com a ideologia da estrutura modular do AMS, é projetado como um módulo separado e é uma unidade lógica separada do sistema. Este módulo pode ser ativado (se você precisar do controle nooLite) ou desligado (se você não precisar do controle nooLite).

imagem

Isso é vantajoso, pois economiza valiosa memória do microcontrolador e não utiliza este módulo para quem não precisa do controle nooLite. O módulo pode ser desligado dinamicamente (enquanto a memória não está salva) e pode ser desligado no estágio de compilação, simplesmente comentando uma linha de código.

//#define NOO_FEATURE

E, neste caso, toda a memória ocupada pelo módulo permanece livre. O sistema foi projetado para reconhecer automaticamente o módulo compilado ou não e processar corretamente esse evento.

imagem

Para conveniência dos usuários, informações sobre o status de todos os módulos do sistema são exibidas no painel no cabeçalho do site. E aí você pode ver imediatamente o status deles no momento. Isso funciona nas versões Arduino Mega e Arduino Due.

Código do módulo do kernel NooLite


Agora, vamos dar uma olhada no código do módulo “noo” do sistema Arduino Mega Server. As funções discutidas no artigo anterior, omitirei aqui. Se de repente você não entender algo, volte ao artigo anterior e revise-o novamente.

O código do módulo está enquadrado nas diretivas de compilação condicional, que são usadas para ativar ou desativar o código do módulo da compilação, de acordo com suas instruções.

#ifdef NOO_FEATURE


#endif

A seguir, são definidas as conclusões às quais o módulo MT1132 está conectado (a 19ª saída é opcional, serve para confirmar o envio bem-sucedido do comando pelo módulo)

byte const PIN_TX = 18; // TX PIN (to RX noolite)
byte const PIN_RX = 19; // RX PIN (to TX noolite)

E as letras dos canais estão definidas (apenas para facilitar o uso)

byte const NOO_CHANNEL_1 = 0;
byte const NOO_CHANNEL_2 = 1;

Atualmente, apenas dois canais são usados, mas nada impede que você adicione algumas linhas de código e use todos os 32 canais.

O módulo é inicializado pela função

void nooInit() {
  Serial1.begin(9600);
  modulNoo = MODUL_ENABLE;
  started("nooLite");
}

em que Serial1 é inicializado com uma frequência padrão de 9600, o módulo recebe o status “ENABLE” e uma mensagem de teste é exibida em Serial para controlar o processo de inicialização.

A função "principal" que forma os comandos e as funções "wrapper" que simplificam os comandos até o limite são descritas em detalhes no artigo anterior. Esse é o núcleo do controle nooLite. Agora podemos acessar livremente qualquer função de controle de qualquer lugar no código do Arduino Mega Server. E controle o equipamento nooLite de qualquer maneira.

Aqui está o código completo do kernel de controle nooLite.

Código completo do kernel
/*
Modul nooLite
part of Arduino Mega Server project
*/

#ifdef NOO_FEATURE

byte const PIN_TX = 18; // TX PIN (to RX noolite)
byte const PIN_RX = 19; // RX PIN (to TX noolite)

byte const NOO_CHANNEL_1 = 0; // channel (address) 0...31 (MT1132)
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]);
}
}

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);}

#endif // NOO_FEATURE

Interface de vinculação e desatamento


Como o Arduino Mega Server nos fornece uma interface luxuosa, podemos usá-lo para todas as funções de trabalho com o módulo e o próprio sistema nooLite. Não precisaremos fazer nada manualmente, a comunicação com todas as funções do sistema nooLite ocorrerá usando elementos de interface padrão que você conhece ao trabalhar com sites na Internet. Serão botões, listas suspensas, etc.

Vamos começar com os blocos de poder de ligação e desatamento da interface. Tudo é extremamente simples aqui: na lista suspensa, você seleciona o número do canal desejado, depois seleciona o tipo de ação - “Vincular” ou “Desvincular” e clique em “Enviar”. Aqui estão breves instruções sobre o que fazer depois de clicar no botão "Enviar". Em geral, tudo é feito de maneira muito simples e elegante.

imagem

Você pode "amarrar" e "desatar" os blocos em qualquer quantidade e em qualquer canal (em um canal, pode haver quantos blocos de energia você desejar e eles serão ativados simultaneamente, pois estão no mesmo canal).

Aqui você só precisa lembrar que em 0,14 o controle de montagem sobre dois canais é implementado. Se dois canais não forem suficientes para você, por analogia, você poderá adicionar controle para qualquer número de canais que precisar (até 32).

Interface de controle


Agora vamos ver como a interface de gerenciamento de dispositivos nooLite no AMS está organizada. No menu do sistema, há um item "Gerenciamento nooLite". Quando você clica nela, é aberta uma página com a qual você pode ligar e desligar os dispositivos nooLite sem fio. Como eu disse, no controle de versão 0.14 é organizado em dois canais. Eles são chamados de "Bloco 1" e "Bloco 2" (significando blocos de dímero de energia sem fio nooLite).

imagem

Clicamos no "Bloco 1" e vemos um bom botão - essa é a interface de controle do primeiro bloco de força. Você pode conectar iluminação ou qualquer aparelho elétrico (com a potência correspondente) a esta unidade e ... controlar de forma conveniente e confortável a ativação e desativação pressionando este botão.

A interface do Arduino Mega Server é adaptável, o que significa que você pode controlar a ativação e desativação de aparelhos elétricos diretamente do seu smartphone - a interface será "dobrada" e a escavadeira será grande e fácil de pressionar no smartphone.

imagem

Isso não é tudo. Além de simplesmente ligar e desligar os dispositivos, o sistema nooLite permite fazer muitas outras coisas, por exemplo, diminuir (alterar gradualmente) o brilho das lâmpadas ou definir a carga necessária. Outro elemento de interface foi projetado para isso - um widget para definir potência e escurecimento.

Widget de Potência e Escurecimento


No segundo canal, existem dois elementos de interface - um botão liga / desliga e um widget de configuração de energia. Usando esse widget, você pode definir a potência, classificada como uma porcentagem do máximo. Esta é uma solução universal adequada para a maioria dos casos.

Você pode conectar-se igualmente ao dímero sem fio nooLite (por exemplo, SU111-300) em um candelabro na sua sala ou em um dispositivo elétrico que requer ajuste de energia (dentro da classificação de potência da sua unidade de energia) e pode instalar facilmente qualquer energia desejada diretamente da página da web.

imagem

Se você precisar ajustar a energia de uma maneira diferente, por exemplo, com maior precisão ou não linearmente, poderá alterar o widget padrão ajustando o código-fonte (que, é claro, é totalmente acessível).

A imagem mostra o momento em que a energia está ajustada para 20% do máximo. Ao mesmo tempo, você pode alterar a potência do esboço para o Arduino automaticamente. Por exemplo, com este sistema, não vale nada organizar o "despertador do amanhecer" tão na moda agora, quando o brilho das lâmpadas aumenta lentamente e "naturalmente" acorda você de manhã. E sem fios! Potência e controle, basta integrar o dímero em uma lâmpada ou lustre.

O widget e o botão funcionam de forma independente. Isso significa que você pode definir a energia necessária (brilho) e depois de desligá-la e ligá-la novamente, a energia instalada será salva, o que é muito conveniente.

Outras funções


O documento Nootekhnika que descreve os comandos de controle do instrumento nooLite contém muitos comandos adicionais, alguns dos quais já estão presentes no kernel e outros não. Se você precisar de outros comandos, poderá adicioná-los você mesmo, pois isso não é nada difícil e o sistema já possui muitos exemplos.

Conclusão


Por isso, examinamos a integração do módulo de controle nooLite MT1132 no Arduino Mega Server e o princípio de organização da interface de gerenciamento de hardware nooLite . Com um núcleo de controle integrado, você pode controlar facilmente os dispositivos nooLite do AMS na sua Smart Home.

Com isso, o segundo artigo chegou ao fim e, no terceiro artigo da série, você se familiarizará com o conceito absolutamente fantástico do sistema "100 em 1" do Arduino Mega Server , quando um controlador com AMS a bordo o substitui por muitos dispositivos e sistemas e economiza seu custo.

E isso será mostrado no exemplo de uma estação de solda, que fabricaremos literalmente do nada - a partir de um dímero nooLite sem fio.

PS

O Arduino Mega Server é um sistema versátil e flexível que pode ser integrado a praticamente qualquer coisa; portanto, empresas interessadas em popularizar suas tecnologias e expandir a base de usuários são convidadas a cooperar - seu equipamento também pode ser facilmente integrado ao popular sistema Arduino Mega Server.

Ter seu próprio módulo (e site) no Arduino Mega Server é uma ótima idéia.

A primeira , terceira e quarta partes do ciclo.

Adição . Um canal do Youtube está aberto e aqui está um vídeo promocional do Arduino Mega Server, que demonstra como trabalhar com um sistema real.

Source: https://habr.com/ru/post/pt389293/


All Articles