Table of Contents

Home Hub

Autor: Mărgineanu Cristian 336CB

Introducere

Proiectul urmărește implementarea unui Dashboard general, inspirat de lansarea produsului Google Home Hub în toamna anului trecut. Dashboard-ul va fi capabil sa afișeze ora în format digital, să citeasca date de la anumiți senzori conectați, cum ar fi temperatura, presiune, umiditate, etc. De asemenea, acesta este conectat la un modul de Bluetooth, prin intermediul caruia orice dispozitiv conectat ar putea sa trimita comenzi catre Hub, cum ar fi setare de alarma.

Descriere generală

Schema bloc

Schema electrică

Hardware Design

Listă componente necesare:

Software Design

Rolul proiectului este de a simula un home hub care este pozition intr-o camera frecvent utilizata. Aceasta arata masuratori in timp real a senzorului de temperatura si umiditate pe LCD. De asemenea, acesta este programat sa afiseze de cat timp este pornit, si cand este setata alarma urmatoare. Alarma poate fi setata prin intermediul modulului de Bluetooth. Dupa conectarea telefonului la Bluetooth, trebuie apasat butonul BTN de pe placuta pentru a instiinta microcontroller-ul ca urmeaza sa primeasca date. Comenzile de bluetooth sunt de forma “a<x>s<y>mf”, unde <x> reprezinta numarul de minute, iar <y> reprezinta numarul de secunde. “a” semnifica un request de tip alarma, iar “f” reprezinta finalul comenzii. Cand alarma este activata, difuzorul incepe sa cante renumita melodie Star Wars.

Conectarea LCD-ului color cu microcontroller-ul ATMega are loc prin SPI, cu o configuratie similara cu cea din laborator. Conectarea difuzorului la placuta are loc prin pinul PD4, si acelasi concept cu cel de la laboratorul 3, adica seteaza Timer1 in modul FastPWM, apoi utilizand delay-urile predefinite la inceputul codului, TOP-ul timer-ului se modifica variabil, pentru a putea reda notele din cantec.

Conectarea modulului de bluetooth are loc prin USART0, setat la 38400 biti/s, un bit de stop si nici unul de paritate. Din cauza faptului ca functia USART0_receive este blocanta, am realizat ca preluarea datelor prin bluetooth sa fie posibila doar dupa apasarea butonului BTN de pe placuta.

Senzorul de temperatura si umiditate este conectat la pinul PA7, si cu ajutorul bibliotecii incluse, este citit data de pe unicul pin de date pe care senzorul il ofera, fara a utiliza timere sau intreruperi.

Pentru a avea o notiune de timp in program, am setat Timer0 sa lucreze in mod CTC astfel incat sa genereze o intrerupere la fiecare ms, adica frecventa sa fie de 1KHz. Intreruperea data creste un contor global ce duce evidenta a cate ms au trecut de la inceperea programului. De asemenea, acesta verifica daca este cazul sa se porneasca alarma sau nu.

Per total am utilizat o conexiune SPI, o conexiune USART, un pin de input si Timer0 impreuna cu Timer1, care are intreruperea activa pe pinul PD4.

Rezultate obtinute

Setup

Alarm

No Alarm

Concluzii

Din pacate, nu am reusit sa implementez absolut tot proiectul pe care am dorit sa il creez initial, in mare parte din lipsa de timp. Cel mai tare regret ca nu am reusit sa fac aplicatia de Android care sa trimiterea comenzilor la un click distanta. Momentan este posibila trimiterea comenzilor prin intermediul unei aplicatii de Terminal Bluetooth (disponibil gratuit pe Google Play Store). De asemenea, initial am dorit sa pot conecta prin SPI si un modul cititor de carduri SD, pentru a avea spatiu de stocare. Acest spatiu ar fi putut fi apoi folosit pentru upload de alarme custom, poate chiar in format MP3, daca ar fi prezent un decodificator specializat in diagrama. Ultimul lucru care as fi vrut sa fi fost prezent este transmiterea a mai multe tipuri de requesturi in ambele sensuri prin Bluetooth, cum ar fi temperatura de afara, notificari, mesaje etc.

Ce am incercat sa fac din cele enumerate mai sus si am stat foarte mult blocat a fost conectarea cititorului de SD Card, care este prezent in spatele ecranului LCD color. Aceasta utilizeaza, de asemenea, o conexiune SPI, si am incercat sa conectez ambele catre MISO/MOSI/CLK prin intermediul unui Breadboard, cu pini de SS diferiti, microcontroller-ul fiind setat drept master in comunicarea data. Dar in momentul in care puneam un Card SD in cititor, ecranul o lua razna, culorile se stergeau, de parca ar fi fost alimentat insuficient. Nu inteleg care a fost motivul pana la capat, dar nici conexiunea de SPI cu 2 dispozitive nu am reusit sa o programez pana la capat.

Jurnal

Download

home_hub.sch

proiect_pm_margineanu_cristian.zip

Bibliografie/Resurse

Export PDF