enc28J60 e Arduino (12)

luca 16 dicembre 2012 7

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

7 Comments »

  1. marco 27 dicembre 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[] = { 0×90, 0xA2, 0xDA, 0×00, 0×23, 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 gennaio 2013 at 08:33 - Reply

      Ciao Marco

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

  2. PIxel 4 gennaio 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 9 aprile 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 9 aprile 2013 at 16:12 - Reply

      ciao Leandro,

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

  4. tom 2 maggio 2013 at 06:55 - Reply

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

    • luca 2 maggio 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?

Leave A Response »