31 maio 2019

Contador de seguidores do Instagram com ESP32

Quer um jeito fácil de acompanhar quantos seguidores você tem no Instagram? Então confira neste post como montar um contador de seguidores do Instagram usando o módulo WiFi ESP32 com display Oled que vai se conectar na sua página a cada minuto e mostrar o número de seguidores no display.

Contador de seguidores Instagram com ESP32


Como essa é a primeira vez que o módulo ESP32 com display Oled aparece aqui no blog, vamos dar uma olhada no hardware antes de seguir para o projeto.

Módulo WiFi ESP32 com display Oled


O módulo que vamos usar é este com o ESP32 da Espressif, que tem CPU Xtensa® Dual-core de 32 bits e roda com clock máximo de 240MHz. A memória flash é de 4MB e RAM de 520Kbytes, além do wifi padrão 802.11 b/g/n e bluetooth BLE 4.2.

Módulo Wifi ESP32 com display Oled

É um módulo bem completo, contando com 11 portas de entrada e saída (GPIO) e as interfaces de comunicação mais comuns como I2C, SPI e serial, além de conversor analógico digital (ADC).

O display OLED tem resolução de 128x64 pixels e permite a apresentação de gráficos e textos, como veremos mais adiante. A alimentação do módulo é feita basicamente através do conector micro USB, que serve tanto para alimentação como para transferência de dados e que no nosso caso será usado para programação através da IDE do Arduino.

Neste exemplo de uso do contador Instagram, não é necessário ligar nenhum componente adicional no módulo ESP32. Usaremos apenas as funções de WiFi e o display Oled para apresentação dos dados.

Configurando a IDE Arduino para ESP32


Para utilizar este módulo ESP32 com IDE Arduino, vamos primeiro habilitar a placa. Para isso, entre na IDE do Arduino no menu Arquivo -> Preferências. Na janela de configurações da IDE, coloque o seguinte endereço no campo URLs Adicionais para Gerenciadores de Placas:

https://dl.espressif.com/dl/package_esp32_index.json

Sua tela deve ficar assim:

IDE Arduino - Preferencias

Feito isso,  acesse o menu Ferramentas -> Placa -> Gerenciadores de Placas e procure por "ESP32", instalando o pacote esp32 by Espressif Systems:

IDE Arduino - Gerenciador de Placas
Por último, selecione a placa WEMOS LOLIN32 no menu Ferramentas -> Placa e a porta serial (COM) detectada pela IDE. 

Um detalhe importante é que você deve ter algum versão do Python instalada na sua máquina para que esse procedimento funcione corretamente ou instalar a biblioteca pyserial no seu computador. A versão mais atual do Python pode ser encontrada neste link.

Programa contador de seguidores Instagram com ESP32


Para montar o programa do contador de seguidores Instagram com ESP32 serão utilizadas 3 bibliotecas: a ESP8266 and ESP32 Oled Driver for SSD1306, que como o próprio nome diz é responsável pela comunicação com o display, a InstagramStats, que faz a conexão com o Instagram e buscas os dados referentes ao número de seguidores e por último a Json Streaming Parser, obrigatória para que a InstagramStats funcione. 

Todas elas podem ser instaladas à partir da própria IDE do Arduino, no menu Sketch -> Incluir Biblioteca -> Gerenciar Bibliotecas.

Vamos instalar primeiro a biblioteca do display OLED, que usa o controlador SSD1306. No Gerenciador de bibliotecas, procure por SSD1306 e selecione a ESP8266 and ESP32 Oled Driver for SSD1306, conforme imagem abaixo:

Instalação da biblioteca SSD1306 para ESP32 na IDE Arduino

Faça o mesmo com a biblioteca InstagramStats:

Biblioteca InstagramStats IDE Arduino

Por último, faça a procura por JSON e instale a Json Streaming Parser:

Instalação biblioteca Json Streaming Parser

Finalizada a instalação das bibliotecas, vamos carregar o programa que vai ler as informações do Instagram e apresentar no display.
 
O programa abaixo faz a conexão com a rede wifi e em seguida acessa a página do Instagram procurando o perfil do usuário configurado na linha 26 (username). O nome do usuário pode ser encontrado no link da página no Instagram, como no exemplo abaixo da página do Arduino e Cia:

http://www.instagram.com/arduinoecia

A parte destacada em vermelho é a que você vai colocar na linha 26.

Não esqueça de configurar também o nome da sua rede wifi e a senha nas linhas 11 e 12 do programa, respectivamente.

 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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
//Programa: Contador de seguidores do Instagram com ESP32
//Autor: Arduino e Cia

#include <InstagramStats.h>
#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <SSD1306Wire.h>
#include <JsonStreamingParser.h>

//Configuracoes da rede WiFi
char ssid[] = "NOME DA REDE WIFI";
char password[] = "SENHA DA REDE WIFI";

WiFiClientSecure client;
InstagramStats instaStats(client);

//Inicializa o display oled nas portas 5 e 4
SSD1306Wire  display(0x3c, 5, 4);

//Tempo entre leituras
unsigned long delayBetweenChecks = 60000;
unsigned long whenDueToCheck = 0;

//Nome do usuario Instagram, conforme URL
//https://www.instagram.com/arduinoecia/
String userName = "arduinoecia";

void setup()
{
  Serial.begin(115200);

  //Conecta na rede wifi
  Serial.print("Conectando a rede Wifi: ");
  Serial.println(ssid);

  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED)
  {
    Serial.print(".");
    delay(500);
  }
  Serial.println("");
  Serial.println("WiFi Conectado!");
  Serial.println("Endereco IP: ");
  IPAddress ip = WiFi.localIP();
  Serial.println(ip);

  //Inicializa o display
  display.init();
  display.flipScreenVertically();
}

void mostra_num_seguidores()
{
  //Mostra os dados no serial monitor
  Serial.println("Obtendo dados do Instagram para o usuario " + userName );
  InstagramUserStats response = instaStats.getUserStats(userName);
  Serial.print("Numero de seguidores: ");
  Serial.println(response.followedByCount);

  //Mostra os dados no display Oled
  display.clear();
  display.setTextAlignment(TEXT_ALIGN_LEFT);

  //Parte superior - Logo Instagram
  display.drawHorizontalLine(7, 5, 15);
  display.drawVerticalLine(5, 7, 15);
  display.drawVerticalLine(23, 7, 15);
  display.drawHorizontalLine(7, 23, 15);
  display.setPixel(6, 6);
  display.setPixel(6, 22);
  display.setPixel(22, 6);
  display.setPixel(22, 22);
  display.setPixel(19, 9);
  display.drawCircle(14, 14, 4);
  display.drawCircle(19, 9, 1);
  display.setFont(ArialMT_Plain_16);
  display.drawString(30, 5, "INSTAGRAM");
  display.drawString(31, 5, "INSTAGRAM");

  //Mostra o numero de seguidores
  display.setFont(ArialMT_Plain_24);
  display.drawString(38, 32, String(response.followedByCount));
  display.display();
}

void loop()
{
  unsigned long timeNow = millis();
  if ((timeNow > whenDueToCheck))
  {
    mostra_num_seguidores();
    whenDueToCheck = timeNow + delayBetweenChecks;
  }
}

Você pode acompanhar o progresso da conexão e mensagens do módulo acessando o serial monitor na IDE do Arduino, que vai mostrar também o endereço IP do ESP32:

Serial Monitor Instagram ESP32


Fácil não? Agora que você já sabe como criar um contador de seguidores Instagram usando ESP32 com display OLED embutido, siga o Arduino e Cia no Instagram!

Nenhum comentário:

Postar um comentário