Page 1 of 6

Remplacement TI-Python par Adafruit Trinket M0 ou autre

Unread postPosted: 27 Mar 2019, 17:28
by critor
10016Nous avions déjà vu que le module externe TI-Python pour ta TI-83 Premium CE utilisait un coeur Atmel ATSAMD21E18, et que son firmware (microprogramme) pouvait aussi tourner sur d'autres PyBoards, cartes de développement et appareils munis du même coeur, et même d'un coeur voisin selon les tests complémentaires de zardam ! :bj:

Petite liste non exhaustive des appareils compatibles ou supposés être compatibles avec le firmware TI-Python :
  • carte CircuitPython Adafruit Trinket M0 (coeur Atmel ATSAMD21E18) - testée avec succès :)
  • carte CircuitPython Adafruit GEMMA M0 (coeur Atmel ATSAMD21E18)
  • carte de développement Arduino Zero (coeur Atmel ATSAMD21G18) - testée avec succès :)
  • carte de développement Arduino M0 (coeur Atmel ATSAMD21G18)
  • carte CircuitPython Adafruit Feather M0 (coeur Atmel ATSAMD21G18)
  • carte CircuitPython Adafruit ItsyBitsy M0 (coeur Atmel ATSAMD21G18) - testée avec succès :)
  • carte CircuitPython Adafruit Metro M0 (coeur Atmel ATSAMD21G18)
  • carte CircuitPython Adafruit HalloWing M0 (coeur Atmel ATSAMD21G18)
  • console de jeux portable Gamebuino META (coeur Atmel ATSAMD21G18)
  • carte CircuitPython Adafruit Trinket M0 (coeur Atmel ATSAMD21E18) - testée avec succès :)
  • carte CircuitPython Adafruit GEMMA M0 (coeur Atmel ATSAMD21E18)
  • carte de développement Arduino Zero (coeur Atmel ATSAMD21G18) - testée avec succès :)
  • carte de développement Arduino M0 (coeur Atmel ATSAMD21G18)
  • carte CircuitPython Adafruit Feather M0 (coeur Atmel ATSAMD21G18)
  • carte CircuitPython Adafruit ItsyBitsy M0 (coeur Atmel ATSAMD21G18) - testée avec succès :)
  • carte CircuitPython Adafruit Metro M0 (coeur Atmel ATSAMD21G18)
  • carte CircuitPython Adafruit HalloWing M0 (coeur Atmel ATSAMD21G18)
  • console de jeux portable Gamebuino META (coeur Atmel ATSAMD21G18)

1070910707Si tu trouves que le module externe TI-Python est trop cher à 13€ et quelques chez Jarrety et TSP alors que Texas Instruments avant annoncé moins de 10€ sur les salons en octobre dernier, trop encombrant et lourd avec 20g ou encore que sa disponibilité est insatisfaisante, alors peut-être préféreras-tu une de ces options.

Nous te conseillons personnellement l'Adafruit Trinket M0, parce qu'elle est disponible et parmi les moins chères avec moins de 10€ même si les frais de port éventuels pourraient brouiller cela, parce qu'elle bat des records de légèreté avec seulement 2g, et parce qu'elle est à ce jour enfantine à reprogrammer avec le firmware TI-Python comme nous allons voir plus loin.
De plus, nous avons réunis nombre d'éléments attestant que Texas Instruments n'a conçu ni le logiciel ni le matériel du module externe TI-Python et a réutilisé de l'existant parmi les produits ouverts d'Adafruit, avec très probablement comme reference design la Trinket M0 ou la Feather M0. Alors autant prendre ce que TI a utilisé.

C'est une Adafruit Trinket M0 qui sera utilisée pour les tests qui vont suivre dans cet article.

Maintenant que l'application PyAdaptr ainsi que l'OS 5.3.5 qui va avec ont été publiés, nous pouvons enfin tester ce que donne cette carte avec une vraie TI-83 Premium CE.

1090310907Mais voilà, problème, la nouvelle application PyAdaptr de la TI-83 Premium CE refuse de détecter la Trinket M0 munie de son firmware d'origine. :(

Et pour ceux qui avaient déjà reprogrammé leur Trinket M0 avec l'ancien firmware TI-Python 3.0.0.0012, l'application PyAdaptr publiée tente systématiquement de les mettre à jour en version 3.0.0.0020 avant toute utilisation, or le processus plante et il n'y a donc plus qu'à réinitialiser la calculatrice. :mj:

Comme confirmé par un test de zardam, ce plantage de la mise à jour vient du fait que Texas Instruments s'est compilé un boot code (code de démarrage) tout spécial pour son module externe TI-Python, le UF2 Bootloader v1.0.3U SFRO, alors que notre Trinket M0 utilise le UF2 Bootloader v1.23.0 SFHR.
Or c'est visiblement le boot code qui est appelé par l'application PyAdaptr pour la mise à jour du firmware, puisque zardam arrive sans problème à faire mettre à jour puis utiliser son Arduino Zero depuis la calculatrice, après avoir remplacé son boot code par celui du TI-Python.

La reprogrammation d'un boot code est toutefois une étape dangereuse et de plus technique avec donc des manipulations qui vont différer d'un appareil à un autre, aussi il nous faudrait trouver autre chose pour toi.

10908Dans les deux cas, une solution est de préprogrammer la carte Trinket M0 avec le dernier firmware TI-Python, mais faut-il encore pouvoir le récupérer.

La solution nous vient donc aujourd'hui de Lionel Debroux qui vient de passer du temps sur un programme en Go te permettant d'extraire le firmware TI-Python 3.0.0.0020 de l'application PyAdaptr 5.3.5.0024 publiée lundi.

Concernant la Trinket M0, il te suffit d'une double pression sur le bouton reset pour la redémarrer en mode mise à jour, puis tout simplement d'y copier le fichier firmware .uf2 retourné par le programme précédent, la carte se comportant comme une simple clé USB ! :)

Et bingo, ça marche ! :bj:

10912Maintenant que ça marche, parlons connectique car la Trinket M0 dispose d'un port micro-USB, et non mini-USB comme le module externe TI-Python.

Une solution comme tu viens de le voir est d'utiliser le câble de connexion de ton smartphone à l'ordinateur muni au bout d'un adaptateur au choix :

Un ennui est que cela te donne de la connectique encombrante et lourde, qui risque donc de se débrancher assez facilement en cours d'utilisation. :mj:

Une meilleure solution est alors d'opter pour un câble unique à se commander, au choix :
  • USB micro-B ↔ mini-OTG
  • USB micro-A ↔ mini-OTG

Attention aux pièges, car certains câbles pourtant censés respecter ces spécifications comme celui de Lindy ne fonctionnent pas ! :mj:

10909
Un câble qui marche à coup sûr vu que nous l'avons acheté et testé, est celui de StarTech. :bj:
Un câble qui marche à coup sûr vu que nous l'avons acheté et testé, est celui de StarTech. :bj:


Voilà enfin de quoi coder en Python sur notre TI-83 Premium CE en toute légèreté ! :bj:

10910Une fois la TI-83 Premium CE mise en mode examen, la Trinket M0 faisant maintenant tourner le firmware TI-Python 3.0.0.0020 présente bien elle aussi la diode clignotante nécessaire pour son autorisation en 2020.

Pour le BAC 2020 l'on pourra par exemple scotcher la carte à la TI-83 Premium CE afin que ce signal lumineux soit bien présent sur la tranche supérieure comme exigé par la réglementation, en prenant bien soin de ne pas masquer la diode examen de la calculatrice.


Téléchargements :

Re: Remplacement TI-Python par Adafruit Trinket M0 ou autre

Unread postPosted: 28 Mar 2019, 00:09
by zardam
Pour cette histoire de bootloader, j'ai compilé https://github.com/Microsoft/uf2-samdx1 sur le tag v1.23.0 en changeant les identifiants USB dans boards/zero/board_config.h par ceux du module python... Et ça fonctionne. La calculatrice a bien mis à jour mon arduino zero !

Au passage, le CURRENT.UF2 n'est plus "vide" :)

Re: Remplacement TI-Python par Adafruit Trinket M0 ou autre

Unread postPosted: 28 Mar 2019, 00:12
by critor
Bien ! :)

Tu peux partager le binaire ?

Re: Remplacement TI-Python par Adafruit Trinket M0 ou autre

Unread postPosted: 28 Mar 2019, 00:24
by zardam
Voici

C'est la version pour trinket.

Re: Remplacement TI-Python par Adafruit Trinket M0 ou autre

Unread postPosted: 28 Mar 2019, 00:31
by critor
Ah tu l'as en prime recompilée juste pour moi ?
Merci. :)

Re: Remplacement TI-Python par Adafruit Trinket M0 ou autre

Unread postPosted: 28 Mar 2019, 00:34
by zardam
Pour le trinket il y a un "#define CRYSTALLESS 1" qui me fait dire que le bootloader pour l'arduino zero ne fonctionnera pas...

Re: Remplacement TI-Python par Adafruit Trinket M0 ou autre

Unread postPosted: 29 Mar 2019, 00:54
by critor
Et tu peux aussi partager le binaire que tu as compilé pour l'Arduino Zero ?

Cela pourra peut-être servir, vu qu'on l'a listé dans les appareils compatibles. :)

Re: Remplacement TI-Python par Adafruit Trinket M0 ou autre

Unread postPosted: 29 Mar 2019, 06:55
by parisse
Question naive: peut-on imaginer avoir un adapteur externe pas cher avec suffisamment de capacite pour y faire tourner giac, et faire croire a l'application sur la ti83 que le shell de giac est du ti-python? Ca pourrait permettre d'avoir du CAS sur les TI83 (pas sur les neuves bien sur, mais sur toutes les existantes).

Re: Remplacement TI-Python par Adafruit Trinket M0 ou autre

Unread postPosted: 29 Mar 2019, 07:31
by critor
Bonjour.


Question très intéressante.

Nous n'en sommes pas encore là.

Mais nous arrivons donc déjà à remplacer le module TI-Python par un appareil différent avec même un processeur différent.

Si nous arrivons à remplacer le firmware de TI par un firmware tiers apportant une implémentation Python plus riche (complexes, cmath...), ce sera un autre très bon signe.

Quitte à faire en sorte que giac soit accessible via l'importation d'un module Python jouant le rôle d'interface d'accès, ou encore une console hybride Python+giac, si jamais l'appli PyAdaptr était capricieuse.

Mais tant que nous y sommes, on peut sûrement remplacer l'appli PyAdaptr par un programme qui n'aura donc aucune contrainte autre que matérielle sur le protocole. Mais ça impliquera alors de refaire l'interface graphique et donc cela nécessitera davantage de temps.

Re: Remplacement TI-Python par Adafruit Trinket M0 ou autre

Unread postPosted: 29 Mar 2019, 07:39
by zardam
Ci joint le bootloader pour l'arduino zero. C'est un .ino car il n'y a pas de UF2 par défaut sur ce modèle il me semble.

Quand à savoir ce qui fait que la calculatrice "reconnait" le CircuitPython du module, c'est une très bonne question, que je me pose aussi. Il y a peu de choses exposée "publiquement" il me semble. Je vais faire deux ou trois essais dès que j'ai le temps.