HOW-TO: digital picture FRAME, 100% diy
There are a ton of digital picture frame tutorials out there. many are old laptops with crafty case reconfigurations that fit a photo frame profile.
We set out to build a 100% DIY, scratch-built digital picture frame. Our frame has a 12bit color LCD, gigabytes of storage on common, FAT-formatted microSD cards, and you can build it at home. We’ve got the details below.
Panoramica del concetto
The bitmap images are stored on common, PC-readable microSD cards. A picture microcontroller reads the images over a three wire SPI bus. The picture processes the image data and writes it to a color LCD over a unidirectional, 9bit SPI-like bus. A configuration file on the SD card defines the delay between images.
Hardware
Clicca per un’immagine schematica a grandezza naturale (PNG). The circuit and PCB are developed using the freeware version of Cadsoft Eagle. Tutti i file per questo progetto sono inclusi nell’archivio del progetto collegato alla fine dell’articolo.
Microcontrollore.
Abbiamo utilizzato un microchip microcontrollore soic Microchip PIC24FJ64GA002 28PIN (IC1) in questo progetto. We really like this chip because the peripheral pin select feature lets us put essential features on the pins we want; this gives a smaller, simpler, much more compact PCB. Each power pin has a 0.1uF bypass capacitor to ground (C1,2). The internal 2.5volt regulator requires a 10uF tantalum capacitor (C12). The chip is programmed through a five pin header, SV1. R1 is a pull-up resistor for the MCLR function on pin 1. read much more about this chip in our PIC24F introduction.
A 32.768kHz crystal (Q1) and two 27pF capacitors (C10,11) offer an oscillator for the real-time clock calendar (RTCC). These parts are optional, the initial firmware doesn’t use them. The RTCC could be used as part of a function that superimposes the current time on the screen. buttons connected to the programming header could be used to set the time.
scheda SD
MicroSD cards are completely compatible with regular SD cards, microSD cards can be used in an SD card reader/writer with an adapter. We evaluated several microSD card holders, and settled on one from SparkFun Electronics. The microSD card requires a bypass capacitor between the power pin and ground (C3). An LED indicates microSD read activity, but its also helpful for general debugging (LED1, R2).
Color LCD 128×128 Nokia knock-off
This project is developed around SparkFun’s $20 color LCD panel. The LCD logic runs at 3.3volts and requires a decoupling capacitor (C4). The LED backlight requires a separate 7volt supply, and appears to have an internal current limiter because example designs don’t use external resistors.
The LCD has a separate input for the 3.3volt display supply. numerous report noise in the display if this voltage isn’t clean. We used a ferrite bead (L1) and 0.1uF capacitor (C5) to filter the supply, and haven’t experienced any problems. This even dealt with a dirty home-etched prototype. The ferrite bead type isn’t important, we used one left over from our tiny web server project.
The small connector is easy to solder on a professional board with a solder mask, but purchase several as insurance. SparkFun has a PCB footprint for this part in their Eagle parts library, but the spacing between the pads is smaller than Olimex or BatchPCB will manufacture. We fudged it by decreasing the pad size to get much more space between. Don’t depend on the connector to hold the LCD in place, use tape to hold it down. We used sticky-tack to attach the LCD temporarily.
We prototyped an LCD carrier board prior to sending the final design for manufacture. We recommend against using a ground fill under the connector without a solder mask.
Alimentazione elettrica
A 3.3volt supply, offered by an LD1117S33 (IC2), powers the PIC, microSD card, LCD logic, and LCD display. IC2 requires a 0.1uF bypass capacitor (C6) on the supply side, and a 10uF capacitor (C13) on the output. We used the same tantalum capacitor that we used for the picture internal regulator.
The LCD backlight is powered by an LM317 adjustable regulator (IC3) configured to 7volts with 240 (R5) and 1100 (R6) ohm resistors. C7 and C8 are 0.1uF bypass capacitors for the LM317.
J1 is a SMD power jack for a common 2.1mm DC barrel plug. C11 is a 10uF electrolytic capacitor that smooths any lag in the supply voltage. C11 has a maximum 16volt input rating, so the supply voltage is best kept under 12volts. 9-12 volts is probably the idea power supply range.
PCB.
Click for a full size placement diagram (PNG). L1, C5, and the LCD are on the opposite side. We can’t prototype two-sided boards in mom’s basement, so we sent this design to BatchPCB. next week we’ll show you how we did it.
Elenco delle parti
Parte
Descrizione
IC1
PIC 24FJ64GA002 (SOIC)
IC2
LD1117S33 3.3volt regulator (SOT223)
IC3
LM317 adjustable regulator (SOT223)
U$1
Color LCD 128×128 Nokia knock-off
–
Nokia knock-off connector
C1-8
0.1uF capacitor (0805)
C10,11
27pF capacitor (0805)
C12,13
10uF tantCondensatore allume (SMCA)
C14.
10UF condensatore elettrolitico (SMD)
L1.
Perle di ferrite (0805)
LED1.
LED (0805)
Q1.
32.768khz crystal.
R1.
Resistore di 2000 ohm (0805)
R2.
Resistore 390 Ohm (0805)
R5.
Resistore 240 ohm (0805)
R6.
Resistenza 1100 ohm (0805)
SD1.
titolare della scheda microSD
J1.
2.1mm Power Jack (SMD)
Sv1.
0.1 “intestazione maschile maschile, miglior angolo
Firmware
Il firmware è scritto in C utilizzando la versione dimostrativa totalmente gratuita del compilatore Immagine C30. Impara tutto sul lavoro con questa immagine nella nostra introduzione alla serie 24F Series. Il firmware è incluso nell’archivio del progetto alla fine dell’articolo.
Libreria di disco FAT12 / 16/32
La biblioteca Fat 12/16/32 di Microchip ci offre un facile accesso ai file memorizzati su schede SD. Abbiamo dato una descrizione completa di questa libreria nel nostro server web su un progetto di scheda aziendale. Se hai problemi a leggere una carta con la libreria, verificare che sia stato formattato in una videocamera digitale o utilizzando il formattero della scheda SD di Panasonic.
Driver LCD Nokia 6100
Sparkfun ha un chauffeur di colore 8 bit di base (zip) per il Nokia 6100. L’abbiamo portato alla foto e lo ha aggiornato per la modalità di colore a 12 bit di 2byte-per pixel. Con una piccola quantità di complessità aggiunta, la velocità di scrittura pixel potrebbe essere facilmente migliorata utilizzando una modalità 12 bit diversa che offre due pixel utilizzando 3 byte.
Il display LCD utilizza un protocollo a 9 bit, un bit molto più di molti hardware SPI gestirà. Il primo bit indica al display LCD se i successivi 8 bit sono dati o un comando. Sull’immagine 24F è impossibile sbattere manualmente nel primo bit, quindi utilizzare la periferica SPI per inviare i restanti 8 bit. Perdiamo il controllo diretto dei pin quando l’hardware SPI è abilitato. La voce dei dati deve essere completamente Bit-Banged, che riduce drasticamente la velocità rivitalizzata dello schermo.
Leggere bitmaps.
Ci sono un sacco di formati bitmap. La compatibilità Windows mantiene tutti usando il formato antico di Windows V3. Abbiamo creato due crature C per leggere i dati Bitmap V3.
Compensare
Bytes.
Intestazione del file bitmap.
0.
2.
Sempre 0x42 0x4D (esagono per BM)
2.
4.
Dimensione del file (byte)
6.
2.
Riservato, ignorato
8.
2.
Riservato, ignorato
10.
4.
Posizione in file dei primi dati bitmap
I file bitmap iniziano con un’intestazione del file 14Byte. I primi due byte sono le lettere ‘BM’, indicando una bitmap. Se i primi due byte sono corretti, il firmware carica l’intestazione delle informazioni. Gli ultimi quattro byte indicano l’inizio dei dati bitmap, ma il firmware attuale presuppone che inizierà alla fine delle intestazioni.
Compensare
Bytes.
Intestazione delle informazioni bitmap.
14.
4.
Lunghezza dell’intestazione delle informazioni bitmap (40bytes per bitmap di Windows V3)
18.
4.
Larghezza (pixel)
22.
4.
Altezza (pixel)
26.
2.
Piani di colore, sempre 1
28.
2.
Bit colori per pixel (1, 4, 8, 16, 24 e 32)
30.
4.
Metodo di compressione, leggiamo solo non compressi (tipo 0)
34.
4.
Lunghezza dei dati dell’immagine
38.
4.
Risoluzione orizzontale (pixel per metro)
42.
4.
Risoluzione verticale (pixel per metro)
46.
4.
Numero di colori, ignorato.
50.
4.
Numero di colori essenziali, ignorati.
Un’intestazione di informazione bitmap di Windows V3 è lunga 40 moglie. Il firmware verifica che la lunghezza dell’intestazione (offset 14) è 40, indicando una bitmap V3. Se la larghezza (132), altezza (132), profondità del colore (24) e compressione (0) Tutto il check-out, i dati dell’immagine vengono elaborati e output sullo schermo.
Compensare
Bytes.
Dati bitmap dell’immagine a 24 bit
54+ (3N)
1.
pixel n rosso valore
54+ (3N + 1)
1.
pixel n verde valore
54+ (3N + 2)
1.
pixel n blu valore
Le immagini bitmap hanno non compresso, 1: 1 rappresentazioni dei dati dei pixel memorizzati in tre sequenze di byte. I dati iniziano nell’angolo in basso a destra dell’immagine; Primo il valore rosso, quindi verde e blu. Wikipedia ha una bitmap completa a piedi attraverso.
Se la profondità del colore di un’immagine bitmap (24 bit) è maggiore del display del display LCD (12 bit), dobbiamo scartare i bit meno significativi dei dati del colore. Convertire dal colore a 24 bit in colore a 12 bit, abbiamo appena mancubato metà dei dati del colore; Un valore 8 bit del 11110011 viene spinto quattro bit a destra, dando il 1111.
Passerella del firmware
Init Pic, SD, LCD.
Leggi Config.ini, crea se non esiste.
Utilizzare il primo carattere di config.ini da impostare tra il ritardo dell’immagine.
Cerca immagini, apri l’immagine successiva.
Leggere e controllare l’intestazione del file bitmap per il formato corretto.
Leggere e controllare l’intestazione delle informazioni bitmap per la versione, la dimensione, il colore.
Leggi e visualizza ogni valore pixel. Regolare la profondità bit secondo necessità.
Ritardo, quindi ripetere da 4.
Preparazione delle immagini
Per mantenere semplice questa demo, la cornice fotografica visualizza solo il formato bitmap più comune. Le immagini dovrebbero essere dimensionate a 132x132pixels, con colore a 24 bit.
Apri un’immagine con un programma di editing di immagini.
Disegna una casella di selezione quadrata sopra la parte dell’immagine che si desidera utilizzare, in genere usando il turno e trascinare.
Ritagliare l’immagine.
Dimensioni l’immagine a 132x132pixel.
Salva l’immagine come bitmap di Windows, 24 bit della profondità del colore.
Altre dimensioni e formati di immagini potrebbero essere supportati con un aggiornamento del firmware (PNG, JPG), in particolare con un upgrade microcontrollore compatibile con PIN a un enorme DSPIC 33F.
Usandolo
Metti le immagini nella directory principale di una scheda SD formattata grasso. A seconda della Los AngelesST Device Per formattare la scheda, potrebbe essere necessario formattare con una videocamera digitale o il Formatter SD Panasonic.
Facoltativo: crea un file CONFIG.INI con un editor di testo. Immettere una singola cifra, da 0 a 9, per impostare il ritardo dell’immagine tra. Salva il file. Se non si crea il proprio file Config.ini, verrà creato per te con un ritardo di 1 secondo.
Metti la scheda nella presa e collega la cornice digitale. Le immagini scorreranno sullo schermo con il ritardo definito.
Prendendolo oltre
Vediamo un sacco di potenzialità in questa facile cornice digitale. Numerose funzionalità possono essere aggiunte con un aggiornamento del firmware, alcune sono le basi per l’hardware futuro.
Visualizza altri formati di immagine, immagini in scala
Dissolvenza casuale e salviette
Visualizza tempo e data sull’immagine, impostare con i pulsanti collegati ai pin di programmazione
Estendere le opzioni di configurazione in Config.ini per includere ritardi più lunghi, dissolvenza o cancellazione del tipo
Utilizzare una Directory secondaria per le immagini perché ci sono alcuni limiti di file nella directory principale di una scheda SD formattata grasso.
Aggiungi una connessione Ethernet per gli aggiornamenti di visualizzazione in rete.
Scarica: dpf.v1.zips è stato spostato qui.