TELEGRAM E ESP-12E
Per programmare il modulo WiFi ESP-12E ho usato un USB to serial converter FTDI232 (con il ponticello della tensione impostato su 5V) .
Lo schema di collegamento è il seguente:

La foto della realizzazione pratica. Noterete che c'è un cavo nero lungo collegato a massa ma libero sull'altro capo (quello tratteggiato nello schema).

Avviato l'Ide di Arduino, io sto usando l'ultima versione disponibile a oggi: la 1.8.2, e andate su File > Impostazioni.

Nella casella URL aggiuntive per il Gestore schede inserite questo indirizzo:
https://github.com/esp8266/Arduino/releases/download/2.3.0/package_esp8266com_index.json
Fate clic su OK per chiudere la finestra di dialogo Impostazioni.
Ora andate su Strumenti > Scheda e, dal menu che appare a lato con l'elenco schede, in alto alla lista selezionate Gestore schede.
Dopo aver caricato la nuova lista in fondo troverete “esp8266 by ESP8266 Community” selezionare quello. Appariraà il pulsante di installazione, fate clic sul Installa pulsante. Attendere per un po '... Questo processo richiederà del tempo per scaricare e installare le nuove schede. Dopo l'installazione chiudete il programma Arduino e riavviatelo.

Collegate la scheda FTDI232 al computer. Se avete Ubuntu Linux non servirà fare niente perché i driver si installeranno da soli.

