Arduino MKR1000 e Telegram

Predisposto l’IDE per la programmazione di Arduino MKR1000 (Scheda SAMD e Libreria WiFi101), e dopo aver creato un BOT di Telegram, è possibile, installando le librerie TelegramBot e Json, utilizzare i Bots di Telegram per controllare la scheda.

Per installare la libreria TelegramBot occorre andare al menù
Sketch -> #include libreria -> Gestione librerie…

Si aprirà la seguente finestra dalla quale ricercando TelegramBot () si potrà, clickando sulla libreria trovata, installare l’ultima versione:

Così come per la libreria Json:

Una volta predisposto l’IDE possiamo passare alla scrittura del programma dell’esempio, cioè la Accensione e Spegnimento di un Led tramite messaggi Telegram:

  • CONTROLLO LED CON MESSAGGI TELEGRAM

/*
 * Questo programma collega Arduino MKR1000 con il Telegram Bot attraverso 
 * il Token Bot e resta in attesa di messaggi.
 * Se il messaggio è "On" accende il Led e risponde su telegram "Il LED è ON"
 * se invece è "Off" spegne il Led e risponde "Il LED è OFF"
 */

#include <WiFi101.h> 
#include <TelegramBot.h>

char ssid[] = "XXXXXXXXXXXXX"; // network SSID
char pass[] = "XXXXXXXXXXXXX"; // network password

// Initialize Telegram BOT
const char BotToken[] = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; // Token Bot

int status = WL_IDLE_STATUS;

WiFiSSLClient clientBot;  
TelegramBot bot(BotToken,clientBot);
  
const int ledPin = 12; 

void setup() 
{  
 Serial.begin(9600);   
 // setta la connessione wifi:  
 NetworkConnection();
 printWifiStatus();
  
 bot.begin();  
 pinMode(ledPin, OUTPUT);  
}  

void loop() 
{  
 message m = bot.getUpdates(); // Legge un nuovo messaggio  
 if (m.text.equals("On")) 
 {  
   digitalWrite(ledPin, HIGH);  
   Serial.println("messaggio ricevuto");  
   bot.sendMessage(m.chat_id, "Il LED è ON");  
 }  
 else if (m.text.equals("Off")) 
 {  
   digitalWrite(ledPin, LOW);  
   Serial.println("messaggio ricevuto");  
   bot.sendMessage(m.chat_id, "Il LED è OFF");  
 }  
}  

// connessione alla rete WIFI
void NetworkConnection() {
// attesa per la connessione Wifi
  while ( status != WL_CONNECTED) {
    Serial.print("In attesa di connessione a SSID: ");
    Serial.println(ssid);
    status = WiFi.begin(ssid, pass);
    // ritardo di 10 sec per permettere la connessione iniziale alla rete Wifi:
    delay(10000);
  }
}
void printWifiStatus() {
  // stampa SSID della rete Wifi
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());

  // stampa IP della scheda Wifi dell'Arduino MKR1000
  IPAddress ip = WiFi.localIP();
  Serial.print("Indirizzo IP: ");
  Serial.println(ip);

  // stampa il valore dell'intensità del segnale Wifi
  long rssi = WiFi.RSSI();
  Serial.print("Potenza segnale (RSSI):");
  Serial.print(rssi);
  Serial.println(" dBm");
}

 

Link correlati: