Projeto: Abrir portão via telefone com Arduino + DTMF

1,601 views
Skip to first unread message

Mateus De Sordi

unread,
Feb 8, 2012, 2:59:46 PM2/8/12
to arduino-brasilia
Olá pessoal, alguém sabe algum site que vende algum CI DTMF como o
MT8870? Já vi vários projetos desse com arduino, mas nunca vi um com
telefone fixo. Alguém sabe se o arduino é capaz de atender o telefone
fixo?

Valeu!

Mateus De Sordi.

Douglas Ramiro

unread,
Feb 8, 2012, 4:32:02 PM2/8/12
to arduino-...@googlegroups.com
aqui

http://huinfinito.com.br/decodificadores/201-ht9170b-decodificador-de-dtmf.html


Mateus De Sordi.

--
Você recebeu esta mensagem porque está inscrito no
Grupo "arduino-brasília" nos Grupos do Google.
E-mail: arduino-...@googlegroups.com
Url: http://groups.google.com.br/group/arduino-brasilia?hl=pt-BR
Sair: arduino-brasil...@googlegroups.com



--
Douglas Ramiro
_____________________________________
Java Developer
Sun Certified Java Associate (SCJA)
Sun Certified Java Programmer (SCJP)
JBoss Certified Application Administrator (JBCAA)
JBoss Certified Instructor (JBCI)

Marcelo Melo

unread,
Feb 8, 2012, 4:48:45 PM2/8/12
to arduino-...@googlegroups.com
Da uma olhadinha aqui http://arduino-ce.blogspot.com/2011/03/automacao-residencial-com-celular.html

Um amigo de Portugal me pediu alterações nesse projeto de forma a controlar dispositivos via DTMF após a digitação de uma senha! Se quiser tenho o cod fonte e posso postar aqui!

Abraço!

Atenciosamente,

Marcelo L. Melo
[ARDUINO-CE Comunidade de Hardware Livre do Ceará]
http://arduino-ce.blogspot.com/
Skype: marcelo.laranjeira.melo
MSN: marcelol...@hotmail.com
E-mail: marcel...@yahoo.com.br/ marcelola...@gmail.com
Twitter:@marcelorange
http://www.linkedin.com/profile/view?id=95331519
http://www.facebook.com/profile.php?id=100000113978771




Mateus De Sordi.

--
Você recebeu esta mensagem porque está inscrito no
Grupo "arduino-brasília" nos Grupos do Google.
E-mail: arduino-...@googlegroups.com
Url: http://groups.google.com.br/group/arduino-brasilia?hl=pt-BR
Sair: arduino-brasil...@googlegroups.com



--






Marcelo Melo

unread,
Feb 8, 2012, 4:56:41 PM2/8/12
to arduino-...@googlegroups.com
Ah, desculpe esse projeto é com tel celular atendendo. Se quiser que o fixo atenda pode fazer um circuito medidor de tensão da linha na porta analógica do Arduino. Em geral os telefones "no gancho" tem uma tensão da ordem de 36V, quando estão tocando essa tensão dobra. No circuito vc pode fazer com que o Arduino detecte 3 alterações de tensão em um determinado espaço de tempo e "abra" a microchave do tel que está no gancho (terá que abrir o telefone, obviamente...).

Uma solução bem mais simples eh programar um tel que tenha recurso de secretária eletrônica, após 3 toques ele atenderá o telefone e começara a reproduzir uma gravação para deixar recado... nesse instante de tempo poderá utilizar a linha para acionar os dispositivos via DTMF.

Abraço e desculpe o post anterior! 
--





Mateus De Sordi

unread,
Feb 9, 2012, 9:50:31 PM2/9/12
to arduino-brasilia
Valeu pelas respostas pessoal!

Marcelo, poderia me mandar o código??
Vou tentar fazer antes com um celular e depois tento no fixo daqui de
casa. Fiquei encucado com a solução do condomínio do Douglas. Como
fazer o celular só tocar com telefones na lista? Deve ser uma opção do
telefone. Não é possivel. =P
Depois de funcionando no celular eu tento com o telefone fixo. 36V,
72V? Devo utilizar um divisor de tensão para medir isso, né?

