Differences

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

Link to this comparison view

pm:prj2025:cmoarcas:gheorghe.petrica [2025/05/21 11:21]
gheorghe.petrica [Software Design]
pm:prj2025:cmoarcas:gheorghe.petrica [2025/05/30 09:55] (current)
gheorghe.petrica [Rezultate Obţinute]
Line 52: Line 52:
  
 === Diagrama Bloc pentru casetofon === === Diagrama Bloc pentru casetofon ===
-{{:​pm:​prj2025:​cmoarcas:​arduino_uno.png?700|}}+{{:​pm:​prj2025:​cmoarcas:​ImperiumBT.png?700|}}
  
 === Schema electrica === === Schema electrica ===
Line 66: Line 66:
   #define CDC_PREFIX1 0x53   #define CDC_PREFIX1 0x53
   #define CDC_PREFIX2 0x2C   #define CDC_PREFIX2 0x2C
- 
   #define CDC_END_CMD 0x14   #define CDC_END_CMD 0x14
   #define CDC_PLAY 0xE4   #define CDC_PLAY 0xE4
Line 83: Line 82:
   #define CDC_SFL 0x60   #define CDC_SFL 0x60
   #define CDC_PLAY_NORMAL 0x08   #define CDC_PLAY_NORMAL 0x08
- 
   #define MODE_PLAY 0xFF   #define MODE_PLAY 0xFF
   #define MODE_SHFFL 0x55   #define MODE_SHFFL 0x55
   #define MODE_SCAN 0x00   #define MODE_SCAN 0x00
 +  uint8_t cd, tr, mode;
 +  unsigned long prevMillis = 0;
   ​   ​
 Functia urmatoare **send_package()** trimite un pachet de cate 8 octeti pe SPI, cu intarziere pe fiecare transfer: Functia urmatoare **send_package()** trimite un pachet de cate 8 octeti pe SPI, cu intarziere pe fiecare transfer:
   void send_package(uint8_t c0, uint8_t c1, uint8_t c2, uint8_t c3, uint8_t c4, uint8_t c5, uint8_t c6, uint8_t c7) {   void send_package(uint8_t c0, uint8_t c1, uint8_t c2, uint8_t c3, uint8_t c4, uint8_t c5, uint8_t c6, uint8_t c7) {
-    ​SPI.beginTransaction(SPISettings(62500MSBFIRSTSPI_MODE1))+    ​uint8_t data[8] = {c0c1, c2, c3, c4c5, c6, c7}
-    ​SPI.transfer(c0); +    ​for (int i = 0; i < 8; i++{ 
-    ​delayMicroseconds(874)+      SPDR = data[i]
-    ​SPI.transfer(c1); +      ​while ​(!(SPSR & (1 << SPIF))); 
-    delayMicroseconds(874);​ +      delayMicroseconds(874);​ 
-    ​SPI.transfer(c2);​ +    ​} 
-    ​delayMicroseconds(874);​ +  } 
-    SPI.transfer(c3);​ + 
-    ​delayMicroseconds(874); +Initializam ​SPI, dupa cum urmeaza, astfel incat sa ruleze cu o viteza de transfer de 62.5kHz 
-    ​SPI.transfer(c4)+  void spi_init() { 
-    delayMicroseconds(874); +    ​DDRB |= (1 << PB3(1 << PB5); 
-    ​SPI.transfer(c5); +    ​DDRB &= ~(1 << PB4); 
-    ​delayMicroseconds(874)+    ​SPCR = (1 << SPE(1 << MSTR(1 << SPR1(1 << SPR0); 
-    SPI.transfer(c6)+    ​SPSR &= ~(1 << SPI2X);
-    delayMicroseconds(874)+
-    SPI.transfer(c7); +
-    ​SPI.endTransaction();+
   }   }
  
Line 117: Line 114:
     Serial.begin(9600);​     Serial.begin(9600);​
     #endif     #endif
-    delay(1000); ​// wait for radio to boot +    delay(1000);​ 
-    ​// Init SPI for Arduino Uno (uses default pins) +    ​spi_init();
-    SPI.begin(); // uses hardware SPI: SCK(13), MISO(12), MOSI(11)+
     send_package(0x74,​ 0xBE, 0xFE, 0xFF, 0xFF, 0xFF, 0x8F, 0x7C); // idle     send_package(0x74,​ 0xBE, 0xFE, 0xFF, 0xFF, 0xFF, 0x8F, 0x7C); // idle
     delayMicroseconds(10000);​     delayMicroseconds(10000);​
Line 134: Line 130:
   void loop() {   void loop() {
     if ((millis() - prevMillis) > 50) {     if ((millis() - prevMillis) > 50) {
-      //                  disc      trk         ​min ​ sec 
       send_package(0x34,​ 0xBF ^ cd, 0xFF ^ tr, 0xFF, 0xFF, mode, 0xCF, 0x3C);       send_package(0x34,​ 0xBF ^ cd, 0xFF ^ tr, 0xFF, 0xFF, mode, 0xCF, 0x3C);
-      prevMillis = millis(); ​// reset timer+      prevMillis = millis(); 
       #ifdef DEBUG       #ifdef DEBUG
       Serial.println("​Sent packet"​);​       Serial.println("​Sent packet"​);​
Line 283: Line 279:
  
 <note tip> <note tip>
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +Rezultatele obtinute ​au fost destul de satisfacatoaream intampinat cateva probleme pe care nu am putut sa le rezolv din cauza DAC-ului alesdeoarece acesta are nevoie de un master clock extern care sa fie sincron cu celelalte semnale ​de pe ele, iar ESP-ul nu este capabil ​de a oferi corect un astfel de semnal, generand destul de mult zgomot ​(cred ca un MAX98357 ar fi rezolvat problema zgomotului). Rezultatul final poate fi observat in urmatorul link: 
-</​note>​ +https://drive.google.com/file/​d/​1erp1HS01shDhwGrpYLM5Av1lJeFgSRbM/​view?​usp=sharing
- +
-===== Concluzii ===== +
- +
-===== Download ===== +
- +
-<note warning>​ +
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului:​ sursescheme, 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**. +
-</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>​ </​note>​
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-<​note>​ +https://​github.com/​NullString1/​VWCDC 
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**+https://​schuett.io/​2013/​09/​avr-raspberry-pi-vw-beta-vag-cdc-faker
-</note> +https://itohi.com/​acoustics/​esp32-as-bluetooth-audio/​
- +
-<​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</a></html>+
  
pm/prj2025/cmoarcas/gheorghe.petrica.1747815668.txt.gz · Last modified: 2025/05/21 11:21 by gheorghe.petrica
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