TTGO T-WATCH com acessório de robô

É sempre um prazer escrever sobre os produtos da LilyGo, principalmente pela qualidade. Hoje apresento o TTGO T-WATCH com a placa acessória de robótica. E é incrível!

Antes de seguirmos, gostaria de deixar claro que, como pode ser visto na imagem de destaque, ele é um pouco alto, mas repare na foto mais adiante que a base para os motores excede algo em torno de 1 centímetro do tamanho que seria se fosse apenas relógio.

TTGO T-WATCH

Na China encontramos produtos de todos os preços e qualidade; baixa, média e alta. O iPhone é feito na China, certo? Bem, coloque os produtos da LilyGo no mesmo patamar. Eles prezam demais pela qualidade do hardware e o acabamento!

Por dentro do relógio

O TTGO T-WATCH pode ser usado no pulso, bastando substituir a parte robótica pelo fundo baixo. Falando apenas da parte do relógio, temos um display ST7789 com touch screen, bastante sensível e com um lindo acabamento. Na placa do ESP32 tem uma bateria para manter a alimentação do RTC. Também tem um slot bastante pequeno utilizado para substituir ou integrar a placa que será utilizada.

No caso desse artigo, a placa acessória é um robô com 2 motores, cuja placa também contempla uma bateria recarregável. Abaixo, a foto do conjunto, que desmontei para ver seu interior.

TTGO T-WATCH desmontado

Apesar de compacto, não é um trabalho difícil desmontar e remontar. Isso significa que comprar placas acessórias não causará problemas na hora de montar. E tem várias placas, como por exemplo, a de games. Veja como o TTGO T-WATCH é bem organizado:

TTGO T-WATCH - organização

Por fora do relógio

Ele é simplesmente lindo. Do lado de fora temos um slot para cartão micro-sd, para ser utilizado com a placa acessória correspondente. Também temos um botão on/off e um botão de uso geral. Desse mesmo lado temos o conector USB: USB-C ! Uma placa com esp32 e com conector USB-C! Chega de procurar qual dos “três lados do cabo” é o que encaixa na porta USB da controladora!

Do lado oposto aos supracitados, temos uma entrada protegida com uma borracha, cuja entrada é uma expansão I2C. Dá ou não dá vontade de ter um? Esse TTGO T-WATCH é apaixonante!

Código inicial

Se tiver suporte ao ESP32 em sua IDE, inicie um projeto selecionando a placa TTGO T-WATCH. Clone ou baixe o arquivo zip (à importar na IDE do Arduino, no segundo caso) para o diretório de bibliotecas. No PlatformIO o diretório é algo como ~/.platformio/libs e no caso da IDE do Arduino deve ser algo como ~/Arduino/libraries.

Na IDE estarão dispostos códigos de exemplo, basta escolher. Mas, especificamente no meu caso, o display não funcionou com a biblioteca padrão – que seria um espetáculo, digo assim de passagem. Talvez isso ocorra exclusivamente no Linux, uma vez que a biblioteca parece muito bem feita e não tive tempo o suficiente para depurar o problema. Alternativamente instalei as bibliotecas para o display ST7789 (já mostrado em outros artigos) e usei um código de teste básico para tirar essa imagem de destaque. Também testei o código de exemplo para os motores e acionei pelo display touch. Tudo funcionando!

Vou disponibilizar um código inicial sem muito tratamento pra mostrar a simplicidade de uso (com minhas credenciais de laboratório):

#include <Arduino.h>
#include <WiFi.h>
#include <TFT_eSPI.h>
#include "bitmap.h"
#include "/home/djames/.platformio/lib/TFT_eSPI_ID1559/examples/320 x 240/Free_Font_Demo/Free_Fonts.h"
#include "time.h"

const char* ntpServer          = "pool.ntp.org";
const long  gmtOffset_sec      = 0;
const int   daylightOffset_sec = -3600*3;

const char* ssid               = "SuhankoFamily";
const char* password           = "fsjmr112";

TFT_eSPI tft = TFT_eSPI();   // Invoke library

void printLocalTime()
{
  struct tm timeinfo;
  if(!getLocalTime(&timeinfo)){
    Serial.println("Failed to obtain time");
    return;
  }
  char myTimeIs[64];
  memset(myTimeIs,0,sizeof(myTimeIs));
  timeinfo.tm_hour = timeinfo.tm_hour - 3;
  strftime(myTimeIs, 64, "  %H:%M:%S", &timeinfo);

  int xpos =  00;
  int ypos =  80;

  tft.setTextColor(TFT_DARKCYAN);
  tft.setCursor(xpos, ypos); 

  tft.pushImage(0,0,240,240,mercy);

  tft.setFreeFont(FSS24);       // Select Free Serif 12 point font
  tft.println();                // Move cursor down a line
  tft.print(myTimeIs); 
}

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

  WiFi.begin(ssid, password);

  while (WiFi.waitForConnectResult() != WL_CONNECTED){
    Serial.print(".");
  }
  Serial.println();

  Serial.println(WiFi.localIP());

  configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);

  tft.begin(); 
  tft.setSwapBytes(true);

  tft.fillScreen(TFT_BLACK);
  tft.pushImage(0,0,240,240,mercy);
}

void loop() {

  printLocalTime();
/*
  tft.setFreeFont(FSS24);       // Select Free Serif 12 point font
  tft.println();                // Move cursor down a line
  tft.print("     02:33"); 
  */
  vTaskDelay(pdMS_TO_TICKS(1000));
}

 

Onde comprar o TTGO T-WATCH?

Ele pode ser encontrado no Aliexpress (por exemplo, através desse link). O site da LilyGo é esse.

Próximo artigo relacionado

Ainda farei alguns outros artigos a respeito, agora mão-na-massa. Daí mostro algumas brincadeiras com essa belezinha, é só acompanhar!

Djames Suhanko

Djames Suhanko é Perito Forense Digital. Já atuou com deployer em sistemas de missão critica em diversos países pelo mundão. Programador Shell, Python, C, C++ e Qt, tendo contato com embarcados ( ora profissionalmente, ora por lazer ) desde 2009.

Um comentário em “TTGO T-WATCH com acessório de robô

Fechado para comentários.