Tlemcen Car electronics

Tlemcen Car electronics (https://www.tlemcen-electronic.com/forum/index.php)
-   Arduino (https://www.tlemcen-electronic.com/forum/forumdisplay.php?f=130)
-   -   Projet STM32 Adaptateur OBD2 "Blue Pill" (https://www.tlemcen-electronic.com/forum/showthread.php?t=80811)

ElTurco 25/02/2019 02h57

Projet STM32 Adaptateur OBD2 "Blue Pill"
 
Salut les amis

Je suis amateur dans le vaste monde Arduino et compagnie, je voudrais réaliser un projet qui consisterait à lire et effacer les défauts générique et bien plus si les trouvailles, le partage et l'aide le permettent.

Donc pour commencer, j'ai fait des recherches sur les entrées et sorties de diffèrentes puces microcontrôleur et me suis aperçus que le STM32F103C8T6 possédait une voir deux sorties (CAN RX et CAN TX) intégrer.

Ce qui n'est pas le cas pour les puces Arduino qui utilise le MCP2515 pour effectuer la liaison entre l'emetteur/recepteur CAN (ex. les plus commun, le MCP2551/2561 ou TJA1040/1050 ou Atmel710...)

Alors j'ai trouver un bon petit partage (je remercie l'auteur) sur un site Russe, voici l'image du début de projet qui ressemblera à cela (+/-)

http://image.noelshack.com/fichiers/...224-224558.jpg
Donc on peut voir le fameux STM32, ainsi que 2x modules mcp2551, un module régulateur dc dc (de 12V vers 5V) aux choix "module LM317 ou 2596 aussi pourraît être bon je pense" un module Bluetooth en option ainsi que le code du projet tout est partager ici

http://www.drive2.ru/c/486832413771563406/

En bref, mon objectif est de travailler sur ce partage pour remplacer/ajouter du sketch dans le code afin d'utiliser 2 puces 9142A ou L9637D supplémentaire pour les lignes K et L

Je vais faire plus de recherches pour comprendre le schmilblik pour ajouter les K et L

Toutes avis, infos, conseille et orientation sont les bienvenues

À suivre....

progdebutant 25/02/2019 08h01

Salut l'ami

désolé aucune compétence dans ce domaine mais bon courage pour ce projet

ElTurco 26/02/2019 20h09

Salut les amis

Suite aux recherches pour réaliser le projet, je m'aperçois que ça ne vas pas être facile :) la plupart des codes open source sont réaliser pour un modèle bien spécifique en utilisant les PID et VID du vehicule que l'auteur possède :)

http://en.m.wikipedia.org/wiki/OBD-II_PIDs

Néanmoins j'ai pu trouver sur un blog "chinatown" un code assez intéressant pour gérer ou lire plusieurs protocoles, ce projet est tout Ã* fait intéressant Ã* lire car pas mal d'info pour les amateurs comme moi et même les connaisseurs :)

http://www.cnblogs.com/shangdawei/p/3558221.html

La carte réaliser est assez professionnel, seulement le codage est réaliser pour du PIC16F, donc je vais contacter mes amis sur STM32Duino pour demander de l'aide afin de compatibiliser le codage en STM32. Mais sur la carte on vois bien un STM32 Ã* moin que je n'est pas trouvé le bon code.

Le projet consiste Ã* utiliser 2 modules CAN MCP2551 pour LS et MS CAN, ensuite 2 puces L9637D ou MCZ33290 ou 9142A pour les lignes K et L afin de pouvoir communiquer avec le max de sondes.

Après réflection je me dis que pour mener Ã* bien ce projet il me faudrait un simulateur de bus CAN et cerise sur le gâteau, une personne ayant le sens du partage nous dévoile son super projet Ã* developper en utilisant potentiomètre et bouton pour faire jouer les valeurs.

http://www.instructables.com/id/Arduino-OBD2-Simulator/

Je compte utiliser l'arduino uno et le mini module CAN avec MCP2515 et TJA1050, il faut juste modifier la valeur du crystal quartz qui est de 16mhz sur le Seeduino CAN et 8mhz pour le petit module MCP2515, l'auteur utilise un ELM327 pour faire des tests avec les logiciels dediée.

Ce simulateur peux aussi "Ã* mon avis" être utile pour apprendre Ã* utiliser les diffèrents soft que nous possèdons grâce aux PID adaptés ou modifier dans le codage pour la marque concerné. :)

Mais attendez il manque toujours quelque chose d'intéressant pour nous faire aider :) oui un oscilloscope, et voici le lien pour un bon p'tit projet avec STM32 et LCD TFT, il peux effectuer d'autres tests etc...

http://www.instructables.com/id/Fast...cope-and-Indu/

C'est un super projet pas chère, ya mieux mais pour moi "amateur du dimanche" c'est largement suffisant.

VoilÃ*, j'espère réussir et faire profiter mes frères de mes expériences.

À suivre...

PS: Comme je suis Turc d'origine, notre président (que je salue de tout mon coeur) nous rappel souvent dans les discours pour nous faire comprendre que nous devons aider nos enfants pour leurs faciliter l'accés et l'apprentissage du Codage informatique, c'est pas pour rien :)

ElTurco 28/03/2019 20h04

Salut les amis

J'ai reçu le matos, je vais déjà commencer par fabriquer une station de soudure avec un Arduino Nano V3.0 pour commencer. Puis inchallah on vas s'attaquer au reste, j'ai hâte de faire un essai sur simulateur CAN avec les logiciels style ELM, puis passer au pratique avec une 307 2.0hdi. CAN.

Au final si j'arrive, j'aurais un adaptateur (made in house) pour lire le max de défauts en double CAN et K L, mon soucie de débutant est de ne pas pouvoir trouver de partages pour plusieurs protocoles de communication mais plutot dédiée à une marque donc protocole bien précis

Comme je n'est pas un niveau élevé en programmation je lis et cherche à droite et à gauche, il faut que j'adapte plusieurs code pour en faire un bon qui communique avec les bus CAN/ L / K line. Après il suffirat d'utiliser les soft ELM pour voir ce qui est lu.

Peut être que je n'arriverais pas vu la complexiter du shmilblick mais rien ne serais perdu car on apprend toujours dans ce genre de projets.

Tout info, astuce... sont les bienvenus.

A+

ElTurco 24/04/2019 22h02

2 pièce(s) jointe(s)
Salut les amis

J'avance pas à pas dans mes ptits hobby/projet :) voici le shéma d'amateur pour le montage de la station de soudure (vite fait) :peace:

https://www.tlemcen-electronic.com/f...1&d=1556137819
Oui je sais c'est vraiment amateur :)

Voilà à quoi ça va ressembler au final avec les moyens de bord donc de la récup :madgrin:, il y aura 2 étages une en bas pour l'alimentation et un second étage pour controler la "station de soudure"

https://www.tlemcen-electronic.com/f...1&d=1556138133

Attention !!! Le dispositif fait peut être un peu miskine mais ça marche très bien :dance:
Alors mise sous tension, l'afficheur vous fait un pti cou cou puis affiche la température actuel.

Il y à 3 boutons disponible pour les re
Bouton 1 = Set (reglage de mode)
Bouton 2 = Haut (pour monter le niveau)
Bouton 3 = Bas (pour descendre le niveau)

2 Modes s'offre à nous :

1) Mode reglage de température fixe, exemple regler sur 350°C la station fait en sorte de rester dans cette plage de température.
2) Mode reglage de puissance, exemple sur une echelle de 0 à 100 selon votre souhait, si vous voulez travailler avec 60% de puissance la station fait en sorte de rester dans cette plage.

= à même pas 10 balles :) pour votre station de soudure (Made In Homemade) :)

Plus de photos du résultat finale, de détaille, un bon ptit shéma :) et biensûr le code du projet seront bientôt partager (inchaAllah)

Après il y aura les bigs projet hobby qui pourront débuter à savoir, le simulateur CAN avec Arduino Uno, Module Can sous MCP2515 + TJA1050.. Un oscilloscope avec STM32F103 et écran LCD TFT 2.4 et au final si j'arrive l'adaptateur OBD2 avec Blue pill (STM32F103 Smart v2.0 ou similaire) double module CAN MCP2551 et le must ajout de double module L9637 ou 9241A pour les ligne K et L.

