Pascal nous avait parlé sur le blog de son interphone Wi-Fi multipostes fabriqué avec des Raspberry Pi. Cette fois il a choisi de présenter la montre TTGO qui fait partie de la famille (LilyGo TTGO T-Watch). La TTGO est une véritable montre connectée qui reprend un peu le design de l’Apple Watch. Elle est basée sur un ESP32 entièrement programmable avec du code C++ depuis l’IDE Arduino ou PlatformIO.
Bonjour à tous,
Moi c’est Pascal, je reviens vers vous pour une présentation de la montre programmable T-Watch TTGO 2020 V1 de Lilygo 🙂
Il commence à y avoir beaucoup de tuto sur internet, donc je vous mets tout en bas les sources qui m’ont aidé, et je vous explique ici un code tout simple pour commencer.
On peut la programmer avec du code C++ Arduino, MicroPython ou Blockly (Moi j’utilise l’IDE Arduino, mais on peut aussi avec PlatformIO)
Au sommaire :
Les caractéristiques
- Petit écran tactile LCD 1.54′ Résolution: 240x240px
- Batterie de 350mA qui tient 24h (en moyenne pour moi)
- Module RTC
- Accéléromètre
- Un vibreur
- Haut-parleur
- Wifi/Bluetooth
- Mémoire Flash de 16Mb + SPRAM de 8Mb
- Rechargable par microUsb
- Dimensions lageur 40, hauteur 47 et épaisseur 12mm
- Poids 60g
Les broches sont accessibles (mais je n’ai jamais testé cela..) et un bouton sur le côté (moui la couronne ne tourne pas, c’est juste un bouton)
Il me semble qu’ils ont sorti la V2 avec un GPS, à vérifier
Note de framboise314 : Oui ils ont sorti une v2 avec GPS qu’on trouve ici
Le déballage et l’installation
Une boîte, un fil USB, une batterie, une montre et un livret bien documenté pour la configuration de l’IDE Arduino.
Ensuite ne pas oublier de sélectionner la bonne carte depuis Outils > Type de carte > Gestionnaire de carte > ESP32 Arduino > TTGO watch
Programmation, ce qu’il faut savoir
L’ESP32 est très puissant, il a deux cœurs, cela veut dire qu’on peut traiter plusieurs informations en mêmes temps.
Autre point très important, son contrôleur d’alimentation permet de désactiver certains composants, exemple si on n’utilise pas le Wi-Fi -> on le désactive afin d’économiser la batterie..
Dernier point: il est possible (il faut) mettre en veille la puce, sinon la montre ne passera pas la journée ! Le module RTC se charge de garder l’heure.
Il y a plusieurs profondeurs de veille (5 modes), donc plusieurs façon de réveiller la montre.
Moi perso je n’utilise que le simple light_sleep() (Wi-Fi / Bluetooth déconnectés) ce qui met la montre en veille légère, le cœur du CPU continue de fonctionner afin de pouvoir la rallumer avec le bouton, la consommation de ce mode est de 0,8 mA donc elle tient la journée 🙂
Plus d’info ici: https://projetsdiy.fr/ttgo-t-watch-veille-deep-sleep-reveil-accelerometre-bma423-axp202-esp32/
Un premier programme simple
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#define LILYGO_WATCH_2020_V1 // T-Watch 2020 #include <LilyGoWatch.h> TTGOClass *watch; void setup() { // Récupère l'objet et allume l'écran watch = TTGOClass::getWatch(); // On initialise l’objet watch en appelant la méthode getWatch() watch->begin(); // Initialisation de l'écran avec la librairie et la méthode begin() watch->openBL(); // Allume le rétro-éclairage de l'écran // On utilise la librairie eTFT pour afficher du texte à l'écran watch->tft->fillScreen(TFT_BLACK); // Fond noir watch->tft->setTextFont(2); // Style de police watch->tft->setTextSize(2); // Taille de police watch->tft->setTextColor(TFT_WHITE); // couleur watch->tft->setCursor(0, 0); // Position sur l'écran x, y (max 240,240) watch->tft->println(F("Hello T-Watch")); } void loop() {} |
Voilà, il ne reste plus qu’à le téléverser dans la montre..
Des exemples
Il y a beaucoup de scripts accessibles depuis l’IDE Arduino dans: Fichier > Exemples > TTGO
Je vous mets en lien mon script de menu celui de ma vidéo (réalisé avec des images au format .xbm) et ma saisie de texte pour rédiger des mémos qui est inspiré de l’alphabet palmOs 😀
Conclusion
Je l’utilise tout les jours depuis bientôt 1 an, j’en suis ravi!
Mon seul regret reste que le bracelet devrait être en tissus 😀
Je remercie encore François pour son accueil sur ses pages! Bonne bidouilles à toutes et tous!
Note de framboise314 : Un lien vers la montre LilyGo TTGO T-Watch
Sources
- https://projetsdiy.fr/ttgo-t-watch-veille-deep-sleep-reveil-accelerometre-bma423-axp202-esp32/
- https://www.instructables.com/Lilygo-T-Watch-2020-Arduino-Framework/
- https://diyprojects.io/ttgo-t-watch-get-started-esp32-tft_espi-library/#.YBvqJOhKhPY
Bonjour et merci pour ce billet. Est-ce qu’il est possible de récupérer les données brutes de l’accéléromètre ?
Salut,
Désolé comme je ne l’utilise pas je n’ai jamais cherché à récupérer les données de l’accéléromètre, il est accessible via la classe sensor.
J’ai trouvé un exemple de script à étudier, je te le colle ici en vrac:
#define LILYGO_WATCH_2020_V1
#include
TTGOClass *watch;
TFT_eSPI *tft;
BMA *sensor;
void setup()
{
Serial.begin(115200);
// Get TTGOClass instance
watch = TTGOClass::getWatch();
// Initialize the hardware, the BMA423 sensor has been initialized internally
watch->begin();
// Turn on the backlight
watch->openBL();
//Receive objects for easy writing
tft = watch->tft;
sensor = watch->bma;
// Accel parameter structure
Acfg cfg;
/*!
Output data rate in Hz, Optional parameters:
– BMA4_OUTPUT_DATA_RATE_0_78HZ
– BMA4_OUTPUT_DATA_RATE_1_56HZ
– BMA4_OUTPUT_DATA_RATE_3_12HZ
– BMA4_OUTPUT_DATA_RATE_6_25HZ
– BMA4_OUTPUT_DATA_RATE_12_5HZ
– BMA4_OUTPUT_DATA_RATE_25HZ
– BMA4_OUTPUT_DATA_RATE_50HZ
– BMA4_OUTPUT_DATA_RATE_100HZ
– BMA4_OUTPUT_DATA_RATE_200HZ
– BMA4_OUTPUT_DATA_RATE_400HZ
– BMA4_OUTPUT_DATA_RATE_800HZ
– BMA4_OUTPUT_DATA_RATE_1600HZ
*/
cfg.odr = BMA4_OUTPUT_DATA_RATE_100HZ;
/*!
G-range, Optional parameters:
– BMA4_ACCEL_RANGE_2G
– BMA4_ACCEL_RANGE_4G
– BMA4_ACCEL_RANGE_8G
– BMA4_ACCEL_RANGE_16G
*/
cfg.range = BMA4_ACCEL_RANGE_2G;
/*!
Bandwidth parameter, determines filter configuration, Optional parameters:
– BMA4_ACCEL_OSR4_AVG1
– BMA4_ACCEL_OSR2_AVG2
– BMA4_ACCEL_NORMAL_AVG4
– BMA4_ACCEL_CIC_AVG8
– BMA4_ACCEL_RES_AVG16
– BMA4_ACCEL_RES_AVG32
– BMA4_ACCEL_RES_AVG64
– BMA4_ACCEL_RES_AVG128
*/
cfg.bandwidth = BMA4_ACCEL_NORMAL_AVG4;
/*! Filter performance mode , Optional parameters:
– BMA4_CIC_AVG_MODE
– BMA4_CONTINUOUS_MODE
*/
cfg.perf_mode = BMA4_CONTINUOUS_MODE;
// Configure the BMA423 accelerometer
sensor->accelConfig(cfg);
// Enable BMA423 accelerometer
sensor->enableAccel();
// You can also turn it off
// sensor->disableAccel();
// Some display settings
tft->setTextColor(random(0xFFFF));
tft->drawString(« BMA423 accel », 25, 50, 4);
tft->setTextFont(4);
tft->setTextColor(TFT_WHITE, TFT_BLACK);
}
void loop()
{
Accel acc;
// Get acceleration data
bool res = sensor->getAccel(acc);
if (res == false) {
Serial.println(« getAccel FAIL »);
} else {
// Show the data
tft->fillRect(98, 100, 70, 85, TFT_BLACK);
tft->setCursor(80, 100);
tft->print(« X: »); tft->println(acc.x);
tft->setCursor(80, 130);
tft->print(« Y: »); tft->println(acc.y);
tft->setCursor(80, 160);
tft->print(« Z: »); tft->println(acc.z);
}
delay(100);
}
En espérant que ça t’aidera 🙂
Sympa comme montre.
J’en cherche une que j’utiliserai uniquement pour aller faire du sport (course, VTT, Rando) qui piloterait Strava.
L’idée est d’avoir le téléphone en partage de connexion dans le sac à dos et la montre qui servirait pour démarrer / arrêter une session Strava. J’imagine par extension une appli genre GPX Viewer pour suivre un tracé pre-chargé et aussi l’utilisation du GPS en directe pour retrouver un camarade de vélo perdu dans la forêt (rigolé pas ça m’es déjà arrivé et j’étais bien content d’avoir maps avec échange de coordonnées GPS pour les retrouver).
Accessoirement avoir l’heure 😉 Mais tout le reste je n’en ai pas besoin.
D’après vous est-ce qu’elle pourrait faire le taf ?
Bonjour,
Je ne connais pas trop Strava, il me semble que ça calcule la vitesse moyenne et maxi, ainsi que les distances parcourues. Autant récupérer des coordonnées GPS me semble faisable (bien que je n’ai jamais essayé de faire la connexion Bluetooth avec le téléphone) autant faire des calculs en fonction d’un trajet sur une map me semble bien + compliqué.
C’est vrai que finalement moi je fais des choses très basiques avec ma montre 🙂
Bon courage dans vos recherches
Strava est plutôt un serveur qui permet de collecter et de récupérer les données sur ses entrainements physiques (course à pied, vélo, aviron, ce qu’on veut) via une application client (l’application strava, celle de sa montre, etc.)
C’est plutôt facile à faire par exemple en python une fois qu’on est familiarisé avec oauth (j’ai par exemple écrit une petite application sur Raspberry pour récupérer mes activités de course à pied et les afficher sur un écran à encre électronique: https://raspicolas.wordpress.com/2021/04/01/a-motivation-tool-for-running-the-strava-tracker/)
Tout le calcul de l’activité (vitesse, distance, etc.) devra donc être fait par la montre sur la base des données GPS. Pourquoi pas ensuite partager les données avec un ami (si chacun a donné son autorisation), mais il faudra de toute façon écrire l’application de partage car je ne crois pas que l’API Strava permette de partager des données « live » mais juste des activités une fois terminées.
-Nicolas
Merci Pascal et François pour cet article.
Ça fait quelques temps que j’ai repéré cette montre (et ses différentes versions) sur le site Banggood, mais, bien que j’ai toujours du mal à résister à l’attrait d’un gadget, je n’arrive pas à me convaincre de franchir le pas.
Les avis des acheteurs sont mitigés, surtout pour ce qui concerne l’autonomie (je vois que c’est peut être dû à une mauvaise gestion de la mise en veille). Mais surtout, j’ai du mal à trouver une application géniale qui ne pourrait être faite qu’avec cette montre — s’il s’agit de reproduire ce qu’on peut faire mieux avec une montre connectée (et parfois pour pas plus cher), quel intérêt ?
Y a-t-il des sites qui proposeraient des applications cool à développer / déployer sur la TTGO ? Je n’ai pas trouvé pour le moment.
En résumé, J’adore acheter des gadgets, mais je déteste avoir des gadgets qui végètent dans mes tiroirs…!
-Nicolas
Bonjour Nicolas,
C’est vrai que je n’ai pas pensé à l’écrire dans mon test, moi je n’utilise pas le Bluetooth donc la montre reste en veille sauf pour afficher l’heure.
Perso j’avais la première version de la Pebble, et à part avoir les messages et appels sur la montre lorsqu’on conduit, je n’ai jamais vu de plus-value à les voir s’afficher sur une montre..
C’est vraiment sympa à programmer, mais il est vrai que si tu veux dépasser l’Apple Watch ça va être simplement impossible il ne faut pas se leurrer 😉
Pour les sites, je n’en ai pas trouvé d’autres non plus..
Après ce n’est pas un gadget très cher, j’entends le geek en toi supplier 😀
Merci Pascal.
J’ai adoré la Pebble au moins pour au moins une chose: son autonomie ! (7 jours, contre à peine 24 sur une Apple watch) — et puis, j’ai toujours trouvé que sentir chaque heure sa montre vibrer l’heure en chiffres romains était une idée super cool ! Malheureusement maintenant la batterie de ma Pebble est morte (Fitbit l’a tuer…)
Peut-être si je trouvais un moyen cool de contrôler un de mes raspberrys avec une TTGO ça serait une bonne motivation. Je cherche encore…
Merci encore en tout cas pour l’article très intéressant !
-Nicolas
Salut,
Les avis sont mitigés surtout parce que le projet mis en avant pour la programmé, celui de Dan, n’est pas spécialement bien programmés, souffre de bugs et surtout n’est pas économe pour la batterie.
Perso, j’arrive a la faire tenir quasiment 2 jours ce qui est +/- ce que font les autres modeles de la meme game de prix … la liberté d’y faire ce qu’on veut en plus.
A+
Hello,
Il existe aussi la v3. Elle n’a plus de GPS mais un micro….
Merci pour l’info 🙂
Bonjour,
J’ai une TWatch v2 et je suis sous Linux Debian 10.
J’ai installé la toute dernière version ARDUINO accessible en ligne, ainsi que les librairies TWatch.
Je n’arrive à compiler et téléverser sur la montre aucun programme. J’ai sans cesse différents messages d’erreurs me disant qu’il manque tel ou tel fichiers.
Avez vous une méthode à partir d’un des fichiers d’exemple de LilyGo ?
Bonne journée.
Cr9c
Bonjour,
je cherche à faire développer un petit programme sur la montre, qui permettrait d’envoyer des touches claviers à un PC qui aurait été couplé en BLUETOOTH au préalable.
Pourriez-vous me contacter ? Nous sommes une société, ce serait une mission rémunérée bien entendu.
Bonjour
désolé, je ne fais pas ce type de prestation
cdt
françois