Abraço!

On Feb 8, 7:56 pm, Marcelo Melo <marcelo.laranjeira.m...@gmail.com>
wrote:
> Ah, desculpe esse projeto é com tel celular atendendo. Se quiser que o fixo
> atenda pode fazer um circuito medidor de tensão da linha na porta analógica
> do Arduino. Em geral os telefones "no gancho" tem uma tensão da ordem de
> 36V, quando estão tocando essa tensão dobra. No circuito vc pode fazer com
> que o Arduino detecte 3 alterações de tensão em um determinado espaço de
> tempo e "abra" a microchave do tel que está no gancho (terá que abrir o
> telefone, obviamente...).
>
> Uma solução bem mais simples eh programar um tel que tenha recurso de
> secretária eletrônica, após 3 toques ele atenderá o telefone e começara a
> reproduzir uma gravação para deixar recado... nesse instante de tempo
> poderá utilizar a linha para acionar os dispositivos via DTMF.
>
> Abraço e desculpe o post anterior!
>
> Em 8 de fevereiro de 2012 18:48, Marcelo Melo <
> marcelo.laranjeira.m...@gmail.com> escreveu:
>
>
>
>
>
>
>
>
>
> > Da uma olhadinha aqui
> >http://arduino-ce.blogspot.com/2011/03/automacao-residencial-com-celu...
>
> > Um amigo de Portugal me pediu alterações nesse projeto de forma a
> > controlar dispositivos via DTMF após a digitação de uma senha! Se quiser
> > tenho o cod fonte e posso postar aqui!
>
> > Abraço!
>
> > Atenciosamente,
>
> > Marcelo L. Melo
> > [ARDUINO-CE Comunidade de Hardware Livre do Ceará]
> >http://arduino-ce.blogspot.com/
> > Skype: marcelo.laranjeira.melo
> > MSN: marcelolaranje...@hotmail.com
> > E-mail: marcelora...@yahoo.com.br/ marcelolaranjeir...@gmail.com
> > Em 8 de fevereiro de 2012 16:59, Mateus De Sordi <mateusdeso...@gmail.com>escreveu:
>
> > Olá pessoal, alguém sabe algum site que vende algum CI DTMF como o
> >> MT8870? Já vi vários projetos desse com arduino, mas nunca vi um com
> >> telefone fixo. Alguém sabe se o arduino é capaz de atender o telefone
> >> fixo?
>
> >> Valeu!
>
> >> Mateus De Sordi.
>
> >> --
> >> Você recebeu esta mensagem porque está inscrito no
> >> Grupo "arduino-brasília" nos Grupos do Google.
> >> E-mail: arduino-...@googlegroups.com
> >> Url:http://groups.google.com.br/group/arduino-brasilia?hl=pt-BR
> >> Sair: arduino-brasil...@googlegroups.com
>
> > --
>
> > <http://www.facebook.com/profile.php?id=100000113978771>
>
> --

Marcelo Melo

unread,
Feb 12, 2012, 7:34:01 AM2/12/12
to arduino-...@googlegroups.com
Desculpe a demora Mateus! Segue o código conforme solicitado!

Após digitar a senha (*1234#) vc liga-desliga o relé pressionando o botão 1! Para sair do modo de controle basta pressionar *


/*
ARDUINO-CE
DTMF CONTROL PASSWORD V1.0 REV0.0
Acionamento de comandos via senha previamente informada
A senha deverá ser do tipo '*senha#'.
No exemplo a senha é *1234#
http://arduino-ce.blogspot.com/2011/03/automacao-residencial-com-celular.html
*/

int numero;

#define RELE1 53
#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; //Flag que habilita o funcionamento dos comandos mediante senha digitada corretamente - inicializa falso!

String tmpPass =' '; //Armazenamento da senha digitada no celular!

String password = "1234"; // Defina sua senha aqui - pode ser de quaisquer números de digitos!

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 * 8);

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

Mateus De Sordi

