Table of Contents

Nume : Oprea Florentina
Grupa : 335CC

Introducere

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.

Descriere generală

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:

Hardware Design

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:

Software Design

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.

Rezultate Obţinute

In final am realizat o papusa care respecta cerintele impuse in proiect.

Puteti vizualiza rezultatele aici.

Concluzii

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.

Download

Arhiva proiect : oprea_florentina_335cc_cod_proiect.zip

Jurnal

Etape in realizarea proiectului:

Bibliografie/Resurse

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