Ya du boulot surtout pour un amateur comme moi mais avec l'aide du créateur et surtout si on est sérieux ya moyen inchaAllah.

@ bientôt les frères.

jah83 25/04/2019 04h44

Le visuel c est de la finition le principal C.est que ce soit fonctionnel ;)

stephane 25/04/2019 06h43

Salutations
Alors je prend en cours je vais te faire gagné tu temps prend un MÉGA avec le uno tu vas etre vite limitée et l adaptateur ttl de chez freematic il prend en charge les com can 500kbps/250 et le kwp2000 fast et 5kbps
Si tu veut j ais un code de départ

stephane 25/04/2019 08h40

après je peut peut être t aidez je suis pas sur le même projet que toi mais ca ce touche
voila une photo sur un module sur le quelle je travaille qui vas permettre de voir les activité sur le réseaux can bus

https://nsa40.casimages.com/img/2019...5255284301.jpg

adiago 25/04/2019 09h06

@stephane

la photo n'est pas visible ?

stephane 25/04/2019 09h27

A oui mince je suis sorti je la reposte toute a l heure

ElTurco 25/04/2019 19h26

4 pièce(s) jointe(s)
Salut les amis

Merci à chacun pour vos participation et surtout à Stéphane pour le partage d'expérience et l'aide que tu veux m'apporter, ça me motive pour accelerer le processus.

Très bon projet de ta part, c'est clair que l'avenir c'est le CAN :) je reconnais le MCP2515 et le 2551 avec ses leds prêt à denicher les infos sur le bus CAN, bravo à toi et merci pour le partage du prototype.

J'ai vu et lu le Freematics mais comme je suis plus du genre à me débrouiller grâce aux amis comme toi et le people du monde Open Source et surtout que les composants sont dispo j'ai voudrais tenter l'expérience pour les nuls comme moi :)

https://www.tlemcen-electronic.com/f...1&d=1556215042

Freematic utilise aussi un STM32F103 dans son adaptateur
c'est ce que je compte utiliser pour l'adaptateur, sinon pour le simulateur CAN je pourrais effectivement le modifier avec un Blue Pill, beaucoup plus puissant que l'arduino.

https://www.tlemcen-electronic.com/f...1&d=1556215143

J'ai aussi un Mega que je voulais utiliser pour un project de controleur de tempèrature pour gerer un ptit frigo transformer en chambre d'affinage :) oui je fait aussi du fromage à la maison :peep:

Voici la carte que je possède pour le projet d' adaptateur OBD2
https://www.tlemcen-electronic.com/f...1&d=1556215870

Ce qui est cool elle à 2x sortie CAN et 2 sorties UART RX TX pour les double lignes K et L c'est l'idéale je pense.

https://www.tlemcen-electronic.com/f...1&d=1556216077

Je vais partager le code qui est à la base programmer pour Opel, si tu à du code à partager il sera la bienvenu.

À bientôt.

stephane 26/04/2019 00h01

salutation c est quoi les ref de tes shield désoler j ais la flemme de chercher lol


Garde ton uno pour le frigo tu auras besoin d une sonde tp un écran 16/2 suffira un sheild relais , peut- être rajoutez un module pour l hygrométrie (je sait pas si ca existe pour arduino) et le contrôle de température
En code rient de super compliqué a voir
J oubliait les librairies qui vont avec .....là c'est autre chose je suis incapable de les crée , mais comme tu dit c'est de l open source ca doigt ce trouvé, Google est ton ami lol
Courage j adore ce genre de projet j espère sincèrement qu il aboutissent

ElTurco 26/04/2019 18h02

Voici le texte de base, je vais travailler avec ce code.
Citation:

/#define DEBUGMODE

#include <HardwareCAN.h>
/* ASTRA-H sniffer
* Uses STM32duino with Phono patch. Must add 33 and 95 CAN speeds
*/

// Instanciation of CAN interface
HardwareCAN canBus(CAN1_BASE);
CanMsg msg ;
CanMsg *r_msg;
CAN_STATUS Stat ;

