Adela STAN (78409) - Adelmega336CA
Autorul poate fi contactat la adresa: Login pentru adresa
Introducere
Proiectul are urmatoarele functionalitati:
conectarea prin bluetooth la un dispozitiv cu Android (telefon)
aplicatia instalata pe telefon va putea trimite anumite comenzi prin bluetooth
pe baza comenzilor primite, placuta va raspunde cu ajutorul unor fisiere audio
Comenzile vor contine detalii legate de:
timp: telefonul trimite prin bluetooth placutei ora curenta; placuta va da play unor fisiere audio de tip wav, astfel incat sa citeasca aceasta ora
data: asemanator, placuta va citi data curenta
vreme: asemanator, placuta va citi temperatura minima, respectiv maxima, pentru ziua curenta
Am ales sa fac acest proiect deoarece mi se pare interesanta si de actualitate integrarea cu alte dispozitive mobile.
Adelmega336CA este nu numai un ceas/calendar, ci si o modalitate rapida de a afla cum va fi vremea in locatia curenta peste cateva ore.
Descriere generală
Descriere:
Android phone: telefonul pe care este instalata aplicatia pentru proiect; acesta are locatia, dar si bluetooth-ul activat
Bluetooth module: modulul de bluetooth 4.0 cu adaptor (compatibil 3.3V si 5V) folosit pentru primirea datelor de la telefon
Micro SD card: cardul pe care vor fi stocate fisierele .wav
Buzzer: buzzer pasiv, folosit pentru a auzi raspunsul placutei
Hardware Design
Piese achizitionate:
toate piesele de baza sugerate
fire mama-tata si tata-tata
breadboard
tranzistor NPN 2n2222 TO-92
buzzer pasiv: Folosit la redarea fisierelor audio
Schema electrica:
Software Design
Descrierea codului aplicaţiei (firmware):
mediu de dezvoltare: Atmel Studio 7.0
librării şi surse 3rd-party: pff.h, sd.h, usart.h, spi.h - din laboratorul 4, solutii publice; aplicatia Serial Bluetooth Terminal 1.14 pentru Android - singura aplicatie mobila pe care am putut-o folosi pentru comunicarea prin bluetooth cu placuta (intrucat este vorba despre un bluetooth LE)
algoritmi şi structuri necesare: dupa incarcarea aplicatiei pe placa, aceasta va astepta o comanda prin bluetooth; dupa primirea unei comenzi, aceasta va fi parsata dupa cum urmeaza - delimitatorul va fi considerat caracterul ”:”; o comanda va fi de forma: “c:ff:ff”, unde:
c - tipul comenzii; poate avea valorile:
t - time
d - date
w - weather
ff - nume fisier; se vor transmite cate doua fisiere pentru fiecare tip de comanda, dupa cum urmeaza:
t - primul fisier va fi ora (de exemplu: daca primim 13, inseamna ca este ora 13, asa ca se va da play fisierului 13.wav, apoi fisierului care citeste “hours”); al doilea fisier va reprezenta minutele (se va citi numarul primit .wav, apoi fisierul care citeste “minutes”) - exemplu: t:13:32 ⇒ “13 hours 32 minutes”
d - primul fisier va fi ziua din luna; al doilea va fi luna din an - exemplu: d:23:may ⇒ “23 of May”
w - primul fisier va fi temperatura minima; al doilea fisier va fi temperatura maxima - exemplu: w:23:27 ⇒ “23 degrees maximum 27 degrees minimum”
surse şi funcţii implementate -ideea softului este urmatoarea:
initializarea usart si setarea tuturor pinilor de iesire folositi
asteptarea unei comenzi prin bluetooth
parsarea acesteia dupa algoritmul de mai sus
asteptarea unei noi comenzi, etc
Rezultate Obţinute
Am testat fiecare componenta in parte, acestea functionand cu succes: pot produce sunete cu ajutorul buzzerului, pot citi fisierele de pe microsd si pot transmite si primi date via bluetooth. Datorita unor probleme la recunoasterea bluetoothului de catre dispozitivele android (poate fi vizibil doar prin intermediul unor aplicatii de comunicare cu ble devices), nu am putut transmite comenzile vocale, asa cum mi-am propus initial. Acestea pot fi transmise insa sub format text.
Aspectul final al proiectului:
Concluzii
A fost primul proiect de acest gen realizat de mine. Overall, experienta a fost interesanta, intrucat am invatat ce presupune implementarea partii de hardware si lucrul cu o placuta, insa si frustranta, din cauza debuggingului uneori greoi sau neintuitiv.
Download
Bibliografie/Resurse
Documentația în format
PDF
Resurse Hardware:
Resurse Software: