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!”
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.
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.
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 |
Denumire | Valoare | Cantitate |
---|---|---|
Soclu SD | 1 | |
Diodă | 1N4007 | 2 |
Rezistenţă | 1 K 6 | 3 |
Rezistenţă | 3 K 3 | 3 |
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 |
Denumire | Valoare | Cantitate |
---|---|---|
PUSH BUTON | KRS1243 | 3 |
Rezistenta | 10K | 6 |
Led-uri roșii | 5 mm | 2 |
Rezistenţă | 560 ohmi | 2 |
Microswitch | D2F223 | 3 |
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.
Codul aplicaţiei cuprinde trei fişiere sursă importante, headere şi librării importate.
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.
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"
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.
#include <avr/io.h> #include "diskio.h"
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.
#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"
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.
=== Etapa 1 ===
=== Etapa 2 ===
=== Etapa 3 ===
=== Etapa 4 ===
Laboratoare PM : http://cs.curs.pub.ro/wiki/pm;
Resurse Hardware
Datasheet microcontroller ATMEGA324A: http://cs.curs.pub.ro/wiki/pm/_media/doc8272.pdf
Amplificator LM386 : http://www.biltek.tubitak.gov.tr/gelisim/elektronik/dosyalar/6/LM386.pdf
Componente: * http://www.syscomelco.ro/ * http://www.conexelectronic.ro/ * http://ro.farnell.com/