Bonjour,
L'inscription sur ce forum et les premiers messages sont modérés par un Administrateur.
Ce n'est pas très convivial mais malheureusement nécessaire suite au spam intensif de nos amis russes.
Cordialement,
Dominique

PYBStick ESP32-C3 : SoftI2C plutôt que I2C

PYBStick de Garatronic.fr est une Carte MicroPython / Arduino IDE à prix abordable.
Forum rules
La PYBStick est supporté par MC Hobby (MicroPython) et Garatronic (Arduino IDE).
Merci de suivre les recommandations suivantes.
Pensez à:
  • Titre claire: permettant d'identifier le produit et le problème
  • Contenu complet: schema, message d'erreur, etc (tout ce qui permet d'aider à distance).
  • Fichier joint: Max 300 Ko
  • Courtoisie et précision
Post Reply
User avatar
fpie
Posts: 36
Joined: Sun 24 May 2020 08:25
Location: Auch, Gers, France, Terre
Contact:

PYBStick ESP32-C3 : SoftI2C plutôt que I2C

Post by fpie »

Bonjour à tous,
En référence au post de l'ami framboise314, je reviens sur l'utilisation de l'I2C avec la carte PYBStick ESP32-C3. Les dernières versions compilés de Micropython (V1.18, V1.19) nous invitent à déclarer un port i2c logiciel plutôt de matériel. Pourquoi ? Je ne saurait dire précisément mais bon. Suivons le conseil donné.
Cela se fait par exemple de la manière suivante :

Code: Select all

from machine import Pin, SoftI2C
mon_i2c = SoftI2C(scl=Pin(6), sda=Pin(7), freq=10000)
N'importe quelle paire d'entrée sorties peuvent faire l'affaire puisque le driver SoftI2C travaille directement sur les deux entrées/sorties, sans hardware spécifique. Néanmoins, il faut faire attention à la GPIO9, qui est relié au bouton d'activation du bootloader et sur laquelle le condensateur C8 permet d'éviter les rebonds. Pour des signaux rapides en sorties comme en entrée, C8 apparaît tel un court-circuit à la masse. Cela est très probablement la cause des déboires de Josette ;-)

Attention également à ne pas utiliser la GPIO8 qui elle est utilisée pour piloter la led RGB présente sur la carte, afin de ne pas avoir de fonctionnement erratique de cette led. J'ai fait l'économie d'une résistance de tirage sur cette sortie et il arrive parfois que, à la mise sous tension, la led s'allume généralement en blanc. Un peu de code pour initialiser en noir la led permet d'éviter l'aléatoire :

Code: Select all

from machine import Pin
from apa106 import APA106
rvb_led = Pin(8, Pin.OUT)
ap = APA106(rvb_led, 1)
ap[0] = (0, 0, 0) # toute noire
ap.write()
Enfin, le schéma de la carte est ici
schematics_pybstick26_esp32c3_r1dot0.zip
(83.12 KiB) Downloaded 984 times
et je ne pense pas l'avoir encore fourni. C'est fait :-)
User avatar
framboise314
Posts: 4
Joined: Mon 15 Jun 2020 13:50

Re: PYBStick ESP32-C3 : SoftI2C plutôt que I2C

Post by framboise314 »

merci Frédéric !
Cordialement
François - framboise314
Laveyronnais
Posts: 3
Joined: Tue 22 Oct 2024 17:23
Location: Aveyron

Re: PYBStick ESP32-C3 : SoftI2C plutôt que I2C

Post by Laveyronnais »

Bonjour,

Oui c'est un vieux post mais, risquer d'introduire une mauvaise fréquence sur un bus I2C sotware ou pas ne va pas trop rendre service.
Micropython ne fait pas différement qu'Arduino en C# et les 2 vitesses admises sur un bus I2C sont soit 100kHx soit en rapide 400kHZ.
C'est exprimé en Hertz donc 100000 ou 400000, et se souvenir que la vitesse haute est réservée à des bus alimentés en externe dixit le datasheet original. C'est au conditionnel car les datasheets trouvables ne correspondent plus du tout, grace aux multiples éléments clonés qu'on trouve sur le marché aujourd'hui.
Bref, sinon votre carte risque de ne pas fonctionner du tout proprement, le bus I2C encore moins.
Pour conclure restez sur du 100kHz ça suffira pour y coller une sonde et un écran Oled SS1306, au pire vous faites différents bus I2C si plus de 2 équipements par sécurité, mais gare à la consommation totale aussi, un ESP32 balance +/- 12mA par GPIO seulement.
Autre point crucial du bus I2C, c'est un bus industriel "local" donc pas comme du RS232 - RS485 ou autres, en clair pas de ligne interminables, c'est quelques dizaines de centimètres normalement, d'où le terme local utilisé comme étant dans la boite ;)

Donc la vitesse de 10000 indiquée risque d'introduire une gestion bizarre des équipements sur le bus voir ne pas permettre au bus de fonctionner. Ce n'est pas la première fois que je vois cette erreur, faute de frappe ou pas ce n'est pas la vitesse requise sur un bus I2C.

Bonne journée.
Post Reply