Per poter comunicare con Telegram da un telefono cellulare è necessario creare delle credenziali di un BOT.
La prima cosa da fare è creare un BOT e per fare questo utilizzeremo, indovinate un po’… Un BOT di Telegram! Aprite Telegram sul cellulare e cercate il contatto BotFather (ha l’immagine de “Il Padrino” in versione robotica). Seguite le istruzioni, la sequenza dovrebbe essere:
Newbot per iniziare la creazione di un nuovo bot
Digitate quindi il nome del vostro bot
Digitate quindi lo username del vostro bot (deve finire con “bot”)
Se avete fatto le cose per bene, avete creato il vostro bot!
IMPORTANTISSIMO!!!
Copiatevi, memorizzatevi e se non basta tatuatevi queste tre informazioni che BotFather vi ha dato:
Nome del BOT (lo decidete voi)
Username del BOT (anche questo lo decidete voi, e termina con “bot”)
Token: ve lo comunica BotFather al termine della creazione del bot
Potrebbe essere utile disabilitare la possibilità che il proprio BOT possa essere inserito arbitrariamente dentro gruppi (ci sono altri bot che fagocitano i bot, li inseriscono in gruppi e li bombardano di messaggi). Il comando è setjoingroups, seguire poi le istruzioni.
Andate su File > Nuovo, cancellate il testo e incollate quello che trovate scritto qui di seguito.
Inserite i dati della vostra rete WiFi al posto delle xxxxx e yyyyy, e del vostro BOT nella parte // Initialize Telegram BOT
/*******************************************************************
* this is a basic example how to program a Telegram Bot *
* using TelegramBOT library on ESP8266 *
* *
* Open a conversation with the bot, you can command via Telegram *
* a led from ESP8266 GPIO *
* https://web.telegram.org/#/im?p=@FlashledBot_bot *
* *
* written by Giancarlo Bacchio *
* modify by Giuseppe tamanini *
*******************************************************************/
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <ESP8266TelegramBOT.h>
// Initialize Wifi connection to the router
char ssid[] = "xxxxx"; // SSID nome della tua rete wifi
char pass[] = "yyyyy"; // password della tua rete wifi
// Initialize Telegram BOT
#define BOTtoken "273464286:AAF8DobDM153webrB7EodlAsHo94kjr2RVQ" // inserite il vostro BOTtoken
#define BOTname "nameBOT" // inserite il vostro BOTname
#define BOTusername "usernameBOT" // inserite il vostro BOTusername
TelegramBOT bot(BOTtoken, BOTname, BOTusername);
int Bot_mtbs = 1000; // millisecondi da aspettare per un nuovo messaggio
long Bot_lasttime; // aggiorna il tempo dopo aver verificato se è arrivato un nuvo messaggio
bool Start = false;
int Led=5; // Il led sarà collegato alla porta GPI05 della ESP-12E
/********************************************
* EchoMessages - function to Echo messages *
********************************************/
void Bot_ExecMessages() {
for (int i = 1; i < bot.message[0][0].toInt() + 1; i++) {
bot.message[i][5]=bot.message[i][5].substring(1,bot.message[i][5].length()); // esclude il primo carattere "/ledon" diventerà "ledon"
Serial.println(bot.message[i][5]); // invia il comando sulla seriale
if (bot.message[i][5] == "ledon") { //in base al messaggio ricevuto "ledon" "ledoff" "start"
digitalWrite(Led, HIGH); // accende il led
bot.sendMessage(bot.message[i][4], "Il Led è acceso", "");
}
if (bot.message[i][5] == "ledoff") {
digitalWrite(Led, LOW); // spegne il led
bot.sendMessage(bot.message[i][4], "Il Led è spento", "");
}
if (bot.message[i][5] == "start") {
String wellcome = "Benvenuto su ArdulogioBOT, il tuo Bot personale con ESP8266"; //manda un messaggio di benbvenuto
String wellcome1 = "/ledon : per accendere il led";
String wellcome2 = "/ledoff : per spegnere il led";
bot.sendMessage(bot.message[i][4], wellcome, "");
bot.sendMessage(bot.message[i][4], wellcome1, "");
bot.sendMessage(bot.message[i][4], wellcome2, "");
Start = true;
}
}
bot.message[0][0] = ""; //Svuota la stringa contenente il messaggio
}
void setup() {
Serial.begin(115200);
delay(3000);
// configura la connessione
Serial.print("Connessione Wifi: ");
Serial.println(ssid);
IPAddress ip(192,168,1,69); //ip da assegnare all'ESP-12E
IPAddress gateway(192,168,1,1); //gateway del router
IPAddress subnet(255,255,255,0); //subnet mask del router
WiFi.config(ip, gateway, subnet);
delay(3000);
WiFi.begin(ssid, pass);
Serial.println("");
Serial.println("WiFi connessa");
Serial.println("Indirizzo IP: ");
Serial.println(WiFi.localIP());
bot.begin(); // avvia le funzionalità di Bot
pinMode(Led, OUTPUT); // imposta il pin digitale assegnato a Led come output
}
void loop() {
if (millis() > Bot_lasttime + Bot_mtbs) { //Se è passato il tempo Bot_mtbs in millisecondi
bot.getUpdates(bot.message[0][1]); // Controlla se c'è un nuovo messaggio
Bot_ExecMessages(); //esegue la void Bot_ExecMessages()
Bot_lasttime = millis(); //fa ripartire il tempo di attesa
}
}
Nel menu Sketch selezionate il comando Verifica/Compila e, se non avrete errori, sampre dal menu Sketch date il comando Carica. Potete farlo anche usanto i pulsanti appositi della barra Strumenti.
Se dopo la compilazione avrete questi errori:
warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
error: espcomm_upload_mem failed
Scollegate il cavo USB dal PC, collegate a massa il piedino REST (ultimo in alto a destra dello schema), reinserite il cavo e, dopo che l'ESP si è acceso, scollegate lil piedino REST dalla massa e ridate il comando Carica. Se funziona vedrete una serie di puntini apparire con la percentuale di programmazione fino al raggiungimento del 100%.
Ora scollegate l'alimentazione all'ESP-12E, scollegate i ponticelli rossi dai pin CH_PD e GPIO2 e i neri da GPIO15 e GPIO0. Rialimentate l'ESP e, se nell'IDE, fate clic sulla lente in alto a destra, dovreste vedere apparire:
WiFi connessa
Indirizzo IP:
192.168.1.69
Get update message
Send update request message up to : 0
no new message
Se per qualche motivo aveste come risposta dopo:
Get update message
failed to update
Lasciando tutto collegato, collegate e scollegate subito dopo il filo nero di massa al pin REST. Dopo pochi tentativi dovreste ottenere il risultato sperato.
Ora da Telegram, attraverso il vostro account BOT, inviate il comando /start dopo qualche istante vedrete apparire sul vostro cellulare il messaggio di benvenuto.
Buon divertimento
Giuseppe
|