Category

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.

Visão geral do conceito.

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.

Clique para uma imagem esquemática de tamanho completo (PNG). The circuit and PCB are developed using the freeware version of Cadsoft Eagle. Todos os arquivos para este projeto estão incluídos no arquivo de projeto ligado no final do artigo.

Microcontrolador

Utilizamos um microcontrolador de microcontrolador SOIC do microchip pic24fj64ga002 28pin (IC1) neste projeto. 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.

cartão 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.

Fonte de energia

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.

Partslist

Papel
Descrição

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 tantCapacitor de Alum (SMCA)

C14.
Capacitor eletrolítico 10UF (SMD)

L1.
Bead de ferrite (0805)

LED1.
LED (0805)

Q1.
32.768khz Crystal.

R1.
2000 Ohm Resistor (0805)

R2.
390 Ohm Resistor (0805)

R5.
RESISTOR DE 240 OHM (0805)

R6.
Resistor de 1100 ohm (0805)

Sd1.
suporte de cartão microSD.

J1.
Jack de energia 2.1mm (SMD)

Sv1.
1 “cabeçalho masculino do pino, melhor ângulo

Firmware.

O firmware é escrito em C usando a versão de demonstração totalmente gratuita do compilador de imagem C30. Aprenda tudo sobre trabalhar com esta imagem em nossa introdução à série de imagens 24F. O firmware está incluído no Arquivo do Projeto no final do artigo.

Biblioteca de disco FAT12 / 16/32

A biblioteca Gordura 12/16/32 da Microchip nos dá acesso fácil aos arquivos armazenados em cartões SD. Damos uma descrição abrangente dessa biblioteca em nosso servidor web em um projeto de cartão de empresa. Se você está tendo problemas para ler um cartão com a biblioteca, verifique se foi formatado em uma câmera de vídeo digital ou usando o formatador do cartão SD da Panasonic.

Nokia 6100 LCD Driver

Sparkfun tem um motor básico de cor de 8 bits (Zip) para o Nokia 6100. Nós a portionamos para a foto e atualizei para o modo de cor de 12 bits de 2byte por pixel. Com uma pequena quantidade de complexidade adicionada, a taxa de gravação de pixel pode ser facilmente aprimorada usando um modo de 12 bits diferente que entrega dois pixels usando 3 bytes.

O LCD usa um protocolo de 9 bits, um pouco mais do que muitos hardware SPI lidará. O primeiro bit diz ao LCD se os próximos 8bits são dados ou um comando. Na foto 24F é impossível bater manualmente no primeiro bit e, em seguida, usar o periférico SPI para enviar os 8bits restantes. Perdemos o controle direto dos pinos quando o Hardware SPI está ativado. A entrada de dados deve ser completamente bitada, que reduz drasticamente a tela revitalizar a taxa.

Lendo bitmaps.

Existem uma tonelada de formatos de bitmap. A compatibilidade do Windows mantém todos usando o antigo formato Windows V3. Criamos duas estruturas C para ler os dados de bitmap V3.

Desvio
Bytes.
Cabeçalho do arquivo de bitmap.

0.
2.
Sempre 0x42 0x4D (hex para BM)

2.
4.
Tamanho do arquivo (bytes)

6.
2.
Reservado, ignorado

8.
2.
Reservado, ignorado

10.
4.
Localização no arquivo dos primeiros dados de bitmap

Arquivos de bitmap começam com um cabeçalho de arquivo de 14byte. Os primeiros dois bytes são as letras ‘bm’, indicando um bitmap. Se os dois primeiros bytes estiverem corretos, o firmware carrega o cabeçalho da informação. Os últimos quatro bytes indicam o início dos dados de bitmap, mas o firmware atual só assume que começará no final dos cabeçalhos.

Desvio
Bytes.
Cabeçalho de informações de bitmap

14.
4.
Comprimento do cabeçalho da informação do bitmap (40Bytes para os bitmaps do Windows V3)

18.
4.
Largura (pixels)

22.
4.
Altura (pixels)

26.
2.
Planos de cor, sempre 1

28.
2.
Bits de cor por pixel (1, 4, 8, 16, 24 e 32)

30.
4.
Método de compressão, somente lemos descompactados (tipo 0)

34.
4.
Comprimento de dados de imagem.

38.
4.
Resolução horizontal (pixels por metro)

42.
4.
Resolução vertical (pixel por metro)

46.
4.
Número de cores, ignoradas.

50.
4.
Número de cores essenciais, ignoradas.

Um cabeçalho de informações do Bitmap do Windows V3 é de 40Bytes de comprimento. O firmware verifica se o comprimento do cabeçalho (deslocamento 14) é 40, indicando um bitmap V3. Se a largura (132), a altura (132), a profundidade de cor (24) e a compactação (0), os dados da imagem são processados ​​e em saída para a tela.

Desvio
Bytes.
Dados de bitmap de imagem de 24 bit

54+ (3n)
1.
Pixel N Valor Vermelho

54+ (3n + 1)
1.
Pixel N Valor Verde

54+ (3n + 2)
1.
Pixel N valor azul

As imagens de bitmap têm representadas, 1: 1 representações de dados de pixel armazenados em seqüências de três bytes. Os dados iniciam no canto inferior direito da imagem; primeiro o valor vermelho, depois verde e azul. A Wikipedia tem uma caminhada completa de bitmap.

Se a profundidade de cor de uma imagem de bitmap (24bits) for maior que o LCD pode exibir (12bits), precisamos descartar os bits menos significativos de dados de cores. Para converter da cor de 24 bits para a cor de 12 bits, nós apenas mandamos metade dos dados de cor; Um valor de 8 bits de 11110011 é empurrado quatro bits para a direita, dando 1111.

Firmware andando

Init Pic, SD, LCD.

Leia config.ini, crie se não existir.

Use o primeiro caractere do config.ini para definir entre o atraso da imagem.

Procure por imagens, abra a próxima imagem.

Leia e verifique o cabeçalho do arquivo bitmap para formato adequado.

Leia e verifique o cabeçalho de informações de bitmap para versão, tamanho, cor.

Leia e exiba cada valor de pixel. Ajuste a profundidade de bits conforme necessário.

Atraso, repita de 4.

Preparando imagens

Para manter esta demonstração simples, a moldura exibe apenas o formato de bitmap mais comum. As imagens devem ser dimensionadas para 132x132pixels, com cor 24 bits.

Abra uma foto com um programa de edição de imagens.

Desenhe uma caixa de seleção quadrada por parte da imagem que você deseja usar, normalmente usando shift e arrastar.

Colhe a imagem.

Tamanho a imagem para 132x132pixels.

Salve a imagem como um bitmap do Windows, 24bits de profundidade de cor.

Outros tamanhos e formatos de imagem podem ser suportados com uma atualização de firmware (PNG, JPG), especialmente com uma atualização de microcontrolador compatível com pinos para um enorme dspic 33F.

Usando isso

Coloque imagens no diretório raiz de um cartão SD formatado em gordura. Dependendo do LASt Device para formatar o cartão, pode ser formatado com uma câmera de vídeo digital ou o formatador Panasonic SD.

Opcional: Faça um arquivo config.ini com um editor de texto. Digite um único dígito, de 0 a 9, para definir o atraso entre a imagem. Salve o arquivo. Se você não criar seu próprio arquivo CONFIG.INI, um será criado para você com um atraso de 1 segundo.

Coloque o cartão no soquete e conecte a moldura digital. As imagens vão percorrer a tela com o atraso definido.

Levando mais longe

Vemos muito potencial nesta frame de imagem digital fácil. Numerosos recursos podem ser adicionados com uma atualização de firmware, algumas são a base para o futuro hardware.

Exibir outros formatos de imagem, imagens de escala

Fadeios aleatórios e toalhetes

Exibe a hora e a data sobre a imagem, definida com botões conectados a pinos de programação

Estenda as opções de configuração no Config.ini para incluir atrasos mais longos, desvanecer ou limpar o tipo

Use um anúncio para imagens porque há algumas limitações de arquivo para o diretório raiz de um cartão SD formatado em gordura.

Adicione uma conexão Ethernet para atualizações de exibição em rede.

Download: DPF.V1.ZIP mudou-se para aqui.