HOW-TO: Cadre photo numérique, 100% bricolage
Il y a une tonne de tutoriels de cadre d’image numérique. Beaucoup sont de vieux ordinateurs portables avec des reconfigurations de cas rusé qui conviennent à un profil de cadre photo.
Nous avons entrepris de construire un cadre d’image numérique à 100% bricolage et construit des rayures. Notre cadre a un écran LCD couleur 12 bits, des gigaoctets de stockage sur des cartes microSD en forme de graisse et que vous pouvez la construire à la maison. Nous avons les détails ci-dessous.
Vue d’ensemble du concept
Les images bitmap sont stockées sur des cartes microSD communes courantes. Un microcontrôleur d’image lit les images sur un bus de trois fils. La photo traite les données d’image et l’écrit à une couleur LCD sur un bus unidirectionnel, de type SPI de 9 bits. Un fichier de configuration sur la carte SD définit le délai entre les images.
Matériel
Cliquez pour une image schématique de taille complète (PNG). Le circuit et le circuit imprimé sont développés à l’aide de la version freeware de Cadsoft Eagle. Tous les fichiers de ce projet sont inclus dans les archives de projet liées à la fin de l’article.
Microcontrôleur
Nous avons utilisé un microcontrôleur SOIC de microchip PIC24FJ64GA002 28PIN (IC1) dans ce projet. Nous aimons vraiment cette puce car la fonctionnalité de sélection de broches périphériques nous permet de nous mettre des fonctionnalités essentielles sur les broches que nous souhaitons; Cela donne un PCB plus petit, plus simple, beaucoup plus compact. Chaque code POWER a un condensateur de dérivation 0.1UF à la terre (C1,2). Le régulateur interne 2.5volt nécessite un condensateur Tantalum 10UF (C12). La puce est programmée à travers un en-tête de cinq broches, SV1. R1 est une résistance pull-up pour la fonction MCLR sur la broche 1. Lisez beaucoup plus sur cette puce dans notre introduction PIC24F.
Un cristal de 32,76 kHz (Q1) et deux condensateurs 27PF (C10,11) offrent un oscillateur pour le calendrier d’horloge en temps réel (RTCC). Ces pièces sont facultatives, le micrologiciel initial ne les utilise pas. Le RTCC pourrait être utilisé dans le cadre d’une fonction qui superpose l’heure actuelle à l’écran. Les boutons connectés à l’en-tête de programmation pourraient être utilisés pour définir l’heure.
carte SD
Les cartes microSD sont entièrement compatibles avec des cartes SD régulières, des cartes MicroSD peuvent être utilisées dans un lecteur / écrivain de carte SD avec un adaptateur. Nous avons évalué plusieurs détenteurs de cartes microSD et réglé sur un de Sparkfun Electronics. La carte microSD nécessite un condensateur de dérivation entre la broche d’alimentation et le sol (C3). Une LED indique une activité de lecture microSD, mais elle est également utile pour débogage général (LED1, R2).
Couleur LCD 128 × 128 Nokia Knock-off
Ce projet est développé autour du panneau LCD couleur de 20 $ de SparkFun. La logique LCD fonctionne à 3,3 volts et nécessite un condensateur de découplage (C4). Le rétroéclairage LED nécessite une alimentation 7 pouces distincte et semble avoir un limiteur de courant interne, car les exemples de conceptions n’utilisent pas de résistances externes.
L’écran LCD dispose d’une entrée distincte pour l’alimentation d’affichage 3.3Volt. Nombre de bons de rapport à l’écran si cette tension n’est pas propre. Nous avons utilisé une perle de ferrite (L1) et 0.1uf condensateur (C5) pour filtrer l’alimentation et n’avons rencontré aucun problème. Cela a même traité avec un prototype sale et gravé à la maison. Le type de perles de ferrite n’est pas important, nous avons utilisé une gauche sur notre minuscule projet Web Server.
Le petit connecteur est facile à souder sur une carte professionnelle avec un masque de soudure, mais achète plusieurs comme une assurance. SparkFun a une empreinte de circuit imprimé pour cette partie dans leur bibliothèque de pièces d’aigle, mais l’espacement entre les pads est plus petit que OLIMEX ou BatchPCB fabriquera. Nous l’avons contracté en diminuant la taille du tampon pour obtenir beaucoup plus d’espace entre. Ne comptez pas sur le connecteur pour tenir l’écran LCD en place, utilisez du ruban adhésif pour le maintenir. Nous avons utilisé Sticky-Tack pour attacher temporairement l’écran LCD.
Nous prototyposons une carte de support LCD avant d’envoyer la conception finale pour la fabrication. Nous vous recommandons d’utiliser un remplissage au sol sous le connecteur sans masque de soudure.
Source de courant
Une alimentation 3.3Volt proposée par un LD1117S33 (IC2), alimente la photo, la carte microSD, la logique LCD et l’écran LCD. IC2 nécessite un condensateur de dérivation 0.1UF (C6) sur le côté de l’alimentation et un condensateur 10UF (C13) sur la sortie. Nous avons utilisé le même condensateur de Tantalum que nous avons utilisé pour le régulateur interne de la photo.
Le rétroéclairage LCD est alimenté par un régulateur réglable LM317 (IC3) configuré à 7volts avec des résistances 240 (R5) et 1100 (R6) OHM. C7 et C8 sont des condensateurs de dérivation 0.1UF pour le LM317.
J1 est une prise d’alimentation SMD pour une fiche courante de baril DC de 2,1 mm. C11 est un condensateur électrolytique 10UF qui lisse tout le décalage dans la tension d’alimentation. C11 a une note d’entrée maximale de 16 Volts, de sorte que la tension d’alimentation est mieux conservée sous 12 volts. 9-12 volts est probablement la gamme d’alimentation de l’idée.
Cavalier
Cliquez pour un diagramme de placement complet (PNG). L1, C5 et l’écran LCD sont du côté opposé. Nous ne pouvons pas prototyper les conseils à deux côtés dans le sous-sol de maman, nous avons donc envoyé cette conception à BatchPCB. La semaine prochaine, nous vous montrerons comment nous l’avons fait.
Liste des pièces
Partie
La description
Ic1
PIC 24FJ64GA002 (SOIC)
Ic2
LD1117S33 3.3Volt régulateur (SOT223)
Ic3
Régulateur réglable LM317 (SOT223)
U $ 1
Couleur LCD 128 × 128 Nokia Knock-off
–
Nokia Knock-off Connector
C1-8
0.1uf condensateur (0805)
C10,11
Condensateur 27PF (0805)
C12,13
10UF TANTSalum capacitor (SMCA)
C14
10uF electrolytic capacitor (SMD)
L1
ferrite bead (0805)
LED1
LED (0805)
Q1
32.768kHz crystal
R1
Résistance de 2000 Ohm (0805)
R2
390 ohm résistance (0805)
R5
240 ohm resistor (0805)
R6
1100 ohm resistor (0805)
SD1
microSD card holder
J1
2.1mm power jack (SMD)
SV1
0.1” male pin header, best angle
Firmware
The firmware is written in C using the totally free demonstration version of the picture C30 compiler. learn all about working with this picture in our introduction to the picture 24F series. The firmware is included in the project archive at the end of the article.
FAT12/16/32 disk library
Microchip’s FAT 12/16/32 library gives us easy access to files stored on SD cards. We gave a comprehensive description of this library in our web server on a company card project. If you’re having trouble reading a card with the library, check that it was formatted in a digital video camera or using Panasonic’s SD card formatter.
Nokia 6100 LCD driver
SparkFun has a basic 8bit color chauffeur (ZIP) for the Nokia 6100. We ported it to the PIC, and updated it for the 2byte-per-pixel 12bit color mode. With a small amount of added complexity, the pixel write rate could easily be enhanced by using a different 12bit mode that delivers two pixels using 3 bytes.
The LCD uses a 9bit protocol, one bit much more than many SPI hardware will handle. The first bit tells the LCD whether the next 8bits are data or a command. On the picture 24F it’s impossible to manually bang in the first bit, and then use the SPI peripheral to send the remaining 8bits. We lose direct control of the pins when hardware SPI is enabled. The data entry has to be completely bit-banged, which dramatically reduces the screen revitalize rate.
Reading Bitmaps
There are a ton of bitmap formats. Windows compatibility keeps everyone using the ancient Windows v3 format. We created two C structs to read the V3 bitmap data.
Décalage
Bytes
Bitmap file header
0
2
Always 0x42 0x4D (hex for BM)
2
4
File size (bytes)
6
2
Reserved, ignored
8
2
Reserved, ignored
dix
4
Location in file of the first bitmap data
Bitmap files start with a 14byte file header. The first two bytes are the letters ‘BM’, indicating a bitmap. If the first two bytes are correct, the firmware loads the information header. The last four bytes indicate the beginning of bitmap data, but the current firmware just assumes it will begin at the end of the headers.
Décalage
Bytes
Bitmap information header
14
4
Length of bitmap information header (40bytes for Windows V3 bitmaps)
18
4
Width (pixels)
22
4
Height (pixels)
26
2
Color planes, always 1
28
2
Color bits per pixel (1, 4, 8, 16, 24 and 32)
30
4
Compression method, we only read uncompressed (type 0)
34
4
Image data length
38
4
Horizontal resolution (pixels per meter)
42
4
Vertical resolution (pixel per meter)
46
4
Number of colors, ignored.
50
4
Number of essential colors, ignored.
A Windows V3 bitmap information header is 40bytes long. The firmware verifies that the header length (offset 14) is 40, indicating a V3 bitmap. If the width (132), height (132), color depth (24), and compression (0) all check out, the image data is processed and output to the screen.
Décalage
Bytes
24bit image bitmap data
54+(3n)
1
pixel n red value
54+(3n+1)
1
pixel n green value
54+(3n+2)
1
pixel n blue value
Bitmap images have uncompressed, 1:1 representations of pixel data stored in three byte sequences. The data starts at the lower right-hand corner of the image; first the red value, then green and blue. Wikipedia has a complete bitmap walk through.
If the color depth of a bitmap image (24bits) is greater than the LCD can display (12bits), we need to discard the least significant bits of color data. To convert from 24bit color to 12bit color, we just chuck half the color data; an 8bit value of 11110011 is pushed four bits to the right, giving 1111.
Firmware walk-through
Init PIC, SD, LCD.
Read config.ini, create if it does not exist.
Use first character of config.ini to set between image delay.
Look for images, open next image.
Read and check bitmap file header for proper format.
Read and check bitmap information header for version, size, color.
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.
En l’utilisant
Put images in the root directory of a FAT formatted SD card. depending on the laST DISPOSITIF Pour formater la carte, il peut être nécessaire d’être formaté avec une caméra vidéo numérique ou du formateur SD Panasonic.
Facultatif: Faites un fichier config.ini avec un éditeur de texte. Entrez un seul chiffre, de 0 à 9, pour définir le délai d’image. Enregistrez le fichier. Si vous ne créez pas votre propre fichier config.ini, on vous sera créé avec un délai de 1 seconde.
Placez la carte dans la prise et branchez le cadre d’image numérique. Les images viendront sur l’écran avec le délai défini.
Le prendre plus loin
Nous voyons beaucoup de potentiel dans ce cadre d’image numérique facile. De nombreuses fonctionnalités peuvent être ajoutées avec une mise à niveau du micrologiciel, certaines constituent la base du matériel futur.
Afficher d’autres formats d’image, images d’échelle
Fonds aléatoires et lingettes
Temps d’affichage et date sur l’image, définissez avec des boutons connectés aux broches de programmation
Étendre les options de configuration dans Config.ini pour inclure des retards plus longs, de la fonte ou du type d’essuyage
Utilisez un serveur sous-répertoire pour les images car il existe certaines limitations de fichiers au répertoire racine d’une carte SD FAT formatée.
Ajoutez une connexion Ethernet pour les mises à jour d’affichage en réseau.
Télécharger: dpf.v1.zip il a déménagé ici.