Nume : Oprea Florentina
Grupa : 335CC
“Păpuşa Vorbăreaţă”, fiind o jucarie care interactioneaza cu cei din jur, va fi cadoul ideal pentru orice copil, de 1 iunie. Astfel cand copilul va strange mana papusii ea va spune “Ia-ma de amandoua manutele si o sa iti spun cum ma cheama!” aceste vorbe vor starni curiozitatea copilului si il vor determina sa realize actiunea dorita de papusa; cand ii va strange amandoua manutele va spune “Vreau sa ma iei in brate!” actiune pe care copilul trebuie sa o duca la indeplinire, altfel papusa nu se va opri pana nu va obtine ceea ce isi doreste si nu va putea evolua; cand o va lua in brate va spune “Suntem cei mai buni prieteni!”; copilul, pe tot parcursul jocului va descoperi lucrurile pe care “Păpuşa Vorbăreaţă” le poate face, insa de fiecare data trebuie sa o ajute.
Proiectul “Păpuşa Vorbăreaţă” isi propune crearea unei papusi care sa reactioneze la diferite actiuni, cum ar fi apasare de butoane sau miscarea sa de catre utilizator.
Scopul acestui proiect, papusa care vorbeste conform cu ceea ce ii se intampla, este acela de a realiza o jucarie care, ghidand utilizatorul in producerea unor evenimente, ii ofera posibilitatea de a evolua.
Proiectul reprezinta o papusa care este capabila sa interactioneze cu utilizatorul.
Acest lucru este realizat prin hardware cat si prin software. Hardware-ul cuprinde trei parti importante :
Software-ul permite citirea de pe cardul SD a fisierelor salvate in prealabil pe acesta, deasemenea tot prin software se realizeaza detectarea miscarii papusii (cu alte cuvinte inclinarea accelerometrului) si a comenzilor generate de inchiderea circuitelor prin apasarea celor trei butoane.
Microprocesorul este cel care interconecteaza toate partile de baza ale proiectului. Comunicarea acestuia cu cardul SD se realizeaza prin standardul Serial Peripheral Interface Bus (SPI). Fisierele salvate pe cardul SD sunt de tip fisier WAV care a fost inregistrat cu o rata de 44100Hz si 8 biti pe esantion, MONO. Pentru a-l reda corect trebuie sa avem un timer care sa genereze o intrerupere cu frecventa de 44100Hz. In fiecare intrerupere trebuie sa citim un sample din fisier (un octet) si sa-l punem pe iesirea unui al doilea timer care a fost configurat in modul PWM cu rezolutia de 8 biti.
SCLK — Serial Clock ( output from master) MOSI/SIMO — Master Output, Slave Input (output from master) MISO/SOMI — Master Input, Slave Output (output from slave) SS — Slave Select (active low; output from master)
Vocea papusii va fi redata cu ajutorul unui difuzor conectat la pinul OC1A al microprocesorului.
Alimentarea placutei se va realiza prin cablul USB.
Schema bloc
Pentru ca utilizatorul sa poata interactiona cu papusa, am conectat trei butoane fiecare pe cate un pin al microprocesorului. Acestea la apasare vor activa diferite dialoguri, iar acestea vor ghida utilizatorul in a realiza alte actiuni pe care papusa le va cere in vederea evolutiei acesteia. De fiecare data cand papusa vorbeste, canta, este luata in brate sau doarme i es vor aprinde obrajii reprezentati de doua leduri conectate pe doi pini ai microprocesorului. Actiune de a dormi sau da a fi luata in brate este detactata prin compararea tensiunii generate de accelerometru cu o tensiune de referinta din microprocesor.
Proiectul reprezinta o papusa cu personalitate, intrucat pe parcursul jocului papusa va cere utilizatorului anumite actiuni din partea acestuia, iar daca utilizatorul nu respecta ceea ce i sa cerut papusa se va supara sau refuza sa vorbeasca.
Ideea jocului este de invata copilul sa comunice, sa urmeze niște pași firesti intr-o convorbire. Pentru a ajunge la finalul jocului el trebuie sa urmeze calea corecta, cea pe care îl va direcționa păpușa. Sfârșitul este atins in momentul in care copilul va reusi sa se imprieteneasca cu păpușica.
Vedere de ansamblu a proiectului:
Lista de piese:
Denumire | Cantitate | Valoare |
---|---|---|
Microcontroller ATMEGA 16P | 1 | |
CONECTOR JACK Conector mufa adaptor | 1 | |
Condensator neelectrolitic | 2 | 15pF |
Condensator neelectrolitic | 9 | 0,1µF |
Condensator neelectrolitic | 1 | 0,05µF |
Dioda Zener | 4 | |
Condensator electrolitic | 4 | 10µF |
Condensator electrolitic | 1 | 100µF |
Condensator electrolitic | 1 | 250µF |
LED 5mm Rosu | 4 | |
DIL16 MAX232 | 1 | |
TO-220 7805CT | 1 | |
Quartz 16MHz | 1 | |
Rezistenta | 2 | 10K |
Rezistenta | 2 | 8K |
Rezistenta | 1 | 15K |
Rezistenta | 2 | 1K |
Rezistenta | 2 | 4,7K |
Rezistenta | 2 | 2,2K |
Rezistenta | 2 | 100R |
Dioda 1N4148 | 1 | |
Potentiometru | 1 | 10K |
Tasta PUSHBUTTON | 4 | |
TO92 BC547C | 1 | |
Soclu Microcontroler | 1 | |
Placa Test | 2 | |
Conector USB B Cvilux | 1 | |
Cablu UTP | 1 | 4 metri |
Amplificator Operational LM386 | 1 | |
Difuzor | 1 | 8ohm |
Soclu card SD | 1 | |
Card SD | 1 |
Schema placutei cu microcontroller si card SD:
Rezistente utilizate pentru cardul SD:
Schema montaj difuzor:
Se observa in imagine potentiometrul folosit pentru reglare volum.
Schema montaj accelerometru:
Conectare leduri si butoane:
Amplasarea elementelor de comanda pe papusa:
Proiectul, isi propune, prin software sa acceseze dialoguri (fisiere ”.wav”) de pe cardul SD si redarea lor pe un difuzor de 8 ohm. In momentul in care este redata o melodie ledurile (obrajii papusii) se vor aprinde creand senzatia de real, senzatia de reactie din partea papusii.
Codul aplicatiei cuprinde trei fisiere sursa importante, headere si librarii importate.
Fisierul sursa pff.c Aici sunt implementate functii care vor umple memoria cu octeti, compara din memorie, citeste sistemul de fisiere de pe cardul SD, gaseste directorul si respectiv fisierul la care se face referinta, scrie si citeste in fisier dorit.
Librarii si headere incluse:
pff.h - defineste sistemul de fisiere de pe cardul SD
#include "integer.h"
#ifndef _FATFS #define _FATFS #define _USE_READ 1 /* pf_read(): 0:Remove ,1:Enable */ #define _USE_DIR 1 /* pf_opendir() and pf_readdir(): 0:Remove ,1:Enable */ #define _USE_LSEEK 1 /* pf_lseek(): 0:Remove ,1:Enable */ #define _USE_WRITE 1 /* pf_write(): 0:Remove ,1:Enable */ #define _FS_FAT32 1 /* 0:Supports FAT12/16 only, 1:Enable FAT32 supprt */ #define _CODE_PAGE 1 #define _WORD_ACCESS 1 #if _FS_FAT32 #define CLUST DWORD #else #define CLUST WORD #endif
diskio.h
#ifndef _DISKIO #include "integer.h" #include "pff.h" #include "diskio.h"
Fisierul sursa mmc.c In acest fisier sunt implementate functii care vor face comunicarea efectiva cu cardul SD. Setam pinii pentru intrare si iesire conform cu functia pe care o indeplineste microcontrollerul, si anume de master, iar cardul SD pe cea de slave.
Librarii si headere incluse:
#include <avr/io.h> #include "diskio.h"
Fisierul sursa main.c
main.c cuprinde functiile ce vor apela mmc.c si pff.c. Tot aici detectam daca a fost apasat un buton sau daca papusa a fost miscata. Pentru a putea lucara cu accelerometrul trebuie sa initializam ADC : registrele ADMUX, SFIOR, ADCSRA. Avem doua timere care genereaza intreruperi pentru citirea de pe card.
Ideea pe care am urmat-o pentru a implementa redarea unei melodii anume in momentul in care este actionat un buton sau accelerometrul este inclinat, este aceea a parcurgerii melodiilor pana la gasirea celei dorite , insa daca am trecut de ea counter-ul se va reseta si va porni iar.
Librarii si headere incluse:
#define F_CPU 16000000 #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include <avr/sleep.h> #include <avr/wdt.h> #include <string.h> #include <stdio.h> #include "diskio.h" #include "pff.h"
Mediul de dezvoltare folosit: AVR Studio si WinAVR.
In final am realizat o papusa care respecta cerintele impuse in proiect.
Puteti vizualiza rezultatele aici.
Papusa vorbitoare este un proiect ce poate fi dezvoltat pe diverse teme avand un puternic impact educational asupra copiilor. Implementarea actuala poate fi dezvoltata in vederea realizarii unui dialog mult mai amplu sau o comunicatie focalizata pe un proiect educational din care copiii pot invata lucruri legate de comporatmentul pe care trebuie sa il desfasoare in anumite situatii.
Arhiva proiect : oprea_florentina_335cc_cod_proiect.zip
Etape in realizarea proiectului:
1) Datasheet microcontroller ATMEGA16 : http://www.datasheetcatalog.org/datasheet/atmel/2466S.pdf
2) Datasheet accelerometru MXA2300JV : http://www.ee.oulu.fi/~plazma/EIR_IO-board_documents/Memsic%20MXA2300.pdf
3) Datasheet amplificator LM386 : http://www.biltek.tubitak.gov.tr/gelisim/elektronik/dosyalar/6/LM386.pdf
4) Laboratoare PM : http://elf.cs.pub.ro/pm/wiki/lab/lab3 , http://elf.cs.pub.ro/pm/wiki/lab/lab4