void CANSetup(CAN_GPIO_MAP remap, CAN_SPEED speed)
{

// Initialize CAN module
canBus.map(remap); // This setting is already wired in the Olimexino-STM32 board
Stat = canBus.begin(speed, CAN_MODE_NORMAL);

canBus.filter(0, 0, 0);
canBus.set_irq_mode(); // Use irq mode (recommended), so the handling of incoming messages
// will be performed at ease in a task or in the loop. The software fifo is 16 cells long,
// allowing at least 15 ms before processing the fifo is needed at 125 kbps
Stat = canBus.status();
if (Stat != CAN_OK)
{/* Your own error processing here */ ; // Initialization failed
Serial1.print("Initialization failed");
}

}

CAN_TX_MBX CANsend(CanMsg *pmsg) // Should be moved to the library?!
{
CAN_TX_MBX mbx;
do
{
mbx = canBus.send(pmsg) ;
#ifdef USE_MULTITASK
vTaskDelay( 1 ) ; // Infinite loops are not multitasking-friendly
#endif
}
while(mbx == CAN_TX_NO_MBX) ; // Waiting outbound frames will eventually be sent, unless there is a CAN bus failure.
return mbx ;
}

// Send message
// Prepare and send a frame containing some value
void SendCANmessage(long id=0x001, byte dlength=8, byte d0=0x00, byte d1=0x00, byte d2=0x00, byte d3=0x00, byte d4=0x00, byte d5=0x00, byte d6=0x00, byte d7=0x00)
{
// Initialize the message structure
// A CAN structure includes the following fields:
msg.IDE = CAN_ID_STD; // Indicates a standard identifier ; CAN_ID_EXT would mean this frame uses an extended identifier
msg.RTR = CAN_RTR_DATA; // Indicated this is a data frame, as opposed to a remote frame (would then be CAN_RTR_REMOTE)
msg.ID = id ; // Identifier of the frame : 0-2047 (0-0x3ff) for standard idenfiers; 0-0x1fffffff for extended identifiers
msg.DLC = dlength; // Number of data bytes to follow

// Prepare frame : send something
msg.Data[0] = d0 ;
msg.Data[1] = d1 ;
msg.Data[2] = d2 ;
msg.Data[3] = d3 ;
msg.Data[4] = d4 ;
msg.Data[5] = d5 ;
msg.Data[6] = d6 ;
msg.Data[7] = d7 ;
CANsend(&msg) ; // Send this frame
}

#define PC13ON 0
#define PC13OFF 1
#define DELAY 250
/* global variables */


void setup()
{
pinMode(PC13, OUTPUT); // LED
digitalWrite(PC13, PC13ON);

Serial1.begin(115200);
Serial1.println("Hello World!");
Serial1.println("Starting Astra-H sniffer v01 program");

for (bool flag=0;flag==0;)
{
Serial1.print("trying MS CAN...");
CANSetup(CAN_GPIO_PB8_PB9,CAN_SPEED_95);
canBus.free();canBus.free();canBus.free();canBus.f ree();canBus.free();canBus.free();canBus.free(); // make sure receive buffer is empty
delay(200); // wait for receiving something
if ( ( r_msg = canBus.recv() ) != NULL )
{
Serial1.println(" OK!");
flag=1;
}
else
{
Serial1.println(" FAILED!");
delay(500);
Serial1.print("trying LS(SW) CAN...");
CANSetup(CAN_GPIO_PB8_PB9,CAN_SPEED_33);
canBus.free();canBus.free();canBus.free();canBus.f ree();canBus.free();canBus.free();canBus.free(); // make sure receive buffer is empty
delay(200); // wait for receiving something

if ( ( r_msg = canBus.recv() ) != NULL )
{
Serial1.println(" OK!");
flag=1;
}
else
{
Serial1.println(" FAILED!");
delay(500);
}
}
}
Serial1.println("Time (ms) ; ID ; Length ; B0 ; B1 ; B2 ; B3 ; B4 ; B5 ; B6 ; B7 ");
digitalWrite(PC13, PC13OFF);
}

