CAN/RS232 Shield

Le CAN/RS232 Shield combine un émetteur‑récepteur CAN‑FD avec un émetteur‑récepteur RS‑232 afin que l’OpenMV Cam puisse communiquer avec des véhicules, des contrôleurs et des équipements série hérités depuis un seul shield, avec une alimentation à large plage d’entrée et une protection contre l’inversion de polarité.

CAN/RS232 Shield

Pour la fiche technique complète, les photos et la commande, consultez la page produit CAN/RS232 Shield.

Points forts

  • CAN‑FD à 8 Mb/s avec terminaison et filtrage intégrés

  • RS‑232 à 1 Mb/s avec filtrage intégré

  • Entrée de 6 à 36 V, tolérante à l’inversion de polarité

  • Entrée ADC de 0 à 5 V avec protection contre les surtensions de ±36 V

  • E/S numérique de 0 à 5 V pour les déclencheurs de synchronisation de caméra, protégée contre les courts‑circuits

Brochage

Brochage du CAN/RS232 Shield

Référence des broches

Broche

Fonction

P1

CAN TX → entrée de l’émetteur‑récepteur (par défaut)

P2

CAN TX → entrée de l’émetteur‑récepteur (alternative)

P3

CAN RX ← sortie de l’émetteur‑récepteur

P4

RS‑232 TX → pilote la ligne en sortie

P5

RS‑232 RX ← reçoit la ligne en entrée

P6

Relecture AIN décalée en niveau (0 à 3,3 V sur P6)

P10

SYN — E/S numérique à drain ouvert sur le bornier

PWR in

Large entrée de 6 à 36 V sur le bornier (tolérante à l’inversion de polarité)

AIN in

Entrée analogique sur le bornier

VIN out

5,4 V jusqu’à 600 mA depuis le régulateur intégré

Rail 3,3 V

Alimente l’électronique intégrée du shield

Rail GND

Masse commune

Note

AIN est protégée contre les surtensions jusqu’à ±36 V et est par défaut une entrée en tension de 0 à 5 V, réduite à 0 à 3,3 V sur P6. Pontez le shunt du mode 4 à 20 mA à l’avant du shield pour basculer AIN en entrée de boucle de courant 4 à 20 mA.

Note

SYN est une ligne numérique à drain ouvert, tirée vers le haut à 3,3 V côté caméra et à 5 V côté borne SYN. Par défaut, c’est une entrée — le shield décale la plage de 0 à 5 V sur SYN vers 0 à 3,3 V sur P10. Modifiez le cavalier à souder intégré pour faire passer P10 en sortie, en décalant la plage de 0 à 3,3 V sur P10 vers 0 à 5 V sur SYN.

Note

Chacune des broches P1, P2, P3, P4, P5, P6 et P10 peut être récupérée pour un autre usage. P1, P3, P4, P5, P6 et P10 sont connectées par défaut — P1, P3, P6 et P10 via des cavaliers à souder à l’arrière, P4 et P5 via des cavaliers à souder à l’avant. Ouvrez le cavalier de toute broche que vous souhaitez libérer. P2 est déconnectée par défaut : pontez son cavalier à l’arrière pour router CAN TX vers P2 à la place (et ouvrez le cavalier arrière de P1 pour libérer P1).

Note

La séparation P1/P2 existe pour que le shield fonctionne avec différentes familles de processeurs. Les cartes OpenMV Cam IMXRT (RT1062) peuvent router CAN vers P1, elles utilisent donc le mappage par défaut. Les cartes STM32 ne peuvent pas atteindre P1 avec leur périphérique CAN ; pontez donc le cavalier arrière de P2 (et ouvrez celui de P1) pour utiliser l’alternative.

Note

La terminaison du bus CAN est connectée par défaut — divisée en deux moitiés de 60 Ω en série entre CANH et CANL avec un condensateur vers la masse au point médian (une terminaison divisée à couplage AC de 120 Ω). Ouvrez les deux plages à souder pour déconnecter chaque moitié indépendamment.

Utilisation

Note

Les numéros de périphérique CAN(0) et UART(1) ci‑dessous suivent le mappage IMXRT (câblage par défaut de P1). Sur un autre processeur, le bus câblé sur ces broches peut être différent — consultez la référence de votre carte.

Envoyez et recevez des trames CAN‑FD — TX sur P1 (par défaut) ou P2 (alternative), RX sur P3

from machine import CAN

can = CAN(2, 1_000_000)
can.set_filters(None)
can.send(0x123, b"\xDE\xAD\xBE\xEF")
print(can.recv())

Renvoyez des octets en écho via RS‑232 sur P4 (TX) / P5 (RX)

from machine import UART

uart = UART(1, baudrate=115200)
uart.write("hello\n")
print(uart.read())

Lisez l’entrée du bornier AIN via la broche P6 décalée en niveau

from machine import ADC
import time

ain = ADC("P6")

while True:
    v = ain.read_u16() * 3.3 / 65535
    print("AIN:", v * (5.0 / 3.3), "V")
    time.sleep_ms(100)

Réagissez à un front descendant sur la ligne SYN — par exemple, pour synchroniser la caméra avec un autre appareil tirant SYN vers le bas

from machine import Pin

def on_sync(pin):
    print("SYN falling edge")

syn = Pin("P10", Pin.IN)
syn.irq(on_sync, Pin.IRQ_FALLING)