সুচিপত্র:

আপনার নিজের ক্যামেরা তৈরি করুন: 8 টি ধাপ
আপনার নিজের ক্যামেরা তৈরি করুন: 8 টি ধাপ

ভিডিও: আপনার নিজের ক্যামেরা তৈরি করুন: 8 টি ধাপ

ভিডিও: আপনার নিজের ক্যামেরা তৈরি করুন: 8 টি ধাপ
ভিডিও: 4 ক্যামেরা / 3 ক্যামেরা কিভাবে চালাবেন? | How to use all camera in phone bangla | Imrul Hasan Khan 2024, নভেম্বর
Anonim
Image
Image
আপনার নিজের ক্যামেরা তৈরি করুন
আপনার নিজের ক্যামেরা তৈরি করুন

এই নির্দেশাবলী ব্যাখ্যা করে কিভাবে একটি অমনিভিশন OV7670 ইমেজ সেন্সর, একটি Arduino মাইক্রোকন্ট্রোলার, কয়েকটি জাম্পার ওয়্যার এবং প্রসেসিং 3 সফটওয়্যার ব্যবহার করে একটি একরঙা ক্যামেরা তৈরি করতে হয়।

একটি রঙিন ছবি পাওয়ার জন্য পরীক্ষামূলক সফ্টওয়্যারও উপস্থাপন করা হয়েছে।

একটি 640*480 পিক্সেল ছবি ক্যাপচার করতে "c" কী টিপুন … ছবিটি ফাইলে সংরক্ষণ করতে "s" কী টিপুন। যদি আপনি একটি স্বল্প সময়ের ব্যবধানে চলচ্চিত্র তৈরি করতে চান তাহলে ধারাবাহিক চিত্রগুলি ক্রমানুসারে সংখ্যাযুক্ত।

ক্যামেরা দ্রুত নয় (প্রতিটি স্ক্যান 6.4 সেকেন্ড সময় নেয়) এবং শুধুমাত্র নির্দিষ্ট আলোতে ব্যবহারের জন্য উপযুক্ত।

আপনার আরডুইনো এবং পিসি বাদে খরচ এক কাপ কফির চেয়ে কম।

ছবি

জাম্পার ওয়্যারিং ছাড়া কম্পোনেন্ট পার্টস, খোলার ছবিতে দেখানো হয়েছে।

দ্বিতীয় ছবিটি একটি স্ক্রিন-শট যা Arduino ক্যামেরা সফটওয়্যার এবং প্রসেসিং 3 ফ্রেম-গ্র্যাবার দেখায়। ইনসেট দেখায় কিভাবে ক্যামেরা সংযুক্ত।

ভিডিওটি ক্যামেরাকে অ্যাকশনে দেখায়। যখন "সি" ক্যাপচার কী টিপানো হয় তখন একটি সংক্ষিপ্ত ফ্ল্যাশ থাকে যার পরে ছবিটি স্ক্যান করার সাথে সাথে কার্যকলাপের বিস্ফোরণ ঘটে। স্ক্যান সম্পন্ন হলে ছবিটি স্বয়ংক্রিয়ভাবে ডিসপ্লে উইন্ডোতে উপস্থিত হবে। তারপর ছবি গুলিকে প্রসেসিং ফোল্ডারে "s" কী -এর প্রতিটি প্রেসের পরে প্রদর্শিত হতে দেখা যায়। তিনটি সংরক্ষিত ছবির প্রতিটি দিয়ে দ্রুত সাইক্লিং করে ভিডিওটি শেষ হয়েছে।

ধাপ 1: সার্কিট ডায়াগ্রাম

বর্তনী চিত্র
বর্তনী চিত্র
বর্তনী চিত্র
বর্তনী চিত্র
বর্তনী চিত্র
বর্তনী চিত্র

সার্কিট ডায়াগ্রাম, এই ক্যামেরার সমস্ত সংস্করণের জন্য, ছবি 1 এ দেখানো হয়েছে।

ফটো 2, 3 দেখায় কিভাবে জাম্পার-তার এবং উপাদানগুলি সংযুক্ত থাকে।

অ্যালুমিনিয়াম বন্ধনী ছাড়া ছবিগুলি তাদের পাশে পড়ে আছে।

সতর্কবাণী

