วิธีการ: กรอบรูปดิจิตอล, 100% DIY
มีการสอนกรอบรูปดิจิตอลมากมายที่นั่น แล็ปท็อปเก่า ๆ ที่มีการกำหนดค่า Crafty Case Princurations ที่พอดีกับโปรไฟล์กรอบรูป
เราตั้งออกมาเพื่อสร้างกรอบรูปดิจิตอล DIY 100% สร้างรอยขีดข่วน เฟรมของเรามีจอแอลซีดีสี 12 บิต, กิกะไบต์ของที่เก็บของการ์ด microSD ที่มีไขมันที่มีไขมันไขมันและคุณสามารถสร้างที่บ้าน เรามีรายละเอียดด้านล่าง
ภาพรวมแนวคิด
ภาพบิตแมปถูกเก็บไว้ในการ์ด microSD ที่อ่านได้ทั่วไปพีซีที่อ่านได้ ไมโครคอนโทรลเลอร์รูปภาพอ่านภาพมากกว่าสามสาย SPI รูปภาพประมวลผลข้อมูลภาพและเขียนให้กับ LCD สีผ่านรถบัสที่เหมือน SPI แบบทิศทางเดียว 9 บิต ไฟล์การกำหนดค่าบนการ์ด SD กำหนดความล่าช้าระหว่างภาพ
ฮาร์ดแวร์
คลิกเพื่อดูภาพ Schematic ขนาดเต็ม (PNG) วงจรและ PCB ได้รับการพัฒนาโดยใช้ Cadsoft Eagle เวอร์ชันฟรีแวร์ ไฟล์ทั้งหมดสำหรับโครงการนี้รวมอยู่ในโครงการเก็บถาวรโครงการที่ลิงค์ในตอนท้ายของบทความ
ไมโครคอนโทรลเลอร์
เราใช้ microchip pic24fj64ga002 28pin soic microcontroller (IC1) ในโครงการนี้ เราชอบชิปนี้มากเพราะคุณสมบัติ Pin Pin Select ช่วยให้เราใส่คุณสมบัติที่สำคัญบนพินที่เราต้องการ; สิ่งนี้ให้ PCB ขนาดเล็กที่เล็กลงและเรียบง่ายกว่ามาก PIN ไฟฟ้าแต่ละตัวมีตัวเก็บประจุบายพาส 0.1uf ไปยังพื้นดิน (C1,2) ตัวควบคุมภายใน 2.5volt ภายในต้องใช้ตัวเก็บประจุ Tantalum 10uf (C12) ชิปถูกตั้งโปรแกรมผ่านส่วนหัวห้าพิน SV1 R1 เป็นตัวต้านทานแบบดึงขึ้นสำหรับฟังก์ชั่น MCLR บน PIN 1. อ่านเพิ่มเติมเกี่ยวกับชิปนี้ในการแนะนำ PIC24F ของเรา
A 32.768KHZ Crystal (Q1) และตัวเก็บประจุ 27pf สองตัว (C10,11) นำเสนอออสซิลเลเตอร์สำหรับปฏิทินนาฬิกาแบบเรียลไทม์ (RTCC) ชิ้นส่วนเหล่านี้เป็นตัวเลือกเฟิร์มแวร์เริ่มต้นไม่ได้ใช้ RTCC สามารถใช้เป็นส่วนหนึ่งของฟังก์ชั่นที่วางซ้อนในเวลาปัจจุบันบนหน้าจอ ปุ่มที่เชื่อมต่อกับส่วนหัวการเขียนโปรแกรมสามารถใช้เพื่อกำหนดเวลา
การ์ด SD
การ์ด microSD เข้ากันได้กับการ์ด SD ทั่วไปอย่างสมบูรณ์สามารถใช้การ์ด microSD ในเครื่องอ่านการ์ด SD / นักเขียนด้วยอะแดปเตอร์ เราประเมินผู้ถือบัตร microSD หลายตัวและตั้งรกรากอยู่ในหนึ่งจาก SparkFun Electronics การ์ด microSD ต้องการตัวเก็บประจุบายพาสระหว่าง PING PIN และ Ground (C3) LED หมายถึงกิจกรรมการอ่าน microSD แต่ยังเป็นประโยชน์สำหรับการดีบักทั่วไป (LED1, R2)
สี LCD 128 × 128 Nokia Knock-off
โครงการนี้ได้รับการพัฒนารอบ ๆ แผง LCD สี $ 20 ของ SparkFun ตรรกะ LCD ทำงานที่ 3.3VOLTS และต้องใช้ตัวเก็บประจุที่แยกออกจากกัน (C4) แบ็คไลท์ LED ต้องใช้การจัดหา 7Volt แยกต่างหากและดูเหมือนว่ามีตัว จำกัด กระแสภายในเนื่องจากการออกแบบตัวอย่างไม่ได้ใช้ตัวต้านทานภายนอก
LCD มีอินพุตแยกต่างหากสำหรับการแสดงผล 3.3Volt รายงานเสียงรบกวนจำนวนมากในจอแสดงผลหากแรงดันไฟฟ้านี้ไม่สะอาด เราใช้ตัวเก็บประจุ Ferrite (L1) และตัวเก็บประจุ 0.1uf (C5) เพื่อกรองอุปทานและยังไม่ประสบปัญหาใด ๆ สิ่งนี้ยังจัดการกับต้นแบบที่บ้าน – แกะสลักที่สกปรก ประเภทลูกปัดเฟอร์ไรต์นั้นไม่สำคัญเราใช้หนึ่งที่เหลือจากโครงการเว็บเซิร์ฟเวอร์ขนาดเล็กของเรา
ตัวเชื่อมต่อขนาดเล็กนั้นง่ายต่อการบัดกรีบนกระดานมืออาชีพด้วยหน้ากากบัดกรี แต่ซื้อหลายอย่างเป็นประกัน Sparkfun มีรอยเท้า PCB สำหรับส่วนนี้ในห้องสมุดอะไหล่ของนกอินทรีของพวกเขา แต่ระยะห่างระหว่างแผ่นรองแผ่นมีขนาดเล็กกว่า Olimex หรือ BatchPCB จะผลิต เราปลดเปลื้องมันด้วยการลดขนาดของแผ่นเพื่อให้ได้พื้นที่มากขึ้นระหว่าง อย่าพึ่งพาตัวเชื่อมต่อเพื่อยึดจอ LCD ให้ใช้เทปเพื่อกดค้างไว้ เราใช้ตะปูเหนียวเพื่อแนบ LCD ชั่วคราว
เราสร้างต้นแบบบอร์ดผู้ให้บริการ LCD ก่อนที่จะส่งการออกแบบขั้นสุดท้ายสำหรับการผลิต เราแนะนำให้ใช้การเติมพื้นดินภายใต้ขั้วต่อโดยไม่มีหน้ากากบัดกรี
แหล่งจ่ายไฟ
อุปทาน 3.3Volt ที่นำเสนอโดย LD1117S33 (IC2), ให้อำนาจในรูปการ์ด microSD ตรรกะ LCD และจอแสดงผล LCD IC2 ต้องใช้ตัวเก็บประจุบายพาส 0.1uf (C6) ในด้านอุปทานและตัวเก็บประจุ 10UF (C13) บนเอาต์พุต เราใช้ตัวเก็บประจุแทนทาลัมเดียวกันที่เราใช้สำหรับเครื่องควบคุมภายในรูปภาพ
แบ็คไลท์ LCD ถูกขับเคลื่อนโดย Regulator ปรับ LM317 (IC3) ที่กำหนดค่าเป็น 7Volts ที่มีตัวต้านทาน OHM 240 (R5) และ 1100 (R6) C7 และ C8 เป็นตัวเก็บประจุบายพาส 0.1uf สำหรับ LM317
J1 เป็นแจ็คพลัง SMD สำหรับปลั๊ก 2.1 มม. DC Barrel ทั่วไป C11 เป็นตัวเก็บประจุ electrolytic 10uf ที่ทำให้ความล่าช้าใด ๆ ในแรงดันไฟฟ้า C11 มีการจัดอันดับอินพุต 16Volt สูงสุดดังนั้นแรงดันไฟฟ้าที่จ่ายได้ดีที่สุดภายใต้ 12VOLTS 9-12 โวลต์น่าจะเป็นช่วงแหล่งจ่ายไฟความคิด
PCB
คลิกเพื่อดูไดอะแกรมตำแหน่งขนาดเต็ม (PNG) L1, C5 และ LCD อยู่ฝั่งตรงข้าม เราไม่สามารถสร้างบอร์ดสองด้านในชั้นใต้ดินของแม่ดังนั้นเราจึงส่งการออกแบบนี้ไปที่ BatchPCB สัปดาห์หน้าเราจะแสดงให้คุณเห็นว่าเราทำอย่างไร
ส่วนรายการ
ส่วนหนึ่ง
คำอธิบาย
ic1
รูป 24fj64ga002 (Soic)
IC2
LD1117S33 3.3Volt Regulator (SOT223)
ic3
LM317 ปรับ Regulator (SOT223)
u $ 1
สี LCD 128 × 128 Nokia Knock-off
–
Nokia Knock-off Connector
C1-8
ตัวเก็บประจุ 0.1uf (0805)
C10,11
ตัวเก็บประจุ 27pf (0805)
c12,13
10uf tantสารส้มเก็บประจุ (SMCA)
c14
10UF Electrolytic Capacitor (SMD)
l1
Ferrite Bead (0805)
LED1
LED (0805)
ไตรมาสที่ 1
32.768khz คริสตัล
r1
ตัวต้านทาน OHM 2000 (0805)
r2
ตัวต้านทาน 390 โอห์ม (0805)
r5
ตัวต้านทาน 240 โอห์ม (0805)
r6
ตัวต้านทาน 1100 โอห์ม (0805)
sd1
ผู้ถือบัตร microSD
J1
2.1mm Power Jack (SMD)
SV1
0.1 “หัวขาชายมุมที่ดีที่สุด
เฟิร์มแวร์
เฟิร์มแวร์ถูกเขียนใน C โดยใช้คอมไพเลอร์ Picture C30 รุ่นสาธิตฟรีโดยสิ้นเชิง เรียนรู้ทุกอย่างเกี่ยวกับการทำงานกับภาพนี้ในการแนะนำของเราในซีรี่ส์รูปภาพ 24F เฟิร์มแวร์รวมอยู่ในโครงการเก็บถาวรในตอนท้ายของบทความ
ห้องสมุดดิสก์ FAT12 / 16/22
ห้องสมุดไขมันของ Microchip 12/16/32 ช่วยให้เราเข้าถึงไฟล์ที่เก็บไว้ในการ์ด SD ได้ง่าย เราให้คำอธิบายที่ครอบคลุมของห้องสมุดนี้ในเว็บเซิร์ฟเวอร์ของเราในโครงการบัตร บริษัท หากคุณมีปัญหาในการอ่านการ์ดกับห้องสมุดให้ตรวจสอบว่ามันถูกฟอร์แมตในกล้องวิดีโอดิจิตอลหรือใช้ฟอร์แมตการ์ด SD ของ Panasonic
Nokia 6100 LCD Driver
SparkFun มี Chauffeur สี 8 บิตพื้นฐาน (ZIP) สำหรับ Nokia 6100 เราย้ายไปที่รูปและอัปเดตสำหรับโหมดสี 2Bit-Per-Pixel 12 บิต ด้วยความซับซ้อนเพิ่มจำนวนเล็กน้อยอัตราการเขียนพิกเซลสามารถปรับปรุงได้อย่างง่ายดายโดยใช้โหมด 12 บิตที่แตกต่างกันซึ่งให้สองพิกเซลโดยใช้ 3 ไบต์
จอแอลซีดีใช้โปรโตคอล 9 บิตหนึ่งเล็กน้อยมากกว่าฮาร์ดแวร์ SPI จำนวนมากจะจัดการ บิตแรกบอก LCD ว่า 8 บิตถัดไปเป็นข้อมูลหรือคำสั่ง ในภาพ 24F เป็นไปไม่ได้ที่จะปังด้วยตนเองในบิตแรกแล้วใช้อุปกรณ์ต่อพ่วง SPI เพื่อส่ง 8 บิตที่เหลือ เราสูญเสียการควบคุมหมุดโดยตรงเมื่อเปิดใช้งานฮาร์ดแวร์ SPI การป้อนข้อมูลจะต้องมีการกระแทกบิตอย่างสมบูรณ์ซึ่งจะช่วยลดอัตราการฟื้นฟูหน้าจออย่างมาก
อ่านบิตแมป
มีรูปแบบบิตแมปมากมาย ความเข้ากันได้ของ Windows ทำให้ทุกคนใช้รูปแบบ Windows V3 โบราณ เราสร้างโครงสร้าง C สองแบบเพื่ออ่านข้อมูล BitMap V3
ชดเชย
ไบต์
ส่วนหัวของไฟล์บิตแมป
0
2
เสมอ 0x42 0x4d (hex for bm)
2
4
ขนาดไฟล์ (ไบต์)
6
2
สงวนเพิกเฉย
8
2
สงวนเพิกเฉย
10
4
ตำแหน่งในไฟล์ของข้อมูลบิตแมปแรก
ไฟล์บิตแมปเริ่มต้นด้วยส่วนหัวของไฟล์ 14Byte ไบต์สองไบต์แรกคือตัวอักษร ‘BM’ ระบุบิตแมป หากไบต์สองไบต์แรกถูกต้องเฟิร์มแวร์จะโหลดส่วนหัวข้อมูล ไบต์สี่ไบต์สุดท้ายระบุจุดเริ่มต้นของข้อมูลบิตแมป แต่เฟิร์มแวร์ปัจจุบันเพียงแค่คิดว่าจะเริ่มต้นที่ส่วนท้ายของส่วนหัว
ชดเชย
ไบต์
ส่วนหัวข้อมูลบิตแมป
14
4
ความยาวของส่วนหัวข้อมูลบิตแมป (40Bytes สำหรับ Windows V3 บิตแมป)
18
4
ความกว้าง (พิกเซล)
22
4
ความสูง (พิกเซล)
26
2
ระนาบสี 1 เสมอ
28
2
สีบิตต่อพิกเซล (1, 4, 8, 16, 24 และ 32)
30
4
วิธีการบีบอัดเราอ่านเฉพาะที่ไม่มีการบีบอัด (Type 0)
34
4
ความยาวข้อมูลภาพ
38
4
ความละเอียดแนวนอน (พิกเซลต่อเมตร)
42
4
ความละเอียดแนวตั้ง (พิกเซลต่อเมตร)
46
4
จำนวนสีที่ละเลย
50
4
จำนวนสีที่จำเป็นเพิกเฉย
ส่วนหัวข้อมูลบิตแมป Windows V3 คือ 40Bytes Long เฟิร์มแวร์ตรวจสอบว่าส่วนหัวยาว (ออฟเซ็ต 14) คือ 40 ระบุบิตแมป V3 หากความกว้าง (132), ความสูง (132), ความลึกของสี (24) และการบีบอัด (0) ตรวจสอบทั้งหมดข้อมูลภาพจะถูกประมวลผลและส่งออกไปยังหน้าจอ
ชดเชย
ไบต์
ข้อมูลบิตแมปรูปภาพ 24 บิต
54+ (3n)
1
pixel n ค่าสีแดง
54+ (3n + 1)
1
ค่าพิกเซล n สีเขียว
54+ (3n + 2)
1
ค่าพิกเซล n สีน้ำเงิน
ภาพบิตแมปมีการไม่มีการบีบอัด 1: 1 การเป็นตัวแทนของข้อมูลพิกเซลที่เก็บไว้ในลำดับสามไบต์ ข้อมูลเริ่มต้นที่มุมขวาล่างของภาพ ครั้งแรกที่ค่าสีแดงจากนั้นสีเขียวและสีน้ำเงิน Wikipedia มีบิตแมปที่สมบูรณ์เดินผ่าน
หากความลึกของสีของภาพบิตแมป (24 บิต) มากกว่าจอแอลซีดีสามารถแสดง (12bits) เราจำเป็นต้องทิ้งข้อมูลสีที่สำคัญน้อยที่สุด การแปลงจากสี 24 บิตเป็นสี 12 บิตเราเพียงแค่ชัคครึ่งข้อมูลสี มูลค่า 8 บิตของ 11110011 ถูกผลักสี่บิตไปทางขวาให้ 1111
เฟิร์มแวร์เดินผ่าน
INIER PIC, SD, LCD
อ่าน config.ini สร้างถ้าไม่มีอยู่
ใช้อักขระตัวแรกของ config.ini เพื่อตั้งค่าระหว่างการล่าช้าของภาพ
ค้นหารูปภาพเปิดภาพถัดไป
อ่านและตรวจสอบส่วนหัวของไฟล์บิตแมปสำหรับรูปแบบที่เหมาะสม
อ่านและตรวจสอบส่วนหัวข้อมูลบิตแมปสำหรับรุ่นขนาดสี
อ่านและแสดงค่าแต่ละพิกเซล ปรับความลึกของบิตตามต้องการ
ล่าช้าแล้วทำซ้ำจาก 4
การเตรียมภาพ
เพื่อให้การสาธิตนี้ง่ายกรอบรูปจะแสดงรูปแบบบิตแมปที่พบมากที่สุดเท่านั้น ภาพควรมีขนาดเป็น 132×132 พิกเซลพร้อมสี 24 บิต
เปิดรูปภาพด้วยโปรแกรมแก้ไขภาพ
วาดกล่องเลือกสแควร์ในส่วนของภาพที่คุณต้องการใช้โดยทั่วไปใช้กะและลาก
ครอบตัดภาพ
ขนาดภาพเป็น 132×132 พิกเซล
บันทึกภาพเป็นบิตแมป Windows, 24bits ของความลึกของสี
ขนาดภาพอื่น ๆ และรูปแบบสามารถรองรับการอัพเกรดเฟิร์มแวร์ (PNG, JPG) โดยเฉพาะอย่างยิ่งกับไมโครคอนโทรลเลอร์ที่เข้ากันได้กับไมโครคอนโทรลเลอร์ที่รองรับเป็น DSpic 33F ขนาดใหญ่
ใช้มัน
ใส่ภาพในไดเรกทอรีรากของการ์ด SD ที่ฟอร์แมตไขมัน ขึ้นอยู่กับ laอุปกรณ์ ST ให้ฟอร์แมตการ์ดอาจต้องมีการฟอร์แมตด้วยกล้องวิดีโอดิจิตอลหรือตัวจัดรูปแบบ Panasonic SD
ตัวเลือก: สร้างไฟล์ config.ini ด้วยโปรแกรมแก้ไขข้อความ ป้อนตัวเลขเดียวจาก 0-9 เพื่อตั้งค่าระหว่างการหน่วงเวลารูปภาพ บันทึกไฟล์ หากคุณไม่สร้างไฟล์ config.ini ของคุณเองจะถูกสร้างขึ้นสำหรับคุณด้วยความล่าช้า 1 วินาที
ใส่การ์ดในซ็อกเก็ตและเสียบเข้ากับกรอบรูปดิจิตอล รูปภาพจะวนรอบบนหน้าจอด้วยความล่าช้าที่กำหนดไว้
รับมันต่อไป
เราเห็นศักยภาพมากมายในกรอบรูปดิจิตอลที่ง่ายนี้ คุณสมบัติมากมายสามารถเพิ่มได้ด้วยการอัพเกรดเฟิร์มแวร์บางอย่างเป็นพื้นฐานสำหรับฮาร์ดแวร์ในอนาคต
แสดงรูปแบบภาพอื่น ๆ รูปภาพขนาด
จางหายไปและผ้าเช็ดทำความสะอาดแบบสุ่ม
แสดงเวลาและวันที่ผ่านภาพตั้งค่าด้วยปุ่มที่เชื่อมต่อกับ Pins Programming
ขยายตัวเลือกการกำหนดค่าใน config.ini เพื่อรวมความล่าช้าที่ยาวขึ้นจางหายไปหรือเช็ดชนิด
ใช้ไดเรกทอรีย่อยสำหรับรูปภาพเนื่องจากมีบางไฟล์บางส่วนไปยังไดเรกทอรีรากของการ์ด SD ที่ฟอร์แมตไขมัน
เพิ่มการเชื่อมต่ออีเธอร์เน็ตสำหรับการอัปเดตจอแสดงผลเครือข่าย
ดาวน์โหลด: dpf.v1.zip มันย้ายไปที่นี่แล้ว