LUMINÁRIA RGB CONTROLADAS POR APP ANDROID

Neste tutorial entramos de cabeça na Internet das Coisas (IOT)! Vamos ensinar a passar parâmetros para o Arduino através de sua rede local e ainda aprender como criar duas luminárias de cabeceira, modeladas e impressas em 3D, controladas por Arduino + Ethernet Shield via aplicativo Android.

Claro que os arquivos estão no final do tutorial para download! Então vamos lá!

Escopo geral do projeto

Este é um projeto de Internet das Coisas (IOT) que reúne diversas tecnologias, tais como modelagem e impressão 3D, eletrônica, design, programação Arduino e  AppInventor.

Basicamente vamos controlar duas luminárias de cabeceira. Cada luminária contendo 15 leds RGB, podendo assim fazer a luz das luminárias assumir qualquer cor que desejarmos.

Passaremos os parâmetros das cores para o Arduino através de um aplicativo Android, para o mesmo “converter” estes parâmetros em cores no formato RGB de 8 bits.

Tudo isso em tempo real e dentro de nossa rede WiFi!

Abaixo temos a ideia simplificada do nosso projeto:

 

Modelagem e Impressão

O projeto foi iniciado pela modelagem das cúpulas das luminárias.

Para fazer toda a modelagem utilizamos o site TINKERCAD , que é gratuito e muito fácil para modelar peças simples. Por ter uma interface intuitiva, em poucos minutos já podemos criar peças de pequeno e médio porte.

Basta “arrastar” uma forma básica para a área de trabalho e ir modificando conforme as medidas desejadas. Também é possível agrupar formas básicas para formar uma peça composta.

 

Além das partes impressas, usamos:

  • Tubos de alumínio de 13mm de diâmetro para fazer o corpo das luminárias
  • 4 Tubos de alumínio de 13x300mm
  • 2 Tubos de alumínio de 13x100mm
  • 6 Parafusos M3 X 40mm

 

As características da impressão podem ser conferidas na tabela abaixo:

ImpressoraAnet A8
Preenchimento20%
FilamentoPLA
CorBranco opaco
Temperatura de impressão210°C
Tempo de impressão9 horas cada luminária


Eletrônica

Além do Arduino e do Ethernet Shield, responsáveis pela comunicação e controle de nossas luminárias, fabricamos uma pequena placa de circuito para servir de drive de potência para os 30 leds (15 de cada luminária).

A placa drive é a responsável por receber o sinal do Arduino e amplificar a potência para poder alimentar os 30 leds.

Lembrando que os leds RGB tem 3 núcleos cada. Um núcleo vermelho (Red), um verde (Green) e um azul (Blue). Logo, o nosso circuito é um drive de potência X 3.

Os leds são de Catodo comum e cada núcleo do led necessita de 1 resistor de 150 Ohms. E no Catodo não vai resistor.

Na imagem, veja o projeto da placa drive de potência na protoboard, o layout para circuito impresso e o protótipo feito em placa de fibra de vidro padrão (perfurada). E na sequência a lista dos componentes eletrônicos utilizados.


Programação Arduino:

O código para o Arduino é basicamente uma passagem de parâmetros via URL, o Arduino recebe uma “String” com uma série de dados concatenados e extrai os três valores PWM. Esses valores variam de 0 a 255, sendo 0 a cor apagada e 255 cor no brilho máximo.

Exemplo de URL

Para cada cor um valor (um valor para o vermelho, outro para o verde e outro para o azul) e com a combinação das cores básicas é possível fazermos outras cores, por exemplo, laranja, roxo, rosa, amarelo, branco, etc.

#include <SPI.h>
#include <Ethernet.h>

String leString;
char c;
String acao;

EthernetServer server(80);

int redPin   = 3; //PWM
int greenPin = 5; //PWM
int bluePin  = 6; //PWM

int R,G,B; 


void setup() {

  byte mac[] = { 0xDE, 0xAD, 0xBE, 0xDA, 0xFE, 0xEE };
  byte ip[] = { 192, 168, 0, 100 };
  Ethernet.begin(mac, ip);
  server.begin();

  pinMode(redPin,   OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin,  OUTPUT);
  
  Serial.begin(9600);
  Serial.println("RED    GREEN    BLUE");
}


