Salut a tous;
je voudrais savoir s'il est possible de faire communiquer un arduino "nano" avec un ESP8266-201 via le bus I2C, vu qu'il ne sont pas au même VCC (5v contre 3.3v).
En outre je me demande est-ce qu'il est obligatoire d'avoir les pull-up resistor sur les lignes SDA et SCL.
Il faudra un level-shifter au milieu (on trouve des modules à pas cher dans toutes les bonnes crèmeries) qui permettra de faire la conversion de niveau.
Les résistances de pull up sont obligatoires côté ESP, facultatives mais recommandées côté Arduino (les résistances de pull up interne au micro étant activées)
Au moins une résistance de pull upde charge de collecteur est obligatoire sur chaque ligne (SDA et SCL).
Je râle toujours sur cette utilisation abusive de "pull-up" qui est un non sens car dans ce cas ce ne sont pas des résistances pour fixer un potentiel mais pour terminer le circuit.
Des transistors avec le collecteur (ou le drain) en l'air ne peuvent pas fonctionner c'est pas plus compliqué que celà.
Le plus important est de comprendre pourquoi dans la norme I2C on utilise des collecteurs (ou drain) ouvert alors qu'il y a cet inconvénient d'avoir a terminer le circuit avec des résistances.
La raison est simple : c'est que cette solution permet de réaliser une fonction "OU" gratuite et hyper simple, il est inutile d'ajouter une porte OU sur le bus.
Comme cela il peut y avoir plusieurs esclaves et plusieurs maîtres (c'est le premier qui parle qui prend le contrôle du bus).
Un tel avantage compense l'inconvénient d'avoir à ajouter 2 résistances.