Show Posts
Pages: 1 [2]
16  International / Portugues / Ethernet Shield com index.htm no SD, e interagir com arduino COMO? on: April 07, 2012, 05:04:46 pm
Viva Encontrei este codigo que é capaz de armazenar um ficheiro index.htm no SD card do ethernet shield.
Eu consegui fazer com que o aspecto ao abrir o index.htm fosse este:
Agora o que eu pretendia era alterar o codigo, para que quando eu clicasse em uma parte dessa imagem, por exemplo na lampada do lado direito que me acendesse um led.
Alguem e capaz de modificar esse codigo?




/*
 * This is a web server that allows you to host a fully functional html
 *  webpage on the World Wide Web.
 * Initial coding was done with the help from the many people in the Arduino community.
 *  Thanks guys!!
 *
 * Arduino Setup: You need an Ethernet Shield SD, and and Arduino.
 *  Optionally pins 8 and 9 can be used for two LEDs that can indicate traffic.
 *
 * SD Card Setup: On the SD card, which must be formated as fat, you must have
 *  an HTML file with the file name of 'index.htm'. All file names on this card
 *  must be written in the old 8.3 file format. In other words, all files must be
 *  named with no more then 8 characters for the name, and 3 for the extension.
 *
 * Note: If you don't know HTML, a good place that I found useful was w3schools
 *  http://www.w3schools.com/html/html_examples.asp
 *
 */

#include <LiquidCrystal.h>
#include <SPI.h>
#include <SdFat.h>
#include <SdFatUtil.h>
#include <Ethernet.h>
#define BUFSIZ 128
#define greenLEDandBEEP 2
#define redLEDpin 3
boolean led2 = true;
int hits = 0; // Set the number of hits the hit counter will start at.
int units = 0;
int count = 0;
int photocellPin = 2;
int photocellReading;
LiquidCrystal lcd(4, 5, 6, 7, 8, 9);

//Local ethernet setup
byte mac[] = {
  0x90, 0xA2, 0xDA, 0x00, 0x1C, 0x0E };
byte ip[] = {
  192, 168, 1, 80 };
char rootFileName[] = "index.htm";
Server server(8080);

//SD card stuff
Sd2Card card;
SdVolume volume;
SdFile root;
SdFile file;
#define error(s) error_P(PSTR(s))
void error_P(const char* str) {
  PgmPrint("error: ");
  SerialPrintln_P(str);
  if (card.errorCode()) {
    PgmPrint("SD error: ");
    Serial.print(card.errorCode(), HEX);
    Serial.print(',');
    Serial.println(card.errorData(), HEX);
  }
  while(1);
}

void setup() {
  lcd.begin(16, 2);
  lcd.print("Web Server v2.00");
  lcd.setCursor(0, 1);
  lcd.print("Hits:");

  Serial.begin(9600);

  pinMode(greenLEDandBEEP, OUTPUT);
  pinMode(redLEDpin, OUTPUT);

  PgmPrint("Free RAM: ");
  Serial.println(FreeRam()); 

  pinMode(10, OUTPUT);             
  digitalWrite(10, HIGH);             

  if (!card.init(SPI_HALF_SPEED, 4)) error("card.init failed!");

  if (!volume.init(&card)) error("vol.init failed!");

  PgmPrint("Volume is FAT");
  Serial.println(volume.fatType(),DEC);
  Serial.println();

  if (!root.openRoot(&volume)) error("openRoot failed");

  PgmPrintln("Files found in root:");
  root.ls(LS_DATE | LS_SIZE);
  Serial.println();

  PgmPrintln("Files found in all dirs:");
  root.ls(LS_R);

  Serial.println();
  PgmPrintln("Done");

  Ethernet.begin(mac, ip);
  server.begin();
}


