Publié le 11 mai 2021 - par

Présentation de la montre programmable TTGO

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 🙂

Cliquez pour avoir des infos sur les niveaux

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)

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

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 😀

lien vers .zip

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

 

À propos Pascal Adatte

Bonjour, je m'appelle Pascal, j'ai 39 ans et je vis à Genève en Suisse.

14 réflexions au sujet de « Présentation de la montre programmable TTGO »

    1. Pascal

      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 🙂

      Répondre
  1. Philippe

    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 ?

    Répondre
    1. Pascal

      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

      Répondre
      1. Nicolas MERCOUROFF

        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

        Répondre
  2. 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

    Répondre
    1. Pascal

      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 😀

      Répondre
      1. Nicolas MERCOUROFF

        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

        Répondre
    2. destroyedlolo

      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+

      Répondre
  3. cr9c

    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

    Répondre
  4. STADIUM XPERIENCE

    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.

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Complétez ce captcha SVP *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.