This is an old revision of the document!
Daca Elon Musk a reusit sa devina bogat de pe urma numelui marelui inovator Nikola Tesla, poate voi reusi sa iau si eu o nota de trecere la PM cu acest proiect. Proiectul consta intr o bobina tesla care prin efectul corona si descarcari electrice la diferite frecvente produce sunete. Aceste sunete, ordonate si organizate produc muzica.
Edit: Mi au ars laborantii bobina Tesla asa ca am fost nevoit sa improvizez. Proiectul a devenit un mp3 player: citeste de pe un card Sd niste piese,
si , controlat printr un senzor infrarosu, navighez, pun pauza la piese. De asemenea, afisez numele piesei asa cum se afla pe cardul SD
Am avut nevoie de 2 placi ARDUINO UNO (vedeti la slideul “Blestemele mele”), un senzor infrarosu cu o telecomanda, un OLED I2C pentru afisare, un buton cu o rezistenta, un modul micro SD , un speaker, o bobina tesla (RIP) si un modul jack. O placa (Sender) citeste de pe cardul microSD,si cu ajutorul unei biblioteci TMRpcm este scos un semnal PWM pe pinul 9 (muzica) care este conectat la un speaker. Cu ajutorul unui button si o rezistenta de pullup conectat la pinul 2, transmit o intrerupere care imi porneste muzica si dupa , la o alta apasare succesiva, imi revine la prima melodie a playlistului. Senzorul infrarosu este conectat la pinul 3 si in functie de codificarile primite de la senzor, pun pauza, maresc volumul,schimb piesa. Cealalta placa Arduino (Receiver) primeste prin UART de la Arduinoul Sender un array cu numele melodiei sa fie afisat pe OLED I2C
Dupa cum veti putea observa in schemele date, nu am reusit sa gasesc un model pentru modulul microSD, sau pentru OLED; acestia au fost inlocuiti cu:
Un LCD I2C in locul OLEDului I2C iar pentru modulul micro sd, am inlocuit pinii cu niste rezistente pe care le am botezat cu tipul pinului
de pe modulul microSD. Atentie! in circuit nu exista rezistente intre conexiunea dintre modul si placa arduino, rezistentele fiind puse doar simbolic sa inlocuiasca niste pini.
Componentele utilizate:
Software utilizat : Arduino IDE
Pentru Arduinoul Sender:
Am folosit bibliotecile: “SD.h”, “TMRpcm.h” si “SPI.h” pentru citirea cardului SD si transmiterea unui semnal PWM pe pinul 9. “IRremote.h” pentru decodificarea valorilor citite de pe senzorul infrarosu,dupa trimiterea semnalelor de la telecomanda.
Functia button_ISR este apelata in momentul in care exista o intrerupere pe pinul 2. Am setat cu pinmode si attachInterrupt ca in momentul in care pe pinul 2 este LOW, atunci se realizeaza intreruperea.Cu millis si un if , am avut grija sa ignor apasarile rapide ( in cazulul unui buton defectuos). Functia apelata cu success opreste muzica daca se canta, seteaza nr.cantecului la 1 si apeleaza playsong(1).
Functia playsong deschide directorul music de pe cardul sd parcurge un numar pana la nr. cantecului dorit. Se trimite Serial (UART) la Arduinoul Receiver dupa care se apeleaza functia bibliotecii tmrpcm pentru redarea muzicii.
In setup, setez modul butonului, care pin va fi outul muzicii (pentru UNO, este obligatoriu 9) ,dau enable pentru senzorul infrarosu. Cat timp nu reusesc sa citesc de pe cardul SD , se trimite mesajul “SD fail” si se reincearca.
In loop se afla decodificari pentru senzorul infrarosu.
Pentru Arduinoul Receiver
Am folosit bibliotecile: <Adafruit_GFX.h>, <Adafruit_SSD1306.h> pentru scrierea pe OLED.
In setup sunt setate niste valori pentru display. In loop, cat timp am ceva pe serial primit, scriu intr un array. In momentul in care nu mai am , ies si scriu pe display.