Arduino e telefone

E ae gente? tudo jóia?

Pois é, fiquei um tempo por fora, me desculpem, mas agora apareceu outra buxinha pra resolver, ai me força a ficar rodeando :wink:

Bem, estou com um probleminha pra resolver, +/- assim: um arduino, numa ponta um telefone, na outra ponta a linha telefonica e o computador na porta serial. A ideia é que quando o telefone discar, e terminas a ligação, o arduino "Bilhete" o numero que discaram, e o tempo da ligação.

Bem, eu sei que é possivel, mas alguem tem uma ideia de como começar isso? ou alguma ideia a complementar? Qualquer ideia é bem vinda, pois o projeto esta bem cru ainda.

Valeu pessoal =)

E ae Bruno, tudo bom cara?

De uma olhada: Arduino DTMF Hacking/Decoding - YouTube tem varios videos mostrando o Arduino com um decodificador DTMF.

Att, denadai

poxa, legal, pelo menos eu ja sei o nome do que preciso fazer, ficou mais facil de procurar uaheuhae

ps: esse video que vc mandou ai é muito legal mesmo, no meu caso só trocaria para a porta serial ao invez de um lcd, show =)

Bem, só pra manter um histórico, eu montei isso

http://www.whatcircuits.com/wp-content/uploads/2008/07/dtmf-receiver-ic-mt8870-tester.jpg

E funcionou bem, só não ficou melhor por que houve um ruido na linha. Não consegui resolver isso, tentei trocar o regulador, tentei utilizar outra fonte (independente da do arduino), tentei adicionar um capacitor entre o gnd e a linha, mas nada tira o ruido. Se alguém tiver uma ideia, show de bola =)

Próximo passo agora, é converter os 4 dígitos para serial. Conheço o 595, que faz o inverso, se um serial, envia 8bits. Alguém conhece uma forma de 4 bits entrar serialmente? já tenho o clock, que no link enviado é o LED 5, assim economizo porta, e consigo por mais linhas telefonicas :wink:

Bem, a coisa ta fluindo =)

Próximo passo agora, é converter os 4 dígitos para serial. Conheço o 595, que faz o inverso, se um serial, envia 8bits. Alguém conhece uma forma de 4 bits entrar serialmente?

O 165 (74HC165), faz justamente o contrário do 595 e o princípio de funcionamento é exatamente o mesmo.

Quanto à esse ruído que você falou, seria um ruído de fundo ao falar no telefone? Não sei o que pode ser, mas tem várias coisas que podem ser testadas nesse circuito para melhorar a isolação da linha... usar um seguidor de tensão, usar capacitores e resistores menores, trançar o GND com a linha...todos os anteriores hehe :stuck_out_tongue:

Sinceramente sei quase nada de circuitos de frequência, mas sei que resistores próximos ou superiores à 100K, costumam atrair ruídos...

Opa Osias, valeu pela dica do 74HC165, ja dei uma procurada e é o que eu quero mesmo, ja adicionei na minha próxima compra.

Sobre saber quando o telefone esta no gancho ou não, fiz um divisor de tensão, e liguei na analógica, 48v com o tel no gancho, 7 com ele fora do gancho. Não sei ainda se depende do aparelho ligado na linha, mas acredito que não, que vá funcionar perfeito.

Sobre o ruido ainda não consegui descobrir o que fazer

Achei este outro esquema [1], com menos resistores e funcionou igual ao outro que mandei acima, também com o ruido. Noto que o ruido acontece quando ligo a ponta da linha no GND, talvez eu precise de um filtro justamente ai, entre o GDN e a linha, mas nao sei como fazer.
Gostei da dica dos resitores, a tarde vou tentar tirar esses resistores de 100K e colocar 2 de 50K em paralelo, nao vai me custar nada tentar =)

Valeu gente!

[1] https://web.archive.org/web/20161204075124/http://www.uchobby.com/wp-content/uploads/2007/09/mt8870-1-small.jpg

Pois é pessoal, descobri que é o arduino que da dando esse ruido todo.

Coloquei uma fonte aparte para o arduino e outro pro dtmf, ai parou o ruido, ficou perfeito.

Ai liguei o Q0 do 8870 na porta digital 0 do arduino, ja começou a xiar de novo, mesmo com o arduino desligado, se eu ligo qualquer coisa nele, xia =/

Alguma ideia de como tirar esses ruidos do arduino? usar hbridge talvez funcionaria, mas acho que não é o correto né? aueuae

Um bom meio de "isolar" circuitos de leitura, é colocando um seguidor (no seu caso com a frequência adequada). Assim o circuito que vai ler não interfere no ponto que está sendo lido (acho que fui confuso aqui mas dá pra entender a idéia hehe).

Pesquisa algo à respeito, de cabeça não estou lembrando de nenhum CI alem do 74hc245 e do LM741 que dá pra usar, mas não sei se esses atendem.

Bom dia Osias e pessoal que vem acompanhando.

Ao ler sua msg tive a sacada de tirar a porta serial do arduino e tudo ficou normal, acredito fortemente agora que o problema esta em meu aterramento (ou em nao ter um aterramento auehuahe) no computador, infelizmente nao tenho onde testar com aterramento, mas ja é um grande passo para a humanidade =)))

Bem, é isso, agora vou fazer umas compras, e montar um prototipo, assim que estiver pronto, vou passar para outras funcionalidades =D