OV7670 ক্যামেরা চিপে কোন জাম্পার তার সংযুক্ত করার আগে আপনার Arduino প্রোগ্রাম করুন। এটি পূর্ববর্তী প্রোগ্রাম থেকে 5 ভোল্টের আউটপুট পিনগুলি 3v3 ভোল্টের OV7670 ক্যামেরা চিপকে ধ্বংস করা থেকে বিরত রাখবে।

ধাপ 2: যন্ত্রাংশ তালিকা

অংশ তালিকা
অংশ তালিকা

নিম্নলিখিত অংশগুলি https://www.aliexpress.com/ থেকে প্রাপ্ত হয়েছিল

  • Arduino DIY KIT এর জন্য শুধুমাত্র OV7670 300KP VGA ক্যামেরা মডিউল
  • 1 শুধুমাত্র ক্যামেরা বন্ধনী বাদাম এবং বোল্ট দিয়ে সম্পন্ন
  • 1 শুধুমাত্র ইউএনও R3 আরডুইনো MEGA328P এর জন্য 100% মূল ATMEGA16U2 ইউএসবি কেবল সহ

নিম্নলিখিত অংশগুলি স্থানীয়ভাবে প্রাপ্ত হয়েছিল

  • 18 anly Arduino পুরুষ-মহিলা জাম্পার তারগুলি
  • 3 শুধুমাত্র Arduinin মহিলা-মহিলা জাম্পার তারগুলি
  • 1 শুধুমাত্র মিনি রুটি-বোর্ড
  • Only শুধুমাত্র 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 টি ফ্রেমের প্রত্যেকটির জন্য, আমরা 1Mbps এ পিসিতে পাঠানোর আগে উচ্চ গতিতে আরডুইনোতে একটি লাইন ধরতে পারি। এই ধরনের একটি পদ্ধতি OV7670 কে পূর্ণ গতিতে কাজ করতে দেখবে কিন্তু দীর্ঘ সময় নেবে (এক মিনিটেরও বেশি সময়)।

আমি যে পন্থাটি গ্রহণ করেছি তা হল PCLK কে 8uS পর্যন্ত ধীর করা এবং প্রতিটি নমুনা যেমন আসে তেমন পাঠানো। এই পদ্ধতিটি উল্লেখযোগ্যভাবে দ্রুত (6.4 সেকেন্ড)।

ধাপ 4: নকশা নোট

নকশা নোট
নকশা নোট
নকশা নোট
নকশা নোট
নকশা নোট
নকশা নোট

সামঞ্জস্য

OV7670 ক্যামেরা চিপ একটি 3v3 ভোল্ট ডিভাইস। ডেটা শীট ইঙ্গিত দেয় যে 3.5 ভোল্টের উপরে ভোল্টেজগুলি চিপের ক্ষতি করবে।

আপনার 5 ভোল্টের আরডুইনোকে OV7670 ক্যামেরা চিপ ধ্বংস করতে বাধা দিতে:

  • Arduino থেকে বহিরাগত ঘড়ি (XCLK) সংকেত অবশ্যই একটি ভোল্টেজ ডিভাইডারের মাধ্যমে নিরাপদ স্তরে নামিয়ে আনতে হবে।
  • অভ্যন্তরীণ Arduino I2C পুল-আপ প্রতিরোধক 5 ভোল্ট পর্যন্ত অক্ষম করতে হবে এবং 3v3 ভোল্ট সরবরাহে বাহ্যিক পুল-আপ প্রতিরোধক দ্বারা প্রতিস্থাপিত হতে হবে।
  • কোন জাম্পার-তারের সাথে সংযুক্ত করার আগে আপনার Arduino প্রোগ্রাম করুন কারণ কিছু পিন এখনও একটি পূর্ববর্তী প্রকল্প থেকে আউটপুট হিসাবে প্রোগ্রাম করা যেতে পারে !!! (আমি এটা কঠিন ভাবে শিখেছি … সৌভাগ্যবশত আমি দুটি কিনেছি কারণ সেগুলি এত সস্তা ছিল)।

বাহ্যিক ঘড়ি

OV7670 ক্যামেরা চিপের জন্য 10Mhz থেকে 24MHz ফ্রিকোয়েন্সি পরিসরের একটি বাহ্যিক ঘড়ি প্রয়োজন।

16MHz Arduino থেকে আমরা সর্বোচ্চ ফ্রিকোয়েন্সি তৈরি করতে পারি 8MHz কিন্তু এটি কাজ করে বলে মনে হচ্ছে।