void loop()
{
  if(count >=500)
  { 
    led2 = !led2;
    digitalWrite(redLEDpin, led2);
    count = 0;
  }
  count +=1;

  char clientline[BUFSIZ];
  char *filename;
  int image = 0;
  int index = 0;

  Client client = server.available();
  if (client) {
    boolean current_line_is_blank = true;

    index = 0;

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

        if (c != '\n' && c != '\r') {
          clientline[index] = c;
          index++;
          if (index >= BUFSIZ)
            index = BUFSIZ -1;

          continue;
        }

        clientline[index] = 0;
        filename = 0;

        Serial.println(clientline);

        if (strstr(clientline, "GET / ") != 0) {
          filename = rootFileName;

        }
        if (strstr(clientline, "GET /") != 0) {
          if (!filename) filename = clientline + 5;

          (strstr(clientline, " HTTP"))[0] = 0;

          Serial.println(filename);

          if (! file.open(&root, filename, O_READ)) {
            client.println("HTTP/1.1 404 Not Found");
            client.println("Content-Type: text/html");
            client.println();
            client.println("<h2>Error 404</h2>");
            client.println("<s2>The file does not exist.<s2>");
            client.println("");
            break;
          }

          Serial.println("Opened!");
          //File types
          client.println("HTTP/1.1 200 OK");
          if (strstr(filename, ".htm") != 0)
            client.println("Content-Type: text/html");
          else if (strstr(filename, ".css") != 0)
            client.println("Content-Type: text/css");
          else if (strstr(filename, ".png") != 0)
            client.println("Content-Type: image/png");
          else if (strstr(filename, ".jpg") != 0)
            client.println("Content-Type: image/jpeg");
          else if (strstr(filename, ".gif") != 0)
            client.println("Content-Type: image/gif");
          else if (strstr(filename, ".3gp") != 0)
            client.println("Content-Type: video/mpeg");
          else if (strstr(filename, ".pdf") != 0)
            client.println("Content-Type: application/pdf");
          else if (strstr(filename, ".js") != 0)
            client.println("Content-Type: application/x-javascript");
          else if (strstr(filename, ".xml") != 0)
            client.println("Content-Type: application/xml");
          else
            client.println("Content-Type: text");
          client.println();

          int16_t c;
          while ((c = file.read()) >= 0) {
            //Serial.print((char)c); //Prints all HTML code to serial (For debuging)
            client.print((char)c); //Prints all HTML code for web page
          }

          //Hit counter math
          if(units >= 2)
          {
            hits ++;
            units = 0;
          }
          units +=1;
          //End hit counter math

          //Print the hit counters and light value
          lcd.setCursor(6, 1);
          lcd.print(hits); //Print hits for LCD hit counter

          client.print("<html><body>"); //HTML code starts here
          client.print("<P align=\"center\">");
          client.print("Hits since reset: <b>");   
          client.print(hits); //Print hits to client
          client.print("</b><br>");

          photocellReading = analogRead(photocellPin);
          client.print("Light reading: ");
          client.print(photocellReading); //Prints light reading to client

          // A few threshholds
          if (photocellReading < 10) {
            client.print(" - Dark");
          }
          else if (photocellReading < 200) {
            client.print(" - Dim");
          }
          else if (photocellReading < 500) {
            client.print(" - Light");
          }
          else if (photocellReading < 800) {
            client.print(" - Bright");
          }
          else {
            client.print(" - Very bright");
          }

          client.print("</p></body></html>"); //HTML code ends here
          //End hit counter and light value

          file.close();

        }
        else {
          client.println("HTTP/1.1 404 Not Found");
          client.println("Content-Type: text/html");
          client.println();
          client.println("<h2>Error 404</h2>");
          client.println("");
        }
        break;
      }
    }
    digitalWrite(greenLEDandBEEP, HIGH);
    delay(1);
    digitalWrite(greenLEDandBEEP, LOW);
    client.stop();
  }

}

//The End /*
17  International / Portugues / Re: Qual o melhor metodo para comunicar rf em partes diferentes da casa? on: February 29, 2012, 02:17:51 pm
Pois é pessoal,

Este projecto do tonny, tem todo o merito dele..
Apos com estudo, e algumas trocas de email conseguio resolver o que eu queria...
Tive em contacto com muitos membros do brasil até reunir alguma informacao, o tonny fez o favor de montar todo o circuito e esta a funcionar como se esperava.

So falta chegar os meus componentes para por maos a obra.

