Ардуино

Счетчик YouTube подписчиков на ESP8266 и OLED дисплее

Что это за устройство?

Если у вас есть канал на Youtube и вы почти популярны, то счетчик YouTube подписчиков окажется для вас просто прикольным гаджетом, который будет показывать количество подписчиков на ваш канал.

Вам не нужно заходить на сайт, открывать браузер. Счетчик YouTube самодостаточное устройство, которое умеет подключаться к WiFi роутеру и самостоятельно подгружать необходимые данные.

Изготовление счетчик YouTube подписчиков

Используемые библиотеки для ESP8266

YoutubeApi.h — https://github.com/witnessmenow/arduino-youtube-api
SH1106.h — https://github.com/rene-mt/esp8266-oled-sh1106

Подключение ESP8266 к OLED дисплею

VCC — VCC
GND — GND
GPIO14 — SCL
GPIO0 — SDA

Подключение USB-TTL к ESP8266

5V — VCC
TX — RX
RX — TX
GND — GND

Код для счетчика YouTube подписчиков

Код написан для загрузки через Arduino IDE.

Не забудьте поменять:
WIFI_NAME — имя вашей WiFi сети
WIFI_PASS — пароль от WiFi сети
YOUR_YOUTUBE_API — YouTube API
CHANNEL_ID — URL адрес канала на YouTube

#include <YoutubeApi.h>
#include "SH1106.h"
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>

SH1106  display(0x3c, D3, D5);

//------- Replace the following! ------
char ssid[] = "WIFI_NAME";       // your network SSID (name)
char password[] = "WIFI_PASS";  // your network key
#define API_KEY "YOUR_YOUTUBE_API"  // your google apps API Token
#define CHANNEL_ID "CHANNEL_ID" // makes up the url of channel

WiFiClientSecure client;
YoutubeApi api(API_KEY, client);

int api_mtbs = 60000; //mean time between api requests
long api_lasttime;   //last time api request has been done

long subs = 0;
void setup() {

  Serial.begin(115200);

  display.init();
  display.flipScreenVertically();
  display.setFont(ArialMT_Plain_10);

  // 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---------");
      Serial.print("Subscriber Count: ");
      Serial.println(api.channelStats.subscriberCount);
      Serial.print("View Count: ");
      Serial.println(api.channelStats.viewCount);
      Serial.print("Comment Count: ");
      Serial.println(api.channelStats.commentCount);
      Serial.print("Video Count: ");
      Serial.println(api.channelStats.videoCount);
      // Probably not needed :)
      //Serial.print("hiddenSubscriberCount: ");
      //Serial.println(api.channelStats.hiddenSubscriberCount);
      Serial.println("------------------------");

    }
    api_lasttime = millis();
  }

int subcountme = api.channelStats.subscriberCount;

  display.clear();
  display.setFont(ArialMT_Plain_24);
  display.setTextAlignment(TEXT_ALIGN_CENTER);
  display.drawString(64, 0, "Subscribers");

  if (subcountme == 0)
{
  display.setFont(ArialMT_Plain_16);
  display.drawString(64, 24, "loading ...");
  }
else {
  display.drawString(64, 24, String(api.channelStats.subscriberCount));
  }
  
  
  //display.drawString(12, 16, "View:");
  //display.drawString(72, 16, String(api.channelStats.viewCount));
  
  //display.drawString(12, 32, "Video:");
  //display.drawString(72, 32, String(api.channelStats.videoCount));

  display.setFont(ArialMT_Plain_10);
  display.drawString(64, 50, "YouTube: 150watt");

  display.display();
}

Вячеслав Ким

Привет, меня зовут Вячеслав. Я создаю электронные устройства, иногда печатаю на 3D принтере, режу  лазером и веду канал на YouTube. А в этом блоге, я пишу про микроэлектронику, Arduino и робототехнику.

Recent Posts

Контроллер автоматической подсветки лестницы «Laika Pro»

Промо страница контроллера "Laika" Обновленный контроллер "Laika Pro" на 28 каналов Датчики движения (обнаружения) Миниатюрный…

2 года ago

Arduino RS-485: Подключение, описание и примеры с кодами

Интерфейс RS-485 RS-485 является одним из наиболее распространенных интерфейсов передачи данных. Для передачи сигнала используется…

2 года ago

Создаем аппарат ИВЛ в Кыргызстане

Меня зовут Вячеслав Ким. Я являюсь выпускником Alumni программы IVLP США. Входя в группу по…

2 года ago

DFPlayer Mini — Обзор и описание MP3 модуля для Arduino

Введение DFPlayer Mini - это миниатюрный MP3 проигрыватель для плат Arduino. Недорогой MP3 модуль может работать без…

2 года ago

Копилка со счетчиком монет на Arduino с OLED дисплеем

https://www.youtube.com/watch?v=lyBiI67T2Zw <pre class="lang:arduino decode:true " > /* Created 2017 Remixed from AlexGyver */ //-------НАСТРОЙКИ--------- #define…

2 года ago

Устройство подсчета посетителей «PIPL Counter v3»

В третьей версии устройства для подсчета посетителей "PIPL Counter" для LiteCRM был полностью изменен дизайн.…

2 года ago