void loop() {

  //  exemplo de parâmetros  http://192.168.0.100/?R200G50B40f
  EthernetClient client = server.available();
  if (client) {
    while (client.connected()){
      if (client.available()){
        char c = client.read();
        if (leString.length() < 100) {
          leString += c;
        }
        
        if (c == '\n') {
                 
          if (leString.indexOf("?") > 0) {

            int inicioR = leString.indexOf("r") + 1;
            int fimR    = leString.indexOf("g");
            acao = leString.substring(inicioR, fimR);
            R = acao.toInt();
            Serial.print(R);
            Serial.print("   ");

            int inicioG = leString.indexOf("g") + 1;
            int fimG    = leString.indexOf("b");
            acao = leString.substring(inicioG, fimG);
            G = acao.toInt();
            Serial.print(G);
            Serial.print("   ");

            int inicioB = leString.indexOf("b") + 1;
            int fimB    = leString.indexOf("f");
            acao = leString.substring(inicioB, fimB);
            B = acao.toInt();
            Serial.println(B);      

            client.println("HTTP/1.1 200 OK");
            client.println("Content-Type: text/html");
            client.println();
            client.println("<HTML>");
            client.println("<HEAD>");
            client.println("</head>");
            client.println("<body>");

            client.println("RED = ");
            client.println(R);
            client.println("<p>");

            client.println("GREEN = ");
            client.println(G);
            client.println("<p>");

            client.println("BLUE = ");
            client.println(B);
            client.println("<p>");

            analogWrite(redPin  , R);
            analogWrite(greenPin, G);
            analogWrite(bluePin , B);

            client.println("</font><br>");
            client.println("</body>");
            client.println("</html>");
            client.flush();
            client.stop();
            leString = "";
          }
        }
      }
    }
  }
}  //fim do loop

Programação AppInventor:

A programação do aplicativo Android foi feita no site AppInventor 2.

Uma ferramenta criada pelo MIT (Massachusetts Institute of Technology) que permite programar de forma visual (arrastar, soltar, conectar blocos de código) aplicativos para dispositivos com sistema operacional Android.

A usabilidade do App é extremamente simples, basta tocar na “roda de cores” a cor desejada e a luminária “magicamente” irá copiar está cor! Wow!

Existem ainda botões com cores pré definidas para facilitar a interação.

Na versão final do App, foi adicionado um botão extra para configuração de um IP diferente do padrão (192.168.0.100).

Então se este IP estiver sendo usado na sua rede local, você poderá trocar por outro e este ficará armazenado em um pequeno “banco de dados” local, para que não necessite de reconfiguração do IP a cada uso do App. Você ainda pode configurar um serviço de DDNS e ter o controle de suas luminárias através da Internet de qualquer lugar do mundo.

Abaixo, confira o vídeo da impressão, pintura, montagem, testes e instalação de nossas luminárias.

MATERIAIS UTILIZADOS

1 Arduino

1 Placa drive

1 Ethernet Shield (W5100)

1 Roteador wifi1Fonte de 5V x 2A

1 SmartPhone (Android)

30 Leds RGB de Catodo comum

90Resistores de 150 Ohms 1/8W

COMPONENTES DA PARTE ELETRÔNICA

1 Placa de circuito

3 Transistores TIP3

21 Barra de pinos fêmea com 4 pinos

3 Transistores BC548

3 Resistores de 220 Ohms

1 Conector KRE  com 2 pinos

3 Resistores de 1 Kohms

1 Conector KRE  com 3 pinos

ARQUIVOS PARA

DOWNLOAD

 
Link para impressão 3d >>> LUMINÁRIA
 
Link para Arduino + APK + Drive + Imagens >>> CÓDIGOS
 

Se você gostou do nosso tutorial, mas ainda não segue a Circuito Maker no Youtube e Instagram, está sendo muito injusto, hein!

Vai lá, e inscreva-se em nossas Redes Sociais para ajudar a impulsionar o nosso trabalho.