RasPi, I2C, Python et LCD
et propulsez-vous dans le répertoire ainsi créé :
$ cd i2c-tools-3.1.0
Lisez le README, et construisez les outils et la lib en utilisant la commande indiquée, à savoir :
$ make EXTRA="py-smbus"
En fait si vous omettez le EXTRA, eh bien ça ne nous servira pas à grand chose (en tout cas relativement à Python),
puisque c'est précisément le binding Python qui nous intéresse ici.
Un sudo make install EXTRA="py-smbus" installera le tout là où il faut. A noter qu'il est possible de le faire
directement sans passer par la case précédente, install déclenchant le build au préalable s'il n'est pas déjà
disponible.
Vous disposer maintenant dans les libs Python d'un module dénommé smbus qui est votre clé vers le monde de l'I2C,
qu'il vous suffira ensuite de charger via la classique instruction import.
A noter qu'il est question de SMBus et non pas d'I2C ici. De ce que j'en ai compris ça se vaut plus ou moins pour
ce qui nous concerne. J'ai lu çà et là des discussions enflammées sur le fait que l'un est un "subset" de l'autre, et
réciproquement, mais je n'en ai rien retenu de très constructif. Donc en première approximation et jusqu'à preuve du
contraire, pour nous c'est bonnet blanc et blanc bonnet.
Tout ton bazar connecter tu devras
Je sens que les gouttes de sueur commencent à perler sur votre front, car vous n'avez pas manqué de lire de partout
que les GPIO de la RasPi ne sont absolument pas protégées ni même 5V tolérantes. Or notre LCD fonctionne en 5V.
Arghhh....
Avant de sortir un arsenal de level shifters, qui certes marcheront, penchons-nous un coup sur les signaux de l'I2C.
Pour mémoire, il s'agit de deux lignes tirées à Vcc par des pull-ups. Lorsque quelqu'un veut produire un signal, il le
fait en reliant la ligne à la masse via un driver qui n'est rien d'autre qu'un transistor en collecteur ouvert ou équivalent.
Le reste du temps le driver est dit en haute impédance (Hi-Z), c'est à dire qu'il se comporte comme un interrupteur
ouvert. C'est la solution utilisée pour permettre un fonctionnement en bus multi-drop, avec plusieurs devices dessus.
Or la RasPi intègre deux pull-up de 1k8 sur les lignes SDA et SCL du GPIO, et donc c'est elle qui va maintenir le
niveau haut avec une tension qui lui convient parfaitement. Le driver I2C du LCD ne va faire que relier ces lignes à la
masse lorsqu'il voudra générer des signaux. Il ne les force jamais à son 5V à lui. Du coup, pas de prise de tête : il
suffit de relier les signaux directement sur le GPIO.
D'ailleurs cela est confirmé sur le site même du fabricant, qui nous indique gentiment ici
[http://www.robot-electronics.co.uk/htm/raspberry_pi_examples.htm] le câblage de quelques-uns de ses produits
lorsqu'on veut les connecter sur la RasPi.
Attention : Ne me rendez pas responsable si vous avez grillé votre framboise en y connectant tout et n'importe quoi
: ce qui est expliqué ici n'est valable que parce que notre LCD ne fonctionne qu'en tant que slave. Si vous connectez
Copyright © PoBot Page 3/7