สารบัญ:

สร้างกล้องของคุณเอง: 8 ขั้นตอน
สร้างกล้องของคุณเอง: 8 ขั้นตอน

วีดีโอ: สร้างกล้องของคุณเอง: 8 ขั้นตอน

วีดีโอ: สร้างกล้องของคุณเอง: 8 ขั้นตอน
วีดีโอ: 8 เหตุการณ์เขื่อนแตก..ที่กล้องบันทึกไว้ได้ (น้ำทะลัก!) 2024, พฤศจิกายน
Anonim
Image
Image
สร้างกล้องของคุณเอง
สร้างกล้องของคุณเอง

คำแนะนำนี้จะอธิบายวิธีสร้างกล้องโมโนโครมโดยใช้เซ็นเซอร์รับภาพ Omnivision OV7670, ไมโครคอนโทรลเลอร์ Arduino, สายจัมเปอร์สองสามตัว และซอฟต์แวร์ Processing 3

นอกจากนี้ยังมีการนำเสนอซอฟต์แวร์ทดลองเพื่อให้ได้ภาพสี

กดปุ่ม "c" เพื่อถ่ายภาพขนาด 640*480 พิกเซล … กดปุ่ม "s" เพื่อบันทึกภาพลงในไฟล์ รูปภาพที่ต่อเนื่องกันจะมีหมายเลขตามลำดับ หากคุณต้องการสร้างภาพยนตร์เหลื่อมเวลาสั้นๆ

กล้องไม่เร็ว (การสแกนแต่ละครั้งใช้เวลา 6.4 วินาที) และเหมาะสำหรับใช้ในที่แสงคงที่เท่านั้น

ค่าใช้จ่าย ไม่รวม Arduino และ PC ของคุณ น้อยกว่ากาแฟหนึ่งถ้วย

รูปภาพ

ส่วนประกอบที่ไม่มีการเดินสายจัมเปอร์จะแสดงในรูปเปิด

ภาพที่สองเป็นภาพหน้าจอที่แสดงซอฟต์แวร์กล้อง Arduino และตัวจับเฟรมสำหรับการประมวลผล 3 สิ่งที่ใส่เข้าไปแสดงให้เห็นว่ากล้องเชื่อมต่ออย่างไร

วิดีโอสาธิตการทำงานของกล้อง เมื่อกดปุ่มจับภาพ "c" จะมีแฟลชชั่วครู่ตามด้วยกิจกรรมต่อเนื่องขณะสแกนภาพ รูปภาพจะปรากฏในหน้าต่างแสดงผลโดยอัตโนมัติเมื่อการสแกนเสร็จสิ้น รูปภาพจะปรากฏในโฟลเดอร์การประมวลผลหลังจากกดปุ่ม "s" แต่ละครั้ง วิดีโอจบลงด้วยการวนอย่างรวดเร็วผ่านแต่ละภาพที่บันทึกไว้ทั้งสามภาพ

ขั้นตอนที่ 1: แผนภาพวงจร

แผนภูมิวงจรรวม
แผนภูมิวงจรรวม
แผนภูมิวงจรรวม
แผนภูมิวงจรรวม
แผนภูมิวงจรรวม
แผนภูมิวงจรรวม

แผนภาพวงจรสำหรับกล้องรุ่นนี้ทุกรุ่นแสดงในภาพที่ 1

รูปที่ 2, 3 แสดงให้เห็นว่าสายจัมเปอร์และส่วนประกอบเชื่อมต่อกันอย่างไร

หากไม่มีโครงยึดอะลูมิเนียม ภาพเหล่านั้นจะนอนตะแคง

คำเตือน

ตั้งโปรแกรม Arduino ของคุณก่อนที่จะต่อสายจัมเปอร์เข้ากับชิปกล้อง OV7670 ซึ่งจะป้องกันไม่ให้พินเอาท์พุต 5 โวลต์จากโปรแกรมก่อนหน้าทำลายชิปกล้อง OV7670 3v3 โวลต์

