Susan e un mini-robotel inteligent in forma unui ghiveci decorativ, care interactioneaza prin cativa senzori. Susan se ocupa de o mica planta dintr-un bol, notificand utilizatorul in legatura cu umiditatea din sol, temperatura si luminozitatea. De asemenea, Susan are rol decorativ, avand capacitatea de a reda diferite melodii prin intermediul unui difuzor. Difuzorul va fi folosit si pentru notificari vocale. Susan va avea atasate 2 matrici de led-uri (8×8) (jocurile de lumini vor fi dependente de muzica → TODO for the future: Spectrum Analyser).
Pentru a reda sunete de pe un card microSD folosind Atmega324, Susan are nevoie de fisiere audio in format .wav. Astfel, se va folosi un card microSD cu fisere audio .wav. De asemenea, este necesara integrarea unui modul slot card compatibil cu MicroSD.
Senzor de umiditate a solului - format din 2 părți componente: circuitul PCB ce conține comparatorul și partea care se înfige în pământ. Dintii senzorului vor detecta umiditatea din sol prin trecerea curentului prin sol si masurarea rezistentei acestuia. Solul umed conduce electricitatea usor, avand rezistenta mica, in timp ce cel uscat conduce prost si va avea o rezistenta mare.
Senzor de lumina ambientala (phototransistor) - folosit pentru a masura luminozitatea in zona in care se afla ghiveciul.
Senzor de temperatura/umiditate - Folosit pentru masurarea temperaturii/umiditatii din incapere.
Senzor de miscare - Senzorul infraroșu HC-SR501, folosit pentru a detecta prezența oamenilor. Acest senzor va fi folosit pentru a notifica persoana din incapere cu privire la starea plantei. ( prioritate scazuta momentan)
Este posibil sa mai fie adaugati senzori pe parcurs / sa nu fie integrati conform specificatiilor initiale. Susan se doreste a fi un proiect complex din care sper sa reusesc sa dezvolt cat mai mult pentru PM.
Proiectul va integra 2 matrici de led-uri. In scop decorativ se vor aduga jocuri de lumini (sound responsive - prioritate scazuta).
Spre deosebire de aceasta schema la momentul implementarii hardware amplificatorul audio a fost conectat la o sursa externa de tensiune, deorece era mult prea demanding pentru a fi conectat impreuna cu LCD-ul, senzorii si matricile de LED-uri.
Mediul de dezvoltare utilizat:
Resurse folosite:
DHTxx - https://github.com/Jacajack/avr-dhtxx - am folosit biblioteca pentru citirea datelor de la senzorul de temperatura si umiditate. API-ul returneaza 2 numere intregi care semnifica cei doi parametrii masurati, inmultiti cu 10 (o precizie de o zecimala).
lcd - Laboratorul 1: USART, LCD - am folosit biblioteca pentru afisarea parametrilor veniti de la senzori pe un LCD 16×2
MAX7219 Datasheet - https://www.sparkfun.com/datasheets/Components/General/COM-09622-MAX7219-MAX7221.pdf
Functii auxiliare MAX7219: https://gist.github.com/adnbr/2352797
Descriere implementare:
Initial sistemul se afla intr-o stare neutra. Primul pas este montarea unui mini sistem de fisiere (corespunzator cardului microSD).
/* Initializare Petit FatFs. Sistemul va fi infunctional daca initializarea nu returneaza succes.*/ for(;;) { if(pf_mount(&fs) != FR_OK) { _delay_ms(1000); continue; } else { break; } }
Dupa initializarea sistemului de fisiere(pFAT) utilizatorul este intampinat cu mesajul vocal “Hello, world!”. Se va verifica apoi prezenta unei persoane in incapere. In momentul in care senzorul PIR este in starea HIGH (detecteaza prezenta) persoana aflata in incapere va fi notificata vocal in legatura cu starea plantei. Senzorul are setata senzitivitatea la 7m si time delay-ul la ~40s pentru a nu face trigger mult prea des.
Senzorii (lumina/dht11/umiditate_sol) preiau date si in mometul in care nu este detectata miscare. Aceste date sunt afisate pe LCD, singura diferenta fiind lipsa mesajelor vocale.
Toate mesajele vocale sunt stocate pe un card microSD sub forma unor fisiere .wav si redate prin SPI.
Proiectul este functional. Toate partile au fost implementate. Am incercat sa implementez si FFT pe matricile de LED-uri pentru mesajele vocale, insa am ajuns la concluzia ca este destul de intensive pentru procesor si mult prea demanding ca si memorie (nu am avut posibilitatea de a retine un numar suficient de mare de coeficienti pentru implementare). Rezultatul final este o parte din proiectul complex pe care mi-l doresc.
Demo: q3NF6uRwjWs
În final, aș vrea să le mulțumesc prietenilor că m-au ajutat și suportat pe parcusul acestor zile cât am lucrat la proiect, și părinților pentru susținerea financiară fără de care realizarea proiectului nu ar fi fost posibilă, și pentru sprijinul moral oferit când Susan a decis să se descompuna.