[TUTO] Adaptateur pour SMEG/NAC/Matrice CAN2010 sur BSI CAN2004

VLud

Lion de Bronze
19 Janvier 2018
1 881
1 019
113
France
Accès rapide : Télécodage et Calibration NAC ou RCC SANS Diagbox (Backup) / Accès UART sur NAC / Adaptateur CAN2010 sur CAN2004 / Remplacer un SMEG+ par un NAC sur 308 (sur 208) / Remplacer la caméra 130° par la caméra 180° sur 308 / Github

--

Je ne fourni aucune garantie de fonctionnement sur votre véhicule, il est probable que vous ayez un peu de débogage à faire en fonction de votre voiture

---

Voici un tuto qui vous servira à fabriquer votre adaptateur CAN-BUS pour votre voiture CAN (tuto incompatible avec les véhicules en VAN) avec un RNEG2 / NG4 / RNEG / RD45 / etc, cela vous permettra d'y monter les boîtiers télématiques les plus récents de chez PSA (par ex: le SMEG+IV2 / le NAC). En effet le SMEG+IV2 / NAC est monté sur BSI 2010, plus évolué que le BSI "tout court" évolué

Cet "adaptateur" qu'on pourrait plutôt appeler passerelle sert à modifier / envoyer des messages que le boitier télématique ne comprend / traite pas ou que le BSI n'envoie pas du tout. En effet le BSI 2010 sauvegarde pas mal de petites choses en plus: l'heure, la date, la langue de l'interface, etc. Ces taches étaient auparavant délaissées au boitier télématique / combiné.

--
Coût total approximatif: 100€

--

Liste de courses

  • Un fer à souder de faible puissance (Antex 12W par ex) ou à température réglable et un peu d'étain (au plomb c'est mieux, ça fond plus vite) - environ 30€
Liste de courses optionnelle mais recommandée
--

Etape 1

Vos cartes CAN-BUS Shield arrivent avec leur PIN à souder vous-même:
img


Je vous recommande de travailler sur une planche bien plane pour éviter que les connecteurs ne soient trop vers l'extérieur ou trop vers l'intérieur, c'est galère à rattraper après: souder un PIN de chaque bloc bleu pour vous assurer qu'il soit bien perpendiculaire à la carte avant de passer aux autres, si ajustement il y a, ce sera plus simple.



Voila pourquoi vous avez grand intérêt à avoir un fer de basse puissance et avec une petite panne, il faut mettre un peu d'étain sur chaque PIN, attention au sens du connecteur ISP, il doit être monté dans l'autre sens !

La bonne technique c'est de chauffer d'abord le PIN et la pastille avec la panne du fer à souder puis d'approcher l'étain

Rappel:

img


Etape 2

Vous devez retirer la résistance de 120 Ohm placée en fin de circuit CAN-BUS sur les deux cartes CAN-BUS Shield pour éviter de générer des erreurs / problèmes sur le réseau.

img


Il suffit simplement de chauffer la résistance, attendre que l'étain fonde et la pousser avec l'objet de votre choix pour la dessouder totalement, inutile de la garder => poubelle

Ajoutez de l'isolant (ruban adhésif, etc) sous le connecteur DB9 pour éviter le contact à la masse des PINs du connecteur avec le port USB. Mettez également l'interrupteur sur OFF

Etape 3

CAN-BUS Shield 1.2 / 1.5
Modification d'une des cartes Shield, par défaut la carte communique grâce au PIN 10 (PWM 10) de l'Arduino, on ne peut pas faire fonctionner deux cartes sur le même PIN, nous allons donc bidouiller un petit peu.
Il faut couper à la pince coupante le PIN 10 d'une de vos cartes Shield à mi-hauteur et le plier en direction du PIN 9 (MVM 9). Une fois ceci fait il faut simplement faire un gros pâté d'étain entre les deux PIN. Et c'est tout, le PIN 10 ne sera plus connecté à la carte inférieure et sera redirigé vers le PIN 9 (qui est officiellement libre sur la documentation de la carte Shield)
CAN-BUS Shield 2.0
Modification d'une des cartes Shield, par défaut la carte communique grâce au PIN 9 (PWM 9) de l'Arduino, on ne peut pas faire fonctionner deux cartes sur le même PIN, nous allons donc modifier la configuration des PIN à l'arrière de la carte.
Coupez la connexion avec un cutter comme indiqué:
cut%20this%20wire%20with%20box%20cutter.png

Puis soudez comme suit:
sodder%20the%20middle%20pad%20and%20pad%2010.png
Avec cette petite bidouille on peut maintenant gérer deux cartes avec un seul Arduino :bounce:
 