সিরিয়াল লিঙ্ক

1Mbps (মিলিয়ন বিট প্রতি সেকেন্ড) সিরিয়াল লিঙ্ক জুড়ে 1 ডেটা বাইট পাঠাতে কমপক্ষে 10 ইউএস (মাইক্রোসেকেন্ড) লাগে। এই সময়টি নিম্নরূপ গঠিত:

  • 8 ডেটা বিট (8us)
  • 1 স্টার্ট-বিট (1uS)
  • 1 স্টপ-বিট (1uS)

অভ্যন্তরীণ ঘড়ি

OV7670 এর মধ্যে অভ্যন্তরীণ পিক্সেল ঘড়ি (PCLK) ফ্রিকোয়েন্সি বিট [5: 0] দ্বারা রেজিস্টার CLKRC এর মধ্যে সেট করা আছে (ছবি 1 দেখুন)। [1]

যদি আমরা বিট [5: 0] = B111111 = 63 সেট করি এবং উপরের সূত্রটিতে প্রয়োগ করি তাহলে:

  • F (অভ্যন্তরীণ ঘড়ি) = F (ইনপুট ঘড়ি)/(বিট [5: 0} +1)
  • = 8000000/(63+1)
  • = 125000 Hz বা
  • = 8uS

যেহেতু আমরা শুধুমাত্র প্রতি সেকেন্ড ডেটা বাইটের নমুনা নিচ্ছি, 8uS এর একটি PCLK ব্যবধানের ফলে 16uS নমুনার ফলাফল পাওয়া যায় যা প্রক্রিয়াকরণের জন্য 6uS রেখে 1 ডেটা বাইট (10uS) প্রেরণের জন্য যথেষ্ট সময়।

চক্রের হার

প্রতিটি ভিজিএ ভিডিও ফ্রেমে 784*510 পিক্সেল (ছবির উপাদান) থাকে যার মধ্যে 640*480 পিক্সেল প্রদর্শিত হয়। যেহেতু YUV (4: 2: 2) আউটপুট ফরম্যাটে প্রতি পিক্সেলের গড় 2 ডেটা বাইট রয়েছে, তাই প্রতিটি ফ্রেমে 784*2*510*8 uS = 6.4 সেকেন্ড সময় লাগবে।

এই ক্যামেরাটি দ্রুত নয় !!!

অনুভূমিক অবস্থান

640 পিক্সেলের পার্থক্য বজায় রেখে যদি আমরা HSTART এবং HSTOP মান পরিবর্তন করি তাহলে ছবিটি অনুভূমিকভাবে স্থানান্তরিত হতে পারে।

আপনার ছবি বাম দিকে সরানোর সময়, আপনার HSTOP মান HSTART মানের চেয়ে কম হওয়া সম্ভব!

আতঙ্কিত হবেন না … ছবি 2 -এ বর্ণিত কাউন্টার ওভারফ্লোগুলির সাথে এটি করা।

নিবন্ধন

লাভ, হোয়াইট ব্যালেন্স, এবং এক্সপোজারের মতো বিষয়গুলি নিয়ন্ত্রণের জন্য OV7670 এর 201 টি আট-বিট রেজিস্টার রয়েছে।

একটি ডেটা বাইট শুধুমাত্র [0] থেকে [255] রেঞ্জের 256 টি মানের জন্য অনুমতি দেয়। যদি আমাদের আরও নিয়ন্ত্রণের প্রয়োজন হয় তবে আমাদের অবশ্যই বেশ কয়েকটি রেজিস্টার ক্যাসকেড করতে হবে। দুটি বাইট আমাদের 65536 সম্ভাবনা দেয় … তিনটি বাইট আমাদের 16, 777, 216 দেয়।

ফটো 3 এ দেখানো 16 বিট AEC (স্বয়ংক্রিয় এক্সপোজার কন্ট্রোল) রেজিস্টারটি এমন একটি উদাহরণ এবং নিম্নলিখিত তিনটি রেজিস্টারের অংশগুলিকে একত্রিত করে তৈরি করা হয়েছে।

  • AECHH [5: 0] = AEC [15:10]
  • AECH [7: 2] = AEC [9: 2]
  • COM1 [1: 0] = AEC [1: 0]

সতর্ক হোন … রেজিস্টার ঠিকানাগুলি একসাথে গোষ্ঠীভুক্ত নয়!