ขั้นตอนที่ 2: รายการชิ้นส่วน

ส่วนรายการ
ส่วนรายการ

ส่วนต่อไปนี้ได้มาจากhttps://www.aliexpress.com/

  • 1 เท่านั้น OV7670 300KP โมดูลกล้อง VGA สำหรับ Arduino DIY KIT
  • ขายึดกล้องเพียงตัวเดียวพร้อมน็อตและสลักเกลียว
  • 1 เท่านั้น UNO R3 สำหรับ Arduino MEGA328P 100% เดิม ATMEGA16U2 พร้อมสาย USB

ชิ้นส่วนต่อไปนี้ได้มาจากท้องถิ่น

  • สายจัมเปอร์ Arduino ตัวผู้-ตัวเมีย 18 ตัว
  • สายจัมเปอร์ Arduinin หญิง-หญิง 3 ตัว
  • มินิเบรดบอร์ด 1 อันเท่านั้น
  • 4 ตัวต้านทาน 4K7 โอห์ม 1/2 วัตต์เท่านั้น
  • ขาตั้งอลูมิเนียมเศษ 1 อันเท่านั้น

คุณจะต้องใช้แผ่นข้อมูลต่อไปนี้:

  • https://web.mit.edu/6.111/www/f2016/tools/OV7670_20…
  • https://www.haoyuelectronics.com/Attachment/OV7670%…

ขั้นตอนที่ 3: ทฤษฎี

ทฤษฎี
ทฤษฎี

ชิปกล้อง OV7670

เอาต์พุตเริ่มต้นจากชิปกล้อง OV7670 ประกอบด้วยสัญญาณวิดีโอ YUV (4:2:2) และรูปแบบคลื่นเวลา 3 รูปแบบ รูปแบบเอาต์พุตอื่นสามารถทำได้โดยการเขียนโปรแกรมการลงทะเบียนภายในผ่านบัสที่เข้ากันได้กับ I2C

สัญญาณวิดีโอ YUV (4:2:2) (ภาพที่ 1) เป็นลำดับต่อเนื่องของพิกเซลขาวดำ (ขาวดำ) คั่นด้วยข้อมูลสี U (ความแตกต่างของสีน้ำเงิน) และ V (ความแตกต่างของสีแดง)

รูปแบบเอาต์พุตนี้เรียกว่า YUV (4:2:2) เนื่องจากแต่ละกลุ่มที่มีขนาด 4 ไบต์มี 2 ไบต์ขาวดำและ 2 ไบต์สี

ขาวดำ

เพื่อให้ได้ภาพขาวดำ เราต้องสุ่มตัวอย่างทุก ๆ ไบต์ข้อมูล

Arduino มีหน่วยความจำเข้าถึงโดยสุ่มเพียง 2K แต่แต่ละเฟรมประกอบด้วย 640*2*480 = 307, 200 ไบต์ข้อมูล นอกจากว่าเราเพิ่มตัวจับเฟรมลงใน OV7670 ข้อมูลทั้งหมดจะต้องส่งไปยังพีซีทีละบรรทัดเพื่อการประมวลผล

มีความเป็นไปได้สองอย่าง:

สำหรับแต่ละเฟรมที่ต่อเนื่องกัน 480 เฟรม เราสามารถจับภาพหนึ่งบรรทัดไปยัง Arduino ที่ความเร็วสูงก่อนส่งไปยังพีซีที่ความเร็ว 1Mbps วิธีการดังกล่าวจะทำให้ OV7670 ทำงานด้วยความเร็วเต็มที่ แต่จะใช้เวลานาน (มากกว่าหนึ่งนาที)

แนวทางที่ฉันได้ดำเนินการคือทำให้ PCLK ช้าลงเป็น 8uS และส่งแต่ละตัวอย่างตามที่มาถึง วิธีนี้เร็วกว่าอย่างเห็นได้ชัด (6.4 วินาที)