void loop()
{
while ( ( r_msg = canBus.recv() ) != NULL )
{
digitalWrite(PC13, PC13ON); // LED shows that recieved data is being printed out
Serial1.print(millis());
Serial1.print("; ");
Serial1.print(r_msg->ID, HEX);
Serial1.print("; ");
Serial1.print(r_msg->DLC);
Serial1.print("; ");
Serial1.print(r_msg->Data[0], HEX);
Serial1.print("; ");
Serial1.print(r_msg->Data[1], HEX);
Serial1.print("; ");
Serial1.print(r_msg->Data[2], HEX);
Serial1.print("; ");
Serial1.print(r_msg->Data[3], HEX);
Serial1.print("; ");
Serial1.print(r_msg->Data[4], HEX);
Serial1.print("; ");
Serial1.print(r_msg->Data[5], HEX);
Serial1.print("; ");
Serial1.print(r_msg->Data[6], HEX);
Serial1.print("; ");
Serial1.println(r_msg->Data[7], HEX);
digitalWrite(PC13, PC13OFF);
canBus.free();
} // close while
} // close void loop

ElTurco 26/04/2019 18h32

Citation:

Envoyé par stephane (Message 687945)
salutation c est quoi les ref de tes shield désoler j ais la flemme de chercher lol


Garde ton uno pour le frigo tu auras besoin d une sonde tp un écran 16/2 suffira un sheild relais , peut- être rajoutez un module pour l hygrométrie (je sait pas si ca existe pour arduino) et le contrôle de température
En code rient de super compliqué a voir
J oubliait les librairies qui vont avec .....là c'est autre chose je suis incapable de les crée , mais comme tu dit c'est de l open source ca doigt ce trouvé, Google est ton ami lol
Courage j adore ce genre de projet j espère sincèrement qu il aboutissent

Merci Stéph j'ai déjà réaliser le régulateur de tempèrature avec un Uno/Shiel double relais/ DHT22 (sonde de température + humiditer/ écran shield (bouclier) 16/2 avec bouton integrer :)

Le second projet de controle de temperature est beaucoup plus sophistiqué avec beaucoup plus de contrôle (compresseur, ventilateurs, humidificateur...) le projet utilise un Méga car beaucoup plus de sortie de dispo. Mais je peux m'en passer c'est pas un soucis.

Sinon pour les réf. des shield ? Quelle shield exactement ? Je vait te faire des photos des shield en ma possession, j'ai pas mal de matos qui attend d'être utiliser pour du projets. J'ai vu un ptit projet aussi avec arduino, un testeur d'injecteur :) c'est cool ça !!!

https://www.sergentbrico.com/fabriqu...r-arduino.html

PS: désoler d'avoir croquer toute la page en envoyant le code démo que j'ai bien insérer dans l'icône "texte" en pensant que ça allait le minimiser :(

ElTurco 26/04/2019 19h47

4 pièce(s) jointe(s)
Donc voici mon pti trésor pour effectuer des projets Open Source

https://www.tlemcen-electronic.com/f...1&d=1556303516
Pour la programmation PIC/AVR/STM...

https://www.tlemcen-electronic.com/f...1&d=1556303683
Les microcontrôleurs par familles :) avec un analyseur de logique et 2x module Wifi dans le lot

https://www.tlemcen-electronic.com/f...1&d=1556303852
Les "display" pour accompagné les projets pour la plupart en I2C.

https://www.tlemcen-electronic.com/f...1&d=1556304048
Et les modules prêt pour les projets "OBD2"...

Ce qui est cool c'est de le faire soit même et de voir que ça marche. Maintenant au boulot, voila j'ai d'autres code mais je ne peux pas attaquer le projet d'adaptateur OBD2 avant de réaliser le Simulateur CAN qui me servirait dans les tests de bon fonctionnement de ce dernier.

Je fini le montage de la station de soudure et attaque le simulateur CAN. Je vous tiendrais informer de chaque démarche ou étape afin de partager mon expérience d'amateur :)

@+


Fuseau horaire GMT +1. Il est actuellement 17h12.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Version française #23 par l'association vBulletin francophone
Tlemcen-electronic © All right reserved