ক্ষতিকর দিক

একটি ধীর ফ্রেম রেট অবাঞ্ছিত পার্শ্ব প্রতিক্রিয়া একটি সংখ্যা প্রবর্তন:

সঠিক এক্সপোজারের জন্য, OV7670 30 fps (প্রতি সেকেন্ডে ফ্রেম) এর ফ্রেম রেটে কাজ করার আশা করে। যেহেতু প্রতিটি ফ্রেম 4.4 সেকেন্ড সময় নিচ্ছে ইলেকট্রনিক শাটারটি স্বাভাবিকের চেয়ে ১ times০ গুণ বেশি খোলা থাকে যার অর্থ হল কিছু ইমেজ ওভার-এক্সপোজড হবে যদি না আমরা কিছু রেজিস্টার মান পরিবর্তন করি।

অতিরিক্ত এক্সপোজার রোধ করার জন্য আমি সমস্ত AEC (অটো এক্সপোজার কন্ট্রোল) রেজিস্টার বিটগুলিকে শূন্যে সেট করেছি। তবুও লাইটের সামনে একটি নিরপেক্ষ ঘনত্বের ফিল্টার প্রয়োজন যখন আলো উজ্জ্বল হয়।

একটি দীর্ঘ এক্সপোজার ইউভি ডেটাকে প্রভাবিত করে বলেও মনে হয়। যেহেতু আমি এখনও সঠিক রং তৈরি করে এমন রেজিস্টার কম্বিনেশন খুঁজে পাইনি … এটিকে অগ্রগতির কাজ বলে বিবেচনা করুন।

বিঃদ্রঃ

[1]

ডেটা শীটে দেখানো সূত্র (ছবি 1) সঠিক কিন্তু পরিসীমা শুধুমাত্র বিট দেখায় [4: 0]?

ধাপ 5: টাইমিং ওয়েভফর্ম

টাইমিং ওয়েভফর্মস
টাইমিং ওয়েভফর্মস
টাইমিং ওয়েভফর্মস
টাইমিং ওয়েভফর্মস
টাইমিং ওয়েভফর্মস
টাইমিং ওয়েভফর্মস

"ভিজিএ ফ্রেম টাইমিং" ডায়াগ্রামের নীচের বাম কোণে নোটটি পড়ে (ছবি 1):

YUV/RGB এর জন্য, tp = 2 x TPCLK

পরিসংখ্যান 1, 2, এবং 3 ডেটা শীট যাচাই করে এবং নিশ্চিত করে যে Omnivision প্রতি 2 টি ডেটা বাইটকে 1 পিক্সেলের সমতুল্য হিসাবে বিবেচনা করে।

অসিলোস্কোপ ওয়েভফর্মগুলিও যাচাই করে যে ফাঁকা ব্যবধানের সময় HREF কম থাকে।

Fig.4 নিশ্চিত করে যে Arduino থেকে XCLK আউটপুট 8MHz। স্কয়ারওয়েভের পরিবর্তে আমরা একটি সাইনওয়েভ দেখার কারণ হল যে সমস্ত অদ্ভুত সুরেলা আমার 20MHz স্যাম্পলিং অসিলোস্কোপের জন্য অদৃশ্য।

ধাপ 6: ফ্রেম গ্র্যাবার

ফ্রেম গ্র্যাবার
ফ্রেম গ্র্যাবার

একটি OV7670 ক্যামেরা চিপের মধ্যে ইমেজ সেন্সর 656*486 পিক্সেলের একটি অ্যারে ধারণ করে যার মধ্যে ছবির জন্য 640*480 পিক্সেলের একটি গ্রিড ব্যবহার করা হয়।

HSTART, HSTOP, HREF, এবং VSTRT, VSTOP, VREF রেজিস্টার মানগুলি সেন্সরের উপরে ইমেজ স্থাপন করতে ব্যবহৃত হয়। যদি ছবিটি সেন্সরের উপর সঠিকভাবে না থাকে তাহলে আপনি "ডিজাইন নোটস" বিভাগে বর্ণিত এক বা একাধিক প্রান্তের উপরে একটি কালো ব্যান্ড দেখতে পাবেন।

