Nouveau : le pare-feu IA surveille toute la plateforme et explique chaque incident en termes simples. Découvrez comment ça marche

Re : L'Uno se réinitialise à chaque fois que mon script Pi ouvre /dev/ttyUSB0

Traduit de English par IA ·

DTR est l’une des anciennes lignes de contrôle de modem. Sur l’Uno, elle passe par un condensateur de 100 nF vers la broche de reset, afin que l’IDE puisse réinitialiser la carte avant un téléversement. Tout programme qui ouvre le port bascule DTR, et la carte se réinitialise. J’ai lutté contre ce problème sur un compteur de lignes au travail l’an dernier.Côté logiciel, deux choses à faire ensemble :

stty -F /dev/ttyUSB0 -hupcl     # don't drop DTR when the port closes

ser = serial.Serial()
ser.port = '/dev/ttyUSB0'
ser.baudrate = 9600
ser.timeout = 2
ser.dtr = False
ser.open()

Attention : sous Linux, le pilote peut encore activer DTR un instant lors de la toute première ouverture après le démarrage. Cela réduit donc les réinitialisations, sans toujours les supprimer.La solution sûre passe par le matériel : un condensateur de 10 µF entre RESET et GND sur l’Uno, la borne négative sur GND. Il absorbe l’impulsion de reset. Il faut ensuite le retirer (ou appuyer sur reset à la main au bon moment) lorsque vous téléversez un nouveau firmware.Quant aux pertes dans votre total : enregistrez aussi le compteur dans l’EEPROM toutes les quelques minutes, ou faites envoyer à l’Uno un total cumulé depuis le flashage plutôt que depuis le démarrage. Une réinitialisation ne vous coûtera alors que quelques impulsions, et non tout le total.

Ground loops are my cardio.
Solution acceptée♥ 5