Torniamo ad utilizzare una Wemos D1 Mini con il suo display shield TFT Lolin per creare un YouTube Counter

Il contatore di iscritti è un progetto estremamente semplice da realizzare, soprattutto grazie ad apposite librerie e alla semplicità della programmazione del display TFT Lolin pensato per la Wemos D1 Mini. Anticipiamo che sarà necessaria una fase preliminare per creare una API KEY e consentire la lettura dei dati che ci serviranno in questo articolo.

Progetto

Come per il controller per la multipresa WiFi, adopereremo una Wemos D1 Mini per sfruttarne la connettività WiFi e connetterci a Internet e richiedere i dati tramite API KEY che creeremo tramite Google Cloud Platform. Conditio sine qua non è aver un account Google e un canale YouTube associato all’account Google. I dati saranno stampanti sul display shield TFT della Lolin. A differenza del controller, non useremo una batteria per alimentare il progetto, ma forniremo direttamente i 5V da alimentatore USB.

Componenti

Vista la praticità e le ridotte dimensioni, la Wemos D1 Mini è una dev-board con ESP8266 di ridotte dimensioni ideale per piccoli progetti. Interfacceremo la Wemos D1 Mini con il ben noto display TFT da 2.4″della LOLIN che abbiamo visto tempo fa in questo ARTICOLO. Il nostro YouTube Counter sarà collocato all’interno di una scocca in stampa 3D di colore bianco, la stessa adoperata per il progetto del controller.

Passando all’alimentazione, ci servirà un caricabatterie da smartphone per fornire corrente allo YouTube Counter, corrente che passerà per un connettore Micro-USB femmina.

Lista componenti su Amazon:

Lista componenti su Aliexpress:



Collegamenti

Il nostro YouTube Counter prevede 0 collegamenti, visto che ormai dovrebbe conoscere bene la semplicità con cui la Wemos D1 Mini si colloca sul display. Unica accortezza sono i collegamenti elettrici, molto semplici ma mai da sottovalutare: colleghiamo i 5V della Wemos al pin Vcc, mentre il GND al GND.

YouTube counter

Codice

Passiamo a creare la API KEY per il nostro progetto. Apriamo il browser e muoviamoci sul sito https://console.cloud.google.com/, accedendo con il nostro account Google.

YouTube counter

Muoviamoci nella parte superiore della pagina e creiamo un nuovo progetto. Il nome non è particolarmente importante, ma è bene sceglierne uno facile da ricordare o attinenti al progetto.

YouTube counter

Una volta fatto questo, clicchiamo su Crea.

YouTube counter

Muoviamoci sul menu laterale e apriamo la voce API e servizi, poi dal sottomenu clicchiamo sulla voce Libreria.

Una volta aperta la pagina, cerchiamo nella barra di ricerca YouTube Data API v3 e apriamola.

YouTube counter

Una volta aperta, clicchiamo su Abilita per attivarla.

Torniamo al menu di API e servizi e clicchiamo sulla voce Credenziali, poi andiamo alla voce CREA CREDENZIALI. Selezioniamo la voce Chiave API.



Si aprirà una nuova finestra con la Chiave API creata. Copiamola e mettiamola da parte, poiché ci servirà per lo sketch del nostro YouTube Counter.

Passiamo ora ad esaminare il codice. Premettiamo che saranno essenziali alcune librerie come la YouTubeApi e la ArduinoJSON che potete scaricare a questo LINK con sketch e file per la stampa 3D. Partiamo analizzando proprio queste due librerie. La YouTubeAPI ci permetterà di connetterci tramite la Piattaforma Google Cloud e estrapolare le informazioni che ci gioveranno e che saranno poi elaborate tramite la libreria ArduinoJSON. Le librerie ESP8266WIFI e WiFiClientSecure si occuperanno della connettività WiFi e della richiesta tramite protocollo HTTPS, mentre le librerie Adafruit_ILI9341, Adafruit_GFX e SPI saranno essenziali per il funzionamento del DisplaTFT.


#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <YoutubeApi.h>
#include <ArduinoJson.h>
#include <Adafruit_ILI9341.h>
#include <Adafruit_GFX.h>
#include <SPI.h>

Abbiamo anche incluso il file YT.h che ci servirà per stampare a display il logo di YouTube.


#include "YT.h"

Procediamo definendo i pin della Wemos che adoperiamo per la connessione con il display TFT, la API KEY che abbiamo ricavato pocanzi, l’ID del canale YouTube che otteniamo entrando sulla pagina principale dello stesso da browser (è la parte terminale dell’URL) e creando l’oggetto denominato tft per gestire il display. Inseriamo pure l’SSID e la password della nostra rete WiFi, creiamo l’oggetto client per la connessione tramite API, dichiariamo due variabili per il calcolo del tempo.


#define TFT_CS D0
#define TFT_DC D8
#define TFT_RST -1

#define API_KEY "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
#define CHANNEL_ID "xxxxxxxxxxxxxxxxxxxxxxxx"

Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST);

char ssid[] = "nome-rete";
char password[] = "password";

WiFiClientSecure client;
YoutubeApi api(API_KEY, client);

unsigned long timeBetweenRequests = 60000;
unsigned long nextRunTime;

Nel VOID SETUP avviamo monitor seriale, avviamo display e indichiamo la rotazione, poi impostiamo la modalità Station per il WiFi e disconnettiamo il WiFi da precedenti connessioni. Effettuiamo la connessione alla rete WiFi prima, poi tramite funzione setInsicure() ci connettiamo ai servizi Google. Infine stampo il logo di YouTube su display.


Serial.begin(115200);

tft.begin();
tft.setRotation(1);

WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(500);

Serial.print("Connecting Wifi: ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
IPAddress ip = WiFi.localIP();
Serial.println(ip);

client.setInsecure();
api._debug = true;

tft.fillScreen(ILI9341_WHITE);
tft.drawBitmap( 100, 10, YT, 120, 90, ILI9341_RED);

Nel VOID LOOP controllo il trascorrere del tempo in modo tale, a determinati intervalli, da controllare se ci sono variazioni nei dati ricevuti, cosicché da aggiornarli se essi variano. I dati così raccolti vengono prima stampati su monitor seriale, poi su display TFT.


if (millis() > nextRunTime) {
if(api.getChannelStatistics(CHANNEL_ID)){
Serial.print("Iscritti: ");
Serial.println(api.channelStats.subscriberCount);
Serial.print("Visualizzazioni: ");
Serial.println(api.channelStats.viewCount);

tft.setCursor(70, 125);
tft.setTextColor(ILI9341_BLACK,ILI9341_WHITE);
tft.setTextSize(8);
tft.println(api.channelStats.subscriberCount);
tft.setTextSize(2);
tft.setCursor(10, 215);
tft.print("Views: ");
tft.println(api.channelStats.viewCount);

}
nextRunTime = millis() + timeBetweenRequests;
}

Lo sketch è pronto e basterà caricarlo dalla IDE di Arduino, selezionando come scheda la LOLIN(WEMOS) D1 R2 & Mini. Avviamo il tutto ed apparirà su display il logo di YouTube con il numero degli iscritti e le views del canale.