OV7670 উপরের বাম কোণে থেকে শুরু করে নীচের ডান পিক্সেলে না পৌঁছানো পর্যন্ত ছবির প্রতিটি লাইন এক পিক্সেল স্ক্যান করে। Arduino সহজভাবে এই পিক্সেলগুলিকে পিসি তে সিরিয়াল লিঙ্কের মাধ্যমে পাস করে যেমন ছবি 1 এ দেখানো হয়েছে।

ফ্রেম দখলকারীদের কাজ হল এই 640*480 = 307200 পিক্সেলের প্রতিটি ক্যাপচার করা এবং বিষয়বস্তু একটি "ইমেজ" উইন্ডোতে প্রদর্শন করা

প্রক্রিয়াকরণ 3 নিম্নলিখিত চারটি কোড ব্যবহার করে এটি অর্জন করে !!

কোড লাইন 1:

বাইট byteBuffer = নতুন বাইট [maxBytes+1]; // যেখানে maxBytes = 307200

এই বিবৃতিতে অন্তর্নিহিত কোড তৈরি করে:

  • একটি 307201 বাইট অ্যারে যার নাম "বাইটবফার [307201]"
  • অতিরিক্ত বাইট একটি অবসান (লাইনফিড) অক্ষরের জন্য।

কোড লাইন 2:

আকার (640, 480);

এই বিবৃতিতে অন্তর্নিহিত কোড তৈরি করে:

  • "প্রস্থ = 640;" নামে একটি পরিবর্তনশীল
  • "উচ্চতা = 480" নামে একটি পরিবর্তনশীল;
  • একটি 307200 পিক্সেল অ্যারে যার নাম "পিক্সেল [307200]"
  • একটি 640*480 পিক্সেল "ইমেজ" উইন্ডো যেখানে পিক্সেল অ্যারের বিষয়বস্তু প্রদর্শিত হয়। এই "ইমেজ" উইন্ডোটি 60 fps এর ফ্রেম রেটে ক্রমাগত রিফ্রেশ হয়।

কোড লাইন 3:

byteCount = myPort.readBytesUntil (lf, byteBuffer);

এই বিবৃতিতে অন্তর্নিহিত কোড:

  • স্থানীয়ভাবে আগত ডেটা বাফার করে যতক্ষণ না এটি একটি "এলএফ" (লাইনফিড) অক্ষর দেখে।
  • যার পরে এটি প্রথম 307200 বাইট স্থানীয় ডেটা বাইটবফার অ্যারেতে ফেলে দেয়।
  • এটি "বাইটকাউন্ট" নামে একটি ভেরিয়েবলে প্রাপ্ত বাইটের সংখ্যা (307201) সংরক্ষণ করে।

কোড লাইন 4:

পিক্সেল = রঙ (বাইটবফার );

যখন ফর-নেক্সট-লুপে রাখা হয়, এই বিবৃতিতে অন্তর্নিহিত কোড:

  • "বাইটবফার " অ্যারের বিষয়বস্তু "পিক্সেল " অ্যারেতে অনুলিপি করে
  • যার বিষয়বস্তু চিত্র উইন্ডোতে প্রদর্শিত হয়।

কী স্ট্রোক:

ফ্রেম-গ্রাবার নিম্নলিখিত কীস্ট্রোকগুলি স্বীকৃতি দেয়:

  • 'C' = ছবিটি ক্যাপচার করুন
  • 'S' = ছবিটি ফাইলে সংরক্ষণ করুন।

ধাপ 7: সফটওয়্যার

ইতিমধ্যেই ইনস্টল না থাকলে নিচের প্রতিটি সফটওয়্যার প্যাকেজ ডাউনলোড এবং ইনস্টল করুন:

  • Https://www.arduino.cc/en/main/software থেকে "Arduino"
  • Https://java.com/en/download/ [1] থেকে "জাভা 8"
  • Https://processing.org/download/ থেকে "প্রসেসিং 3"

Arduino স্কেচ ইনস্টল করা:

  • সমস্ত OV7670 জাম্পার তারগুলি সরান [2]
  • আপনার আরডুইনোতে একটি ইউএসবি কেবল সংযুক্ত করুন
  • “OV7670_camera_mono_V2.ino” (সংযুক্ত) এর বিষয়বস্তু একটি Arduino “স্কেচ” এ কপি করে সংরক্ষণ করুন।
  • আপনার Arduino এ স্কেচ আপলোড করুন।
  • আরডুইনো আনপ্লাগ করুন
  • আপনি এখন নিরাপদে OV7670 জাম্পার তারগুলি পুনরায় সংযোগ করতে পারেন
  • ইউএসবি কেবল পুনরায় সংযোগ করুন।

