Der er et ton af digital billedramme tutorials derude. Mange er gamle laptops med Crafty Case Reconfigurations, der passer til en fotorammeprofil.
Vi satte op for at opbygge en 100% DIY, ridsebaseret digital billedramme. Vores ramme har en 12bit farve LCD, gigabyte opbevaring på almindelige, fedtformaterede microSD-kort, og du kan bygge det hjemme. Vi har detaljerne nedenfor.
Konceptoversigt
Bitmap-billederne gemmes på fælles, pc-læsbare microSD-kort. En billedmikrocontroller læser billederne over en Tre Wire SPI bus. Billedet behandler billeddataene og skriver det til en farve LCD over en ensrettet, 9bit SPI-lignende bus. En konfigurationsfil på SD-kortet definerer forsinkelsen mellem billeder.
Hardware.
Klik for et fuld størrelse skematisk billede (PNG). Kredsløbet og PCB udvikles ved hjælp af freeware-versionen af CADSOFT EAGLE. Alle filer til dette projekt er inkluderet i projektarkivet, der er knyttet i slutningen af artiklen.
Microcontroller.
Vi brugte en mikrochip pic24fj64ga002 28pin soic microcontroller (IC1) i dette projekt. Vi kan virkelig godt lide denne chip, fordi funktionen Perifer Pin Select giver os mulighed for at sætte vigtige funktioner på de stifter, vi ønsker; Dette giver en mindre, enklere, meget mere kompakt PCB. Hver strømstift har en 0.1uf bypass kondensator til jorden (C1,2). Den interne 2.5voltregulator kræver en 10uf tantal-kondensator (C12). Chippen er programmeret gennem en femstiftsoverskrift, SV1. R1 er en pull-up modstand til MCLR-funktionen på PIN-kode 1. Læs meget mere om denne chip i vores PIC24F Introduktion.
A 32.768KHz krystal (Q1) og to 27 pf kondensatorer (C10,11) tilbyder en oscillator til realtids urkalender (RTCC). Disse dele er valgfrie, den oprindelige firmware bruger ikke dem. RTCC kunne bruges som en del af en funktion, der overlejrer den aktuelle tid på skærmen. Knapper tilsluttet programmeringsoverskriften kunne bruges til at indstille tiden.
SD kort
MicroSD-kort er helt kompatible med almindelige SD-kort, MicroSD-kort kan bruges i en SD-kortlæser / forfatter med en adapter. Vi vurderede flere microSD-kortindehavere og slog sig på en fra SparkFun Electronics. MicroSD-kortet kræver en bypass kondensator mellem strømstiften og jorden (C3). En LED indikerer microSD-læseaktivitet, men det er også nyttigt for generel debugging (LED1, R2).
Farve LCD 128 × 128 Nokia Knock-Off
Dette projekt er udviklet omkring Sparkfuns $ 20 Color LCD-panel. LCD-logikken kører ved 3.3volts og kræver en afkoblingskondensator (C4). LED-baggrundsbelysningen kræver en separat 7Volt-forsyning, og ser ud til at have en intern strømbegrænser, fordi eksempel design ikke bruger eksterne modstande.
LCD’et har en separat indgang til 3.3volt displayforsyningen. Talrige rapportstøj i displayet, hvis denne spænding ikke er ren. Vi brugte en ferritperle (L1) og 0,1uf kondensator (C5) for at filtrere forsyningen og har ikke oplevet nogen problemer. Dette behandlede endda en beskidt hjemme-ætset prototype. Ferrite perle typen er ikke vigtig, vi brugte en tilbage fra vores lille webserverprojekt.
Den lille stik er let at lodde på et professionelt bord med en loddemaske, men køb flere som forsikring. Sparkfun har et PCB-fodaftryk til denne del i deres Eagle Parts-bibliotek, men afstanden mellem puderne er mindre end Olimex eller BatchpCB vil fremstille. Vi flygtede det ved at reducere pudestørrelsen for at få meget mere plads mellem. Ikke afhængig af stikket for at holde LCD’et på plads, brug tape til at holde det nede. Vi brugte sticky-tack til at fastgøre LCD’et midlertidigt.
Vi prototypede et LCD-bærerkort forud for at sende det endelige design til fremstilling. Vi anbefaler mod at bruge en jordfyld under stikket uden en loddemaske.
Strømforsyning
En 3.3voltforsyning, der tilbydes af en LD1117S33 (IC2), styrker PIC-, MicroSD-kortet, LCD-logikken og LCD-skærmen. IC2 kræver en 0,1uf bypass kondensator (C6) på forsyningssiden og en 10uF kondensator (C13) på udgangen. Vi brugte den samme Tantal-kondensator, som vi brugte til billedet intern regulator.
LCD-baggrundslyset drives af en LM317-justerbar regulator (IC3) konfigureret til 7volte med 240 (R5) og 1100 (R6) ohm modstande. C7 og C8 er 0,1uf bypass kondensatorer til LM317.
J1 er en SMD-stikkontakt til en fælles 2,1 mm DC tønde stik. C11 er en 10uf elektrolytisk kondensator, der glatter enhver forsinkelse i forsyningsspændingen. C11 har en maksimal 16volt input rating, så forsyningsspændingen holdes bedst under 12volte. 9-12 volt er sandsynligvis ideens strømforsyningsområde.
PCB.
Klik for et fuld størrelse placeringsdiagram (PNG). L1, C5, og LCD’et er på den modsatte side. Vi kan ikke prototype tosidede brædder i mors kælder, så vi sendte dette design til Batchpcb. Næste uge viser vi dig, hvordan vi gjorde det.
Liste over dele
En del
Beskrivelse
IC1.
Pic 24fj64ga002 (soic)
IC2.
LD1117S33 3.3volt regulator (SOT223)
IC3.
LM317 Justerbar regulator (SOT223)
U $ 1
Farve LCD 128 × 128 Nokia Knock-Off
Rede –
Nokia knock-off connector
C1-8
0,1uf kondensator (0805)
C10,11
27pF capacitor (0805)
C12,13
10uF tantalum capacitor (SMCA)
C14
10uF electrolytic capacitor (SMD)
L1
ferrite bead (0805)
LED1
LED (0805)
Q1
32.768kHz crystal
R1.
2000 ohm modstand (0805)
R2
390 ohm modstand (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.
Offset
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
10
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.
Offset
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.
Offset
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.
Ved hjælp af det
Put images in the root directory of a FAT formatted SD card. depending on the laSt-enhed For at formatere kortet, skal det muligvis formateres med et digitalt videokamera eller Panasonic SD-formatteren.
Valgfrit: Lav en config.ini-fil med en teksteditor. Indtast et enkeltciffer, fra 0-9, for at indstille mellem billedforsinkelsen. Gem filen. Hvis du ikke opretter din egen config.ini-fil, oprettes man til dig med en 1 sekund forsinkelse.
Sæt kortet i stikkontakten, og tilslut den digitale billedramme. Billeder vil cykle på skærmen med den definerede forsinkelse.
Tager det yderligere
Vi ser en masse potentiale i denne nemme digitale billedramme. Talrige funktioner kan tilføjes med en firmwareopgradering, nogle er grundlaget for fremtidig hardware.
Vis andre billedformater, skala billeder
Tilfældige falmer og tørklæder
Vis tid og dato over billede, indstil med knapper tilsluttet programmeringsstifter
Udvid konfigurationsindstillingerne i Config.ini for at inkludere længere forsinkelser, FADE eller tørre type
Brug en undermappe til billeder, fordi der er nogle filbegrænsninger til rodmappen på et fedtformateret SD-kort.
Tilføj en Ethernet-forbindelse til netværksdisplayopdateringer.
Download: dpf.v1.zip det har flyttet til her.