Dernière édition:

Etape 4

img


Branchez les connecteurs 2 voies (peu importe leur forme) en les dénudant et vissant sur les cartes CAN-BUS Shield

Etape 5

Branchement du module RTC, il va nous servir à garder l'heure en mémoire quand le boitier télématique et l'Arduino est éteint. D'après Internet, la pile bouton doit pouvoir tenir 30 ans, la voiture sera à la casse d'ici là :pt1cable: Et au pire, on peut la changer si nécessaire.

Il faut souder 4 câbles DuPont mâles > femelles sur le connecteur I2C
Vous branchez l'autre côté des câbles DuPont (femelle) sur le module RTC en respectant le PINOUT inscrit sur les cartes

Enfichez les 3 cartes entre elles, l'Arduino et les 2 cartes CAN-BUS Shield.

CAN-BUS Shield 1.2 / 1.5
Mettez la carte bidouillée vers le PIN 9 en haut, c'est celle qui sera connectée au boitier télématique.​
CAN-BUS Shield 2.0
Mettez la carte non modifiée en haut, c'est celle qui sera connectée au boitier télématique.
Etape 6

Ici vous avez le choix entre bidouiller le faisceau d'origine (pas recommandé) et utiliser une rallonge (Phonocar 4/790) pour récupérer l'alimentation et faire la redirection du CAN Multimédia vers l'Arduino

Voici le PINOUT du connecteur, quelques variantes sur les modèles plus anciens, mais l'alimentation principale et le CAN Divertissement / Multimédia High et Low est toujours au même endroit:
img


Vous devez donc sectionner le CAN Div High et CAN Div Low, y relier (soit avec des dominos, soit avec des gaines thermorétractables avec étain) les connecteurs Mâle / Femelle en fonction de ce que vous avez mis comme connecteur sur vos cartes Shield

Rappel: carte Shield la plus haute modifiée vers le PIN 10 = Arduino > Télématique

On sectionne aussi le 12V Principal et sa masse pour brancher notre abaisseur de tension / allume-cigare USB en dérivation cette fois-ci (il faut bien continuer d'alimenter le boitier télématique).
Pour l'allume cigare vous avez le choix entre casser sa coque plastique et souder directement les fils sur la carte interne ou vous soudez directement les fils sur le téton (+) et un des crochets sur le côté (-)
Ne pas oublier d'isoler le tout

Grâce à l'alimentation repiquée ici on est sûr que l'Arduino s'allume en même temps que le boitier télématique (car oui il est alimenté bien avant que vous mettiez le contact, dès le déverrouillage de la voiture avec la clé)
N'oubliez pas de déclipser les blocs blanc / noir sur le faisceau d'origine pour les rebrancher sur la rallonge, dans le bon ordre (voir schéma, bloc B et C).
Autre solution, ajouter sur la rallonge un Phonocar 4/617

En fonction de votre voiture et de la place que vous avez je vous conseille d'ajouter du fil (Automobile Multi-brins 1mm2 de préférence) entre les connecteurs qui vont vers l'Arduino et la rallonge, il y a souvent plus de place dans la console centrale / derrière la boite à gants (en plus c'est souvent plus facile d'accès pour la maintenance :D)
Moi j'ai choisi la console centrale, en soulevant légèrement le cache sur le côté j'ai accès à mon allume-cigare USB et l'embout USB qui va vers l'Arduino, avec une rallonge USB je peux travailler facilement sur le code avec mon PC Portable dans la voiture sans rien démonter :chinois:

Etape 7 (dans le cas où votre 12V est permanent et que vous avez un remote 12V sur A11, avec un RD4 par ex)

Sur BSI2010 le SMEG / NAC est coupé électriquement environ 60 à 120s après une coupure de contact, il faut donc imiter ce fonctionnement pour limiter la consommation de votre batterie !

Je vous conseille ce relais:
- Relais 12V automatique

Le schéma de câblage est le suivant:



En l’occurrence pour nous, "Load Equipement" sera le SMEG / NAC, l'alimentation est à prendre sur A12 et A16, le IN est à prendre sur A15.
Ne vous trompez pas de polarité sous peine de griller la diode unipolaire de protection interne (et ça sent mauvais en plus :D)

Idéalement il faut brancher l'Arduino et le SMEG / NAC derrière le relais, de façon à couper les deux électriquement (même si la consommation de l'Arduino est surement négligeable)

Vous avez simplement à jouer avec les petits boutons pour mettre le mode P4 et mettre 99s une fois que vous alimentez la bête, c'est tout :bounce:

