Arduino registratore telefonico

recorderSu internet sono in vendita degli economici registratori vocali a prezzi intorno ai 12..15€, dotati di memoria da 8GB che per il costo non sono neanche malaccio. Solitamente sono corredati di una interfaccina per connettere la linea telefonica (analogica) all’ingresso microfono per poter registrare comodamente dal telefono. Unica pecca dobbiamo avviare la registrazione a mano, così come dobbiamo preoccuparci di fermarla al termine. Se da un lato questo non sembrerebbe un problema grave, dall’altro potrebbe diventarlo se ci si dimentica di avviare la registrazione o si sta usando un cordless stando da tutt’altra parte rispetto all’ubicazione del registratore. A tale scopo mi sono divertito a progettare, montare e collaudare una semplice interfaccia con un modulo pro mini arduino che automatizza il tutto. Innanzitutto c’è da sapere che il registratore va in standby da solo, ovvero spegne il display e va in letargo dopo una manciata di decine di secondi dal non utilizzo. Per risvegliarlo è necessario premere un tasto, poi il tasto di registrazione. Vedremo poi nel listato come si è risolto. Arduino ha il compito di sentire quando la cornetta viene alzata, a tale scopo è presente il fotoaccoppiatore. Come funziona questo stadio? La linea telefonica, quando la cornetta è abbassata, presenta una tensione di circa 45..50V. A cornetta sollevata si abbassa a 10..12V. Lo stato di cornetta alzata viene interpretato dalla centrale telefonica se c’è un assorbimento superiore ai 10mA. In ogni caso qualsiasi corrente inferiore ai 3mA che scorre per la linea viene ignorata dalla centralina. Il fotoaccoppiatore è alimentato da una resistenza da 39KOhm in serie ad uno zener da 39V che, a conti fatti, permette di far scorrere una corrente che vale:

(50 – 39 – 1) / 39000

Dove 50 è la tensione di linea, 39 il valore di zener ed 1 la caduta sul diodo del fotoaccoppiatore. Il risultato è circa 250uA. Una corrente irrisoria ed ignorata dalla centralina telefonica ma sufficiente ad innescare debolmente il transistor di uscita del fotoaccoppiatore. In queste condizioni la centralina se ne sta quieta e il modulo arduino, dotato di pullup da 180K, sente al suo ingresso una tensione prossima allo 0, cioè una condizione LOW.

Se alziamo la cornetta per telefonare o rispondere ad una chiamata la tensione di linea si abbasserà a 10..12V. In tali condizioni lo zener non condurrà più e il fotoaccoppiatore non sarà più alimentato. Il transistor di uscita si interdirrà e ciò farà portare la tensione sull’ingresso di trigger di arduino a 5V, ovvero una condizione HIGH.

A questo punto interviene la prima uscita sul transistor collegato al pulsante di REC. Questo transistor inizierà a condurre per circa 150mS per tornare interdetto subito dopo. Questo causa il “risveglio” del registratore. Altri 150mS di ritardo e verrà ripetuta la sequenza, causando la partenza in registrazione del registratore.

Fino a che la cornettà rimarrà alzata null’altro succederà.

Al calare della cornetta la tensione di linea ritornerà a 50V, il fotoaccoppiatore condurrà e tale variazione verrà interpretata da arduino come una condizione utile a generare lo stop della registrazione. La seconda uscita si porterà quindi alta per 150mS una volta (ricordate? Il recorder va in standby e bisogna risvegliarlo) poi per circa 1 secondo simulando la pressione del tasto STOP.

Tutto piuttosto semplice e lineare. Non dovremo più preoccuparci di nulla dal momento che le registrazioni telefoniche partiranno automaticamente!

Il ponte di diodi serve per ottenere la corretta polarizzazione del fotoaccoppiatore qualunque sia la disposizione dei fili della linea telefonica che lavora in continua. Il condensatore elettrolitico da 1000uF filtra il residuo alternato della tensione di squillo. Per aumentare la sensibilità dell’interfaccia telefonica ho cambiato una delle resistenze del partitore interna all’interfaccina telefonica (costituito da una resistenza da 18KOhm + una da 2,2KOhm SMD) con una da 4,7KOhm (al posto di 2,2KOhm). Potete alzarla se ritenete che la registrazione sia troppo bassa.

Nota bene: Il registratore è rognosetto nel senso che l’alimentazione dovrà essere molto curata per quanto riguarda il filtraggio e la stabilizzazione, pena il rientro in registrazione di ronzii e fruscii. L’interfaccetta telefonica di suo fa già rientrare un po’ di ronzio quindi le registrazioni saranno affette da tale rumore e andranno successivamente filtrare con l’apposita funzione di audacity se volete ottenere una registrazione ascoltabile.

schema elettrico

schema collegamenti

schema finito

 

// Phone Recorder
// Coded by Giulio Bottini
// 2015

const int ledPin =  13;  
int Rec = 6;
int Stop = 3;
int Trigger = 2;
boolean isOn = false;  // indica se è attiva una telefonata

void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(Rec, OUTPUT);
  pinMode(Stop, OUTPUT);
  pinMode(Trigger, INPUT);
  digitalWrite(Rec, LOW);
  digitalWrite(Stop, LOW);
}

void loop()
{
  if (digitalRead(Trigger)==HIGH) {
    if (isOn==false) {
      // Telefono alzato
      digitalWrite(ledPin, HIGH);
      digitalWrite(Rec, HIGH);
      delay(150);
      digitalWrite(Rec, LOW);
      delay(50);
      digitalWrite(Rec, HIGH);
      delay(150);
      digitalWrite(Rec, LOW);
      isOn=true;
    }
  } else if (isOn==true) {
    digitalWrite(ledPin, LOW);
    digitalWrite(Stop, HIGH);
    delay(150);
    digitalWrite(Stop, LOW);
    delay(50);
    digitalWrite(Stop, HIGH);
    delay(1000);
    digitalWrite(Stop, LOW);
    isOn=false;
  }
}

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.