Tixlegeek's DevBlog Code, Gringo, Silicium

qrcode

[T-Watch2020] Framework ESP-IDF Intro:Notes de développement

Hey! :D

J'ai commandé une ttgo twatch2020 il y a quelques mois, et, j'en ai profité pour suivre les conseils de l'ami Tobozo, et me forcer à utiliser Arduino (que j'exècre pour des raisons stupides, mais j'assume)

Ça a duré quelque temps, mais, rapidement, j'ai eu envie de coder un framework en pure C pour ESP-IDF. Le travail est conséquent, mais, j'aime ça, alors je le fais (en plus, personne ne l'a fait, et je suis sur que ça va intéresser des gens.)
Je vais m'efforcer de vous expliquer mon cheminement, et de vous donner un maximum de détails! (encore un conseil qui vient de tobozo).


 

Le contexte

Bon, je m'apprête à coder un paquet de drivers, donc le mieux, c'est qu'on voit ensemble le plan, et qu'on définisse les besoins et les ressources.

La Ttgo TWatch2020(v1) de est une Smart-watch opensource qui coute 30€. fabriquée par les chinois de chez Lilygo (qui inondent internet avec des tas de cartes ultra-cool, embarquant souvent des ESP8266/ESP32).

Les ESP8266/32, de chez Espressif, ce sont des microcontrôleurs 32bits bien connus des bidouilleurs, parce qu'ils embarquent le WiFi (et le Bluetooth pour l'ESP32) et qu'ils disposent d'une solide base logicielle Arduino.

Pour ma part, je vous l'ai dit: J'aime pas Arduino. J'utilise la suite logicielle fournie par espressif, qui est super bien faite: l'ESP-IDF. Certains crieront au snobisme mal placé, mais, il font ce qu'ils veulent avec leur C++ à la con et leur micropython chelou; moi, mon truc, c'est le C <3.


Le hardware

Le hardware de la TWatch est cool, et répond parfaitement à une foule de besoins:

  • ESP32
    • 16Mb Flash (SPI)
    • 8Mb PSRAM
    • WiFi 802.11 b/g/n
    • Bluetooth 4.2 BLE
  • LCD Capacitif (ST7789V + FT6236U )
  • Power-management ( AXP202 )
  • Accéleromètre 3 axes ( BMA423 )
  • Module horloge RTC ( PCF8563 )
  • Vibreur
  • Haut-parleur
  • Récepteur IR
  • Connectique USB/Série TTL (CP2104)

La doc complète est disponible ici.

Le but

Sans me répéter, mon but, c'est de coder un framework complèt permettant d'utiliser la TWatch directement avec l'ESP-IDF, et sans charger tout un tas de caca inutile et moche codé par des rockstars sans organisation (arduino). C'est pas la première fois que je m'attaque à un tel travail, et c'est vrai que ça va me prendre mon âme et mon temps libre, mais, au final, je serai ravi et c'est tout ce qui m'importe.

Il faut donc gérer chacun des composants, et offrir une interface efficace pour les rendre utilisables facilement et efficacement dans des applications finie.
La première chose à faire, ça va être de porter/coder/recoder les drivers nécessaires (LCD, touch screen.... ) et les adapter à la situation. Je ne vous cache pas que je suis déjà là dedans depuis quelque jours, et que malgré la chaleur, j'ai déjà géré une petite partie de tout ça.

Comment on fait?

Je vais prendre chacun des composants, lire (en partie) leur Doc, chercher du code existant, et mélanger tout ce qui sortira pour en faire quelquechose. Le but, c'est de permettre à une couche logicielle supérieure d'avoir un accès rapide et efficace au hardware. Il faudra donc penser à respecter une convention, nettoyer, et s'efforcer de rendre le tout lisible, et sexy.

Note de logique

Comme je vous l'ai dit, j'ai le nez dans le cambouis depuis quelque jours, et, j'ai déjà pu déterminer un plan d'action sommaire. Puis-ce que l'alimentation de la montre est articulée autour du gestionnaire d'alimentation (le AXP202) je commence par lui. Ensuite, je vais taper dans le LCD, en essayant de faire ça bien. L'étape d'après, ça sera le touch-screen, pour pouvoir interagir avec la montre, puis l'accéléromètre et le reste.

 

La suite au prochain article :D