প্রসেসিং স্কেচ ইনস্টল এবং চালানো

  • “OV7670_camera_mono_V2.pde” এর বিষয়বস্তু কপি করুন (সংযুক্ত) একটি প্রসেসিং “স্কেচ” এ এবং সেভ করুন।
  • উপরের বাম “রান” বাটনে ক্লিক করুন… একটি কালো ছবির উইন্ডো আসবে
  • "কালো" চিত্র-উইন্ডোতে ক্লিক করুন
  • একটি ছবি ক্যাপচার করতে "c" কী টিপুন। (প্রায় 6.4 সেকেন্ড)
  • আপনার প্রসেসিং ফোল্ডারে ছবিটি সংরক্ষণ করতে "s" কী টিপুন
  • ধাপ 4 এবং 5 পুনরাবৃত্তি করুন
  • প্রোগ্রাম থেকে বেরিয়ে আসার জন্য "স্টপ" বাটনে ক্লিক করুন।

মন্তব্য

[1]

3 প্রক্রিয়াকরণের জন্য জাভা 8 প্রয়োজন

[2]

আপনার OV7670 ক্যামেরা চিপের ক্ষতি এড়ানোর জন্য এটি একটি "শুধুমাত্র একবার" নিরাপত্তা পদক্ষেপ।

যতক্ষণ না "OV7670_camera_mono.ini" স্কেচটি আপনার আরডুইনোতে আপলোড করা হয়েছে ততক্ষণ পর্যন্ত অভ্যন্তরীণ পুল-আপ প্রতিরোধক 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
  • V = R - Y
  • Cb = 0.563*(B-Y)
  • Cr = 0.713*(R-Y)

YUV (4: 2: 2) কে আরজিবি রঙে রূপান্তর করতে নিম্নলিখিত সূত্রগুলি ব্যবহার করা যেতে পারে: [2]

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

সংযুক্ত সফটওয়্যারটি কেবল একরঙা সফটওয়্যারের একটি এক্সটেনশন:

  • একটি "সি" ক্যাপচার অনুরোধ Arduino পাঠানো হয়
  • আরডুইনো পিসিতে সম সংখ্যক (একরঙা) বাইট পাঠায়
  • পিসি এই বাইটগুলিকে একটি অ্যারেতে সংরক্ষণ করে
  • Arduino পরবর্তী পিসিতে বিজোড় সংখ্যাযুক্ত (ক্রোমা) বাইট পাঠায়।
  • এই বাইটগুলি একটি দ্বিতীয় অ্যারেতে সংরক্ষিত হয় … এখন আমাদের কাছে সম্পূর্ণ চিত্র রয়েছে।
  • উপরের সূত্রগুলি এখন চারটি UYVY ডেটা বাইটের প্রতিটি গ্রুপে প্রয়োগ করা হয়।
  • ফলস্বরূপ রঙের পিক্সেলগুলি "পিক্সেল " অ্যারেতে স্থাপন করা হয়
  • পিসি "পিক্সেল " অ্যারে স্ক্যান করে এবং "ইমেজ" উইন্ডোতে একটি ছবি প্রদর্শিত হয়।

প্রসেসিং 3 সফটওয়্যারটি সংক্ষেপে প্রতিটি স্ক্যান এবং চূড়ান্ত ফলাফল প্রদর্শন করে:

  • ছবি 1 স্ক্যান 1 থেকে U & V ক্রোমা ডেটা দেখায়
  • ছবি 2 স্ক্যান 2 থেকে Y1 এবং Y2 লুমিনেন্স ডেটা দেখায়
  • ছবি 3 রঙ ইমেজ দেখায়… শুধুমাত্র একটি জিনিস ভুল… ব্যাগ সবুজ হওয়া উচিত !!

আমি এই প্রোগ্রামটি সমাধান করার পরে আমি নতুন কোড পোস্ট করব …

তথ্যসূত্র:

[1]

www.haoyuelectronics.com/Attachment/OV7670%… (পৃষ্ঠা 33)

[2]

en.wikipedia.org/wiki/YCbCr (JPEG রূপান্তর)

আমার অন্যান্য নির্দেশাবলী দেখতে এখানে ক্লিক করুন।

প্রস্তাবিত: