Yún – Allarme via SMS

luca 07/03/2015 0

Questo tutorial vuole illustrare una modalità di interazione tra lo sketch in esecuzione sull’ATMega e il sistema Linino (Linux) in esecuzione sul SoC di Arduino Yun: la possibilità di lanciare processi Linux da sketch.

L’esempio proposto realizza un allarme via SMS:

  • ad Arduino è collegato un microswitch
  • alla pressione del microswitch viene inviato un SMS utilizzando il gateway Skebby

Linino side

L’invio del messaggio SMS viene effettuato da uno script PHP che si interfaccia con il gateway di Skebby.

Per poter eseguire script PHP è per prima cosa necessario installare alcuni moduli, con il comando:

opkg install php5 php5-cli php5-mod-curl

Lo script sendSMSAlert.php, realizzato prendendo spunto dagli esempi disponibili, può essere scaricato dal repository su GitHub e salvato nella cartella /root (home dell’utente root).

E’ necessario personalizzare il metodo sendSMS inserendo il proprio account Skebby, il numero del destinatario e del mittente e il testo da inviare:

echo sendSMS("skebby_user", "skebby_password", 
 "391234567890", "391234567890", "Warning: door opened!", "0cent") . "\n";
I numeri di telefono devono iniziare con il prefisso internazionale (per l’Italia, 39) e senza i caratteri + o 00

Skebby supporta diversi tipi di SMS: l’ultimo parametro della chiamata specifica proprio quale tipo di SMS inviare. L’elenco degli SMS disponibili è presente all’inizio dello script:

define ("SMS_TYPE_0CENT", "0cent");
define ("SMS_TYPE_CLASSIC", "classic");
define ("SMS_TYPE_CLASSIC_PLUS", "classic_plus");
define ("SMS_TYPE_BASIC", "basic");

Ho utilizzato il tipo 0cent che è gratuito, ma richiede la presenza dell’app di Skebby sul telefono del destinatario (ed una connessione ad Internet).

Arduino side

Anche lo sketch per Arduino è disponibile nel repository su GitHub.

Ho collegato il microswitch in questo modo:

  • il PIN comune, al PIN 2 di Arduino
  • il PIN normalmente chiuso a massa
  • il PIN normalmente aperto a 5V

In questo modo quando il microswitch non è premuto, il PIN 2 è collegato a massa (LOW), mentre quando viene premuto è collegato a 5v (HIGH). Utilizzo anche il PIN 13 (collegato ad un LED direttamente sulla scheda dello Yun) per visualizzare lo stato del microswitch.

yun-alarm1 yun-alarm2

Entrambi i PIN possono essere personalizzati cambiando le costanti all’inizio dello sketch:

#define SWITCH_PIN 2
#define LED_PIN 13

Nel loop() lo sketch controlla periodicamente lo stato del microswitch: se questo viene premuto, invoca il metodo sendAlert(). Tengo anche traccia dello stato precedente del microswich in modo da inviare un SMS solo quando vi è un cambio di stato.

Il metodo sendAlert() utilizza una funzionalità della libreria Bridge di Yun: la possibilità di eseguire uno script all’interno di Linino:

void sendAlert() {
 
  Process p;            
  p.begin("php-cli");      
  p.addParameter("/root/sendSMSAlert.php"); 
  p.run();
}

Viene infatti chiamato l’interprete PHP (php-cli) chiedendo l’esecuzione dello script sendSMSAlert.php che abbiamo già salvato nella home dell’utente root.

Conclusioni

In questo tutorial abbiamo visto un primo esempio di interazione tra sketch e Linino… nei prossimi vedremo come operare al contrario (Linino -> sketch) e come passare dei valori.

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