unread,
Feb 13, 2012, 8:01:50 AM2/13/12
to arduino-brasilia
Valeu Marcelo! Muito fera o código! Tem várias coisas que eu não havia
pensado em implementar, como o botão para zerar a senha.

On Feb 12, 10:34 am, Marcelo Melo <marcelo.laranjeira.m...@gmail.com>
wrote:
> *Desculpe a demora Mateus! Segue o código conforme solicitado!
>
> Após digitar a senha (*1234#) vc liga-desliga o relé pressionando o botão
> 1! Para sair do modo de controle basta pressionar * *
>
> /*
> ARDUINO-CE
> DTMF CONTROL PASSWORD V1.0 REV0.0
> Acionamento de comandos via senha previamente informada
> A senha deverá ser do tipo '*senha#'.
> No exemplo a senha é *1234#http://arduino-ce.blogspot.com/2011/03/automacao-residencial-com-celu...
> <mateusdeso...@gmail.com>escreveu:

Marcelo Melo

unread,
Feb 13, 2012, 6:04:25 PM2/13/12
to arduino-...@googlegroups.com
Por nada! Se puder ajudar em algo pode contar comigo! ;-)

Mateus De Sordi

unread,
Feb 20, 2012, 9:07:22 AM2/20/12
to arduino-brasilia
Preciso de ajuda!

Tentei montar o circuito ontem daquele site:
http://arduino-ce.blogspot.com/2011/03/automacao-residencial-com-celular.html

Alguém já montou esse circuito? Não funcionou.
Tentei com o MT8870CE que comprei na contato, só que eu só tinha 1
resistor de 100k e usei outro de 120k. O de 300k, não é comercial,
então usei um de 330k. Faz diferença? Posso colocar 2 de 150k em
série. Eliminei o arduino colocando um regulador de tensão para 5V e
liguei o circuito com uma bateria. Na saída do MT8870 coloquei leds e
resistores de 10k.

Depois, tentei com outro CI, que comprei no huinfinito. O HT9170B. De
acordo com seu datasheet, o circuito é igual ao do 8870, exceto que é
necessário conectar 2 capacitores de 22pF aterrando as duas pontas do
cristal. Eu não tenho esse capacitor, então não posso dizer que essa é
a causa do problema. Mas o circuito com o 8870 deveria funcionar!

Alguém sabe se o plug de fone deve ser mono ou estéreo ou tanto faz?
Estou usando mono.

Obrigado,

Mateus.

On 13 fev, 21:04, Marcelo Melo <marcelo.laranjeira.m...@gmail.com>
wrote:
> Por nada! Se puder ajudar em algo pode contar comigo! ;-)
>
> Em 13 de fevereiro de 2012 10:01, Mateus De Sordi
> <mateusdeso...@gmail.com>escreveu:
> >www.linkedin.com/profile/view?id=95331519http://www.facebook.com/prof...
>
> > --
> > Você recebeu esta mensagem porque está inscrito no
> > Grupo "arduino-brasília" nos Grupos do Google.
> > E-mail: arduino-...@googlegroups.com
> > Url:http://groups.google.com.br/group/arduino-brasilia?hl=pt-BR
> > Sair: arduino-brasil...@googlegroups.com
>
> --
>
> Atenciosamente,
>
> Marcelo L. Melo
> [ARDUINO-CE Comunidade de Hardware Livre do Ceará]http://arduino-ce.blogspot.com/
> Skype: marcelo.laranjeira.melo
> MSN: ...
>
> mais »

Marcelo Melo

unread,
Feb 22, 2012, 7:15:11 AM2/22/12
to arduino-...@googlegroups.com
Olá Mateus eu montei o circuito e funcionou! rsrs
O valor não é critico, a maioria dos circuitos usam 300k, eu usei 330k!
Verifique as conexões e o cristal. Também tive problemas com longos fios na protoboard!
Detalhe importante: coloque um altofalante na saída do plug e pressione os botões do celular, verifique se há tom DTMF, caso não ouça verifique a conexão do plug! O plug utilizado é mono mas caso não tenha coloque um estereo e verifique a canexão da saída de som- não usar a do microfone!
Ah.. e coloque um led no pino STS do MT8870 ele identifica se recebeu to tom DTMF do celular!!!

Verifiqe e nos dê um retorno!





Atenciosamente,

Marcelo L. Melo
[ARDUINO-CE Comunidade de Hardware Livre do Ceará]
http://arduino-ce.blogspot.com/
Skype: marcelo.laranjeira.melo

Mateus De Sordi

unread,
Feb 22, 2012, 8:25:02 AM2/22/12
to arduino-brasilia
Valeu Marcelo!

Vou tentar aqui.
Abraço!

On Feb 22, 10:15 am, Marcelo Melo <marcelo.laranjeira.m...@gmail.com>
wrote:
> Olá Mateus eu montei o circuito e funcionou! rsrs
> O valor não é critico, a maioria dos circuitos usam 300k, eu usei 330k!
> Verifique as conexões e o cristal. Também tive problemas com longos fios na
> protoboard!
> Detalhe importante: coloque um altofalante na saída do plug e pressione os
> botões do celular, verifique se há tom DTMF, caso não ouça verifique a
> conexão do plug! O plug utilizado é mono mas caso não tenha coloque um
> estereo e verifique a canexão da saída de som- não usar a do microfone!
> Ah.. e coloque um led no pino STS do MT8870 ele identifica se recebeu to
> tom DTMF do celular!!!
>
> Verifiqe e nos dê um retorno!
>
> Atenciosamente,
>
> Marcelo L. Melo
> [ARDUINO-CE Comunidade de Hardware Livre do Ceará]http://arduino-ce.blogspot.com/
> Skype: marcelo.laranjeira.melo
> Twitter:@marcelorangehttp://www.linkedin.com/profile/view?id=95331519http://www.facebook.com/profile.php?id=100000113978771
>
> Em 20 de fevereiro de 2012 11:07, Mateus De Sordi
> <mateusdeso...@gmail.com>escreveu:
>
>
>
>
>
>
>
> > Preciso de ajuda!
>
> > Tentei montar o circuito ontem daquele site:
>
> >http://arduino-ce.blogspot.com/2011/03/automacao-residencial-com-celu...
> ...
>
> read more »

Marcelo Boá

unread,
Feb 22, 2012, 6:26:22 PM2/22/12
to arduino-...@googlegroups.com
Mateus, tem que se ligar aí no Protoboard porque é muito comum mal contato! Já ralei muito com mau contato em protoboard quando eu era técnico. Principalmente quando o numero de fios é grande. Usa o multímetro pra saber se o sinal tá chegando.

Mateus De Sordi

unread,
Feb 23, 2012, 1:01:16 PM2/23/12
to arduino-brasilia
Marcelo,
Ontem tive um tempinho e fui arrumar o circuito. Quando testei o plug,
já não obtive o tom do DTMF!! No fds vou ter tempo de arrumar tudo e
respondo como está indo o trabalho.

Valeu pela ajuda!

On 22 fev, 21:26, Marcelo Boá <marcelorosa1...@gmail.com> wrote:
> Mateus, tem que se ligar aí no Protoboard porque é muito comum mal contato!
> Já ralei muito com mau contato em protoboard quando eu era técnico.
> Principalmente quando o numero de fios é grande. Usa o multímetro pra saber
> se o sinal tá chegando.
>
> Em 22 de fevereiro de 2012 10:25, Mateus De Sordi
> <mateusdeso...@gmail.com>escreveu:
> >www.linkedin.com/profile/view?id=95331519http://www.facebook.com/prof...
> ...
>
> mais »- Ocultar texto das mensagens anteriores -
>
> - Mostrar texto das mensagens anteriores -

cezar Júnior Pinheiro

unread,
Sep 20, 2015, 5:02:58 PM9/20/15
to arduino-brasilia
quando fui compilar deu esse erro... Pode me Ajudar ?









Opções de compilação alteradas, recompilando tudo
sketch_sep19a:27: error: conversion from 'char' to 'String' is ambiguous

sketch_sep19a.ino:27:17: note: candidates are:

In file included from D:\Desktop\GRAVADOR CORRETO\arduino\arduino-nightly\hardware\arduino\avr\cores\arduino/Arduino.h:223:0,

from sketch\sketch_sep19a.ino.cpp:1:

D:\Desktop\GRAVADOR CORRETO\arduino\arduino-nightly\hardware\arduino\avr\cores\arduino/WString.h:61:2: note: String::String(const __FlashStringHelper*) <near match>

String(const __FlashStringHelper *str);

^

D:\Desktop\GRAVADOR CORRETO\arduino\arduino-nightly\hardware\arduino\avr\cores\arduino/WString.h:61:2: note: no known conversion for argument 1 from 'char' to 'const __FlashStringHelper*'

D:\Desktop\GRAVADOR CORRETO\arduino\arduino-nightly\hardware\arduino\avr\cores\arduino/WString.h:59:2: note: String::String(const char*) <near match>

String(const char *cstr = "");

^

D:\Desktop\GRAVADOR CORRETO\arduino\arduino-nightly\hardware\arduino\avr\cores\arduino/WString.h:59:2: note: no known conversion for argument 1 from 'char' to 'const char*'

sketch_sep19a.ino: In function 'void loop()':

sketch_sep19a:124: error: no match for 'operator=' (operand types are 'String' and 'void')

sketch_sep19a.ino:124:17: note: candidates are:

In file included from D:\Desktop\GRAVADOR CORRETO\arduino\arduino-nightly\hardware\arduino\avr\cores\arduino/Arduino.h:223:0,

from sketch\sketch_sep19a.ino.cpp:1:

D:\Desktop\GRAVADOR CORRETO\arduino\arduino-nightly\hardware\arduino\avr\cores\arduino/WString.h:86:11: note: String& String::operator=(const String&)

String & operator = (const String &rhs);

^

D:\Desktop\GRAVADOR CORRETO\arduino\arduino-nightly\hardware\arduino\avr\cores\arduino/WString.h:86:11: note: no known conversion for argument 1 from 'void' to 'const String&'

exit status 1D:\Desktop\GRAVADOR CORRETO\arduino\arduino-nightly\hardware\arduino\avr\cores\arduino/WString.h:87:11: note: String& String::operator=(const char*)

String & operator = (const char *cstr);

^


D:\Desktop\GRAVADOR CORRETO\arduino\arduino-nightly\hardware\arduino\avr\cores\arduino/WString.h:87:11: note: no known conversion for argument 1 from 'void' to 'const char*'

D:\Desktop\GRAVADOR CORRETO\arduino\arduino-nightly\hardware\arduino\avr\cores\arduino/WString.h:88:11: note: String& String::operator=(const __FlashStringHelper*)

String & operator = (const __FlashStringHelper *str);

^

D:\Desktop\GRAVADOR CORRETO\arduino\arduino-nightly\hardware\arduino\avr\cores\arduino/WString.h:88:11: note: no known conversion for argument 1 from 'void' to 'const __FlashStringHelper*'

D:\Desktop\GRAVADOR CORRETO\arduino\arduino-nightly\hardware\arduino\avr\cores\arduino/WString.h:90:11: note: String& String::operator=(String&&)

String & operator = (String &&rval);

^

D:\Desktop\GRAVADOR CORRETO\arduino\arduino-nightly\hardware\arduino\avr\cores\arduino/WString.h:90:11: note: no known conversion for argument 1 from 'void' to 'String&&'

D:\Desktop\GRAVADOR CORRETO\arduino\arduino-nightly\hardware\arduino\avr\cores\arduino/WString.h:91:11: note: String& String::operator=(StringSumHelper&&)

String & operator = (StringSumHelper &&rval);

^

D:\Desktop\GRAVADOR CORRETO\arduino\arduino-nightly\hardware\arduino\avr\cores\arduino/WString.h:91:11: note: no known conversion for argument 1 from 'void' to 'StringSumHelper&&'

conversion from 'char' to 'String' is ambiguous

Reply all
Reply to author
Forward
0 new messages