Ps: Agora pretendesse arranjar forma para adaptar algo bidirecional a este projecto.
18  International / Portugues / Re: Ajuda em projecto (home automation) on: February 25, 2012, 09:38:44 am
so uma das placas e que tem recepçao, pelo que percebi... mas posso estar errado smiley
uma pergunta... o que tu pretendes vai ter interface para poderes usar computador/smartphone/internet tal como eu quero?
eu nao tenho muita experiẽncia nisto, como ja deves ter percebido, e apenas me estou a basear nas informaçoes que vou recolhendo na net... smiley
esses transmissores/receptores sao wireless, assim como os routers?

Abraços

Isto é um transmissor RF radio frequencia e um receptor que trabalha na mesma frequencia. Isto opera por ondas de radio sem fios.
Isto é apenas a parte do hardware tal como o xbee também é.

Depois o interface fazes tu, junto com o arduino que é a parte do cerebro que da informacao para as placas funcionarem
Como te digo esta é a solucao mais economica, so precisas de uma placa emissora e de um encoder

depois poderas ter varias receptores cada um deles com um decoder...

Ve este video:.



Toma nota que o projecto ai esta desenhado em uma breadbord e parece muito grande mas quando isso tiver soldado em uma PCI ,(placa circuito impresso) fica muito pequeno.

Quanto aos preços:

cerca de 6 euros na parte emissora que trabalha junto do arduino ou protuino (mais barato) e so precisas de um emissor.

e cerca de 8 10 euros por cada placa receptora ja com rele de 5v.

Esses preços sao mais ao menos nao foge mt.




19  International / Portugues / Re: Ajuda em projecto (home automation) on: February 24, 2012, 06:16:26 pm
Acho que estas a ver mal a coisa...
Para aquele projecto que te falei, aquilo usa um emissor e um receptor,nao sei se viste bem.
depois usa um encoder e um decoder,quanto as interferencias eu nao exprimentei.. mas falei com os autores dos dois links e garantiram me que nao faz intereferencias.

Quanto ao tamanho da placa tambem e reduzido mt mt mt reduzido da uma vista de olhos nos componentes e veras que sao minimos...so tens que os soldar em uma placa. que ficara mt mt reduzida.
 
No video é so para veres o funcionamento.. e as placas tao enormes existe mt espaço entre os componentes.

Estamos a falar de preço.....para o mesmo efeito que o xbee faz.ou melhor para o que queres fazer e eu tambem.
20  International / Portugues / Re: Ajuda em projecto (home automation) on: February 23, 2012, 07:07:05 pm
maks da uma vista de olhos aqui:

http://blogdonatanael.blogspot.com/2011/12/criando-um-controle-remoto-simples-para.html

e aqui

para fazeres uma comunicacao sem fios é o mais barato que encontras... tambem tenho a mesma ideia que tu e é assim que vou fazer... ja tenho o autor desse segundo site a ajudar me.
21  International / Portugues / O que está mal neste codigo? on: February 21, 2012, 06:16:23 pm
Viva eu tenho um projecto DTMF a funcionar correctamente apenas com um bug...

Ou seja quando eu ligo para o celular e pressiono a tecla 1 ele liga o led do pin 13, coisa que esta errada..

Eu apenas queria que ele ligasse o led do pin 13, quando eu colocasse o codigo 1234 primeiro..

por favor corrijam o que esta errado.

obrigado


#define RELE1 13
#define PASSWORD 1234 // Define a senha


int RELE1_STATE = LOW;




//=======================================================
// ENTRADAS DTMF DIGITAIS
//=======================================================
int pinBit01 = 8;
int pinBit02 = 9;
int pinBit03 = 10;
int pinBit04 = 11;
int pinBitSts= 12;


int bit01 = 0;   
int bit02 = 0;   
int bit03 = 0;   
int bit04 = 0; 
int bitSts= 0; 




boolean proceed = false; //Fag que habilita o funcionamento dos comandos mediante senha digitada corretamente - inicializa falso!


String tmpPass =' '; //Armazenamento da senha digitada no telemóvel!


String password = "1234"; // Defina sua senha aqui - pode ser de quaisquer número de dígitos!


void setup() { 
 
  Serial.begin(9600);
 
  pinMode(RELE1, OUTPUT); 
 
  digitalWrite(RELE1, LOW); 
 


  Serial.println("Aguardando comando...");
}




void loop() { 
 
bitSts= digitalRead(pinBitSts);
bit01 = digitalRead(pinBit01);   
bit02 = digitalRead(pinBit02);   
bit03 = digitalRead(pinBit03);   
bit04 = digitalRead(pinBit04);   


numero   = (bit01 * 1) + (bit02 * 2) + (bit03 * 4) + (bit04 * smiley-cool;


if (bitSts == HIGH && numero < 13) { 
 
Serial.print("Recebido: ");   
switch (numero){
      case 1:
        Serial.println("1");
        tmpPass += '1'; //Adiciona o número digitado em tmpPass
       
        /* COMANDO PARA RELE1 */
        if (proceed == true) // Se proceed é verdadeiro (a senha foi digitada corretamente) comando é executado!
        {
          RELE1_STATE = !RELE1_STATE; // Troca de estado (HIGH/LOW) cada vez que pressionar o botão.
          digitalWrite(RELE1, RELE1_STATE); //Liga-desliga Relé.
        }       
        break;
       
      case 2:
        Serial.println("2");
        tmpPass += '2'; //Adiciona o número digitado em tmpPass
        break;
       
      case 3:
        Serial.println("3");
        tmpPass += '3'; //Adiciona o número digitado em tmpPass
        break;
       
      case 4:
        Serial.println("4");
        tmpPass += '4'; //Adiciona o número digitado em tmpPass
        break;
       
      case 5:
        Serial.println("5");
        tmpPass += '5'; //Adiciona o número digitado em tmpPass
        break;
       
      case 6:
        Serial.println("6");
        tmpPass += '6'; //Adiciona o número digitado em tmpPass
        break;
       
      case 7:
        Serial.println("7");
        tmpPass += '7'; //Adiciona o número digitado em tmpPass
        break;
       
      case 8:
        Serial.println("8");
        tmpPass += '8'; //Adiciona o número digitado em tmpPass
        break;
       
      case 9:
        Serial.println("9");
        tmpPass += '9'; //Adiciona o número digitado em tmpPass
        break;
       
      case 10:
        Serial.println("0");
        tmpPass += '0'; //Adiciona o número digitado em tmpPass
        break;
       
      case 11: // Caractere '*'
        Serial.println("*");
        tmpPass =' '; //Limpa para armazenar a senha novamente!
        proceed = false; //Desabilita todos os comandos até que a senha seja digitada novamente!
        break;
       
      case 12: // Caractere '#'
        Serial.println("#");
       
        tmpPass = tmpPass.trim();//Retira os espaços em branco - ver caractere '*'!
   
        if (tmpPass == password) { // Se a senha digitada for igual a senha armazenada...
          Serial.println("Senha correta!");
          proceed = true; //Habilita todos os comandos via telemóvel
        }else{
          Serial.println("Senha ERRADA!");
          proceed = false; //Desabilita todos os comandos via telemóvel
        }
       
        /*
        //Caso queira ver a saida da senha é só descomentar
        Serial.print("tmpPass= ");
        Serial.println(tmpPass);
        Serial.print("password= ");
        Serial.println(password);
        */
       
        break;   
  }


 
 
 // Zeram todas as variáveis
  numero = 0;
  bit01 = 0;   
  bit02 = 0;   
  bit03 = 0;   
  bit04 = 0;   
  bitSts= 0; 
  delay (500);
  }


}





22  International / Portugues / Re: Qual o melhor metodo para comunicar rf em partes diferentes da casa? on: February 20, 2012, 08:04:48 pm
bom esse ultimo topico me parece genial e super economico de fazer.

Agora fica a questao, e possivel entao com o arduino e com a placa do transmissor:



depois ligar 8 reles separados em 8 placas destas espalhadas pela casa:

http://1.bp.blogspot.com/-jUdswc0yhJo/Tud8IGQyC-I/AAAAAAAABP8/ddDtODglCAQ/s400/receptor.png

?

da para entao controlar atraves do arduino os 8 reles individualmente sem haver conflitos em frequencias?
23  Topics / Home Automation and Networked Objects / home automation with encoder and decoder ht12e e ht12d on: February 20, 2012, 07:20:29 pm
hello friend,s


I have an Arduino uno with an RF transmitter 315mhz and a ht12e. (encoder)

and also have three rf receivers 315 mhz and three ht12d (decoders) and three relays 5v

is possible through the arduino I connect the three relays remotely in three different divisions of the house?

if so, someone send me the code please?
24  International / Portugues / Re: Qual o melhor metodo para comunicar rf em partes diferentes da casa? on: February 19, 2012, 06:41:32 pm
Bom esses eu ja tinha pesquisado... mas as minhas ultimas palavras foram "barato" isso é muito caro nao existe alternativa mais em conta?
25  International / Portugues / Qual o melhor metodo para comunicar rf em partes diferentes da casa? on: February 19, 2012, 04:57:54 pm
Viva boa noite, venho por este meio pedir a vossa ajuda para iniciar um outro projecto.

Pretendo comunicar em partes diferentes da casa com o arduino via RF.

Consultei na net e vi em duas hipoteses  a primeira é esta:

http://blog.rogiervandenberg.nl/control-lights-with-an-arduino-remotely

esta tem um defeito que é esses packs vêm com 3 ou 5 tomadas, caso quisesse ter mais packs havia conflitos com as frequencias...


o segundo metodo e que me parece mais caro.. comprando os componentes todos é este:

http://linuxresort.blogspot.com/2011/12/rf-transmissor-e-receptor.html
teria que comprar para alem de 8 atmegas328, teria que comprar tambem mais 8 receptores rf... logo ai ja ficaria mais caro que uma tomada do metodo acima.

aguardo as vossas respostas para outra maneira que vejam que e melhor. e mais barato
26  International / Portugues / qual a melhor solucao para este projecto. candeeiros com comando on: February 12, 2012, 07:25:29 am
viva tenho um arduino uno e gostava da vossa ajuda no seguinte:

Tenho dois candeeiros de pé ao lado de o sofa, gostaria de saber qual o metodo mais facil de os ligar utilizando um comando IR. obrigado desde já
27  International / Portugues / Re: ACENDER EQUIPAMENTOS POR CELULAR , PROJECTO DTMF on: December 22, 2011, 07:33:50 pm
FABIO

Muito obrigado.... agora sim funciona na perfeicao estive tao perto....


Mais uma questao a voces..

Agora para tornar este projecto seguro...

Dá para colocar um PIN antes de carregar na tecla que activa o rele?

Ou seja, quando ligo para o telemovel, em vez de carregar na tecla 2 para ligar o rele... pressionar primeiro o meu codigo ex: 2012 e so depois tecla 2... ou 3 4 5.. etc

Se sim, que alteracao deva fazer a esse codigo?

Muito obrigado
28  International / Portugues / ACENDER EQUIPAMENTOS POR CELULAR , PROJECTO DTMF on: December 21, 2011, 04:22:54 pm
Viva, companheiros, há muito que tencionava me iniciar com o Arduino e elaborar alguns projectos de automaçao, mas como primeiro projecto, não está a correr nada bem....ou pelo menos como esperava.

O que se passa e o seguinte: eu estou a usar o seguinte tutorial que esta neste site:

http://arduino-ce.blogspot.com/

é logo o primeiro que aparece.

O que me está a acontecer é o seguinte: Eu ja consegui estabelecer ligacao entre o arduino e o telemovel, mas sempre que clico em uma tecla correspondente a um tom DTMF, o arduino nao corresponde a essa tecla... exemplo se carregar na tecla 3 ele retorna como 8, se carregar na tecla 5 ele retorna 4.. e assim em adiante...

pensava que tinha o integrado e o cristal danificados... comprei outros mas nao resultou...
Tambem troquei de telemovel... mas continua igual..

Já nao sei o que fazer... se alguem quiser exprimentar por favor exprimente e comunique aqui os resultados obtidos.

E se alguem tiver uma sugestao, para me explicar porque isto nao funciona tambem agradecia.

Obrigado






Pages: 1 [2]