Yún – Allarme via SMS

by luca
2 comments

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

[youtube id=”xpshNEz4pUw” width=”600″ height=”350″]

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:

[checklist]

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

[/checklist]

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.

Related Posts

2 comments

stefano bani 20 novembre 2018 - 19:03

Buonasera,
mi scusi ma non ho capito dove devo scaricare il file php. Grazie per la risposta

Reply
luca 7 dicembre 2018 - 15:50

il link al mio repository Github è nell’articolo… eccolo qui: https://github.com/lucadentella/YunDoorAlarm

Reply

Leave a Comment

18 − nove =