Fabrication de votre boitier

Impensable de laisser votre Arduino tel quel dans la planche de bord de votre voiture, vous avez quartier libre pour fabriquer votre petit boitier afin de l'isoler des parties métalliques, n'oubliez pas de laisser le port USB disponible depuis l'extérieur.

Voici le mien, imprimé avec une imprimante 3D (modèle dispo par MP pour les intéressés):
 
Dernière édition:

Installation de l'IDE Arduino

Récupérez et installez l'IDE compatible avec votre système d'exploitation directement sur https://www.arduino.cc/en/Main/Software

Ajout des librairies nécessaires au projet dans votre IDE

Téléchargez ces 3 fichiers .zip :

- arduino-mcp2515.zip - Librairie pour gérer les cartes CAN-BUS Shield
- DS1307RTC.zip - Librairie pour gérer le module RTC
- Time.zip - Librairie pour travailler sur l'heure

Et ajoutez les une par une via ce menu:
img


Compiler le programme

Et voici enfin le principal, ce qui m'a pris plusieurs heures d'analyse / d'essais / de batterie à plat : arduino-psa-comfort-can-adapter.ino

Vous avez le choix entre copier le code source depuis le RAW et enregistrer le fichier .ino ou bien récupérer le ZIP du master pour directement récupérer le .ino et les ZIP des librairies

img


Uploader le programme

Branchez votre Arduino en USB sur votre ordinateur.

Vous n'avez plus qu'à uploader le programme sur votre Arduino en cliquant sur la flèche allant à droite, vérifiez bien dans Tools > Port que vous avez bien sélectionné le bon port.

img


Débogage / Vérification

Vous pouvez vérifier les messages de debug directement via la console série (attention à bien vérifier que le "baud rate" est bien à 115200) en changeant au préalable debugGeneral à "true":
img


Evidemment si vous voulez voir quelque chose d’intéressant il faut que vous connectiez l'Arduino en USB sur votre PC Portable pendant qu'il est connecté au CAN-BUS de la voiture

Extra

Pour ceux qui seraient tenter d'intégrer l'adaptateur (plutôt en Nano) directement dans le NAC c'est parfaitement faisable ! On y trouve tout ce dont on a besoin et on peut couper les deux lignes CAN au dessus du TJA1055/3 présent sur la carte mère (carte en haut) en dessoudant les résistances 0 Ohms et donc avoir une entrée (CAN2004) et une sortie (CAN2010 converti par l'Arduino)

 
Dernière édition:


Whaou !!! Idem !
Je vais avoir un tas de questions à te poser...

Genre... Comment faire pour piloter la direction electrique ? (sur 3008/5008)
Comment lire les infos fournies par le module caméra ?

Est-ce que tout cela est accessible via le bus can ?

Merci
 

Whaou !!! Idem !
Je vais avoir un tas de questions à te poser...

Genre... Comment faire pour piloter la direction electrique ? (sur 3008/5008)
Comment lire les infos fournies par le module caméra ?

Est-ce que tout cela est accessible via le bus can ?

Merci

La direction électrique serait plus sur le CAN "Voiture" que sur le CAN Multimédia, deux réseaux distincts, je n'irai pas trop jouer sur ce réseau personnellement (surtout si la voiture n'est pas sur chandelles / pont élévateur avec roues libres, sécurité avant tout), pour le module caméra on parle bien de la caméra multifonction à l'avant ? Si oui effectivement les infos sont très probablement accessibles depuis le CAN Multimédia. Et 3008 / 5008 ancienne ou nouvelle génération ?

Question: quel est le but ? Faire de la conduite autonome ce n'est pas trop légal sans permissions :chinois:
 

Je pense qu'il voudrait faire plutôt du lane centering ;)

Pour le pilotage de la direction assistée, en général il y a deux modes: un basse vitesse (basée sur la position du volant) utilisé pour le park assist et un deuxième sur le couple de la direction pour l'avertisseur franchissement de ligne.
 

J'ai trouvé une petite mine d'or ici :
http://romain.raveaux.free.fr/teaching/TP207.pdf


> Identifiant 305H :
> C’est la trame qui gère la position angulaire du volant ainsi que sa rotation.


> un deuxième sur le couple de la direction pour l'avertisseur franchissement de ligne.
voila...

>Je pense qu'il voudrait faire plutôt du lane centering ;)
C'est effectivement un projet que je voudrais faire. Mon talon d'achile c'est la partie electronique. Mais déjà, entrainer un réseau de neurone avec un buffer d'image + la position du volant... c'est déjà très très bien !
 

