Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2024:ddosaru:david.foanene [2024/05/05 14:35]
david.foanene
pm:prj2024:ddosaru:david.foanene [2024/05/27 13:30] (current)
david.foanene
Line 2: Line 2:
 ===== Introducere ===== ===== Introducere =====
  
-<note tip> +Acest proiect ​își propune să dezvolte ​un sistem de comunicație CAN utilizând un microcontroler ​ESP32 și un shield ​MCP2515. Scopul principal este de a intercepta ​și afișmesaje CAN transmise pe magistrala CAN
-Acest proiect ​combină puterea unui ESP32 cu un CAN shield pentru a crea un sistem ​inteligent ​de citire a codurilor de la vehicule. Scopul acestui proiect este de a dezvolta o soluție versatilă și eficientă pentru citirea și interpretarea codurilor de la diferite module și senzori prezente în vehicule moderne. Prin utilizarea tehnologiei ​ESP32, putem realiza o conexiune rapidă ​și stabilă la vehicul, iar prin intermediul ​shield-ului CAN, avem capacitatea ​de a comunica cu sistemul de diagnoză a bordului (OBD) și de extrage și interpreta codurile de diagnosticare,​ furnizând astfel utilizatorului informații vitale despre starea vehiculului. Acest proiect poate fi util pentru pasionații de vehicule, mecanicii auto sau oricine este interesat să înțeleagă mai bine funcționarea și starea unui vehicul prin intermediul tehnologiei IoT+
-</​note>​+
 ===== Descriere generală ===== ===== Descriere generală =====
  
-<note tip> +Proiectul va utiliza un microcontroler ESP32 împreună cu un CAN shield pentru a citi și interpreta codurile de la modulele de control ale vehiculului. ESP32 va fi programat să stabilească o conexiune CAN (Controller Area Network) cu sistemul de diagnoză a bordului (OBD) al vehiculului. 
-Proiectul va utiliza un microcontroler ESP32 împreună cu un CAN shield pentru a citi și interpreta codurile de la modulele de control ale vehiculului. ESP32 va fi programat să stabilească o conexiune CAN (Controller Area Network) cu sistemul de diagnoză a bordului (OBD) al vehiculului. ​După stabilirea conexiunii, ESP32 va interoga vehiculul pentru a extrage codurile de diagnosticare stocate în modulele sale de control. Aceste coduri vor fi interpretate și afișate într-un mod inteligibil utilizatorului. + 
-{{:​pm:​prj2024:​ddosaru:​schema_bloc-david_foanene.png?​200|}} +{{:​pm:​prj2024:​ddosaru:​schema_bloc-david_foanene.png?​400|}} 
-</​note>​+
  
 ===== Hardware Design ===== ===== Hardware Design =====
  
