Hola todos,
En este tutorial vamos a
ver como podemos hacer un bonito cuadro que cuenta los suscriptores
que tenemos en nuestro canal de YouTube.
Es un proyecto que he
rescatado de Instructables.com (Proyecto Original)
El proyecto está basado en la placa de prototipado ESP8266, que viene a ser como un arduino pero lleva Wifi incorporado.

En cuanto a hardware vamos a necesitar las siguientes cosillas.
- Un Micro ESP8266
- Display 8 Dígitos (Max7219)
- Cablecillos para conectarlo todo
- Una Batería externa
- Un marco de fotos (el tamaño es al gusto).
Por ultimo yo he usado un botón de YouTube impreso en 3D Pero podemos imprimir uno en papel ya solo es decorativo.
Estas son las conexiones que debemos realizar:
Es hora de empezar a programar, pero antes de abrir el IDE de Arduino os pongo una lista de las cosillas que hay que descargar y algunas cosas de las que necesitamos.
Lo primero son las librerías de arduino necesarias para que el código funcione correctamente.
- Librería para MAX7219
- API YouTube
- ArduinoJson
- Driver CP2102 (para que nuestro PC reconozca la placa).
Aparte vamos a necesitar los siguintes datos, que son los que identificaran tu canal y tu WiFI.
- Channel ID de tu Canal
- Google API KEY, os dejo un video para ver como se consigue. A mi me tardó unas 24 horas en estar activa.
- SSID y password de vuestra wifi.
Video API KEY
Es hora de empezar a programar, pero antes de abrir el IDE de Arduino os pongo una lista de las cosillas que hay que descargar y algunas cosas de las que necesitamos.
Lo primero son las librerías de arduino necesarias para que el código funcione correctamente.
- Librería para MAX7219
- API YouTube
- ArduinoJson
- Driver CP2102 (para que nuestro PC reconozca la placa).
Aparte vamos a necesitar los siguintes datos, que son los que identificaran tu canal y tu WiFI.
- Channel ID de tu Canal
- Google API KEY, os dejo un video para ver como se consigue. A mi me tardó unas 24 horas en estar activa.
- SSID y password de vuestra wifi.
Video API KEY
Primero debemos instalar el driver y una vez instalado abrimos el IDE de arduino.
Este IDE por defecto no tiene instaladas las placas Así que debemos ir a Archivo / Preferencias y donde pone "Gestor de URLs Adicionales de Tarjetas añadimos la siguiente dirección:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Pulsamos Ok y ahora vamos a Herramientas/Placa/Gestor de tarjetas nos desplazamos hasta el final que estará la ESP8266 y un botón para instalar, lo pulsamos; dejamos que instale y cerramos. Nos os preocupéis que al final os dejaré un vídeo con todos los pasos que he seguido.
Ya estamos listos para copiar el código. Como he usado un display con más dígitos he modificado el código para que use el MAX7219. En el proyecto Original solo contaba hasta 9999 suscriptores y espero que este cuente más al contar con más dígitos, pero hasta que no supere esa cifra no sabré si funciona correctamente.
Este IDE por defecto no tiene instaladas las placas Así que debemos ir a Archivo / Preferencias y donde pone "Gestor de URLs Adicionales de Tarjetas añadimos la siguiente dirección:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Pulsamos Ok y ahora vamos a Herramientas/Placa/Gestor de tarjetas nos desplazamos hasta el final que estará la ESP8266 y un botón para instalar, lo pulsamos; dejamos que instale y cerramos. Nos os preocupéis que al final os dejaré un vídeo con todos los pasos que he seguido.
Ya estamos listos para copiar el código. Como he usado un display con más dígitos he modificado el código para que use el MAX7219. En el proyecto Original solo contaba hasta 9999 suscriptores y espero que este cuente más al contar con más dígitos, pero hasta que no supere esa cifra no sabré si funciona correctamente.
// YouTube Subscriber Counter
//Proyecto Original de Becky Stern 2017
//Modificado Por SrFerrete.
// based on library sample code by:
// Giacarlo Bacchio (Gianbacchio on Github)
// Brian Lough (witnessmenow on Github)
// Adafruit (adafruit on github)
// Displays your current subscriber count on a seven-segment display
// This version supports up to 9999 subscribers
// He modificado el codigo y usado otro display para obtener una cifra mayor a 9999
// requires the following libraries, search in Library Manager or download from github):
#include // installed by default
//#include // https://github.com/adafruit/Adafruit-GFX-Library
//*#include "Adafruit_LEDBackpack.h" // https://github.com/adafruit/Adafruit_LED_Backpack
#include // https://github.com/witnessmenow/arduino-youtube-api
#include // https://github.com/bblanchon/ArduinoJson
/*------------- necesarios para el MAX7219------------------*/
#define PIN_CS_MAX7219 0 // Pin de Arduino al que se ha conectado el pin CS/SS del MAX7219
#define DIGITOS_DISPLAY_LED 8 // El display LED que se ha usado tiene 8 dígitos
#include "MAX7219.h"//Librería para manejar el display
#include "SPI.h"
MAX7219 pantalla(PIN_CS_MAX7219,DIGITOS_DISPLAY_LED);
//long valor_entero=0;
/*----------------------------------------------------------------*/
#include
#include
//------- Replace the following! ------
char ssid[] = "Nombre del WiFi"; // your network SSID (name)
char password[] = "Password WiFi"; // your network password
// google API key
// create yours: https://support.google.com/cloud/answer/6158862?hl=en
#define API_KEY "Api kay de google"
// youtube channel ID
// find yours: https://support.google.com/youtube/answer/3250431?hl=en
#define CHANNEL_ID "vuestro channel ID"
Adafruit_7segment matrix = Adafruit_7segment();
WiFiClientSecure client;
YoutubeApi api(API_KEY, client);
int api_mtbs = 1000; //mean time between api requests
long api_lasttime; //last time api request has been done
long subs = 0;
void setup() {
Serial.begin(115200);
/*-------- Setup display-----------------*/
SPI.begin(); // Para no interferir con otro código que utilice SPI, la librería MAX7219 no inicializa SPI y hay que hacerlo desde el programa
pantalla.inicializar(); // SPI debe estar inicializado antes de inicializar el MAX7219 (que usa SPI)
pantalla.apagar();
pantalla.desactivar_modo_prueba();
pantalla.brillo(15); // Brillo medio (va desde cero hasta 15)
pantalla.borrar();
pantalla.encender();
/*--------------------------------------------*/
// Set WiFi to station mode and disconnect from an AP if it was Previously
// connected
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(100);
// Attempt to connect to Wifi network:
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);
}
void loop() {
if (millis() > api_lasttime + api_mtbs) {
if(api.getChannelStatistics(CHANNEL_ID))
{
Serial.println("---------Stats---------"); //Estas lineas sirven para ver en el monitor serie
//de arduino que el sistema funciona
Serial.print("Subscriber Count: ");
Serial.println(api.channelStats.subscriberCount);//devuelve el numero de suscriptores
Serial.print("View Count: ");
Serial.println(api.channelStats.viewCount); //devuelve el numero de visualizaciones
Serial.print("Comment Count: ");
Serial.println(api.channelStats.commentCount); //este no me duvuelve ningun dato
Serial.print("Video Count: ");
Serial.println(api.channelStats.videoCount); //devuelve el numero de videos de tu canal
// Probably not needed :)
//Serial.print("hiddenSubscriberCount: ");
//Serial.println(api.channelStats.hiddenSubscriberCount);
Serial.println("------------------------");
delay(5000);
//matrix.print(api.channelStats.subscriberCount, DEC);
//matrix.writeDisplay();
subs=api.channelStats.subscriberCount; // metemos el numero devuelto en una variable
pantalla.mostrar_cifra(subs--,0,false); //y lo visualizamos en el display
//está testado con numero metidos a mano
}
api_lasttime = millis();
}
}
Antes de dar a subir el código aseguraros de que habéis configurado correctamente el modelo de placa y el puerto COM correspondiente. Ahora Sí, le podemos dar a subir el código.
Una vez subido Abrimos el monitor serie y a los pocos segundos nos dirá Wifi Conected, nos dará la dirección IP que ha cogido el ESP8266 y empezará a devolver datos de nuestro Canal.
Ya solo queda ponerlo todo en el marco de fotos pero como no quiero aburriros con más parrafadas os dejo el vídeo de todo el montaje.