Voir la version complète : 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/2019/09/1/1551062319-20190224-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
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-Portable-and-Affordable-Oscilloscope-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 :)
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+
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/forum/attachment.php?attachmentid=72713&stc=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/forum/attachment.php?attachmentid=72714&stc=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.
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/04/25/190425105255284301.jpg (https://www.casimages.com/i/190425105255284301.jpg.html)
@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
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/forum/attachment.php?attachmentid=72742&stc=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/forum/attachment.php?attachmentid=72743&stc=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/forum/attachment.php?attachmentid=72744&stc=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/forum/attachment.php?attachmentid=72745&stc=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
Voici le texte de base, je vais travailler avec ce code.
/#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
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/fabriquer-testeur-injecteur-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 :(
Donc voici mon pti trésor pour effectuer des projets Open Source
https://www.tlemcen-electronic.com/forum/attachment.php?attachmentid=72761&stc=1&d=1556303516
Pour la programmation PIC/AVR/STM...
https://www.tlemcen-electronic.com/forum/attachment.php?attachmentid=72763&stc=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/forum/attachment.php?attachmentid=72764&stc=1&d=1556303852
Les "display" pour accompagné les projets pour la plupart en I2C.
https://www.tlemcen-electronic.com/forum/attachment.php?attachmentid=72765&stc=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 :)
@+
stephane
26/04/2019, 20h57
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/fabriquer-testeur-injecteur-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 :(
cool terrible ca !!!!!!!!!!
bas donne moi ceux que tu veut utiliser exactement que je puisse prendre la configuration ce sera plus facile sur le le même matos
---------- Post added at 19h57 ---------- Previous post was at 19h55 ----------
Donc voici mon pti trésor pour effectuer des projets Open Source
https://www.tlemcen-electronic.com/forum/attachment.php?attachmentid=72761&stc=1&d=1556303516
Pour la programmation PIC/AVR/STM...
https://www.tlemcen-electronic.com/forum/attachment.php?attachmentid=72763&stc=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/forum/attachment.php?attachmentid=72764&stc=1&d=1556303852
Les "display" pour accompagné les projets pour la plupart en I2C.
https://www.tlemcen-electronic.com/forum/attachment.php?attachmentid=72765&stc=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 :)
@+
ha ouais plutôt bien équiper
stephane
26/04/2019, 21h11
c est bon j ais trouver
Merci Stéphane,
Pour le projet "Simulateur CAN" l'auteur utilise un shield Bus CAN enfichable de chez SeeedStudio que je compte remplacer par le petit module CAN sauf que j'aurais du câblage Ã* effectuer + raccorder les sorties 12V/GND/CanH et CanL Ã* un module DB9 (RS-232).
Comme le code utilise la libairie de chez Seeed, il faudrait aussi modifier la valeur du quartz qui est de 16000Mhz pour le shield CAN Ã* 8000Mhz pour le module CAN.
Après pour contrôler le tout l'auteur du projet utilise un Arduino mais on peut le remplacer par un STM32 vu qu'il est compatible pour le soft ArduinoHome.
Voici la page du projet, tout est lÃ*
http://techtinker.co.za/forum/viewtopic.php?f=14&t=10&sid=809c7279bb75d308e78a6d88809059d4
(J'en profite pour lui remercier, franchement il assure, respect Ã* Martin Viljoen)
Le code et plus de détails... page de l'ami Martin sur Github
https://github.com/mailmartinviljoen
Après il est apparemment possible de rajouter des potentiomètres pour faire bouger les valeurs comme RPM, TR/min...
On peut tester le bon fonctionnement de notre outil OBD2 genre un ELM... ou justement l'adaptateur STM32 que je voudrais réaliser avec des soft du style Scantool, Torque etc... pour connaître ces capacité et surtout le bon fonctionnement.
En gros le simulateur CAN est un Ecu CAN :) qui permet de tester son ELM ou compagnie. Ce qui serait trop cool c'est dans un premier temps de réussir Ã* ajouter des potentiomêtres pour jouer avec les valeurs, après ajout d'un switch pour changer le mode de débits en bauds...
Et le top serait de pouvoir réussir Ã* ajouter une ligne K et une ligne L qui serait selon moi le must du Simulateur OBD2. (Je rêve de trop faut que j'arrête un peu) :)
En parlant de lignes K et L (en voie de disparition) ce n'est pas très important si pas moyen car le plus important étant le CAN qui est Ã* lui seul un trafic énorme de trames d'infos.
Donc j'ai le PC sous Linux (Kubuntu) avec le soft ArduinoHome, je télécharge les librairies, j'injecte le code dans l'Atmega328Pu en modifiant la valeur du quartz, j'effectue le montage et on verra ce que ça donne au final :)
Ça marche pour moi, Stéph je partagerais le résultat pour avoir ton avis, merci pour ton soutien frère.
---------- Post added at 00h13 ---------- Previous post was at 00h06 ----------
PS : bon désoler, j'ai été déconnecter pendant mon écriture et en me reconnectant les accents se sont transformé :) Merci pour votre comprèhension.
stephane
26/04/2019, 23h24
d après ce que je voie tu est vachement avancer sur ton projet bravo je me régale d avance
ont risque d être coincer aux niveaux des pids mais allions y je suis partant 100/100
laisse moi réceptionner le matos qui me manque lol
au faite tu as la bibliothèque
d après ce que je voie tu est vachement avancer sur ton projet bravo je me régale d avance
ont risque d être coincer aux niveaux des pids mais allions y je suis partant 100/100
laisse moi réceptionner le matos qui me manque lol
au faite tu as la bibliothèque
Merci Stéph. voici les librairies
https://github.com/yexiaobo-seeedstudio/CAN_BUS_Shield
Et d'autres en alternative si besoin...
https://github.com/Seeed-Studio/CAN_BUS_Shield
https://github.com/coryjfowler/MCP_CAN_lib
PS: comme le bouclier à été retravailler pour une version plus récente, il faut modifié la broche CS (du module CAN bus) de D10 à D9 sur l'Arduino.
En effectuant cette modification :
const int SPI_CS_PIN = 9;
"MCP_CAN CAN (9); // Définir CS (du mini module CAN) sur la broche D9
Et comme dit plus haut il faut aussi changer la valeur du chrystal quartz dans le code de la librairie comme ceci :
Code :
byte begin(byte speedset, const byte clockset = MCP_16MHz); // init can
doit être changé en
Code :
byte begin(byte speedset, const byte clockset = MCP_8MHz); // init can
Et le tour est normalement joué. Je suis actuellement entrain d'essayer de me faire un shéma (d'amateur) je vais partager tout ça.
@+
---------- Post added at 11h07 ---------- Previous post was at 11h05 ----------
Pour les PID yout est là
http://fr.wikipedia.org/wiki/OBD-II_PID
Pardonnez moi pour l'erreur d'adresse des Pids voici le bon..
https://en.m.wikipedia.org/wiki/OBD-II_PIDs
En dessinant le shéma, je voulais utiliser 2 ports serie DB9 mâle/femelle afin d'effectuer le montage du mâle sur le mini module CAN comme le shield Can Bus de SeeedStuidio et le coter femelle avec un câble obd2 femelle afin d'inserer le port obd2 de l'ELM ou compagnie.
Seulement je vois que cela ne servira pas à grand chose vu qu'à la base le projet est réaliser pour simuler un ECU. Le branchement en direct du CanH et CanL sur le port OBD2 femelle serait plus facile et moin encombrant.
---------- Post added at 13h05 ---------- Previous post was at 13h02 ----------
Voici un autre site pour les PIDs
https://www.elm327.fr/norme-obd/modes-obd/
Projet "Station de soudure" :
Donc comme dit plus haut, la station possède 2 étages, celle du bas pour l'alimentation général et le second pour le pilotage de la station, écran, boutons..
https://www.tlemcen-electronic.com/forum/attachment.php?attachmentid=72790&stc=1&d=1556363936
Je sais que ça aurais été plus simple avec un transformateur 220V vers 24V mais étant amateur ne voulais pas trop prendre le risque de jouer avec du 220V (mortel) donc j'utilise un adaptateur d'imprimante 220V vers 32V (de dispo chez moi).
https://www.tlemcen-electronic.com/forum/attachment.php?attachmentid=72791&stc=1&d=1556364219
Je branche mon adaptateur 32V directement, puis il est transformer en 24V via le LM2596, la sortie vers le dominos, à partir du dominos il y à 2 sorties,
- Sortie 1 du 24V vers le LM317 qui lui transforme la tension de 24V vers 5V pour alimenter l'étage au dessus donc (Nano, l'ecran, les modules..)
- Sortie 2 du 24V vers le module IRF520 et du IRF520 vers la poigné de soudure Hakko 936 afin de contrôler la chaufferie du fer à souder.
Salut les amis
Alors en mode construction du simulateur CAN suite à l'injection du code dans le microcontrôleur Atmega328 "arduino" j'obtiens une erreur avec (INT32U canId = 0x000;) ouaiii super, je ne l'attendait pas celui là :)
Donc premier sujet à traiter, j'ai installer plusieurs library afin d'être tranquille mais cette erreur m'etais inatendu, bref je vais faire des recherches pour surmonter cet obstacle. Voici le setch...
//This Arduino UNO Sketch requires the Seeed CAN-BUS Shield Libraries
//https://github.com/yexiaobo-seeedstudio/CAN_BUS_Shield
#include
#include "mcp_can.h"
INT32U canId = 0x000;
//2024 4 65 12 18 248 185 147
unsigned char len = 0;
unsigned char buf[8];
char str[20];
String BuildMessage="";
int MSGIdentifier=0;
void setup()
{
Serial.begin(38400);
START_INIT:
if(CAN_OK == CAN.begin(CAN_500KBPS))
{
Serial.println("CAN BUS Shield init ok!");
}
else
{
Serial.println("CAN BUS Shield init fail");
Serial.println("Init CAN BUS Shield again");
delay(100);
goto START_INIT;
}
}
void loop()
{
char rndCoolantTemp=random(1,200);
char rndRPM=random(1,55);
char rndSpeed=random(0,255);
char rndIAT=random(0,255);
char rndMAF=random(0,255);
char rndAmbientAirTemp=random(0,200);
char rndCAT1Temp=random(1,55);
//GENERAL ROUTINE
unsigned char SupportedPID[8] = {1,2,3,4,5,6,7,8};
unsigned char MilCleared[7] = {4, 65, 63, 34, 224, 185, 147};
//SENSORS
unsigned char CoolantTemp[7] = {4, 65, 5, rndCoolantTemp, 0, 185, 147};
unsigned char rpm[7] = {4, 65, 12, rndRPM, 224, 185, 147};
unsigned char vspeed[7] = {4, 65, 13, rndSpeed, 224, 185, 147};
unsigned char IATSensor[7] = {4, 65, 15, rndIAT, 0, 185, 147};
unsigned char MAFSensor[7] = {4, 65, 16, rndMAF, 0, 185, 147};
unsigned char AmbientAirTemp[7] = {4, 65, 70, rndAmbientAirTemp, 0, 185, 147};
unsigned char CAT1Temp[7] = {4, 65, 60, rndCAT1Temp, 224, 185, 147};
unsigned char CAT2Temp[7] = {4, 65, 61, rndCAT1Temp, 224, 185, 147};
unsigned char CAT3Temp[7] = {4, 65, 62, rndCAT1Temp, 224, 185, 147};
unsigned char CAT4Temp[7] = {4, 65, 63, rndCAT1Temp, 224, 185, 147};
if(CAN_MSGAVAIL == CAN.checkReceive())
{
CAN.readMsgBuf(&len, buf);
canId = CAN.getCanId();
Serial.print("<");Serial.print(canId);Serial.print(",");
for(int i = 0; i
BuildMessage="";
}
}
Ok, je passe à la recherche de ce qui pourrait causer cette erreur et partagerais le résultat.
@+
Salut les amis
Comme promis voici les images du projet fini :) c'est pas hyper top car je suis amateur en élec. et j'ai utiliser uniquement de la récup pour la finition :)
https://www.tlemcen-electronic.com/forum/attachment.php?attachmentid=73722&stc=1&d=1559826730
Donc le but était de fabriqué une station de soudure made in maison :) plus haut vous pouvez voir l'image de l'étage du bas dédiée à l'alimentation du système, l'étage du dessus abrite le microcontrôleur, capteur de température...
https://www.tlemcen-electronic.com/forum/attachment.php?attachmentid=73723&stc=1&d=1559826952
Il y à deux modes de réglage (Class1 et Class2) Classe1 par réglage de température, classe2 par puissance de 0 à 100%. Actuellement en mode classe1 :
Température à droite c'est la température souhaité à gauche la température actuel du fer à souder.
https://www.tlemcen-electronic.com/forum/attachment.php?attachmentid=73724&stc=1&d=1559827286
La température du fer monte assez rapidement, ce qui est vraiment cool, je pouvais continuer à monter mais je ne voulais pas voir le fer à souder partir en fumée :0:
https://www.tlemcen-electronic.com/forum/attachment.php?attachmentid=73725&stc=1&d=1559827815
Le mode Classe2 fonctionne actuellement à 100% ça monte vite fait bien fait :)
https://www.tlemcen-electronic.com/forum/attachment.php?attachmentid=73726&stc=1&d=1559828040
Voilà en mode stand by :) (reffroidissement) en bref petit outils utile pour tous, tout est dispo ici, je passe aux autres ptit projets...
@+
vBulletin® v.3.8.11, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Tous droits réservés - Version française vbulletin-fr.org