Traduit de English par IA ·
Je me suis battu avec la carte d’extension de l’Edison pour un laboratoire l’an dernier. Ouvrir /dev/ttyMFD1 ne suffit pas sur cette carte : les broches 0 et 1 passent par un multiplexeur de broches et des adaptateurs de niveau, et tant qu’ils ne sont pas configurés, l’UART n’est pas relié au connecteur, les broches sont de simples GPIO. C’est pourquoi l’ouverture réussit mais rien n’est lu.La solution simple consiste à utiliser la bibliothèque mraa, qui configure le multiplexeur à votre place lorsque vous ouvrez l’UART par son numéro de carte :
import mraa
u = mraa.Uart(0) # pins 0/1 on the Arduino breakout, sets the mux
u.setBaudRate(115200)
u.setMode(8, mraa.UART_PARITY_NONE, 1)
while True:
if u.dataAvailable(1000):
line = u.readStr(64).strip() # "caps_ok=1823;caps_rej=12"
vals = dict(kv.split("=") for kv in line.split(";"))
# add to the payload the Edison already sends:
payload["caps_ok"] = int(vals["caps_ok"])
payload["caps_rej"] = int(vals["caps_rej"])
Vérifiez aussi que le câblage est croisé : TX de l’OpenMV vers RX de l’Edison (broche 0), RX de l’OpenMV vers TX de l’Edison (broche 1). La broche 0 est RX sur la carte d’extension, donc si votre câblage correspond exactement à ce que vous avez écrit, inversez-les.
I fought the Edison breakout for a lab last year. Opening /dev/ttyMFD1 isn’t enough on that board: pins 0 and 1 go through a pin multiplexer and the level shifters, and until those are set up the UART isn’t connected to the header at all, the pins are plain GPIO. That’s why it opens fine and reads nothing.
The easy way is the mraa library, which sets the mux for you when you open the UART by its board number:
import mraa
u = mraa.Uart(0) # pins 0/1 on the Arduino breakout, sets the mux
u.setBaudRate(115200)
u.setMode(8, mraa.UART_PARITY_NONE, 1)
while True:
if u.dataAvailable(1000):
line = u.readStr(64).strip() # "caps_ok=1823;caps_rej=12"
vals = dict(kv.split("=") for kv in line.split(";"))
# add to the payload the Edison already sends:
payload["caps_ok"] = int(vals["caps_ok"])
payload["caps_rej"] = int(vals["caps_rej"])
Also check the wiring is crossed: OpenMV TX to the Edison’s RX (pin 0), OpenMV RX to the Edison’s TX (pin 1). Pin 0 is RX on the breakout, so if what you wrote is exactly how it’s wired, swap them.

