Nell’articolo di oggi vedremo come utilizzare i PIN GPIO. Esploreremo anche la parte elettronica d’ora in avanti, inizieremo con l’utilizzo del sensore di temperatura DHT11 con invio dei dati tramite bot telegram.
Lista componenti
- ESP32-WROVER
- Breadboard
- dht11
- 3x jumper
- resistore 10k ohm
- GPIO extension board (falcolatitivo)
Descrizione componenti
DHT11
Attenzione, in alcuni modelli di sensore DHT 11 i pin Vcc e Signal possono essere invertiti. Un eventuale problema per il quale il programma compilato non funzioni potrebbe consistere in questo motivo.
Il sensore DHT11 espone 3 pin denominati:
- GND: piedino di massa
- VCC: piedino di alimentazione
- sitgnal: piedino di comunicazione dati 1-wire
Collegamenti
In seguito schema e diagramma di collegamento. Per costruire un circuito ricordati di tenere la scheda spenta.
CREAZIONE BOT
Il primo passo consiste nell’aprire l’applicazione telegram. Una volta aperta cerchiamo “BotFather” tramite la funzione cerca cliccando sull’apposita lente di ingrandimento.
“BotFather” è un bot che permette di creare altri bot.
Avviamo il bot scrivendo “/start“, poi premiamo invio.
Per creare un nuovo bot digitiamo “/newbot”.
BotFather ci chiederà di assegnare un nome al nostro nuovo Bot, basta digitare un qualsiasi nome e poi premere Invio.
Dobbiamo anche inserire un username che lo renderà riconoscibile pubblicamente. Username deve terminare in “Bot” o ” _bot”.
In seguito alla assegnazione del nome e dell’username BotFather ci comunicherà informazioni importanti in seguito per compilare il codice per il funzionamento del sensore e dell’invio dati. ATTENZIONE: QUESTE INFOMAZIONI LE DOVREMMO TENERE SOLO PER NOI. La prima parte riguarda il percorso per trovare il nostro bot. La seconda è la API che sarà utilizzato nel nostro codice.
Per recuperare il chat_id bisogna andare al link https://api.telegram.org/bot<TOKEN>/getUpdates, dove al posto di <TOKEN> dovete inserire il TOKEN di accesso alle API http del bot.
A questo punto mandate un messaggio nella chat ed aggiornate la pagina del link. In questa pagina vedrete popolarsi un file JSON in cui vi viene mostrato il CHAT_ID nella chiave “chat” e nel campo “id” (come nello screenshot sottostante):
In alternativa puoi usare questo sito. Inserisci il token nell’apposito form per ottenere il chat id del tuo bot, il tutto è abbastanza autoesplicativo https://codesandbox.io/s/get-telegram-chat-id-q3qkk
Codice
Se questo è il tuo primo articolo ti invito di leggere prima questo per l’installazione dei driver della scheda. Ecco qui un piccolo riepilogo prima di compilare e caricare il codice.
Dobbiamo installare la libreria dht.h, dobbiamo andare su Sketch->Include library-> Manage libraries e cercare nell’apposito menù la libreria dht.h.
Dobbiamo installare la libreria UniversalTelegramBot.h, dobbiamo andare su Sketch->Include library-> Manage libraries e cercare nell’apposito menù la libreria UniversalTelegramBot.h.
Ecco qui lo sketch:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
#include <WiFi.h> #include <WiFiClientSecure.h> #include <DHT.h> #include <UniversalTelegramBot.h> #define WIFI_SSID "insertWIFI" #define PASSWORD_WIFI "password" #define BOT_API_TOKEN "insertapitoken" #define chat_id "insertChatID" //nel readme è presente la guida su come ottenere il chat id del bot #define DHT_SENSOR_PIN 13 // ESP32 pin GIOP21 connesso al dht11 #define DHT_SENSOR_TYPE DHT11 DHT dht_sensor(DHT_SENSOR_PIN, DHT_SENSOR_TYPE); const unsigned long intervallo = 10000; //pausa per la ricezione dei messaggi unsigned long ultima_chiamata = 0; //gestione del millis WiFiClientSecure s_client; //wifi client UniversalTelegramBot bot(BOT_API_TOKEN, s_client); //telegram client void setup() { WiFi.begin(WIFI_SSID, PASSWORD_WIFI); //connetto al wifi s_client.setCACert(TELEGRAM_CERTIFICATE_ROOT); //creo una connessione con Telegram utilizzando un certificato di sicurezza dht_sensor.begin(); // initialize the DHT sensor while (WiFi.status() != WL_CONNECTED) { //finchè il wifi non è connesso attendi delay(500); } } void loop() { String msg="Ciao, la temperatura e' pari a "; if (millis() - ultima_chiamata > intervallo) { //se il valore del timer "millis" - l'ultimo valore in millisecondi di quando abbiamo eseguito le istruzioni, è maggiore del tempo di attesa "intervallo", allora esegui le istruzioni float humi = dht_sensor.readHumidity();// leggo l'umidità float tempC = dht_sensor.readTemperature();//leggo la temperatura in gradi celsius // controllo se la lettura e' stata effetuata con successo if ( isnan(tempC) || isnan(humi)) { bot.sendMessage(chat_id, "Errore nella lettura"); } else { //eseguo varie concatenazioni per l'output msg += msg.concat(tempC); msg += " C"; msg += " e l'umidita' e del "; msg += msg.concat(humi); msg += "%"; bot.sendMessage(chat_id,msg); } ultima_chiamata = millis(); //aggiorna l'ultimo periodo in millisecondi in cui sono state eseguite le istruzioni all'interno del ciclo while } } |
Compila e carica il codice sull’ESP32, ed ecco qui che potremo visualizzare i dati relativi alla temperatura e umidità (ogni tre ore) aprendo il nostro bot telegram ed avviandolo.
Iscriviti ai nostri gruppi Telegram
Link utili
- Arduino UNO R3
- Elegoo UNO R3
- Arduino Starter Kit per principianti
- Elegoo Advanced Starter Kit
- Arduino Nano