Table of Contents

Sistem Radio

Toacă Alexandra Simona, 332CA

Introducere

Proiectul își propune realizarea unui sistem radio, ce permite selectarea unui post, afișarea detaliilor (precum numele postului și frecvența de emisie) pe un ecran și, evident, ascultarea muzicii difuzate de către acesta.

De ce un radio? Mi s-a părut interesant de interfațat un modul radio cu un microcontroler, în special pe partea de date de tip RDS pe care le poate recepționa acest modul.

Scopul și utilitatea proiectului: Când ai nevoie să te concentrezi și o faci mai bine cu muzică pe fundal, un radio este un mod foarte bun de a asculta muzică fără distrageri.

Descriere generală

Piesa de bază a acestui proiect este modulul radio, ce interacționează atât cu microcontrolerul, un Arduino Uno, cât și cu mediul extern, prin transmiterea de semnal audio către un amplificator, semnal ce este apoi redat utilizatorului prin difuzor.

Microcontrolerul face intermedierea între utilizator și modulul radio. Acesta primește comenzi de la utilizator, cum ar fi schimbarea frecvenței, și le semnalează modulului radio folosind protocolul I2C. Totodată, datele primite de către microcontroler din partea modulului radio (precum numele postului sau melodia redată) sunt afișate pe un ecran LCD ce utilizează SPI drept protocol de comunicație.

De asemenea, utilizatorul poate controla volumul muzicii fără a implica microcontrolerul, printr-un potențiometru amplasat la ieșirea din amplificator.

Hardware Design

Lista de componente:

Schema electrică:

Conectarea componentelor și rolul fiecăreia:

Un prim montaj al componentelor pe breadboard (cu exceptia difuzoarelor, ce trebuie lipite):

Montaj final

In montajul final am spațiat mai mult componentele și am îndepărtat LCD-ul și amplificatorul de modulul radio pentru a evita interferențele.

Software Design

Link cu repo-ul de GitHub: SistemRadio

Mediu de dezvoltare: PlatformIO

Cunoștințe din laboratoare: Întreruperi, I2C, SPI.

Biblioteci folosite

În dezvoltarea proiectului am folosit biblioteca externă RDA5807 pentru modulul radio. În rest, tot codul este scris de mine. Astfel, am scris driver-ul pentru comunicarea pe SPI și pentru comunicarea cu controller-ul displayului, ST7735. Am ales să fac acest lucru pentru că am vrut un codebase mai lightweight decât ce mi se oferea prin intermediul bibliotecii de la AdaFruit. Dacă mai aveam timp la dispoziție, aș fi scris codul pentru I2C și modulul radio. Codul pentru display permite scrierea a 2 tipuri de font-uri: font8x8.h și font16x16.h.

Structura codului

Optimizări făcute

Note: Am vrut să folosesc și modurile de sleep ale avr-ului pentru a salva baterie, însă din ceva motiv asta facea ca proiectul să nu mai funcționeze cum ar fi trebuit. Sigur există o explicație logică pentru asta, dar mi-a lipsit timpul necesar pentru a face debug.

Rezultate Obţinute

Demo

Concluzii

Acest proiect, deși simplu la prima vedere, m-a învățat multe, inclusiv cum să lipesc componente (pini, difuzoare și fire). Până am scris codul mă rugam ca lipiturile mele să fie bune :)))

A fost o provocare să alimentez totul din Arduino și am dat de niște cazuri când Brown-Out-Detector-ul declanșa reset-ul.

Mi-ar fi plăcut să lipesc tot proiectul pe un perfboard, dar nu am găsit din timp unul destul de mare pentru a ține componentele cât de cât aerisite (modulul radio este afectat și de SPI și de amplificator).

De asemenea, a fost interesant să ascult muzică la proiect în timp ce scriam codul pentru el :)))

Download

Link cu repo-ul de GitHub: SistemRadio unde se găsește și schematic-ul proiectului.

Jurnal

Bibliografie/Resurse

Export to PDF