ขั้นตอนที่ 4: บันทึกการออกแบบ

บันทึกการออกแบบ
บันทึกการออกแบบ
บันทึกการออกแบบ
บันทึกการออกแบบ
บันทึกการออกแบบ
บันทึกการออกแบบ

ความเข้ากันได้

ชิปกล้อง OV7670 เป็นอุปกรณ์โวลต์ 3v3 แผ่นข้อมูลระบุว่าแรงดันไฟฟ้าที่สูงกว่า 3.5 โวลต์จะทำให้ชิปเสียหาย

เพื่อป้องกันไม่ให้ Arduino 5 โวลต์ของคุณทำลายชิปกล้อง OV7670:

  • สัญญาณนาฬิกาภายนอก (XCLK) จาก Arduino จะต้องลดลงสู่ระดับที่ปลอดภัยโดยใช้ตัวแบ่งแรงดันไฟฟ้า
  • ต้องปิดการใช้งานตัวต้านทานแบบดึงขึ้น Arduino I2C ภายในถึง 5 โวลต์และแทนที่ด้วยตัวต้านทานแบบดึงขึ้นภายนอกสำหรับแหล่งจ่ายไฟ 3v3 โวลต์
  • ตั้งโปรแกรม Arduino ของคุณก่อนที่จะต่อสายจัมเปอร์เนื่องจากหมุดบางตัวอาจยังคงตั้งโปรแกรมเป็นเอาต์พุตจากโครงการก่อนหน้า !!! (ฉันเรียนมาอย่างยากลำบาก … โชคดีที่ฉันซื้อสองอันเพราะราคาถูกมาก)

นาฬิกาภายนอก

ชิปกล้อง OV7670 ต้องการนาฬิกาภายนอกในช่วงความถี่ 10Mhz ถึง 24MHz

ความถี่สูงสุดที่เราสามารถสร้างจาก Arduino 16MHz คือ 8MHz แต่ดูเหมือนว่าจะใช้ได้

ลิงค์อนุกรม

ใช้เวลาอย่างน้อย 10 uS (ไมโครวินาที) ในการส่งข้อมูล 1 ไบต์ผ่านลิงก์ซีเรียล 1Mbps (ล้านบิตต่อวินาที) คราวนี้ประกอบขึ้นดังนี้:

  • 8 บิตข้อมูล (8us)
  • 1 บิตเริ่มต้น (1uS)
  • 1 บิตหยุด (1uS)

นาฬิกาภายใน

ความถี่นาฬิกาพิกเซลภายใน (PCLK) ภายใน OV7670 ถูกกำหนดโดยบิต[5:0] ภายในรีจิสเตอร์ CLKRC (ดูรูปที่ 1) [1]

หากเราตั้งค่า bits[5:0] = B111111 = 63 และนำไปใช้กับสูตรข้างต้นแล้ว:

  • F(นาฬิกาภายใน) = F (นาฬิกาอินพุต)/(บิต[5:0}+1)
  • = 8000000/(63+1)
  • = 125000 เฮิรตซ์ หรือ
  • = 8uS

เนื่องจากเราสุ่มตัวอย่างทุก ๆ ไบต์ข้อมูลทุก ๆ วินาที ช่วงเวลา PCLK ที่ 8uS ส่งผลให้ตัวอย่าง 16uS ซึ่งเป็นเวลาเพียงพอในการส่งข้อมูล 1 ไบต์ (10uS) เหลือ 6uS สำหรับการประมวลผล

อัตราเฟรม

เฟรมวิดีโอ VGA แต่ละเฟรมประกอบด้วย 784*510 พิกเซล (องค์ประกอบภาพ) ซึ่งจะแสดง 640*480 พิกเซล เนื่องจากรูปแบบเอาต์พุต YUV (4:2:2) มีข้อมูลเฉลี่ย 2 ไบต์ต่อพิกเซล แต่ละเฟรมจะใช้เวลา 784*2*510*8 uS = 6.4 วินาที

กล้องนี้ไม่เร็ว!!!

การวางตำแหน่งแนวนอน

รูปภาพอาจถูกย้ายในแนวนอนหากเราเปลี่ยนค่า HSTART และ HSTOP โดยที่ยังคงความต่าง 640 พิกเซลไว้

เมื่อย้ายรูปภาพไปทางซ้าย ค่า HSTOP ของคุณอาจน้อยกว่าค่า HSTART!

อย่าตื่นตระหนก … ทั้งหมดนี้เกี่ยวข้องกับการล้นเกินตามที่อธิบายไว้ใน ภาพที่ 2

ทะเบียน

OV7670 มีรีจิสเตอร์แปดบิต 201 รายการสำหรับควบคุมสิ่งต่างๆ เช่น เกน สมดุลสีขาว และการรับแสง

หนึ่งไบต์ข้อมูลอนุญาตให้มีได้ 256 ค่าในช่วง [0] ถึง [255] หากเราต้องการการควบคุมมากกว่านี้ เราต้องเรียงซ้อนรีจิสเตอร์หลายตัว สองไบต์ทำให้เรามีความเป็นไปได้ 65536 … สามไบต์ให้เรา 16, 777, 216

รีจิสเตอร์ AEC (การควบคุมค่าแสงอัตโนมัติ) 16 บิตที่แสดงในรูปภาพที่ 3 เป็นตัวอย่างดังกล่าว และสร้างขึ้นโดยการรวมส่วนของรีจิสเตอร์สามตัวต่อไปนี้เข้าด้วยกัน

  • ประชาคมเศรษฐกิจอาเซียน[5:0] = ประชาคมเศรษฐกิจอาเซียน[15:10]
  • เออีซี[7:2] = เออีซี[9:2]
  • COM1[1:0] = AEC[1:0]

ถูกเตือน … ที่อยู่ลงทะเบียนไม่ได้ถูกจัดกลุ่มเข้าด้วยกัน !

ผลข้างเคียง

อัตราเฟรมที่ช้าทำให้เกิดผลข้างเคียงที่ไม่ต้องการจำนวนมาก:

เพื่อให้ได้ค่าแสงที่ถูกต้อง OV7670 คาดว่าจะทำงานที่อัตราเฟรมที่ 30 fps (เฟรมต่อวินาที) เนื่องจากแต่ละเฟรมใช้เวลา 6.4 วินาที ชัตเตอร์อิเล็กทรอนิกส์จึงเปิดได้นานกว่าปกติถึง 180 เท่า ซึ่งหมายความว่าภาพทั้งหมดจะได้รับแสงมากเกินไป เว้นแต่ว่าเราจะเปลี่ยนค่ารีจิสเตอร์บางค่า

เพื่อป้องกันการรับแสงมากเกินไป ฉันได้ตั้งค่าบิตรีจิสเตอร์ AEC (การควบคุมการรับแสงอัตโนมัติ) ทั้งหมดเป็นศูนย์ ถึงกระนั้นก็จำเป็นต้องใช้ฟิลเตอร์ Neutral Density ที่ด้านหน้าเลนส์เมื่อแสงจ้า

การเปิดรับแสงเป็นเวลานานอาจส่งผลต่อข้อมูล UV เนื่องจากฉันยังไม่พบชุดค่าผสมของรีจิสเตอร์ที่ให้สีที่ถูกต้อง … ให้พิจารณาว่าสิ่งนี้อยู่ในระหว่างดำเนินการ

บันทึก

[1]

สูตรที่แสดงในแผ่นข้อมูล (ภาพที่ 1) ถูกต้อง แต่ช่วงแสดงเฉพาะ bits[4:0] ?

ขั้นตอนที่ 5: Timing Waveforms

รูปคลื่นเวลา
รูปคลื่นเวลา
รูปคลื่นเวลา
รูปคลื่นเวลา
รูปคลื่นเวลา
รูปคลื่นเวลา

