Rama Foto - Popescu Raluca 332AA

Introducere

Proiectul constă într-o ramă foto digitală cu scopul principal de a afișa imagini la intervale regulate de timp. Rama foto este compusă în principal dintr-un ecran pe care va fi afișat slideshow-ul de imagini și un card microSD pe care vor fi stocate imaginile. Utilizatorul trebuie să interacționeze doar cu cardul de memorie, prin care poate încărca un număr limitat de poze, în funcție de memoria disponibilă pe card. Slideshow-ul va porni automat odată ce rama foto este conectată la o sursă de curent.

În plus, rama foto poate funcționa și ca un termometru digital simplu care să indice temperatura mediului ambiant. Această funcționalitate se realizează prin apăsarea unui buton care va opri slideshow-ul de imagini și va afișa temperatura pe ecran. Pentru a continua afișarea slideshow-ului, utilizatorul poate apăsa din nou butonul.

Ideea care a stat la baza proiectului a fost aceea de a realiza o ramă foto care să afișeze o singură imagine. Însă, ulterior, am dezvoltat conceptul astfel încât să fie posibilă afișarea mai multor imagini, ceea ce face diferența între o ramă foto obișnuită și una digitală. Deși suntem în era tehnologiei, oamenii sunt încă foarte interesați să surprindă momente importante din viața lor prin fotografii și videoclipuri.Cu toate acestea majoritatea informațiilor de acest tip sunt stocate în format digital,iar foarte puține persoane mai aleg să dezvolte pozele în prezent. Astfel, o ramă foto digitală este foarte utilă, având în vedere că poate fi refolosită mulți ani și totul se rezumă la încărcarea sau schimbarea pozelor de pe cardul SD.

Descriere generală

Schema bloc a modulelor hardwere folosite:

Hardware Design

Componentele hardwere folosite pentru acest proiect sunt:

  • Placa de dezvoltare compatibila Arduino UNO
  • 1.18” LDC screen ST7735
  • MicroSD Card Adapter + microSD card
  • senzor de temperatura( senzor AHT2x)
  • buton
  • breadboard
  • fire

Ecranul LCD si microSD adapterul se bazeaza pe SPI in timp ce senzorul de temperarura pe I2C.

Pentru realizarea proiectului voi folosi spre indrumare laboratoarele care detaliaza Timere(pentru derularea imaginilor), SPI si I2C.

Conectarea componentelor la placuta Arduino UNO

Configuratie LCD Arduino Pin
LED 3.3V
SCK 13
SDA 11
A0 8
RESET 9
CS 10
GND GND
VCC 5V
Configuratie AHT2x Arduino Pin
Vin 5V
GND GND
SCLA5
SDAA4
Configuratie SDCard Arduino Pin
CS 4
GND 13
MOSI11
MISOA4
VCC5V
GNDGND

Butoanele sunt legate la pinii

  • Buton 1 - Pin 3
  • Buton 2 - Pin 5
  • Buton 3 - Pin 6
  • Buton 4 - Pin 7

Software Design

Partea Software a acestui proiect a fost dezvoltată în Arduino IDE. O parte consistentă a implemtării software a cuprins utilizarea corectă a bibliotecilor și funcțiilor specifice fiecărei componente.

Astfel bibliotecile folosite sunt:

  • SD.h ( pentru lucrul cu un SD-card)
  • SPI.h
  • Adafruit_GFX.h
  • Adafruit_ST7735.h ( impreună cu cele 2 de mai sus, au fost utilizare în interacționarea cu ecranul)
  • Wire.h
  • AHTxx.h ( acesta a fost preluată dintr-o resursa Github [1] și, impreună cu biblioteca anterioară, a fost folosită pentru interacționarea cu senzorul de temperatură și umiditate)

Încărcarea imaginilor de pe SD card pe ecran se realizează folosind o funție specială, bmpDraw [2]. Funcția primește numele fisirului imagine care trebuie converit, cât și un atribut de tip Integer, filtru, ce are ca scop identificarea filtrului ce trebuie folosit în cadrul imaginii curente. Daca nici un filtru nu este selectat, imaginea va fi afișată cum apare pe SD card. Funcția efectuază o verificare a imaginii în prealabil operațiunii de încărcare, verificând formatul, dimensiunile și Bit depth. Ulterior aceasta efectuază operații de convertire a pixelilor într-un formt acceptat de ecranul LCD și afișează fiecare pixel pe ecran. Încarăcarea unui imaginiri durează aproximativ o secundă în funție de complexitatea acesteia.

La un moment dat, funcția extrage pixelii imaginii curente în formatul RGB, pe 3 canale de culoare. În acest punct am implementat filtrele de culoare, condiționate de atributul filtru. Acestea sunt implementate prin interactiunea cu canalele de culoare.

În funcția loop se fac verificările pentru stările fiecărui buton. O instrucțiune if este cea care imparte în 2 ramuri programul, o ramură pentru citirea și afisarea temperaturii și o ramură pentru derularea imaginilor. În ambele ramuri se face verficarea butonului 1 ( acest lucru fiind insoțit și de partea de LED explicată la Interfața Utilizator). Filtrere pot fi accesate doar în cadrul derulării de imagine, prin urmarea verificarea butoanelor de filtre se face doar pe ramura corespunzătoare derulării de imagini.

Rezultate Obţinute

Partea de Hardwere a programului a fost obtinuta dupa ce am schimbat mai multe piese. In special ecranul a trebui sa fie schimbat deoarece primul ecran cu care am lucrat a nu avea un pin de CS, acesta fiind incorporat prin pin-ul de GND. Astfel am utilizat in final un ecranul ST7735, cu care am realizat montajul in mai putin de o ora ( dupa ce ma straduisem mai mult de 2 saptamani cu ecranul initial).

La partea de Softwere partea cea mai grea a fost implementarea comutatiei dintre slideshow-ul de imagini si afisarea temperaturii. Obiectivul a fost ca slideshow-ul sa poata sa fie intrerupt oricand pentru a afisa temperatura, iar apoi prin reapasarea aceluiasi buton sa pot comuta inapoi in slideshow de imagini. Acest lucru s-a implementat cu o rata de succes din 9/10 incercari. (in sensul ca uneori mai apar intarzieri sau nu se mai comuta inapoi in slideshow de imagini si aplicatia trebuie repornita.

Concluzii

Consider ca acest proiect folosește la o capacitate semnificativă resurse plăcuței Arduino UNO, dovedind cât de multe se pot face cu aceasta. Pe tematica acesta se pot, însă, implementa o multitudide de alte imbunătățiri care să ducă proiectul la un cu totul alt nivel. O plăcuță de dezvoltare care să aibă posibilitatea conectării la o rețea Wifi ar putea deschide noi orizonturi pentru un rama foto digitală, precum încărcarea pozelor de pe Cloud sau schimbarea în timp real a oridinii slideshow-ului.

Cu toate acestea, scopul meu în acest proiect a fost dezvoltarea atât hardware cât și software a unei aplicații, cât și întelegerea din punct de verede practic al conceptelor legate de Arduino UNO.

Download

Jurnal

  • 27 Aprilie - Comanda piese
  • 5 Mai - Creare pagina eiki
  • 10 Mai - Verificare individuala a pieselor
  • 16 Mai - Realizare montaj si soft initial
  • 20 Mai - Realizare soft intermediar
  • 22 Mai - Realizare soft final
  • 23 Mai - Prezentare in cadrul Laboratorului

Bibliografie/Resurse

pm/prj2023/adarmaz/rama-foto.txt · Last modified: 2023/05/29 22:45 by raluca.popescu1403
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0