Pessoal tenho feito algumas brincadeiras com o Arduino e gostei, achei bem interessante. Entendo muito pouco disso mas sou um entusiasta quando se fala de tecnologia. Pois bem estou construindo uma casa e esta tudo a meio caminho andado. Todo o cabeamento estruturado já foi feito. Vou fazer praticamente 100% de automação nela que quero fazer com Arduino, abaixo o que quero fazer:

Leitor biométrico e cartão em 2 portas

Persianadas

Aparelho de TV´s com matriz hdmi

Som ambiente multirrom

Monitoramento com cameras

Todas a lâmpada da casa controladas somente algumas com dimer

Algumas tomada automaticadas

Central de alarme

Sensor de gás, fumaça, temperatura

Climatização

Estou iniciando os testes começando com a iluminação, meu projeto luminitécnico fica pronto em 2 semanas.

O que mais me preocupa é inteface para controlar tudo isso. Estou estudando o Eclipse para fazer o aplicativodo em Android para criar os senários, mas tenho muita dificuldade nisso. Por exemplo um botão com no nome assistir tv no celular ou tablet que ao clicar nele ligue a TV apague a luz e feche a persiana, etc.

Tudo isso também com a possibilidade de fazer via wi fi ou pela internet.

Alguém teria algumas dicas? Eu poderia postar aqui, conforme o andamento do projeto todo o passo-a-passo da automação inclusive do app em Android para que isso fique acessível para todos.

Caso alguém possa colaborar seria ótimo.

Exibições: 8300

Responder esta

Respostas a este tópico

Impossível php dentro do arduino. html sim é possível.

cara vc pode fazer boa parte disso so no arduino mesmo c vc quiseer passa o e-mail q eu te mando um projeto bem avançado pra vc analizar junto com uns videos que vao te interessar

Boa tarde Jose. Manda no email amkochaki@yahoo.com.br. Estou fazendo testes mas ainda sou iniciante nisso tudo, se puder enviar eu ficaria muito grato.

Tem como mandar no email vasquesra@yahoo.com.br, to no mesmo barco, valeu.

boa noite amigo, você poderia ajudar-me também fornecendo esses arquivos pra mim ? se sim..

diego_gomes88@hotmail.com

valeu!!

Pessoal bom dia!!

Estou precisando de uma ajuda no meu código do arduino. Eu gostaria de fazer uma função para o controle remoto para que eu n ao precisasse escrever o mesmo código para todas as teclas. Fiz o app no android entao cada tecla chama o ip do ethernet shield + o nome da tecla do controle remoto exemplo (192.168.1.119/S_pwr). O meu codigo esta logo abaixo. no Void loop tem as seguinte linha fiz somente duas para nao ficar muito comprido:

if(readString.indexOf("S_pwr")>=0) { irsend.sendRaw(S_pwr, 68, 32); delay(40);}
if(readString.indexOf("S_scr ")>=0) {irsend.sendRaw(S_scr , 68, 32);delay(40);}

as duas linha acima seria uma para cada botão do contole remoto como também esta linha abaixo deve ter uma cada tecla:

unsigned int S_pwr[68]={4550,4400,600,1600,600,1650,600,1600,600,500,600,500,600,500,600,500,600,500,600,1650,600,1600,600,1650,600,500,600,500,600,500,600,500,600,500,600,500,600,1650,550,550,550,550,550,550,550,550,550,550,550,550,600,1600,600,500,600,1650,600,1600,600,1650,600,1600,600,1650,600,1600,600};

O que eu gostaria de saber é se ó possivel criar uma funcão com a linha:

if(readString.indexOf("S_pwr")>=0) { irsend.sendRaw(S_pwr, 68, 32); delay(40);} 

para escreve-la somente uma vez pois o comando que vem do androi ó o numero do ip mais o nome da tecla que eu nomeei igual ao que esta dentro dos parenteses que esta em negrito. Ou seja para cada tecla o que muda é somente o que esta dentro do parentese em negrito. Alguem poderia me dar uma luz?

#include <SPI.h>
#include <String.h>
#include <Ethernet.h>
#include <IRremote.h>
//#include <ArdOSC.h>

byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x9B, 0x36 }; // Endereço Mac
byte ip[] = { 192, 168, 1, 119 }; // Endereço de Ip da sua Rede
EthernetServer server(8090); // Porta de serviço

int led1 = 7; // Pino onde deve ser ligado o led de teste
int led2 = 8;
String readString = String(30); // string para buscar dados de endereço
boolean statusLed1 = false; // Variável para o status do led
boolean statusLed2 = false;
IRsend irsend;
unsigned int S_pwr[68]={4550,4400,600,1600,600,1650,600,1600,600,500,600,500,600,500,600,500,600,500,600,1650,600,1600,600,1650,600,500,600,500,600,500,600,500,600,500,600,500,600,1650,550,550,550,550,550,550,550,550,550,550,550,550,600,1600,600,500,600,1650,600,1600,600,1650,600,1600,600,1650,600,1600,600};
unsigned int S_scr [68]={4500,4400,600,1650,600,1600,600,1650,600,500,600,500,600,500,600,500,600,500,600,1600,600,1650,600,1600,600,500,600,500,600,500,600,500,600,500,600,1650,600,500,600,500,600,500,600,500,600,500,600,500,600,500,600,500,600,1650,550,1650,600,1650,550,1650,600,1650,600,1600,600,1650,600};
unsigned int S_1[68]={4500,4450,550,1650,600,1650,550,1650,600,500,600,500,600,500,600,500,600,500,600,1650,550,1650,600,1650,600,500,600,500,600,500,600,500,600,500,600,500,600,500,600,1600,600,500,600,500,600,500,600,500,600,500,600,1650,600,1600,600,500,600,1650,600,1600,600,1650,600,1650,550,1650,600};

unsigned int S_navDown[68]={4500,4450,550,1650,600,1650,550,1650,600,500,600,500,600,500,600,500,600,500,600,1650,600,1600,600,1650,600,500,600,500,600,500,600,500,600,500,600,1600,600,500,600,500,600,500,600,500,600,1650,600,1600,600,500,600,500,600,1650,600,1600,600,1650,600,1650,550,550,550,550,550,1650,600};
unsigned int S_navLeft[68]=

void setup(){
Ethernet.begin(mac, ip); // Inicia o Ethernet
pinMode(led1, OUTPUT);// Define o pino como saída
pinMode(led2, OUTPUT);
Serial.begin(9600); // Inicia a comunicação Serial
}

void loop(){
EthernetClient client = server.available();// Criar uma conexão de cliente
if (client) {
while (client.connected()){
if (client.available()){
char c = client.read();
if (readString.length() < 30)// ler caractere por caractere vindo do HTTP
{
readString += (c);// armazena os caracteres para string
}
if (c == '\n')//se o pedido HTTP terminou
{
if(readString.indexOf(c)>=0)// vamos verificar se o LED deve ser ligado. Se a string possui o texto L=Ligar
{
digitalWrite(led1, HIGH);// O Led vai ser ligado
// client.print("Led1Ligado");
statusLed1 = true; //dfafsafs
}
if(readString.indexOf("DesligarLed1")>=0)// Se a string possui o texto L=Desligar
{
digitalWrite(led1, LOW);// O Led vai ser desligado
statusLed1 = false;

}

if(readString.indexOf("S_pwr")>=0) { irsend.sendRaw(S_pwr, 68, 32); delay(40);}





if(readString.indexOf("LigarLed2")>=0)// vamos verificar se o LED deve ser ligado. Se a string possui o texto L=Ligar
{
digitalWrite(led2, HIGH);// O Led vai ser ligado
statusLed2 = true;
// client.print("Led2Ligado");
}
if(readString.indexOf("DesligarLed2")>=0)// Se a string possui o texto L=Desligar
{
digitalWrite(led2, LOW);// O Led vai ser desligado
statusLed2 = false;
}





client.println("HTTP/1.1 200 OK");// dados HTML de saída começando com cabeçalho padrão
client.println("Content-Type: text/html");
client.println();
client.print("<font size='20'>");
if (statusLed1) {
client.print("Led1Ligado");
} else {
client.print("Led1Desligado");
}


client.println("HTTP/1.1 200 OK");// dados HTML de saída começando com cabeçalho padrão
client.println("Content-Type: text/html");
client.println();
client.print("<font size='20'>");
if (statusLed2) {
client.print("Led2Ligado");
} else {
client.print("Led2Desligado");
}

if(readString.indexOf("S_pwr")>=0) { irsend.sendRaw(S_pwr, 68, 32); delay(40);}
f(readString.indexOf("S_scr ")>=0) {irsend.sendRaw(S_scr , 68, 32);delay(40);}


switch (c) {
case 0: // your hand is on the sensor
if(readString.indexOf("S_vdown")>=0) { irsend.sendRaw(S_vdown, 68, 32); delay(40);}
break;
}


readString="";//limpa string para a próxima leitura
client.stop(); // parar cliente
}
}
}
}
}