Et 3008 / 5008 ancienne ou nouvelle génération ?

Question: quel est le but ? Faire de la conduite autonome ce n'est pas trop légal sans permissions :chinois:

Ca serait sur une nouvelle 5008.

> Faire de la conduite autonome ce n'est pas trop légal sans permissions

Déjà dans un premier temps... Simplement faire des tests à la tesla en "Ghost mode".
C'est à dire... tu fais un entraînement du réseau de neurone a partir des données collectées (image de la route, angle du volant, intensité du freinage).
Ensuite validation avec des données de test pour vérifier la prédiction du réseau de neurone.

Ensuite validation avec des données réelles en mode inactif :

Le réseau de neurone est actif mais il n'effectue pas d'action réelle (pas de correction de trajectoire)

Le RN (reseau neuronal) fait ses prédictions à partir des données issues des capteurs...
Si la prédiction est erronnée... (Un écart entre la prédiction du réseau de neurone et l'action de l'utilisateur). Le réseau de neurone dit de tourner à droite pour rester dans la trajectoire mais le conducteur à bon escient corrige légitiment à gauche. Cela s'appelle un désengagement... Le but étant de les limiter au maximum.

En fonction de la qualité des prédictions... bein tu peux passer en mode réel (Après avoir obtenu l'autorisation bien sur)
 

J'ai trouvé une petite mine d'or ici :
http://romain.raveaux.free.fr/teaching/TP207.pdf


> Identifiant 305H :
> C’est la trame qui gère la position angulaire du volant ainsi que sa rotation.


> un deuxième sur le couple de la direction pour l'avertisseur franchissement de ligne.
voila...

>Je pense qu'il voudrait faire plutôt du lane centering ;)
C'est effectivement un projet que je voudrais faire. Mon talon d'achile c'est la partie electronique. Mais déjà, entrainer un réseau de neurone avec un buffer d'image + la position du volant... c'est déjà très très bien !

L'identifiant 305h est la valeur de lecture de l'angle du volant et non la valeur de consigne. Ce document est pour l'ancienne architecture CANbus.

Sur la front camera, tu n'auras pas l'image de la camera mais juste les données de sorties.
 

Ce document m'a aidé à identifier une partie des données, mais pour avoir comparé ma 308 T9 et ma RCZ il y a eu pas mal de changements, seuls quelques trucs sont restés identiques, ou sinon c'est le même emplacement mais pas la même plage de valeurs ;)

Je confirme en tout cas : beaucoup de choses sont en lecture seule sur le CAN-BUS et seulement là à titre informatif.

Si tu veux récupérer la vidéo de la caméra frontale il faut récupérer les deux fils de la vidéo analogique (de type RCA), tu ne l'auras pas sur le CAN-BUS, tu auras seulement les valeurs que le calculateur de la caméra multifonction a traduit depuis la vidéo. Il vaut mieux traiter la vidéo toi même pour être sûr de disposer de toutes les informations nécessaires à ton projet
 

Je sais pas si vous avez vu ce projet aussi :
https://medium.com/@alexandreblin/can-bus-reverse-engineering-with-arduino-and-ios-5627f2b1709a

Assez intéressant ! (un petit français)
 

Je sais pas si vous avez vu ce projet aussi :
https://medium.com/@alexandreblin/can-bus-reverse-engineering-with-arduino-and-ios-5627f2b1709a

Assez intéressant ! (un petit français)

Déjà vu aussi, c'est ce qui m'a permis de me lancer dans le projet et de l'adapter pour ce que je voulais faire :coucou:
 

Bravo à toi pour ce tuto, je vais certainement tenté l'aventure sur ma 508 cet été, donc normalement déjà une BSI 2010évo donc pas besoin d'adaptation en théorie si ce n'est les faisceau. Je vais me mettre en quête du matériel et même si possible de la prise originale pour le NAC, j'ai quelques contacts chez conti.
 

Pour les ignares , pouvez vous traduire , SMEG-BUS ? VAN , RNEG2 , NG4 , RD45 ect.ect.... juste pour savoir de quoi vous parlez entre vous , merci :pt1cable:
 

Bravo à toi pour ce tuto, je vais certainement tenté l'aventure sur ma 508 cet été, donc normalement déjà une BSI 2010évo donc pas besoin d'adaptation en théorie si ce n'est les faisceau. Je vais me mettre en quête du matériel et même si possible de la prise originale pour le NAC, j'ai quelques contacts chez conti.

Effectivement, pas besoin d'adaptateur si déjà en BSI 2010 ;)
Le connecteur est déjà dispo, @ahca l'a fait, je dois intégrer cette possibilité au tuto que j'ai fait
 