-<note tip> + 
-Aici puneţi tot ce ţine de hardware design+Componenete ​
-  * listă de piese +     1. Conector OBD2 DB9. 
-  * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri, e.ghttp://www.captain.at/​electronic-atmega16-mmc-schematic.png) +     2CAN Shield (MCP 2551 + MCP 2515). 
-  * diagrame de semnal ​ +     3ESP32
-  * rezultatele simulării + 
-</​note>​+{{:​pm:​prj2024:​ddosaru:​poza_esp32_obd2.jpg?​300|}} 
  
 ===== Software Design ===== ===== Software Design =====
 +<​note>​
 +    #include <​SPI.h>​
 +    #include <​mcp2515.h>​
  
 +    MCP2515 mcp2515(5); // Chip Select pin
 +
 +    void setup() {
 +       ​Serial.begin(115200);​
 +       while (!Serial);
 +
 +       ​SPI.begin();​
 +       ​mcp2515.reset();​
 +       ​mcp2515.setBitrate(CAN_500KBPS,​ MCP_8MHZ);
 +  ​
 +       // Dezactivează modul Loopback pentru a interacționa cu alte noduri CAN
 +       ​mcp2515.setNormalMode();​
 +
 +       ​Serial.println("​MCP2515 Initialized"​);​
 +    }
 +
 +    void loop() {
 +       ​sendRandomCANMessage();​
 +  ​
 +       ​struct can_frame canMsg;
 +
 +       // Verifică pentru mesaje primite
 +       ​MCP2515::​ERROR result = mcp2515.readMessage(&​canMsg);​
 +       if (result == MCP2515::​ERROR_OK) {
 +       ​Serial.print("​Received message with ID: 0x");
 +       ​Serial.print(canMsg.can_id,​ HEX);
 +       ​Serial.print("​ Data: ");
 +       for (int i = 0; i < canMsg.can_dlc;​ i++) {
 +          Serial.print(canMsg.data[i],​ HEX);
 +          Serial.print("​ ");
 +       }
 +       ​Serial.println();​
 +       } else {
 +          Serial.print("​Error Receiving Message: ");
 +          Serial.println(result);​
 +       }
 +
 +       // Verifică starea MCP2515
 +       ​uint8_t status = mcp2515.getStatus();​
 +       ​Serial.print("​MCP2515 Status: ");
 +       ​Serial.println(status,​ HEX);
 +
 +       ​delay(1000);​ // O întârziere mai lungă între cicluri
 +    }
 +
 +    void sendRandomCANMessage() {
 +       ​struct can_frame canMsg;
 +
 +       // Generează un ID random între 0x100 și 0x7FF (ID standard de 11 biți)
 +       ​canMsg.can_id = random(0x100,​ 0x7FF);
 +  ​
 +       // Setează o lungime random pentru datele trimise (de la 1 până la 8)
 +       ​canMsg.can_dlc = random(1, 9);
 +
 +       // Generează date random
 +       for (int i = 0; i < canMsg.can_dlc;​ i++) {
 +          canMsg.data[i] = random(0, 256); // Fiecare byte de date este între 0x00 și 0xFF
 +       }
 +
 +       // Trimite mesajul
 +       ​MCP2515::​ERROR result = mcp2515.sendMessage(&​canMsg);​
 +       if (result == MCP2515::​ERROR_OK) {
 +           ​Serial.println("​Message Sent Successfully!"​);​
 +           ​Serial.print("​Sent message with ID: 0x");
 +           ​Serial.print(canMsg.can_id,​ HEX);
 +           ​Serial.print("​ Data: ");
 +           for (int i = 0; i < canMsg.can_dlc;​ i++) {
 +               ​Serial.print(canMsg.data[i],​ HEX);
 +               ​Serial.print("​ ");
 +           }
 +           ​Serial.println();​
 +       } else {
 +           ​Serial.print("​Error Sending Message: ");
 +           ​Serial.println(result);​
 +       }
 +
 +       ​delay(100);​ // Mică întârziere pentru a asigura recepția mesajului
 +    }
  
-<note tip> 
-Descrierea codului aplicaţiei (firmware): 
-  * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) 
-  * librării şi surse 3rd-party (e.g. Procyon AVRlib) 
-  * algoritmi şi structuri pe care plănuiţi să le implementaţi 
-  * (etapa 3) surse şi funcţii implementate 
 </​note>​ </​note>​
  
Line 36: Line 111:
  
 <note tip> <note tip>
-Care au fost rezultatele obţinute în urma realizării proiectului vostru.+Am reusit sa trimit si sa primesc mesaje pe magistrala CAN. 
 +[[https://​youtube.com/​shorts/​y7ZGwtQQasY?​feature=share]]
 </​note>​ </​note>​
  
 ===== Concluzii ===== ===== Concluzii =====
 +
 +Utilizarea CAN este mai grea decat am crezut la inceput, fiind nevoie de cunostiinte avansate in acest domeniu.
 +Conectarea la magistrala CAN a unei masini a  esuat din motive necunoscute.
 +Am folosit comunicarea SPI intre shield ul CAN si ESP32.
  
 ===== Download ===== ===== Download =====
  
-<note warning> 
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului:​ surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). 
  
-Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:​pm:​prj20??:​c?​** sau **:​pm:​prj20??:​c?:​nume_student** (dacă este cazul). **Exemplu:​** Dumitru Alin, 331CC -> **:pm:prj2009:cc:dumitru_alin**. +{{:pm:prj2024:ddosaru:proiect_pm_david_foanene.zip|}}
-</​note>​+
  
-===== Jurnal ===== 
- 
-<note tip> 
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. 
-</​note>​ 
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
 <​note>​ <​note>​
-Listă cu documente, datasheet-uri, resurse Internet ​folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**.+Componente achizitionate : 
 +    1. ESP32 Sigmanortec [[https://​www.sigmanortec.ro/​]] 
 +    2. Shield CAN V1.2 - Optimus Digital [[https://​www.optimusdigital.ro/​ro/​]] 
 +    3. Cablu OBD2 - DB9 - RoboFun [[https://​www.robofun.ro/​]] 
 +Biblioteci ​folosite ​
 +    1. SPI.h 
 +    2. mcp2515.h
 </​note>​ </​note>​
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
pm/prj2024/ddosaru/david.foanene.1714908913.txt.gz · Last modified: 2024/05/05 14:35 by david.foanene
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0