ae marcelo manda o app pra mim assim eu testo aqui e te falo!!!

O cara beleza to enviando no teu email agora

Pessoal

Tenho abaixo parte de um código do arduino é uma comunicação via browser. O char c que pega a informação do browser ele vem da seguinte forma por exemplo eu digito 192.168.1.119/S_vdown   ele retorna a seguinte informação na tela do client.print = "GET /S_vdown HTTP/1.1" esse é o valor do char "c". Então o que eu estou tentando fazer e nao consigo é criar uma variavel que peque somente o "S_vdown" eu preciso de uma variável semente com esta parte do texto. Se alguém puder me dar uma luz eu agradeço.

void setup(){
Ethernet.begin(mac, ip); // Inicia o Ethernet
Serial.begin(9600); // Inicia a comunicação Serial
}

void loop(){
EthernetClient client = server.available();// Criar uma conexão de cliente
if (client) {
while (client.connected()){
if (client.available()){
char c = client.read();
client.print(c);

if (readString.length() < 30)// ler caractere por caractere vindo do HTTP

{
readString += (c);// armazena os caracteres para string

}
if (c == '\n')//se o pedido HTTP terminou
{

readString="";//limpa string para a próxima leitura
client.stop(); // parar cliente
}
}
}
}
}

Olá

 Bem eu criei a um bom tempo atrás um projeto de automação da minha casa, algo simples mais funcional, não desenvolvi o aplicativo para android profissional no eclipse mais criei no AppInvetor, no meu projeto eu consigo controlar iluminarias de dois ambiente da casa, tanto pelo Smatphone via web  e controle remoto IR, etc...

Não sei se entendi bem a sua pergunta, será que você quer criar uma variável que pegue o valor inserido no browser e trata-la ?

 Olha  se for vai uma parte do meu código aonde criei uma variável que pega informações inseridas no browser e trata para acionar o comando que deseja como vai um pequeno trecho do código abaixo:

..........

if (client) {
    while (client.connected())
    {
      if (client.available())
      {
        char c = client.read();

        // ler caractere por caractere vindo do HTTP

        if (readString.length() < 40)
        {
          // armazena os caracteres para string
             readString += (c);
        }
        
        //se o pedido HTTP terminou
       

              if (c == '\n')
          {
         

          // vamos verificar se o a Lampada1 deve ser ligado
          // Se a string possui o texto LigarLampada1


          if(readString.indexOf("LigarLampada1")>=0)
          {
            // A Lampada1 vai ser ligado
            digitalWrite(portaLampada1, HIGH);// aciona o relé
           

                 statusLampada1 = true; // estatus como verdadeiro

          }

          // Se a string possui o texto DesligarLampada1
          if(readString.indexOf("DesligarLampada1")>=0)
          {
            // A lampada  vai ser desligada
            digitalWrite(portaLampada1, LOW);
            statusLampada1 = false; // status Falso
          }
          ...............................................

e Assim por diante no meu app quando acione o botão ligar Lampada1  por exemplo, ele enviar no brower por exemplo seu IP:

http://192, 168, 1, 119/?LigarLampada1

Não sei se é isso que você está pretendendo mais qualquer coisa estamos aqui.

 

 
                 

me mande o código para eu dar uma olhada

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço