enc28J60 and Arduino (12)

by luca
25 comments

Today I’m going to show you an unusual way to send SMS from Arduino…

You can find on sale some shields that allow Arduino to connect to the GSM network for sending/receiving SMS, for transferring data (GPRS or UMTS) or making calls.

A different way to send SMS from Arduino is using one of the SMS Gateways available on Internet: those services allow, using Web forms o API calls, to send SMS to mobile devices. Among many service providers, I choose Skebby.

The main services Skebby offers are:

  • classic, guaranteed delivery, long sms, sender customization
  • basic, best effort delivery, very cheap service
  • zerocent, free, delivery only to smartphones with Skebby app installed

I’m going to show you how to use Arduino to send “classic” SMS (service with fee, custom sender) and “zerocent” SMS (free but you need the app).

Here’s how it works:

Skebby service

To use Skebby Gateway, you are required to register:

After having registered, you’ll receive 10 SMS for free.

In the next page, the Arduino’s sketch…

Related Posts

25 comments

marco Thursday December 27th, 2012 - 11:46 PM

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();
}

Reply
luca Friday January 11th, 2013 - 08:33 AM

Ciao Marco

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

Reply
Antonio Tuesday December 9th, 2014 - 06:14 PM

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…

Reply
luca Saturday December 13th, 2014 - 05:30 PM

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

Reply
PIxel Friday January 4th, 2013 - 07:33 AM

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

Reply
Leandro Tuesday April 9th, 2013 - 02:28 PM

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

Reply
luca Tuesday April 9th, 2013 - 04:12 PM

ciao Leandro,

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

Reply
tom Thursday May 2nd, 2013 - 06:55 AM

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

Reply
luca Thursday May 2nd, 2013 - 08:12 AM

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

Reply
Marco Monday March 24th, 2014 - 10:11 PM

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

Reply
luca Sunday April 13th, 2014 - 07:44 PM

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.

Reply
Marco Wednesday April 16th, 2014 - 09:00 PM

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!

Reply
Ronaldo Friday June 27th, 2014 - 12:09 PM

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

Reply
luca Tuesday July 8th, 2014 - 08:16 AM

Hi Ronaldo,

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

Reply
Pasquale Sunday February 15th, 2015 - 08:09 AM

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

Reply
luca Monday February 16th, 2015 - 10:02 PM

Ciao Pasquale! ok, ci lavoro 😉

Reply
Fedefico Sunday May 24th, 2015 - 04:14 PM

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?

Reply
luca Sunday May 24th, 2015 - 08:19 PM

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

Reply
Luca Monday June 15th, 2015 - 01:22 PM

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

Reply
luca Wednesday June 17th, 2015 - 07:46 PM

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

Reply
Nando Saturday July 11th, 2015 - 01:59 PM

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

Reply
luca Wednesday July 15th, 2015 - 01:18 PM

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

Reply
Claudio Monday January 4th, 2016 - 07:36 PM

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

Reply
luca Thursday January 7th, 2016 - 09:44 AM

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ì?

Reply
Nick Friday January 13th, 2017 - 05:21 PM

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

Ciao

Reply

Leave a Comment

13 − 12 =