Valeu gente =)

Tem razão Bruno, mas na verdade não é que tem problema no aterramento do computador, mas é que o aterramento do computador É um problema...

Evite deixar o Arduino ligado no computador quando for usar circuitos de frequência, ou para medição que exija uma certa sensibilidade,
as portas do computador são fontes realmente incríveis...de ruído :stuck_out_tongue:

Poxa, mas o problema é que sem a porta serial o hardware perde o sentido. Andei pesquisando em fazer uma saída para comunicação usb, porem usa o ftdi (isso mesmo?) que não consigo encontrar para rápida entrega.

Ainda não sei como vou fazer isso, mas como é detalhe (até por que o errado sou eu, já que o aterramento deveria estar presente aqui aeuhuaeh) estou passando para o próximo passo, q é gravar a conversa da ligação. Mas ainda não consegui achar nada também (só com pic e não tinha o código utilizado)

Bruno, o problema não é a serial ou usb ou o que for, o problema é o computador, se você ligar em qualquer porta terá ruídos no seu Arduino.

Você ligando o gnd do Arduino, com o gnd do computador vai ter muito ruído, então a solução seria isolar, mas não sei se funcionaria...

tenta isolar a linha Rx Tx com um optoacoplador de alta frequência, não me recordo agora o part number do CI, mas 4n25, 4n35 não funciona...

Se eu achar aqui qual é o CI, eu faço um desenho no Eagle e posto depois, mas não garanto...

Tenta pesquisar algo sobre isso, optoacopladores na serial do Arduino.

Pessoal, to com uma duvidazinha sobre uma coisa, não propriamente dita sobre arduino, mas de eletrônica.

Tenho o seguinte esquema:

A linha telefônica no "gancho" tem 48v, e fora, de -7v à 7v

Fiz um divisor de tensão, para poder mandar para o arduino pela analogica, para saber se esta fora do gancho ou no gancho, até blz ok?

Porem, quando desligo o telefone, ele não libera a linha telefônica, acho que por fechar o circuito, ele não libera a linha.

Alguma ideia do que posso fazer? alguma dica?

Oloko osias, postamos junto =)

bem, então, liguei um lcd no esquema todo, e tirei o cabo serial, ficou muito bom. Agora consigo testar o código sem ter que ligar a porta serial e zuar minha liga telefônica toda até eu arrumar um aterramento.

Claro que,s e conseguir um isolamento digital, seria muito bom, vou dar uma procurada por aqui sim =)

Bruno, o CI que tem aqui que usamos para isolar circuitos de comunicação é o H11L1 (H11L2, H11L3).

Não sei se é fácil de encontrar, mas a frequência de trabalho dele é de até 1MHz, qualquer outro CI que chegue perto disso funcionará bem.

Faz o seguinte, olha no Eagle os "Opto couplers" que tem um schmitt trigger interno, acredito que qualquer um daqueles CIs devem servir tambem.

Legal Osias, tenho um til111 aqui (http://prosje.be/CO/Schemas/TIL111-niet-inverterend.png) que trabalha da mesma forma. Vou a noite dar uma olhada e tentar fazer essa isolação, mas como disse, o aterramento deverá ser requisito para o funcionamento do sistema que estamos desenvolvendo, então não estou tão preocupado com isso, mas claro, é um reforço legal.

Posto resultados =)

Osias, gostaria de mais uma ajuda sua se possível. Não consigo entender esse optoacoplador. Achei esse esquema [1] para detectar o off hook, mas to apanhando aqui pra entender esse ci. Teria como de dar uma explicação rapidíssima do funcionamento?

[1] - http://www.electro-tech-online.com/attachments/general-electronics-chat/28399d1240001044-off-hook-detection-telephone-interface.gif

Valeu ;D

Bom Bruno, pelo que entendi, a ponte de diodos (D1) retifica o sinal, ou seja, a corrente só irá fluir quando o sentido for de RD para GN, gerando uma tensão positiva sobre o fotodiodo do 4N33.

Quando houver essa corrente, como descrito acima, o fototransistor do do 4N33 conduz. Só isso.

Eu não sei como funciona a linha do telefone, mas supõe-se pelo circuito montado, que há tensão alternada na linha, por isso a ponte de diodos.

O diodo zener (D3), conduz quando a tensão é maior que 6V, na prática isso aumenta a velocidade NO chaveamento deste circuito.

Quanto ao CI especificamente é simples, quando há corrente sobre o fotodiodo (lado esquerdo do CI em relação a imagem), o transistor do outro lado do CI conduz. a vantagem deste tipo de isolamento, é que não é necessário ligar os "negativos" juntos do telefone e do Arduino. Assim, o que acontece na linha de telefone não influência no Arduino e vice-versa (se usado fontes diferentes claro).

Se quiser saber mais, pesquise sobre isolação galvânica.

Caramba, que legal, entao na verdade isso é uma chave nao polarizada, ou algo do tipo,

1 e 2 é o que faz o 4 e 5 fechar corrente? algo assim?

Poxa Osias, você é de mais.

Não sei se o que eu mandei anteriormente funciona, mas fiz um esquema parecido, usando um BC558, se a tesão for > 6 eu fecho o BC558 me mandando o pulso alto para o arduino começar a contar o tempo da ligação, assim posso ligar na porta digital, não necessitando das verificações da porta analógica (consequentemente não precisando isolar) =)

Perfeito \o/\o/