หมายเหตุที่มุมล่างซ้ายของไดอะแกรม "VGA Frame Timing" (ภาพที่ 1) อ่านว่า:

สำหรับ YUV/RGB tp = 2 x TPCLK

รูปที่ 1, 2 และ 3 ตรวจสอบแผ่นข้อมูลและยืนยันว่า Omnivision ถือว่าทุกๆ 2 ไบต์ข้อมูลเทียบเท่ากับ 1 พิกเซล

รูปคลื่นของออสซิลโลสโคปยังยืนยันว่า HREF ยังคงอยู่ในระดับต่ำในระหว่างช่วงเว้นระยะ

รูปที่ 4 ยืนยันว่าเอาต์พุต XCLK จาก Arduino คือ 8MHz เหตุผลที่เราเห็นคลื่นไซน์ แทนที่จะเป็นคลื่นสี่เหลี่ยม ก็คือฮาร์โมนิกแปลก ๆ ทั้งหมดไม่สามารถมองเห็นได้ในออสซิลโลสโคปสุ่มตัวอย่าง 20MHz ของฉัน

ขั้นตอนที่ 6: ตัวจับเฟรม

ตัวจับเฟรม
ตัวจับเฟรม

เซ็นเซอร์ภาพภายในชิปกล้อง OV7670 ประกอบด้วยอาร์เรย์ 656*486 พิกเซล ซึ่งใช้ตารางขนาด 640*480 พิกเซลสำหรับภาพถ่าย

ค่าลงทะเบียน HSTART, HSTOP, HREF และ VSTRT, VSTOP, VREF ใช้เพื่อจัดตำแหน่งภาพเหนือเซ็นเซอร์ หากภาพอยู่ในตำแหน่งที่ไม่ถูกต้องบนเซนเซอร์ คุณจะเห็นแถบสีดำที่ขอบหนึ่งด้านหรือมากกว่าตามที่อธิบายไว้ในส่วน "หมายเหตุการออกแบบ"

OV7670 จะสแกนแต่ละบรรทัดของรูปภาพทีละหนึ่งพิกเซลโดยเริ่มจากมุมซ้ายบนจนถึงพิกเซลล่างขวา Arduino เพียงส่งพิกเซลเหล่านี้ไปยังพีซีผ่านลิงค์อนุกรมดังแสดงใน ภาพที่ 1

งานของตัวจับเฟรมคือการจับภาพแต่ละพิกเซล 640*480=307200 พิกเซลและแสดงเนื้อหาในหน้าต่าง "รูปภาพ"

การประมวลผล 3 ทำได้โดยใช้รหัสสี่บรรทัดต่อไปนี้ !!

รหัสบรรทัดที่ 1:

byte byteBuffer = ไบต์ใหม่[maxBytes+1]; // โดยที่ maxBytes=307200

รหัสพื้นฐานในคำสั่งนี้สร้าง:

  • อาร์เรย์ไบต์ 307201 ที่เรียกว่า "byteBuffer [307201]"
  • ไบต์เพิ่มเติมสำหรับอักขระสิ้นสุด (การป้อนบรรทัด)

รหัสบรรทัด 2:

ขนาด (640, 480);

รหัสพื้นฐานในคำสั่งนี้สร้าง:

  • ตัวแปรที่เรียกว่า “width=640;”
  • ตัวแปรที่เรียกว่า “height=480”;
  • อาร์เรย์พิกเซล 3000,000 พิกเซลที่เรียกว่า "พิกเซล [307000]"
  • หน้าต่าง "รูปภาพ" ขนาด 640*480 พิกเซลซึ่งแสดงเนื้อหาของอาร์เรย์พิกเซล หน้าต่าง "รูปภาพ" นี้ได้รับการรีเฟรชอย่างต่อเนื่องที่อัตราเฟรม 60 เฟรมต่อวินาที

รหัสบรรทัด 3:

byteCount = myPort.readBytesUntil(lf, byteBuffer);

