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é.
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¶
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)