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.
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.
É 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 128×64 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:
Feito isso, acesse o menu Ferramentas -> Placa -> Gerenciadores de Placas e procure por “ESP32”, instalando o pacote esp32 by Espressif Systems:
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 busca 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:
Faça o mesmo com a biblioteca InstagramStats:
Por último, faça a procura por JSON e instale a Json Streaming Parser:
Dúvidas na instalação da biblioteca? Confira o post Como instalar uma biblioteca na IDE Arduino.
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:
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.
//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:
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!
Confira também outros posts usando ESP32 aqui mesmo no Arduino e Cia!
Fiz e funcionou perfeitamente, porém após algumas horas de funcionamento ele fica mostrando 0 seguidores e não passa disso, acredito que ele travou ou se desconectou da internet, teria algum comando para implementar para que o esp32 reboot ou reload? Muito grato e parabéns pelo artigo.
Oi James,
Estranho, eu tenho um aqui funcionando à um bom tempo. Você está alimentando o ESP32 como?
Abraço!
Adilson
Eu gostaria de um com um display maior, pode ser display de 8 dígitos ou os de led.
Obrigado,
o tutorial é muito bom, porem não importa a conta do instagram que coloco, sempre trás o valor zerado. o que pode ser?
Oi Gustavo,
Tudo bem? Eu testei aqui, inclusive em um modelo diferente de ESP32, e deu tudo certo. Consegui ver o número de usuários das contas “arduinoecia”, “filipeflop”, “robocore” e “raspberrypi”, sem problemas. Talvez seja algum problema de conexão wifi?
Abraço!
Adilson
Gostei do seu projeto, parabéns! eu não consegui achar e baixar as bibliotecas necessárias. Qual a possibilidade de você disponibilizar os links para download? novamente parabéns e muito obrigado.
Oi Oziris!
Tente pela própria IDE do Arduino, acabei de checar e todas estão disponíveis. Acho a maneira mais fácil de instalar, pois a IDE faz (quase) todo o trabalho pra você.
Abraço!
Adilson