Pour les ignares , pouvez vous traduire , SMEG-BUS ? VAN , RNEG2 , NG4 , RD45 ect.ect.... juste pour savoir de quoi vous parlez entre vous , merci :pt1cable:

CAN (Controller Area Network):
Réseau série reliant tous les calculateurs entre eux (3 réseaux différents dans nos voitures PSA), multi-vitesse, standardisé

VAN (Vehicle Area Network):
Réseau série développé par PSA et Renault, unique vitesse de 125Kbit/s et encodage différent mais globalement très similaire au CAN (abandonné)

RNEG ou Wip Nav (boitier télématique avec façade associée):


RD45 (boitier télématique avec façade associée):


SMEG / NAC (boitier télématique avec façade dissociée):


BSI 2010 "tout court":
BSI (Boitier de Servitude Intelligent) qui équipe les voitures les plus récentes (208, 308, 508, C3, C4 Cactus, etc), globalement toutes les voitures sorties en ou après 2012 (pas d'usine mais sortie officielle, ma RCZ de 2012 dispose d'un BSI Evolué car sortie en 2010). Aujourd'hui les 308 restylées et nouvelles voitures comme le 3008/5008 sont en BSI 2010 Evolué
 
Dernière édition:
  • J'aime
Reactions: Rod10 and rastah

Merci pour toutes ces précisions , mais je reste toujours aussi béotien , mais c'est pas grave :coucou:
 

Effectivement, pas besoin d'adaptateur si déjà en BSI 2010 ;)
Le connecteur est déjà dispo, @ahca l'a fait, je dois intégrer cette possibilité au tuto que j'ai fait

Génial, je préfère ça à la méthode colle ;)
 


Je te l'accorde, mais bon vu le prix de l'ensemble (car sur 508 il faut en plus remplacer tout le bandeau clim/radio), tu as un lien?
 



Wahou,franchement super boulot , hâte de m'essayer à la tâche. Il faut vraiment avoir de bonne connaissance pour savoir donner vie à cet adaptateur..
Je vous tire mon chapeau pour le travail effectué et vous en remercie de nous en faire le partage .
 

Je me permets de rectifier 2 petites coquilles de ta réponse de demande "d'explicitation" à pierrot777 VLud :
- Le RD45 existe en CAN2004 avec façade associée (308 I) et CAN2010 façade dissociée (C4 II et DS4)
- Le BSI2010 a été introduit sur Citroen C4 II et Peugeot 508 en 2010 donc.
 

Je me permets de rectifier 2 petites coquilles de ta réponse de demande "d'explicitation" à pierrot777 VLud :
- Le RD45 existe en CAN2004 avec façade associée (308 I) et CAN2010 façade dissociée (C4 II et DS4)
- Le BSI2010 a été introduit sur Citroen C4 II et Peugeot 508 en 2010 donc.

A partir du moment où la façade est dissociée c'est un RD5 et plus un RD45 (même si effectivement, niveau hardware, c'est du pareil au même), c'est écrit sur Diagbox branché sur une C4 II :rolleyes:
 

Désolé je ne parle pas français. Juste traduit. C'est un travail vraiment génial! La navigation avec des retards de trafic en temps réel et le streaming de téléphone est la seule chose qui me manque dans la voiture. Cela affiche-t-il également les instructions de navigation sur l’affichage du tableau de bord? Est-ce que les commandes au volant continuent à fonctionner? Excellent travail quand même!

––––

Sorry I don't speak French. Just translated.
This is really awesome work! The nav with live traffic delays and phone streaming is the only thing I miss in the car.
Does this also show the navigation instruction on dashboard display? Do steering wheel control continue to work?
Great job anyway!
 

Yes it does, but it all depends on the type of matrix your car have, what is your car ?
Of course steering wheel controls still work.
 
  • J'aime
Reactions: myneur

Bonjour les amis, moi sur ma 308 T7, je voudrais quand j’appuis sur la touche « mode » de mon autoradio pour ouvrir une 3ème fenêtre avec un tableau regroupant plusieurs information comme température d’admission, d’huile, échappement, pression turbo, quantité injecté etc.
Quelqu’un aurait des infos ou sais fabriquer ce genre de chose ?
 

Yes it does, but it all depends on the type of matrix your car have, what is your car ?
Of course steering wheel controls still work.
Citroen C5 2012 with RT6 nav. But I'd like to retrofit the newer nav. How does the car communicate with the matrix display to show the nav instructions? Is it documented somewhere?