Table of Contents

Alina-Elena MARCU - Jucărie Interactivă

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Proiectul “Grizzle – The Grumpy Bear” constă în realizarea unei jucării interactive destinată în special copiilor. Aceste jucării inteligente au început să se bucure de un succes răsunător în rândul copiilor deoarece acestea au atât menirea de a stârni curiozitatea celor mici, cât mai ales de a le dezvolta simţurile, de la stimularea simţului vizual, auditiv sau tactil până la a învăţa cum să interacţioneze cu lumea din jur, acestea ocupă un rol important în dezvoltarea copilului de la o vârstă fragedă.

Scopul proiectului este acela de a crea un partener de joacă ideal pentru orice copil. Astfel a fost creat “Grizzle” un ursuleţ de pluş morocănos care invită copilul să participe la conversaţie şi să întreprindă diverse acţiuni menite să dezvolte personalitatea şi spiritul aventurier al copilului. Fiind o jucărie modernă, replicile ursuleţului sunt în limba engleză.

Proiectul propune un joc interesant copilului, acela de a transforma ursuleţul morocănos într-unul fericit şi prietenos, conform unor reguli bine stabilite care vor fi aduse la cunostiinţă copilului încă de la început. “Grizzle” va ghida copilul în producerea unor evenimente şi va răspunde conform cu acestea, permiţând astfel evoluţia firească a jocului.

Ursuleţul are mai multe stări, care vor fi acţionate folosind cele 3 butoane şi 3 micro-întrerupătoare. Atât butoanele cât şi micro-switch-urile sunt amplasate strategic, fiind la îndemâna copilului: 1 buton pentru lăbuţa din dreapta, 1 buton pentru lăbuţa din stânga, 1 buton pe burtică, 1 micro-switch este amplasat în zona nasului, altul în picioruşul drept, respectiv cel stâng.

Starea “I am Grizzle”:

Starea “Why am I so grumpy ?”

Starea “Let's Play!”
Starea “Hold My Paw!”
Starea “Tickle!”
Starea “Hug Me!”
Starea “Pinch Nose”
Starea “Surprise!”

Descriere generală

Ursuleţul va primi inputul utilizatorului prin cele 3 butoane şi cele 3 microswitch-uri plasate în lăbuţe, picioruşe, nas şi burtică şi acesta la rândul său va trasnmite mesajul său copilului fie prin aprinderea celor 2 LED-uri, plasate în nas şi în dreptul papionului, fie va transmite audio prin citirea fişierelor .wav de pe cardul SD şi redarea acestora prin difuzor.

Partea Hardware:

  1. Plăcuţa de bază ce conţine microprocesorul ATMEGA324A (etapa 1)
  2. Montaj Card SD
  3. Montaj Difuzor
  4. Montaj LED-uri şi butoane, microswitch-uri

Schema Bloc:

Partea Software:

  1. consta in citirea de pe SD card a .wav-urilor folosind API-ul Petit FAT
  2. implementarea starilor conform descrierii de mai sus, actionate cu ajutorul butoanelor si microswitch-urilor
  3. detectarea comenzilor generate de închiderea circuitelor

Schema Bloc:

Interacţiunea dintre Hardware şi Software

Alimentarea plăcuţei este realizată prin cablul USB. Comunicarea dintre microcontrollerul ATMega324A şi cardul SD este una de tip Master-Slave şi este realizată prin interfaţa SPI (Serial Peripheral Interface Bus).

   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)
   

Pentru o redare cât mai clară a sunetului prin difuzor fisierele .wav au fost înregistrate cu:

Pentru redarea corectă a sunetului s-a folosit un timer care să genereze o întrerupere cu frecvenţa de 24000 Hz.

Conectarea componentelor la pinii microcontroller-ului

  1. Montaj Soclu SD ⇒ pinii PB4 → PB7
  2. Modificarea volumului difuzorului ⇒ pinul PD5 (OC1A)
  3. Butoane ⇒
    1. Left Paw → PA7
    2. Right Paw → PA6
    3. Belly → PA5
  4. Microswitch-uri ⇒
    1. Left Foot → PA4
    2. Right Foot → PA3
    3. Nose → PA2
  5. LED-uri ⇒
    1. Bow Tie → PA1
    2. Nose → PA0

Hardware Design

Listă Componente - Etapa I

Denumire Valoare Cantitate
ATMEGA324PA-PU DIL40 1
Conector mufa CONECT JACK 2089 1
Condensator neelectrolitic 15pF KEPF015 2
Condensator neelectrolitic 0.1u CM-100 5
LED 3 mm Rosu LED EL333 2
2 X 10 K2X10 1
1 X 40 K1X10 WSL040 1
TO-220 7805CT 1
Quartz 16MHz 16MHz QMIM016 1
Rezistenţă 10 K 2
Rezistenţă 1 K 2
Rezistenţă 100 R 3
Rezistenţă 2 k 2 1
Tastă PUSHBUTTON 2
Conector USB USB-B Cvilux 1
Dioda Zener ZENER 1
Cablaj fotorezistiv 75 x 100 foto 2
Cablaj Test 100 x 100 găuri 1