รหัสพื้นฐานในคำสั่งนี้:

  • บัฟเฟอร์ข้อมูลขาเข้าในเครื่องจนกว่าจะเห็นอักขระ "lf" (linefeed)
  • หลังจากนั้นจะดัมพ์ข้อมูลในเครื่อง 30,700 ไบต์แรกลงในอาร์เรย์ byteBuffer
  • นอกจากนี้ยังบันทึกจำนวนไบต์ที่ได้รับ (307201) ลงในตัวแปรที่เรียกว่า “byteCount”

รหัสบรรทัด 4:

พิกเซล = สี(byteBuffer);

เมื่อวางใน for-next-loop โค้ดพื้นฐานในคำสั่งนี้:

  • คัดลอกเนื้อหาของอาร์เรย์ "byteBuffer " ไปยังอาร์เรย์ "pixels"
  • เนื้อหาที่ปรากฏในหน้าต่างรูปภาพ

จังหวะสำคัญ:

ตัวจับเฟรมรับรู้การกดแป้นต่อไปนี้:

  • 'c' = จับภาพ
  • 's' = บันทึกภาพลงในไฟล์

ขั้นตอนที่ 7: ซอฟต์แวร์

ดาวน์โหลดและติดตั้งแต่ละแพ็คเกจซอฟต์แวร์ต่อไปนี้ หากยังไม่ได้ติดตั้ง:

  • “Arduino” จาก
  • “จาวา 8” จาก https://java.com/en/download/ [1]
  • "กำลังดำเนินการ 3" จาก

การติดตั้งร่าง Arduino:

  • ถอดสายจัมเปอร์ OV7670 ทั้งหมด [2]
  • ต่อสาย USB เข้ากับ Arduino. ของคุณ
  • คัดลอกเนื้อหาของ "OV7670_camera_mono_V2.ino" (ที่แนบมา) ลงใน Arduino "sketch" และบันทึก
  • อัปโหลดภาพร่างไปยัง Arduino ของคุณ
  • ถอดปลั๊ก Arduino
  • ตอนนี้คุณสามารถเชื่อมต่อสายจัมเปอร์ OV7670 อีกครั้งได้อย่างปลอดภัย
  • เชื่อมต่อสาย USB อีกครั้ง

การติดตั้งและเรียกใช้ร่างการประมวลผล

  • คัดลอกเนื้อหาของ "OV7670_camera_mono_V2.pde" (ที่แนบมา) ลงใน "สเก็ตช์" ของการประมวลผลและบันทึก
  • คลิกปุ่ม "วิ่ง" ด้านซ้ายบน … หน้าต่างภาพสีดำจะปรากฏขึ้น
  • คลิกที่หน้าต่างภาพ "สีดำ"
  • กดปุ่ม "c" เพื่อถ่ายภาพ (ประมาณ 6.4 วินาที)
  • กดปุ่ม “s” เพื่อบันทึกภาพในโฟลเดอร์การประมวลผลของคุณ
  • ทำซ้ำขั้นตอนที่ 4 & 5
  • คลิกปุ่ม "หยุด" เพื่อออกจากโปรแกรม

หมายเหตุ

[1]

การประมวลผล 3 ต้องใช้ Java 8

[2]

นี่เป็นขั้นตอนด้านความปลอดภัย "ครั้งเดียว" เพื่อหลีกเลี่ยงไม่ให้ชิปกล้อง OV7670 ของคุณเสียหาย

จนกว่าภาพสเก็ตช์ “OV7670_camera_mono.ini” จะถูกอัปโหลดไปยัง Arduino ของคุณ ตัวต้านทานแบบดึงขึ้นภายในจะเชื่อมต่อกับ 5 โวลต์ บวกกับมีความเป็นไปได้ที่สายข้อมูล Arduino บางเส้นอาจเป็นเอาต์พุต 5 โวลต์ … ซึ่งทั้งหมดนั้นเป็นอันตรายถึงชีวิต ชิปกล้อง 3v3 โวลต์ OV7670

