enc28J60 e Arduino (12)

luca 16/12/2012 25

Oggi vedremo un modo un po’ particolare per inviare SMS da Arduino…

In commercio si trovano diversi shields che consentono di collegare Arduino alla rete GSM per inviare/ricevere SMS, sfruttare la connessione dati (GPRS o UMTS) o effettuare chiamate.

Un modo alternativo per inviare SMS da Arduino è sfruttare uno degli SMS Gateway presenti su Internet: questi servizi consentono, tramite form Web o chiamate API, di inoltrare SMS a dispositivi mobili. Tra i vari service providers, ho scelto Skebby.

I principali servizi che Skebby mette a disposizione sono:

  • classic, consegna garantita, sms lunghi, personalizzazione mittente
  • basic, consegna best effort, servizio economico
  • zerocent, gratuito, invio a terminali con installata l’app di Skebby

Vedremo come utilizzare Arduino per inviare SMS classic (a pagamento con mittente personalizzato) e SMS zerocent (gratuito ma richiede l’app installata).

Il funzionamento logico è il seguente:

Registrazione

Per poter utilizzare i servizi di Skebby, è necessario registrarsi:

Al momento della registrazione, ti verranno dati in omaggio 10 SMS.

Nella prossima pagina, lo sketch per Arduino…

Pagine: 1 2

25 Comments »

  1. marco 27/12/2012 at 23:46 - Reply

    ciao,Luca,ho trovato questo skech che dovrebbe inviare una mail con la shield classica ethernet:come devo modificarla per usare la libreria ethercard? grazie

    #include
    #include
    // Local network configuration:
    byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x23, 0x5D };
    byte ip[] = { 192,168,0, 177 };
    // Login data:
    String UserName64 = “XXXXXXX”;
    String Password64 = “XXXXXXX”;
    // SMTP server data:
    // smtp.libero.it : 212.52.84.54
    // smtp.iol.it : 212.52.84.203
    // out.virgilio.it : 62.211.72.20
    byte server[] = { 212, 52, 84, 54 }; // SMTP server
    String ServerName = “libero.it”;
    // Mail data:
    String Sender = “XXXXXXX@libero.it”;
    String Recipient = “XXXXXXX@libero.it”;
    String Subject = “Messaggio inviato da Arduino!”;
    String Body = “Testo del messaggio\nsu piu’\ndi una riga.”;
    int time = 1000;
    int wait = 1000;
    String ServerResponse=””;
    EthernetClient client;
    void setup()
    {
    Serial.begin(9600);
    Serial.println(“Program started, waiting for router…”);
    delay(time); /* allow the router to identify the Arduino before the Arduino connects to the internet */
    Serial.println(“Starting network module…”);
    Ethernet.begin(mac, ip);
    delay(2000);
    Serial.println(“connecting…”);
    if (client.connect(server, 25)) {
    Serial.println(“connected”);
    SendMsg(“HELO ” + ServerName); /* say hello*/
    SendMsg(“AUTH LOGIN “);
    SendMsg(UserName64); /* Username*/
    SendMsg(Password64); /* Password */
    SendMsg(“MAIL From:”); /* identify sender */
    SendMsg(“RCPT To:”); /* identify recipient */
    SendMsg(“DATA”);
    SendMsg(“To: ” + Recipient); /* recipient in message header */
    SendMsg(“From: ” + Sender); /* seder name in message header */
    SendMsg(“Subject: “+ Subject); /* insert subject */
    SendMsg(“”); /* empty line */
    SendMsg(Body); /* insert body */
    SendMsg(“”); /* empty line */
    SendMsg(“.”); /* end mail */
    SendMsg(“QUIT”); /* terminate connection */
    client.println();
    } else {
    Serial.println(“connection failed”);
    }
    }
    void loop()
    {
    if (client.available()) {
    char c = client.read();
    Serial.print(c);
    }
    if (!client.connected()) {
    Serial.println();
    Serial.println(“disconnecting.”);
    client.stop();
    for(;;)
    ;
    }
    }
    void GetResponse() {
    if (client.available()) {
    char c = client.read();
    while (client.available()) { // Store command char by char.
    ServerResponse +=c;
    c = client.read();
    }
    Serial.println(“<<>>” + m);
    delay(wait); /* wait for a response */
    GetResponse();
    }

    • luca 11/01/2013 at 08:33 - Reply

      Ciao Marco

      non mi sono dimenticato della tua domanda ;) sto preparando un esempio…
      bye

      • Antonio 09/12/2014 at 18:14 - Reply

        Ciao Luca,
        innanzitutto complimenti per la precisione e al contempo fluidità dei tuoi tutorial.
        Ho provato un po tutto quello che riguarda la enc28J60 che ho.
        Ho anche la w5100 con i suoi relativi bachi nell’utilizzo con più periferiche SPI, ma lasciamo stare…
        Vorrei chiederti un aiuto per poter usare SKEBBY anche con la ethernet shield ufficiale.
        Non sono un espertissimo ma non riesco a scrivere la richiesta in un formato idoneo…
        ottengo o failed oppure errore 31 da skebby.
        Grazie per quanto potrai fare…

        • luca 13/12/2014 at 17:30 - Reply

          Ciao Antonio, purtroppo non possiedo uno shield con W5100… essendo ufficiale immagino che qualcuno abbia già provato/pubblicato esempi.

  2. PIxel 04/01/2013 at 07:33 - Reply

    Ciao Luca,
    vorrei sapere come richiesto anche da Daj come poter comunicare con winsock (vb.net o c#) via TCP per realizzare un’applicazione desktop. Se avessi anche spezzoni di codice sarebbero graditi.

    Ciao e Grazie

  3. Leandro 09/04/2013 at 14:28 - Reply

    Ciao Luca!
    i tuoi tutorial sono ottimi.
    Volevo chiederti…esistono delle APIDOCS per la libreria EtherCard?
    Non riesco a capire alcuni passi di codice…

    Grazie
    Leandro

    • luca 09/04/2013 at 16:12 - Reply

      ciao Leandro,

      no, purtroppo la documentazione ufficiale è un po’ carente…

  4. tom 02/05/2013 at 06:55 - Reply

    Hi, do you know why my arduino stopped at “Skebby SMS Demo”? No further message.

    • luca 02/05/2013 at 08:12 - Reply

      Hi Tom, if the sketch hangs at that point, probably Arduino can’t talk with the ethernet shield. Do the other examples/tutorials work?

  5. Marco 24/03/2014 at 22:11 - Reply

    Ciao Luca, complimenti per i tutorial!
    Vorrei chiederti se ad oggi funziona ancora l’invio degli sms tramite Skebby perchè ho provato a seguire il tutorial e non sono riuscito a farlo funzionare. Inoltre volevo chiederti: è possibile mandare mail? Grazie

    Marco

    • luca 13/04/2014 at 19:44 - Reply

      Ciao Marco, ho provato e sono riuscito ad inviare un SMS… quale errore ottieni con il mio sketch? Per le mail… sto lavorando ad un prossimo tutorial ma è un po’ più complicato.

  6. Marco 16/04/2014 at 21:00 - Reply

    Ciao Luca, ho effettuato diverse prove e utilizzando lo sketch così com’è (chiaramente inserendo username e password) si blocca prima che compaia a display “Type 0 followed by your message for 0Cent SMS”. Provando a diminuire il valore da 600 a 550 del “byte Ethernet::buffer[600]; “, si sblocca e correttamente compare la scelta del “Type 0 followed by your..”, a questo punto ho provato ad inviare messaggi con lo zero cent, con il classic, modificando il numero di telefono, con prefisso 39 come indicato sul sito di skebby e senza, ma in nessun modo sono riuscito a farlo funzionare.
    Successivamente ho provato a forzare l’invio di un messaggio
    utilizzando “send_sms_zerocent(recipient, text_buffer);” inserendo direttamente il text_buffer, questa volta compare “Request sent to Skebby SMS Gateway”, ma in nessun modo arriva il messaggio.
    Cosa sbaglio?
    Per le mail ho trovato questo link “https://github.com/bibi21000/arduino-fullip/blob/master/doc/smtpclient.txt” ma purtroppo ci capisco poco, magari riesci a trovare qualcosa.
    Grazie per la pazienza!

  7. Ronaldo 27/06/2014 at 12:09 - Reply

    I tried several times, but for the japan Skebby failed. exist another service?

    • luca 08/07/2014 at 08:16 - Reply

      Hi Ronaldo,

      yes, there are plenty of SMS gateway but you need to rewrite the sketch to match their APIs…

  8. Pasquale 15/02/2015 at 08:09 - Reply

    Cia Luca, potresti fare la stessa cosa ma con arduino yún, aspetto con anzia tue risposte !!! (Ho un bel progetto in mente !!)

    • luca 16/02/2015 at 22:02 - Reply

      Ciao Pasquale! ok, ci lavoro ;)

  9. Fedefico 24/05/2015 at 16:14 - Reply

    Ciao Luca, ho provato più volte questo sketch ma si blocca a questo punto
    Preparing request for SMS 0Cent service
    Request sent to Skebby SMS Gateway
    Error sending SMS:
    Sender+number+not+valid

    come sender_num ho messo il mio, ho riempito tutti i campi, dove posso sbagliare?

    • luca 24/05/2015 at 20:19 - Reply

      Ciao Federico, come sender devi mettere il numero con prefisso 39 (senza 0 o +), come spiegato nella documentazione di Skebby.

  10. Luca 15/06/2015 at 13:22 - Reply

    Salve Luca, volevo segnalare la presenza di un errore di compilazione che mi si è presentato alla riga 10 dello sketch caricato in github. l’ho risolto sostituendo la riga con la seguente: const char website[] PROGMEM = “gateway.skebby.it”;

    Inoltre ho provato il suo sketch (l’ho modificato leggermente per l’utilizzo di un ip statico ed invio di un sms a testo costante) ma nonostante esegua correttamente la funzione send_sms_zerocent ritornando “Request sent to Skebby SMS Gateway” l’sms non arriva a destinazione (ho controllato nella documentazione di skebby ma non ne riesco a venir fuori). qui può trovare il mio sketch modificato: https://lucantonello.no-ip.biz/owncloud/index.php/s/nferYV3qjdDePvt

    • luca 17/06/2015 at 19:46 - Reply

      Grazie della segnalazione! Hai l’app installata sul cellulare di destinazione vero? Il numero di destinazione lo imposti come da guida?

  11. Nando 11/07/2015 at 13:59 - Reply

    Ciao, Luca
    sono un neofita.
    ho preso il tuo skech e dopo aver istallato arduino sul PC windows lo ho lanciato. Mi sono accorto che era necessario creare una cartella specifica (in libraries) e copiare EtherCard.h, enc28j60).

    Però continua a segnalarmi errori.
    Devo fare ancora qualcosa?
    Scusa ma sono alle prime armi.

    Ciao e grazie

    • luca 15/07/2015 at 13:18 - Reply

      ciao nando, guarda il primo articolo del tutorial: è spiegato come installare la libreria nel tuo IDE.

  12. Claudio 04/01/2016 at 19:36 - Reply

    Ciao Luca, ti ringrazio intanto per tutto il materiale che condividi e che stimola ogni giorno la mia “passione arduino”.
    Sto seguendo il progetto “MobileRelays” ma non sono sicuro dei collegamenti. è la prima volta che collego questi due moduli ad arduino UNO e non vorrei bruciare qualcosa.
    Potresti inviarmi una foto dei collegamenti dato che questa foto ( http://www.lucadentella.it/blog/wp-content/uploads/2014/10/webserver-2.jpg) sembra tagliata.
    Grazie 1000 in anticipo
    Claudio

    • luca 07/01/2016 at 09:44 - Reply

      Ciao Claudio, i collegamenti dipendono dal fatto che tu abbia o meno un modulo (come quello che vedi in foto) “passante”: il modulo SD infatti ha tutti i collegamenti “doppi” (due PIN MISO, due PIN MOSI…). Anche il tuo è così?

  13. Nick 13/01/2017 at 17:21 - Reply

    Ciao Luca, grazie per i tuoi tutorial. Ti chiedo come Pasquale se puoi fare lo stesso tutorial per arduino yun.

    Ciao

Leave A Response »

Questo sito usa i cookie per poterti offrire una migliore esperienza di navigazione maggiori informazioni

Questo sito utilizza i cookie per fonire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o clicchi su "Accetta" permetti al loro utilizzo.

Chiudi