David Madore's WebLog: Une montre programmable : la TI eZ430-Chronos

Index of all entries / Index de toutes les entréesXML (RSS 1.0) • Recent comments / Commentaires récents

Entry #2163 [older|newer] / Entrée #2163 [précédente|suivante]:

(mardi)

Une montre programmable : la TI eZ430-Chronos

La eZ430-Chronos (dont il existe plusieurs sous-modèles, en l'occurrence il s'agit de celle qui communique à 433MHz) est une montre fabriquée par Texas Instruments, probablement pour servir de vitrine à une de leurs puces (le CC430, un microcontrôleur intégré avec un contrôleur radio).

Ce qui la rend intéressante pour les geeks, c'est que cette montre est programmable, au sens où elle est fournie avec une interface JTAG facilement accessible et un petit dongle USB permettant très facilement d'en réécrire le firmware, ainsi que les sources du firmware de démonstration ; comme on a aussi accès aux spécifications détaillées du microcontrôleur utilisé, et à des instructions assez précises qui incluent notamment le diagramme complet de la montre, on peut dire qu'il s'agit d'un matériel très ouvert.

En outre, la montre contient des accéléromètres, un capteur de temérature et de pression atmosphérique / altimètre, et, comme je l'ai déjà dit, un émetteur/récepteur radio à 433MHz (il y a aussi des modèles à d'autres fréquences ; le 433MHz n'a pas forcément la meilleure portée, mais il est utilisable dans le monde entier), et le kit vendu par TI contient un contrôleur USB (lui-même très ouvert) permettant de communiquer avec la montre. On peut donc imaginer toutes sortes d'applications amusantes, et comme le tout ne coûte que USD 58 (livraison comprise), je me suis dit que ce serait bête de ne pas en acheter une pour voir.

Je l'ai reçue tout récemment et je suis trop occupé en ce moment pour avoir le temps de jouer beaucoup avec pour l'instant. J'ai juste eu l'occasion de vérifier que j'arrivais bien à compiler un nouveau firmware (un OpenChronos, que j'ai compilé avec un mspgcc version 20120406) et à l'installer sur la montre, et que je pouvais communiquer avec elle pour écrire l'heure dessus depuis l'ordinateur. (Par contre, l'altimètre a cessé de fonctionner, et je n'ai pas eu le temps de chercher à comprendre la raison.) Je ne peux donc pas dire grand-chose pour l'instant à part que c'est potentiellement intéressant.

Il faut remarquer, cependant, que l'écran LCD est un peu limité (essentiellement 4+5 blocs standard de 7 traits arrangés en chiffre 8, plus encore deux traits formant un chiffre 1, plus quelques icônes fixes : c'est à peu près impossible d'afficher des lettres, par exemple). Et que le firmware doit tenir dans 32ko, ce qui n'est pas énorme surtout si on garde la possibilité de communiquer par radio.

En tout cas, c'est amusant de regarder à quoi peuvent ressembler les sources d'une montre. C'est assez pédestre, en fait ; par exemple :

void clock_tick(void)
{
	// Use sTime.drawFlag to minimize display updates
	// sTime.drawFlag = 1: second
	// sTime.drawFlag = 2: minute, second
	// sTime.drawFlag = 3: hour, minute
	sTime.drawFlag = 1;

	// Increase global system time
	sTime.system_time++;

	// Add 1 second
	sTime.second++;

	// Add 1 minute
	if (sTime.second == 60)
	{
		sTime.second = 0;
		sTime.minute++;
		sTime.drawFlag++;

		// Add 1 hour
		if (sTime.minute == 60)
		{
			sTime.minute = 0;
			sTime.hour++;
			sTime.drawFlag++;

			// Add 1 day
			if (sTime.hour == 24)
			{
				sTime.hour = 0;
				add_day();
			}
		}
	}
}

Il y a peut-être moyen de tirer de ce truc un projet intéressant à proposer à nos étudiants à Télécom MachinBiduleTech, même si je ne sais pas si je me sens vraiment le courage d'encadrer ça.

↑Entry #2163 [older|newer] / ↑Entrée #2163 [précédente|suivante]

Recent entries / Entrées récentesIndex of all entries / Index de toutes les entrées