เมื่อ Arduino ได้รับการตั้งโปรแกรมแล้ว ไม่จำเป็นต้องทำซ้ำขั้นตอนนี้ และค่ารีจิสเตอร์อาจเปลี่ยนแปลงได้อย่างปลอดภัย

ขั้นตอนที่ 8: การรับภาพสี

การรับภาพสี
การรับภาพสี
การรับภาพสี
การรับภาพสี
การรับภาพสี
การรับภาพสี

ซอฟต์แวร์ต่อไปนี้เป็นเพียงการทดลองและโพสต์ด้วยความหวังว่าเทคนิคบางอย่างจะเป็นประโยชน์ สีดูเหมือนจะกลับด้าน … ฉันยังไม่พบการตั้งค่าการลงทะเบียนที่ถูกต้อง หากคุณพบวิธีแก้ปัญหาโปรดโพสต์ผลลัพธ์ของคุณ

หากเราต้องการได้ภาพสี ไบต์ข้อมูลทั้งหมดจะต้องถูกจับและใช้สูตรต่อไปนี้

OV7670 ใช้สูตรต่อไปนี้เพื่อแปลงข้อมูลสี RGB (แดง เขียว น้ำเงิน) เป็น YUV (4:2:2): [1]

  • Y = 0.31*R + 0.59*G + 0.11*B
  • U = B – Y
  • วี = R – Y
  • Cb = 0.563*(B-Y)
  • Cr = 0.713*(R-Y)

สูตรต่อไปนี้อาจใช้เพื่อแปลง YUV (4:2:2) กลับเป็นสี RGB: [2]

  • R = Y + 1.402* (Cr – 128)
  • G = Y – 0.344136*(Cb -128) – 0.714136*(Cr -128)
  • B = Y + 1.772*(Cb -128)

ซอฟต์แวร์ที่แนบมาเป็นเพียงส่วนเสริมของซอฟต์แวร์ขาวดำ:

  • คำขอจับภาพ "c" จะถูกส่งไปยัง Arduino
  • Arduino ส่งไบต์เลขคู่ (ขาวดำ) ไปยัง PC
  • พีซีจะบันทึกไบต์เหล่านี้ลงในอาร์เรย์
  • Arduino ต่อไปจะส่งไบต์เลขคี่ (chroma) ไปยังพีซี
  • ไบต์เหล่านี้ถูกบันทึกลงในอาร์เรย์ที่สอง … ตอนนี้เรามีรูปภาพทั้งหมดแล้ว
  • ขณะนี้ สูตรข้างต้นใช้กับกลุ่มข้อมูล UYVY สี่ไบต์แต่ละกลุ่ม
  • พิกเซลสีที่ได้จะถูกวางไว้ในอาร์เรย์ "พิกเซล"
  • พีซีจะสแกนอาร์เรย์ "พิกเซล" และรูปภาพจะปรากฏในหน้าต่าง "รูปภาพ"

ซอฟต์แวร์ Processing 3 จะแสดงการสแกนแต่ละครั้งและผลลัพธ์สุดท้ายโดยสังเขป:

  • ภาพที่ 1 แสดงข้อมูล U & V chroma จากการสแกน 1
  • ภาพที่ 2 แสดงข้อมูลความสว่าง Y1 & Y2 จากการสแกน 2
  • ภาพที่ 3 แสดงภาพสี … มีสิ่งเดียวเท่านั้น … กระเป๋าควรเป็นสีเขียว !!

ฉันจะโพสต์รหัสใหม่เมื่อฉันแก้ไขโปรแกรมนี้แล้ว …

ข้อมูลอ้างอิง:

[1]

www.haoyuelectronics.com/Attachment/OV7670%… (หน้า 33)

[2]

en.wikipedia.org/wiki/YCbCr (การแปลง JPEG)

คลิกที่นี่เพื่อดูคำแนะนำอื่น ๆ ของฉัน

แนะนำ: