Pages: [1]   Go Down
Author Topic: ACENDER EQUIPAMENTOS POR CELULAR , PROJECTO DTMF  (Read 1204 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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






Logged

'round the world...
Offline Offline
Faraday Member
**
Karma: 41
Posts: 3108
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

3 = 0011  8 = 1000

5 = 0101  4 = 0100

Estava a tentar estabelecer aqui um padrão.

Copiaste o código literalmente como estava no site? Se sim, o problema estará no descodificador DTMF ou ligações. Assim sendo, para poderes definir se é nas ligações ou no chip, desliga as ligações do descodificador ao Arduino e faz jumpers nas entradas digitais do Arduino referentes a Q0, 1, 2, 3 e vê se ao fazer isso o Arduino responde correctamente. Se responder, o problema estará no lado do descodificador.

Podes colocar aqui os resultados que obténs carregando em todas as teclas? 
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

0
Offline Offline
Full Member
***
Karma: 2
Posts: 124
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Estive brincando com isso mês passado com o mesmo tutorial que você e tive problemas também, aquele codigo está todo confuso e errado, segue um trecho do código do próprio site, não sei como colocam sem testar...
Code:
#define pinBit01  3 // STD
#define pinBit02  4 // Q3
#define pinBit03  5 // Q2
#define pinBit04  6 // Q1
#define pinBitStd 7 // Q0
Como a gente presume que o código já foi debugado acha que é falta de atenção na montagem ou componente queimado né,
na protoboard não ia pra frente então fiz a montagem em uma placa universal e corrigi o código. Segue o meu código para testar antes de desmontar a protoboard...
Code:
#define RELE1 2 // Conectado ao fio branco do módulo Relé(Figura4)

#define pinBitStd 3
#define pinBit04  4
#define pinBit03  5
#define pinBit02  6
#define pinBit01  7

int tecla = 0;

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

int RELE1_STATE = LOW; // Estado do Relé LOW (Desligado)

void setup() {
  Serial.begin(9600); // Iniciamos a Serial com Baudrate 9600
  pinMode(RELE1, OUTPUT); // Definimos o pino do Relé como Saída
  Serial.println(" ");
  Serial.println("Aguardando tecla de comando..."); // Exibimos a mensagem no terminal...
}

void loop(){

//  bitStd = digitalRead(pinBitStd); //Lê o estado do pino STD e armazena em 'bitStd'

while(!digitalRead(pinBitStd)){;}
 
  if (digitalRead(pinBitStd)) {//Se estiver em nível alto fará as leituras
                       //dos bits dos pinos Q3, Q2, Q1 e Q0

    bit01 = digitalRead(pinBit01);   
    bit02 = digitalRead(pinBit02);
    bit03 = digitalRead(pinBit03);
    bit04 = digitalRead(pinBit04);

    tecla = (bit04 * 8) + (bit03 * 4) + (bit02 * 2) + (bit01 * 1);//Conversão binária para
                                                                  //decimal (ver Vídeo1)

//    Serial.print("Recebido: "); // Exibe a mensagem

    switch (tecla){ // Seleciona a tecla pressionada

    case 1: // Tecla 1
      Serial.print("1");     
      /* COMANDO PARA RELE1 */
      RELE1_STATE = !RELE1_STATE; // Guarda o estado INVERTIDO do Relé.     
      break;

    case 2: // Tecla 2
      Serial.print("2");               
      break;

    case 3: // Tecla 3
      Serial.print("3");
      break;

    case 4: // Tecla 4
      Serial.print("4");
      break;

    case 5: // Tecla 5
      Serial.print("5");
      break;

    case 6: // Tecla 6
      Serial.print("6");
      break;

    case 7: // Tecla 7
      Serial.print("7");
      break;

    case 8: // Tecla 8
      Serial.print("8");
      break;

    case 9: // Tecla 9
      Serial.print("9");
      break;

    case 10: // Tecla 0
      Serial.print("0");
      break;

    case 11: // Tecla *
      Serial.print("*");
      break;

    case 12: // Tecla #
      Serial.print("#");
      break;
    }

//    digitalWrite(RELE1, RELE1_STATE);//Liga ou desliga o Relé1 conforme o estado (HIGH/ LOW)

    // Zeram-se todas as variáveis
    //tecla = 0;
    //bit01 = 0;   
    //bit02 = 0;
    //bit03 = 0;
    //bit04 = 0;
    //bitStd= 0;
delay (100); // Aguarda 500 milissegundos
  } // Sai do switch
while(digitalRead(pinBitStd)){;}
 
} // Volta pro loop...

Observe que os pinos estão configurados no meu codigo como os desenhos do site, então siga as instruções de montagem.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Pages: [1]   Go Up
Jump to: