Texas Instruments
réalise de gros efforts pour rendre la programmation de ses calculatrices accessible à tous et toutes. Le constructeur a prêté une attention toute particulière aux plus jeunes et non initiés, souhaitant leur permettre de créer tous les projets imaginables sans avoir à se concentrer sur des difficultés annexes. 
Nous pouvions déjà citer l'interface , le robot pilotable , la grille programmable ou encore l'adaptateur
TI-SensorLink
pour capteurs analogiques Vernier
.Tous ces éléments ont de plus l'avantage d'être utilisables directement avec le langage
Python
des calculatrices concernées, faisant de l'écosystème Texas Instruments
le seul Python
connecté ! 
Un superbe support pour les enseignements scientifiques au lycée surtout maintenant que tous partagent le même langage de programmation, notamment en
SNT
, spécialité NSI
, SI
et Physique-Chimie
, avec le gros avantage de la mobilité. En effet, les programmes produits et données collectées restent présents dans la calculatrice apportée par chaque élève à chaque cours, ce qui allège la charge logistique de l'enseignant. Données et algorithmes pourront donc être traités / travaillés à la prochaine séance, en devoir à la maison ou même de façon transdisciplinaire en collaboration avec un autre enseignant ! 
TI-Innovator
pour bénéficier de ces formidables avantages. En effet, la TI-83 Premium CE Edition Python
s'est vu rajouter la gestion du nanoordinateur programmable en Python
dont tu étais peut-être déjà équipé·e ! 
Attention, cela nécessite obligatoirement que ta calculatrice fasse tourner une version
5.5.1
ou supérieure.

micro:bit
est initialement un projet lancé par la BBC
(
, le groupe audiovisuel public britannique, accompagné de nombre de partenaires dont B
ritish B
roadcasting C
orporation)ARM
Microsoft
Samsung
Le nom rend hommage au précédent succès du groupe dans ce domaine, le microordinateur à vocation pédagogique
BBC Micro
Thomson MO5
TO7
IPT
(
.I
nformatique P
our T
ous)micro:bit
dans sa version 1 inclut :- un afficheur, grille programmable de 5×5= 25 diodes rouges adressables, bien adapté pour l'affichage de motifs éventuellement animés ou encore de texte défilant
- nombre de capteurs intégrés :
- capteur de luminosité (lié aux diodes)
- capteur de température (sur le processeur)
- 2 boutons poussoirs
A
etB
programmables de part et d'autre, comme sur les premières manettes et consoles de jeux portables de chezNintendo - accéléromètre 3D, permettant de détecter les variations d'accélération et par conséquence diverses actions : secouer, pencher, chute libre, ...
- boussole magnétique 3D, pour détecter cette fois-ci les champs magnétiques
- capteur de luminosité
- connectivité Bluetooth 4.0basse énergie 2,4 GHz maître/esclave
micro:bit
utilise un connecteur micro-USB
et ta calculatrice un mini-USB
.Pour relier les deux une solution est d'adjoindre un adaptateur
USB A
femelle ↔ USB mini-B OTG
mâle au câble micro-USB
venant avec ta carte micro:bit
, testée avec succès.USB micro-B
mâle ↔ USB mini-A
mâle, disponible par exemple chez StarTech

micro:bit
à partir de tes scripts, Texas Instruments
te propose des modules Python
complémentaires à installer sur ta calculatrice. Le constructeur en met 9 à ta disposition, et ces modules te permettent chacun d'accéder à tout ou partie des modules ou classes correspondants dans le :- mb_butns → microbit.buttons
- mb_disp → microbit.display
- mb_grove
- mb_music → music
- mb_neopx → neopixel
- mb_pins
- mb_radio → radio
- mb_sensr
Nous avions même vu qu'il était parfaitement possible depuis ta
TI-83 Premium CE Edition Python
de faire exécuter du code Python
totalement arbitraire à la carte micro:bit
, permettant ainsi d'accéder à des fonctions Python
non exposées par les modules de Texas Instruments
, ou même d'y définir ses propres fonctions.Voici justement une fonction exécutant directement sur la carte
micro:bit
connectée le code Python
passé en paramètre sous forme de chaîne de caractère, ainsi que de quoi en récupérer le résultat éventuel :- Code: Select all
from ti_hub import *
def mb_run(code):
send('\x05') # enter paste mode (Ctrl-E)
send(code)
send('\x04') # exit paste mode (Ctrl-D)
def mb_get():
return get().split("\r\n")[-3]
C'était justement l'occasion d'explorer un peu plus profondément les possibilités de la
Rappelons que les interpréteurs
Le langage
En pratique, le
Et voilà, nous constations en effet que l'interpréteur de la
Une capacité absolument ridicule, inférieure à ce qu'offrent les interpréteurs
La
Mais rien de surprenant lorsque l'on sait que la
micro:bit
, et ce fut hélas extrêmement décevant.Rappelons que les interpréteurs
MicroPython
ou similaires font appel à 3 types de mémoires avec les rôles suivants :- la mémoire de stockage qui accueille et conserve tes scripts
- le stack (pile)qui, à l'exécution, accueille les références vers les objets créés
- le heap (tas)qui, à l'exécution, accueille le contenu de ces objets
stack
limite donc le nombre d'objets différents pouvant exister simultanément en mémoire, alors que le heap
limite la taille globale occupée par le contenu de ces objets.Le langage
Python
a toutefois le gros défaut d'être très gourmand en mémoire, le moindre petit objet de rien du tout créé gaspillant une place énorme. Voici quelques références de tailles pour les plateformes 32 bits :- pour un entier nul : 24octets déjà...
- pour un entier court non nul (codable sur 31 bits + 1 bit de signe):28octets
- pour un entier long :
- 28octets
- + 4octets pour chaque groupe de 30 bits utilisé par son écriture binaire au-delà des 31 bits précédents
- pour une chaîne:
- 49octets
- + 1octet par caractère
- pour une liste :
- 64octets
- + 8octets par élément
- + les tailles de chaque élément

heap
est donc bien souvent le facteur limitant. Nous l'avions donc testé en priorité sur BBC micro:bit
:- Code: Select all
mb_run("import gc")
mb_run("a,f=gc.mem_alloc(),gc.mem_free")
mb_run("a")
a=int(mb_get())
mb_run("f")
b=int(mb_get())
[a,f,a+f]
Et voilà, nous constations en effet que l'interpréteur de la
micro:bit
offrait un heap (tas)
Python
de seulement 10 Ko
de capacité, avec en pratique juste 8 Ko
et quelques de libres... 
Une capacité absolument ridicule, inférieure à ce qu'offrent les interpréteurs
Python
des calculatrices graphiques :- 4,100 Mo:TI-Nspire CX II+TI-Nspire CX
- 2,068 Mo:TI-Nspire CX II
- 2,050 Mo:TI-Nspire CX II+TI-Nspire CX+TI-Nspire(Ndless + MicroPython)
- 1,033 Mo:Casio Graph 90+E
- 1,014 Mo:HP Prime(version alpha)
- 258,766 Ko:Casio Graph 35/75+E(appli CasioPython)
- 101,262 Ko:Casio Graph 35+E II
- 64,954 Ko:NumWorks
- 33,545 Ko:NumWorks
- 32,648 Ko:Casio Graph 35+E II(appli CasioPython)
- 23,685 Ko:TI-83 Premium CE + TI-Python
- 20,839 Ko:TI-83 Premium CE + TI-Python
- 18,354 Ko:TI-83 Premium CE Edition Python / TI-84 Plus CE-T Edition Python
- 8,240 Ko:BBC micro:bit
La
micro:bit
permettait sans aucun doute un large éventail de projets grâce à ses capteurs et actionneurs, mais chaque projet pris individuellement ne pouvait pas aller bien loin, devant sans doute se limiter essentiellement à de l'utilisation très légère des fonctions fournies. Tout élève suffisamment intéressé pour avoir envie d'approfondir sera rapidement confronté à des erreurs de mémoire de plus en plus difficiles et ennuyantes à contourner, et peut-être même pire dégoûté de toute poursuite dans cette branche. 
Mais rien de surprenant lorsque l'on sait que la
micro:bit
utilise un microcontrôleur nRF51822
de chez Nordic Semiconductor
, avec les spécifications suivantes :- processeur 32 bits ARM Cortex-M0cadencé à16 MHz
- mémoire de stockage Flashd'une capacité de256 Kio
- mémoire de travail RAMd'une capacité de16 Kio, et voilà qui explique tout...
micro:bit v2
.Dépêchons-nous de voir ce qu'elle vaut.

nRF52833
, toujours de chez Nordic Semiconductor
. Cette fois-ci nous avons des spécifications qui devraient nous permettre de respirer :- processeur 32 bits ARM Cortex-M0cadencé à64 MHzau lieu desoit 4 fois plus rapide !16 MHz
- mémoire de stockage Flashd'une capacité de512 Kioau lieu desoit 2 fois plus grande !256 Kio
- mémoire de travail RAMd'une capacité de128 Kioau lieu desoit 8 fois plus grande16 Kio
Et ce n'est pas tout, nous constatons d'autres nouveautés sur cette face :
- ajout d'un haut-parleur
- ajout d'un microphone MEMs
- bouton poussoir qui ne sert plus seulement à la réinitialisation (reset), mais permet désormais également d'éteindre la carte(appui long)et de la rallumer(appui court)
- l'antenne Bluetoothqui devient compatibleBLE Bluetooth 5.0, contre seulementauparavant4.0
Passons maintenant à l'autre face, car les nouveautés ne sont pas terminées. Ici nous avons donc en prime :
- ajout d'une diode DEL indiquant l'état du microphone
- ajout d'un bouton tactile sur le logo micro:bit, voici pourquoi il perd sa couleur au profit de contacts métalliques
Reste-t-il encore à confirmer en pratique que la capacité
RAM
accrue sert bien entre autres à augmenter le heap
Python
, et dans quelle mesure.micro:bit
avec le fichier firmware
.hex
dédié fourni par Texas Instruments
.Ce
firmware
est conçu pour rajouter à ta carte micro:bit
la capacité de communiquer via son port micro-USB
avec ta calculatrice TI-83 Premium CE Edition Python
ou TI-84 Plus CE-T Python Edition
.Normalement rien de bien compliqué, il te suffit juste de connecter ta carte à un ordinateur pour y copier le fichier en question, la carte redémarrant automatiquement en fin de copie pour exécuter le nouveau
firmware
.
.hex
distribué par Texas Instruments
n'est apparemment pas compatible micro:bit v2
, nous obtenons l'émoticône d'erreur accompagnée du code 529
. 
Mais ne baissons pas les bras. Rendons-nous sur l'éditeur
Déjà bonne nouvelle, le fichier est reconnu par l'éditeur, nous y obtenons en clair le code
Python
en ligne des cartes micro:bit
, et importons-y le fichier .hex
de Texas Instruments
.Déjà bonne nouvelle, le fichier est reconnu par l'éditeur, nous y obtenons en clair le code
Python
d'initialisation :- Code: Select all
# version history
# 1.0 python functionality
# 1.1 Added TI LOGO and grove ranger
# 1.2 added handshake
# 1.3 added get_version
# 2.0 removed handshake and changed version to 2.0 for release in france
from microbit import *
from machine import time_pulse_us
ti = Image("07700:""07797:""77777:""07770:""00700")
def ranger(pin=pin0):
pin.write_digital(1)
pin.write_digital(0)
pin.read_digital()
t = time_pulse_us(pin,1,35000)
print(t)
def get_version():
print ("TI-Runtime Version 2.0")
display.show(ti,delay=10,wait=False)
.hex
à partir de ce code.Il y a espoir, cette fois sa copie sur
micro:bit v2
ne déclenche plus d'erreur, et affiche bien le logo de Texas Instruments
. 
Très bon signe, la
micro:bit v2
semble correctement se comporter, l'importation du module microbit
ne déclenchant aucune erreur.
- Code: Select all
from microbit import *
from mb_disp import *
display.show("Image.PACMAN",delay=400,wait=True)
Nous te mettons ci-dessous dans les ressources directement le fichier
.hex
corrigé, désormais compatible à la fois micro:bit v1
et micro:bit v2
. 

heap
Python
.Pour l'exécution des scripts
Python
sur micro:bit v2
nous bénéficions donc apparemment de 63 Ko
libres, pour une capacité totale de 64 Kio
.Fantastique c'est 8 fois plus que les pauvres
8 Ko

- 4,100 Mo:TI-Nspire CX II+TI-Nspire CX
- 2,068 Mo:TI-Nspire CX II
- 2,050 Mo:TI-Nspire CX II+TI-Nspire CX+TI-Nspire(Ndless + MicroPython)
- 1,033 Mo:Casio Graph 90+E
- 1,014 Mo:HP Prime(version alpha)
- 258,766 Ko:Casio Graph 35/75+E(appli CasioPython)
- 101,262 Ko:Casio Graph 35+E II
- 64,954 Ko:NumWorks
- 63,024 Ko:BBC micro:bit v2
- 33,545 Ko:NumWorks
- 32,648 Ko:Casio Graph 35+E II(appli CasioPython)
- 23,685 Ko:TI-83 Premium CE + TI-Python
- 20,839 Ko:TI-83 Premium CE + TI-Python
- 18,354 Ko:TI-83 Premium CE Edition Python / TI-84 Plus CE-T Edition Python
- 8,240 Ko:BBC micro:bit v1
63 Ko
c'est quasiment le double de ce qu'offre la NumWorks
TI-83 Premium CE Edition Python
, tu te rends compte ? 
La capacité du
heap
Python
de la TI-83 Premium CE Edition Python
est en effet un gros point faible. Mais ici en lui adjoignant une BBC micro:bit v2
tu multiplies la taille de heap
utilisable par 4,5 ! 
De quoi approfondir des projets
Python
sur cette machine, à condition de distribuer correctement les différents objets Python
créés entre le heap
interne de la calculatrice et le heap
externe de la carte, et bien sûr les faire interagir correctement. 
Malheureusement, à la différence nous n'avons à ce jour pas accès au code source des modules 
Nous sommes donc hélas dans l'incapacité de faciliter ton utilisation des nouveaux éléments de la
Avec les difficultés que cela implique, ton script comportant alors à la fois du code
micro:bit
additionnels de la TI-83 Premium CE Edition Python
, ni à aucun outil permettant de générer ce genre de module, et ne pouvons donc ni corriger, ni améliorer, ni étendre ces modules. 
Nous sommes donc hélas dans l'incapacité de faciliter ton utilisation des nouveaux éléments de la
micro:bit v2
depuis ta calculatrice, notamment les microphone, haut-parleur et bouton tactile. La seule façon de les exploiter à ce jour sera de faire appel à la fonction mb_run()
partagée plus haut, et lui passer en paramètre le code Python
brut à exécuter par la carte.Avec les difficultés que cela implique, ton script comportant alors à la fois du code
Python
qui sera exécuté dans le contexte de la calculatrice, et du code Python
qui sera exécuté dans le contexte de la carte BBC micro:bit
. Il ne faudra surtout pas confondre, les contextes des deux interpréteurs Python
étant très différents. Pas le meilleur cadre, du moins pour débuter... 
Téléchargements
:- firmware TI(pourmicro:bit v1etmicro:bit v2)
- OS 5.5.2.0044 + applis(pourTI-83 Premium CE)
- OS 5.5.2.0044(pourTI-83 Premium CE)
- OS 5.6.0.0020 + applis(pourTI-84 Plus CE)
- OS 5.6.0.0020(pourTI-84 Plus CE)
- application Python 5.5.2.0044
- module PythonMICROBIT(essentiel)
- modules Pythonmicro:bit:MB_BUTNS,MB_DISP,MB_GROVE,MB_MUSIC,MB_NEOPX,MB_PINS,MB_RADIO,MB_SENSR(au choix selon besoins du projet)
- modules Pythongraphiques :ce_turtl,ce_chart,ce_quivr,ce_box
Ressource
:micro:bit
pour TI-83 Premimum CE