Et évidemment, j'ai testé un de ces capteurs, des TMP100.
Les pdf fournis avec le board donnent le pin-out des connecteurs de la carte, où j'ai rapidement identifé Vcc, GND, SCL et SDA (les capteurs se pilotent en I2C).
Les connecteurs par contre, j'ai du chipoter pour y brancher mes fils, car ils ont l'espacement d'un connecteur IDE 2.5", que je n'ai pas
Je comprends maintenant pourquoi ils vendent aussi sur ebay le kit complet de câbles pour mini2440...
Perso, je m'en passerai, je souderai mon connecteur spécialisé.
Sur l'image qtopia fournie, il y a un tool i2c mais qui ne sert qu'à lire ou écrire la petite eeprom embarquée.
Sur l'image buildroot que j'ai faite il y a quelque temps, j'ai les tools i2c.
Voyons voir:
# i2cdetect -l
i2c-0 i2c s3c2410-i2c I2C adapter
# i2cdetect s3c2410-i2c
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c/0.
I will probe address range 0x03-0x77.
Continue? [Y/n]
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 4F
50: 50 51 52 53 -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
Les 50 à 53 sont l'eeprom. Le 4f est mon capteur. Par défaut il est en résolution de 9 bits, le datasheet du TMP100 me dit d'écrire 0x60 dans le registre 1 pour le passer en résolution de 12 bits:
# i2cset -y s3c2410-i2c 0x4f 0x01 0x60
Puis de lire le registre 0 (de 12 bits, donc je dis au tool de lire un mot de 16 bits):
# i2cget -y s3c2410-i2c 0x4f 0x00 w
0x8016
Comme le résultat est little endian, les 12 bits en question sont 0x168, soit 360 qui divisés par 16 (à une résolution de 12 bits, on a une précision de 1/16 °C) donnent 22.5, ce qui est une température réaliste. En mettant mon doigt dessus, j'arrive à monter à 28°C, donc le capteur capte bien.
Deux des pins servent à configurer l'adresse I2C, donc en pontant l'une ou l'autre à la masse, j'ai retrouvé mon capteur à d'autres adresses. Je découvre en passant qu'avec deux pins, on peut configurer 8 adresses différentes, à l'encontre de ce que ma maîtrise du binaire me laissait croire. En effet, on peut connecter une pin à la masse, au Vcc, ou la laisser flottante, et les différentes combinaisons sont décrites dans la spec.
Étapes suivantes:
- réaliser un moyen de connexion propre avec de longs fils pour connecter plusieurs capteurs à la carte
- arriver à compiler le x server, ou trouver à utiliser le frame buffer en direct avec une lib graphique kivabien (pas envie d'afficher mes chiffres pixel par pixel...)
- écrire une première application qui affiche en temps réel les températures des différents capteurs