Există o tonă de tutoriale de cadre de imagine digitală acolo. Mulți sunt laptop-uri vechi cu reconfigurare carcasă care se potrivesc unui profil de cadre foto.
Am stabilit să construim un cadru de imagine digital 100%, construit de zgârieturi. Cadrul nostru are o LCD de culori de 12 biți, gigaocteți de stocare pe cartele microSD comune, formatate de grăsime și îl puteți construi acasă. Avem detaliile de mai jos.
Conceptul de ansamblu
Imaginile bitmap sunt stocate pe carduri microSD comune, citibile cu PC. Un microcontroler imagine citește imaginile pe un autobuz de trei sârmă. Imaginea procesează datele de imagine și o scrie într-o LCD de culoare pe un autobuz unidirecțional, de 9bit Spi. Un fișier de configurare de pe cardul SD definește întârzierea dintre imagini.
Hardware
Faceți clic pentru o imagine schematică de dimensiune completă (PNG). Circuitul și PCB sunt dezvoltate utilizând versiunea freeware a Cadsoft Eagle. Toate fișierele pentru acest proiect sunt incluse în arhiva proiectului legată la sfârșitul articolului.
Microcontroler.
Am folosit un microcontroler SOIC Microchip PIC24FJ64GA002 28Pin (IC1) în acest proiect. Chiar ne place acest cip, deoarece caracteristica PIN a PIN-ului periferic ne permite să punem caracteristici esențiale pe știfturile pe care le dorim; Acest lucru oferă un PCB mai mic, mai simplu, mult mai compact. Fiecare știft de alimentare are un condensator bypass de la sol (C1,2). Regulatorul intern 2.5Volt necesită un condensator de tantal de 10 g (C12). Cipul este programat printr-un antet de cinci pini, SV1. R1 este un rezistor de tragere pentru funcția MclR pe PIN 1. Citiți mai multe despre acest cip în introducerea PIC24F.
Un cristal de 32,768 khz (Q1) și două condensatoare 27pf (C10,11) oferă un oscilator pentru calendarul ceasului în timp real (RTCC). Aceste părți sunt opționale, firmware-ul inițial nu le folosește. RTCC ar putea fi utilizat ca parte a unei funcții care suprapune ora curentă pe ecran. Butoanele conectate la antetul de programare pot fi utilizate pentru a seta ora.
card SD
Cardurile MicroSD sunt complet compatibile cu cardurile SD obișnuite, cardurile MicroSD pot fi utilizate într-un cititor de carduri SD / scriitor cu un adaptor. Am evaluat mai mulți titularii de carduri microSD și am stabilit unul de la Sparkfun Electronics. Cardul microSD necesită un condensator de by-pass între știftul de alimentare și solul (C3). Un LED indică activitatea de citire microSD, dar este de asemenea utilă pentru depanarea generală (LED1, R2).
Culoare LCD 128 × 128 Nokia Knock-off
Acest proiect este dezvoltat în jurul panoului LCD de culori de 20 de dolari Sparkfun. Logica LCD rulează la 3.3Volts și necesită un condensator de decuplare (C4). Lumina de fundal cu LED necesită o sursă separată de 7Voldă și pare să aibă un limitator intern de curent, deoarece de exemplu modelele nu utilizează rezistoare externe.
LCD are o intrare separată pentru alimentarea cu afișaj 3.3Voltă. Numeroase zgomot de raportare pe ecran Dacă această tensiune nu este curată. Am folosit o margele de ferită (L1) și condensator de 0.1UF (C5) pentru a filtra aprovizionarea și nu am experimentat probleme. Acest lucru se ocupă chiar de un prototip murdar de acasă. Tipul de margele de ferită nu este important, am folosit unul la stânga de la proiectul nostru de server web mic.
Conectorul mic este ușor de lipit pe o placă profesională cu o mască de lipit, dar achiziționează mai multe asigurări. Sparkfun are o amprentă PCB pentru această parte în biblioteca lor de piese de vultur, dar distanța dintre tampoane este mai mică decât Olimex sau BoditCB va produce. Am lăsat-o prin scăderea dimensiunii plăcuței pentru a obține mult mai mult spațiu între. Nu depindeți de conector pentru a ține ecranul LCD, utilizați bandă pentru ao menține în jos. Am folosit Sticky-Tack pentru a atașa temporar LCD-ul.
Prototyped o placă de transport LCD înainte de a trimite proiectul final pentru fabricare. Vă recomandăm să utilizați o completare a solului sub conectorul fără o mască de lipit.
Alimentare electrică
O aprovizionare 3.3Voltă, oferită de un LD1117S33 (IC2), poște cu PIC, cardul microSD, logica LCD și afișajul LCD. IC2 necesită un condensator de bypass de 0,1UF (C6) pe partea de alimentare și un condensator de 10UF (C13) pe ieșire. Am folosit același condensator tantal pe care am folosit-o pentru regulatorul intern de imagine.
Lumina de fundal LCD este alimentată de un regulator reglabil LM317 (IC3) configurat la 7volți cu rezistențe 240 (R5) și 1100 (R6) ohm. C7 și C8 sunt condensatoare de bypass de 0.1UF pentru LM317.
J1 este o mufă de putere SMD pentru un dop comun de 2,1 mm DC. C11 este un condensator electrolitic 10UF care netezește orice întârziere în tensiunea de alimentare. C11 are o valoare maximă de intrare pe 16Voltă, astfel încât tensiunea de alimentare este mai bine ținută sub 12Volts. 9-12 volți este probabil gama de alimentare a puterii idei.
PCB.
Faceți clic pentru o diagramă de plasare completă (PNG). L1, C5, iar LCD-ul se află pe partea opusă. Nu putem prototipe consiliile cu două fețe în subsolul mamei, așa că am trimis acest design la batchpcb. Săptămâna viitoare vă vom arăta cum am făcut-o.
Lista de componente
Parte
Descriere
IC1.
PIC 24FJ64GA002 (SOIC)
IC2.
LD1117S33 3.3 Regulator de volum (SOT223)
IC3
LM317 Regulator reglabil (SOT223)
U$1
Culoare LCD 128 × 128 Nokia Knock-off
–
Conectorul nokia knock-off
C1-8
0.1UF condensator (0805)
C10,11
27pF capacitor (0805)
C12,13
10uF tantAlum condensator (SMCA)
C14.
10UF condensator electrolitic (SMD)
L1.
Ferită Bead (0805)
LED1.
LED (0805)
Q1.
32.768KHZ Crystal.
R1.
2000 rezistor Ohm (0805)
R2.
390 rezistor Ohm (0805)
R5.
Rezistor de 240 ohm (0805)
R6.
1100 ohm rezistor (0805)
SD1.
Titularul cardului microSD
J1.
2.1mm Power Jack (SMD)
SV1.
0.1 “Antetul pinului masculin, cel mai bun unghi
Firmware
Firmware-ul este scris în C folosind versiunea de demonstrație gratuită a compilatorului imagine C30. Aflați totul despre lucrul cu această imagine în introducerea noastră în seria de imagini 24F. Firmware-ul este inclus în arhiva proiectului la sfârșitul articolului.
FAT12 / 16/22 bibliotecă de disc
Biblioteca Microchip Fat 12/16/32 ne oferă acces ușor la fișierele stocate pe cardurile SD. Am oferit o descriere completă a acestei biblioteci în serverul nostru web pe un proiect de card de companie. Dacă aveți probleme cu citirea unei cărți cu biblioteca, verificați dacă a fost formatată într-o cameră video digitală sau utilizând formatorul cardului SD al lui Panasonic.
Driverul LCD Nokia 6100
Sparkfun are un șofer de bază de 8 biți (ZIP) pentru Nokia 6100. Am pornit-o la PIC și l-am actualizat pentru modul de culoare 2byte-per-pixel 12bit. Cu o cantitate mică de complexitate adăugată, rata de scriere a pixelului ar putea fi ușor îmbunătățită utilizând un mod diferit de 12bit care oferă doi pixeli utilizând 3 octeți.
LCD utilizează un protocol de 9bit, unul mult mai mult decât multe hardware SPI se va ocupa. Primul bit indică LCD dacă următoarele 8bite sunt date sau o comandă. În imagine 24f este imposibil să bată manual în primul bit, și apoi să utilizați perifericul SPI pentru a trimite celelalte 8bits. Pierdem controlul direct asupra pinilor atunci când spi-ul hardware este activat. Introducerea datelor trebuie să fie complet biți, ceea ce reduce în mod dramatic rata de revitalizare a ecranului.
Citirea bitmaps
Există o formă de formate bitmap. Compatibilitatea Windows păstrează toată lumea folosind formatul vechi Windows V3. Am creat două structuri C pentru a citi datele bitmap v3.
Decalaj
Octeți
Bitmap fișier antet
0.
2.
Întotdeauna 0x42 0x4d (Hex pentru BM)
2.
4.
Dimensiunea fișierului (octeți)
6.
2.
Rezervat, ignorat
8.
2.
Rezervat, ignorat
10.
4.
Locație în fișierul primelor date Bitmap
Fișierele bitmap încep cu un antet de fișiere de 14byte. Primii doi octeți sunt literele “BM”, indicând un bitmap. Dacă primii doi octeți sunt corecte, firmware-ul încarcă antetul de informații. Ultimii patru octeți indică începutul datelor Bitmap, dar firmware-ul curent presupune doar că va începe la sfârșitul anteturilor.
Decalaj
Octeți
Bitmap Informații antet
14.
4.
Lungimea antetului informației bitmap (40byte pentru Windows V3 Bitmaps)
18.
4.
Lățime (pixeli)
22.
4.
Înălțime (pixeli)
26.
2.
Planuri de culoare, întotdeauna 1
28.
2.
Bițe de culoare per pixel (1, 4, 8, 16, 24 și 32)
30.
4.
Metoda de compresie, citim doar necomprimat (tip 0)
34.
4.
Datele de date imagine
38.
4.
Rezoluție orizontală (pixeli pe metru)
42.
4.
Rezoluție verticală (pixel per metru)
46.
4.
Numărul de culori, ignorat.
50.
4.
Numărul de culori esențiale, ignorate.
Un antet de informații Bitmap Windows V3 este de 40 de ani lungime. Firmware-ul verifică că lungimea antetului (offset 14) este de 40, indicând un bitmap v3. În cazul lățimii (132), înălțimea (132), adâncimea de culoare (24) și compresia (0) toate verificați, datele de imagine sunt procesate și ieșire pe ecran.
Decalaj
Octeți
Imagine de 24 de biți Bitmap
54+ (3n)
1.
pixel n valoare roșie
54+ (3n + 1)
1.
Pixel N valoare verde
54+ (3n + 2)
1.
Pixel n albastru valoare
Imaginile bitmap au necomprimat, 1: 1 reprezentări ale datelor pixelului stocate în trei secvențe octeți. Datele pornește în colțul din dreapta jos al imaginii; Mai întâi valoarea roșie, apoi verde și albastră. Wikipedia are o plimbare bitmap completă.
Dacă adâncimea de culoare a unei imagini bitmap (24bit) este mai mare decât LCD-ul poate afișa (12bit), trebuie să renunțăm la biții mai puțin semnificativi de date de culoare. Pentru a converti de la culoarea de 24 de biți la culoarea de 12 biți, tocmai am chuck jumătate din datele de culoare; O valoare de 8bit de 11110011 este împinsă patru biți în dreapta, dând 1111.
Firmware-ul
Init Pic, SD, LCD.
Citiți config.ini, creați dacă nu există.
Utilizați primul caracter al config.ini pentru a seta între întârzierea imaginii.
Căutați imagini, deschideți imaginea următoare.
Citiți și verificați antetul fișierului Bitmap pentru un format adecvat.
Citiți și verificați antetul informațiilor Bitmap pentru versiune, dimensiune, culoare.
Read and display each pixel value. adjust bit depth as needed.
Delay, then repeat from 4.
Preparing images
To keep this demo simple, the photo frame only displays the most common bitmap format. images should be sized to 132x132pixels, with 24bit color.
Open a picture with an image editing program.
Draw a square selection box over the part of the image you want to use, typically using shift and drag.
Crop the image.
Size the image to 132x132pixels.
Save the image as a windows bitmap, 24bits of color depth.
Other image sizes and formats could be supported with a firmware upgrade (PNG, JPG), especially with a pin-compatible microcontroller upgrade to a huge dsPIC 33F.
Folosind-o
Put images in the root directory of a FAT formatted SD card. depending on the laDispozitivul St Pentru a formata cardul, ar putea fi necesar să fie formatat cu o cameră video digitală sau cu formatorul Panasonic SD.
Opțional: Faceți un fișier config.ini cu un editor de text. Introduceți o singură cifră, de la 0-9, pentru a seta întârzierea dintre imagine. Salvați fișierul. Dacă nu creați propriul fișier config.ini, unul va fi creat pentru dvs. cu o întârziere de o a doua oară.
Puneți cardul în soclu și conectați cadrul de imagine digitală. Imaginile vor cicliza pe ecran cu întârzierea definită.
Luând-o mai departe
Vedem o mulțime de potențial în acest cadru digital ușor digital. Numeroasele caracteristici pot fi adăugate cu o upgrade de firmware, unele sunt baza pentru hardware-ul viitor.
Afișați alte formate de imagine, imagini de scară
Aleatoare se estompează și șervețele
Afișați ora și data peste imagine, setați cu butoanele conectate la știfturile de programare
Extindeți opțiunile de configurare din configurație pentru a include întârzieri mai lungi, se estompeze sau de ștergere
Utilizați un sub direct pentru imagini, deoarece există unele limitări ale fișierelor către directorul rădăcină al unui card SD formatat de grăsime.
Adăugați o conexiune Ethernet pentru actualizările afișajului în rețea.
Descărcați: dpf.v1.zip sa mutat aici.