Differences

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

Link to this comparison view

pm:prj2024:ddosaru:david.foanene [2024/05/27 13:00]
david.foanene
pm:prj2024:ddosaru:david.foanene [2024/05/27 13:30] (current)
david.foanene
Line 14: Line 14:
  
  
-Componenete:​ +Componenete : 
--Conector OBD2 - DB9 +     1. Conector OBD2 - DB9. 
--CAN Shield (MCP 2551 + MCP 2515) +     2. CAN Shield (MCP 2551 + MCP 2515). 
--ESP32 +     3. ESP32.
  
-{{:​pm:​prj2024:​ddosaru:​proiect_pm.jpg?400|}}+{{:​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.1716804036.txt.gz · Last modified: 2024/05/27 13:00 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