Schemă Microcontroller ATMEGA324A

Schema obţinută în urma realizării montajului

Listă Componente - Montaj SD

Denumire Valoare Cantitate
Soclu SD 1
Diodă 1N4007 2
Rezistenţă 1 K 6 3
Rezistenţă 3 K 3 3

Schemă folosită în realizarea montajului

Schema obţinută în urma realizării montajului

Listă Componente - Montaj Difuzor

Denumire Valoare Cantitate
Difuzor 32 ohmi 1
Amplificator audio LM386 1
Condensator electrolitic 330 uF 1
Condensator ceramic 47 nF 1
Condensator electrolitic 100 uF 1
Rezistenţă 10 ohmi 1

Schemă folosită în realizarea montajului

Schema obţinută în urma realizării montajului

Listă Componente - Adiţionale

Denumire Valoare Cantitate
PUSH BUTON KRS1243 3
Rezistenta 10K 6
Led-uri roșii 5 mm 2
Rezistenţă 560 ohmi 2
Microswitch D2F223 3

Schemă folosită în realizarea montajului

Schema obţinută în urma realizării montajului

Software Design

Partea de software am preluat-o în mare parte din laboratoarele de PM. Aceasta constă din redarea replicilor jucăriei citite de pe cardul SD şi redarea acestora printr-un difuzor. Pentru a crea o reacţie cât mai naturală a pâpuşii aceasta îşi va aprinde led-urile la trecerea dintr-o stare în alta ca şi copilul să fie conştient de stadiu în care evoluează jucăria.

Descrierea codului aplicaţiei:

Codul aplicaţiei cuprinde trei fişiere sursă importante, headere şi librării importate.

Sursa pff.c

Aceasta utilizează PetitFAT pentru a deschide un sistemul de fişiere al aplicaţiei de pe un SD Card FAT 16 format şi a citi informaţiile byte cu byte din fişierele, cu posibilitatea parcurgerii recursive a fişierului respectiv.

Librării şi headere incluse:

pff.h - defineşte sistemul de fişiere 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"
    		
Sursa mmc.c

In acest fisier sunt implementate functii care vor face comunicarea efectivă cu cardul SD. Pinii pentru intrare si iesire sunt setaţi conform cu funcţia pe care o îndeplineşte microcontrollerul, cea de Master, iar cardul SD pe cea de Slave.

Librării şi headere incluse:
    #include <avr/io.h>
    #include "diskio.h"
    
Sursa main.c

Cuprinde funcţiile ce vor apela mmc.c si pff.c. Aceasta reprezintă sursa principală, care descrie conportamentul jucăriei. Pentru implementarea stărilor am avut nevoie de timere care să genereze întreruperi pentru citirea de pe card. Redarea unei melodii se realizează în momentul în care jucăria a ajuns intr-o astfel de stare.

Librării şi 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"
   

Toate aceste surse au fost preluate din cadrul laboratoarelor de PM, în mare parte din laboratorul 4.

Medii de dezvoltare:

Rezultate Obţinute

Schema FINALA

Montare PARTIALA

The Not So Grumpy GRIZZLE

Concluzii

Aceast proiect poate fi folosit cu uşurinţă în scopuri educaţionale, pentru copii, pentru a le insufla un spirit de responsabilitate şi a îi înveseli. Varianta prezentata poate fi dezvoltata pe viitor pentru a asigura o interacţiune mai amplă cu copii sau o comunicaţie focalizată pe un proiect educaţional din care să poată învăţa lucruri legate de comporatmentul pe care trebuie să-l desfăşoare în anumite situaţii.

Proiectul per ansamblu a fost unul reuşit, trecând peste multele ore migăloase de lipit, nopţile petrecute cu debbuging, la final am ajuns la concluzia ca a fost un proiect util, educativ şi care te învăţa mai ales să fii răbdător şi să lucrezi în echipă (mai ales la partea de lipit, trust me there's no other way).

Am de gând să lucrez la acest proiect pe timpul verii deoarece îmi doream să iasă ceva mult mai complex faţă de starea curentă, dar din lipsa timpului nu am putut realiza ceva mai bun. :-(

Download

marcualinaelena_331ca_grizzle.zip

Jurnal

=== Etapa 1 ===

=== Etapa 2 ===

=== Etapa 3 ===

=== Etapa 4 ===

Bibliografie/Resurse