TTGO T-Call V1.3 ESP32 codice

Ciao a tutti, da poco ho acquistato una scheda ESP32 come da titolo e vorrei utilizzarla per mandare un SMS quando ho una certa condizione.

Mi spiego meglio;

L'ESP32 vorrei collegarlo ad un relè con contatto normalmente aperto di una centralina per un allarme casalingo, quando l'allarme suona il contatto si chiude e questo fa si che l'ESP, tramite il modulo SIM800L, mandi un messaggio a 2/3 numeri che imposto.

Per riuscire fare ciò sto seguendo un codice che ho trovato online su questo sito ma che comunque vista la mia scarsa abilità nella programmazione non riesco ad implementare.

Potete gentilmente aiutarmi?

Buongiorno e benvenuto, :slight_smile:
essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (…punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con molta attenzione tutto il succitato REGOLAMENTO ... Grazie. :slight_smile:

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposito thread, nel rispetto del suddetto regolamento nessuno ti risponderà (eventuali risposte verrebbero cancellate), quindi ti consiglio di farla al più presto. :wink:

Ciao, mi sono presentato nell'apposita sezione

In un programma Arduino hai due funzioni o blocchi.

  1. setup eseguito all'accensione del Arduino/Esp una sola volta
  2. loop eseguito di continuo (in ciclo) dopo la setup

Il codice che indichi al link spedisce il SMS una sola volta alla fine del setup
Il loop invece è un ciclo infinito che non fa nulla

Devi quindi spostare l'invio del sms nel loop, ma...
ponendolo dentro una condizione if

void loop()
{ if( condizione==vera)
  { // To send an SMS, call modem.sendSMS(SMS_TARGET, smsMessage)
    String smsMessage = "Hello from ESP32!";
    if(modem.sendSMS(SMS_TARGET, smsMessage))
    { SerialMon.println(smsMessage);
    }
   else
    { SerialMon.println("SMS failed to send");
    }
  }
}

La condizione deve essere la lettura dello stato del pin a cui collegherai il rele.
digitalRead(pin) legge HIGH o LOW a seconda che ci sia o no segnale. E nella setup() devi fare un
pinMode(pin,INPUT); per dire che quel pin lo usi come input

Ma... da quel rele... hai idea di quanti volt escono ? Sei sicuro sia compatibile con i pin di Esp32 ?
I pin del Esp32 lavorano a 3,3V

Ciao, grazie per il tuo aiuto.

Il relè ha un contatto pulito e pertanto non eroga nessuna tensione.

Volevo sapere anche come facciamo a mandare più SMS contemporaneamente a numeri diversi?

Di come mandi più sms non so.
forse cosi: Multiple SMS recipients GSM shield

?? in che senso ? deve dare un segnale spento/acceso low/high di una certa tensione (volt) e se è più alta di quella che il pin accetta = frittura

Un contatto pulito di un relè è un contatto che non presenta differenza di potenziale tra i due poli.
a5b6e37ddae6ab6a0e56f4571c7518e82af3e226_3

Poi comunque andrò a prelevare la 3v direttamente dall'ESP32 cosi quando questo contatto chiuderà sul pin 13 avrò i 3v (stato HIGH)

1 Like

Ok, allora sul pin 13 configurato come ingresso metti una R10k in parallelo a C 100nF verso GND per formare una rete antirimbalzo detta debounce. La R10k funge da pull-down fornendo al pin un riferimento stabile letto come LOW. Quando il relay si chiude la 3.3V carica il condensatore da 100n con una costante di tempo.

Ciao.

1 Like

Ahh, okay. Usando penso un optoisolatore.

In che senso "un optoisolatore", dalla descrizione ha un contatto pulito già galvanicamente isolato, e al massimo la 3.3v dall'esp la fa passare attraverso un resistore da 1k prima di collegarla ad uno dei terminali del contatto pulito, l'altro contatto pulito di ritorna va al pin 13.

Ok ho capito, per ulteriore sicurezza il relay accendo o meno il led dell'optoaccoppiatore, certo si puo fare e alle volte è addirittura obbligatorio farlo con l'opto.

Per sviluppare il codice al momento non ci sono indicazioni per usare obbligatoriamente l'opto,

Una cosa cosi?
Dove S1 sarà nel mio caso il contatto NA del relè e l'alimentazione da 3.3V

vwsHk

Esattamente, che poi è lo schema che si usa per connettere un pulsante tattile anche esso afflitto da rimbalzi dei contatti. Con la pull-down la logica è positiva e quindi leggerai 1 quando il contatto del relay è chiuso e zero viceversa.

Se vuoi risparmiare una resistenza puoi usare la logica negata invertendo tra loro S1 e R1. La R1 la ottieni impostando il pin con pinMode(pin, `INPUT_PULLUP). C1 resta li come prima.

Ciao.

Grazie mille @Maurotec, in questi giorni provo le due configurazioni