صفحه 1 از 3

راه اندازی دوربین OV7670 با atmega32 کدویژن

ارسال شده: یک‌شنبه ۱۰ اردیبهشت ۱۳۹۶, ۱۲:۱۹ ب.ظ
توسط sinaset
بنام خدا
باسلام

راه اندازی دوربین OV7670 با atmega32 کدویژن
تصویر  این تاپیک انشالله راه اندازی دوربین OV7670 مدل دارنده al422 و ارتباط ان با کامپیوتر اموزش داده میشود.   این تاپیک طریقه ارتباط به دور طریق می باشد    اطلاعات از طریق واحد usart به کامپیوتر و نمایش تصویر توسط نرم افزار مطلب . (این کدها اماده می باشد!)   اطلاعات از طریق واحد usart به کامپیوتر و نمایش تصویر توسط نرم افزار (*که بر روی ان در حال کار کردن هستم و نرم افزار ان هنوز به طور کامل طراحی نشده! )  تفاوت دوربین بدون رم و با رم پرسرعت FIFO :   که میدانید اختلاف دوربین بدون رم و با رم بسیار زیاد است(تقریبا دو برابر) .    بخاطره این است که، در دوربین معمولی، اطلاعات با سرعت بسیار بسیار بالا فرستاده میشود( 30 فرم در ثانیه!) ، تا میکروکنترولر کم سرعتی مثل AVR بخواهد، دیتا اول رو بدرستی بخواند! کلی از اطلاعات از بین می رود.!    حل مشکل صحیح ارسال شدن اطلاعات، یک رم با ظرفیت بالا، واسطه میشود،تا اطلاعات درون خودش ذخیره کند،و بعد ما بتوانیم با فرستادن دستور ان را واکشی کنیم و بخوانیم.   *گرچه اگر دوربین قابلیت میداشت،که هر یک یا دو ثانیه،یک دیتا ارسال میکرد، فکر میکنم،دیگر مشکل بخصوصی نمی بود !  (فکر میکنم میکروکنترولر ها سری stm32f407 به بالا می تواند چنین سرعت عمل بالا داشته باشند که با دوربین مثل ov7670 بدون FIFO کار کنند !)  مختصری آشنایی با دوربین:   این دوربین VGA می باشد 640 در 480 (اما در این پروژه با رزولیشن پایین تر ، یعنی 320 در 240 راه اندازی میشود،بدلیل اینکه می توان ان را بر روی LCD کوچک مثل nokia n96 نمایش داد)   واسط در دوربین،قابلیت ها بسیار بسیار زیادی دارد! که باید زمان راه اندازی اکثر ان مقدار دهی شوند (که در کتابخانه نوشته شده،چنین کاری صورت گرفته شده)    قابلیت ها: در رابطه با فعال سازی اینتراپ ها،نور ،رنگ،رزولیشن و ...! دوربین می  
تصویر
پایه ها ارتباطی ov7670+AL422
 معرفی پایه های کاربردی!  پایه SIOC و SIOD ،پایه ها ارتباطی و فرستادن دستور به ایسی کنترولی دوربین می باشد، این دو پایه شبیه به I2C می باشند! اما کتابخانه ان نیز متفاوت می باشد (که همراه کدها می باشد) هر دستوری که بخواهیم بفرستیم،باید از این دو پایه استفاده کنیم . 
تصویر
همانجور که می ببینید SIOC کلاک هماهنگ سازی و SIOD دیتا ارسالی این واحد می باشد.که نحویه ارسالشان به مانند شکل بالا می باشد
  HREF و پایه VSYNC جزو اینتراپت ها ایسی می باشد،که خروجی های ایسی می باشد. این دو پایه وقتی ایسی بخواد اطلاعات ارسال کند،هر کدام به شکل خاصی فعال و غیر فعال میشوند،بدین ترتیب یک مفهوم را می رساند! 
تصویر
Vsyne زمانی که ایسی می خواهد دیتا ها( یک فرم اطلاعات) را برای میکروکنترولر بفرستد،با یک کلاک اطلاع میدهد،و وقتی اطلاعات تمام شد،با یک کلاک اطلاع میدهد،(که اطلاعات یک فرم تصویر تمام شده است)
Heref در واقع طول هر دیتا (خط) را مشخص می کند، ما بطور مستقیم نیازی به ان نداریم(به کمک ایسی واسط به پایه رم al422 اتصال پیدا کرده،تا اطلاعات بدرستی درون رم ذخیر شود)
 پایه D0 تا D7: این هشت پایه وظیفه ارسال اطلاعات را دارند(در تصویر بالا [D[0-7 می باشد). در واقع این اطلاعاتی شامل بایت ها مشخص کننده رنگ هر پیکسل تصویر می باشد.(که نمی توان با یک پایه ان را فرستاد! برای همین از هشت پایه مجزا استفاده شده،تا با سرعت بالا اطلاعات فرستاده شود)  پایه PWRDN: پایه مد پاور (کم مصرف) دوربین می باشد.  پایه REST: پایه برای ریست کردن   پایه STROBE: پایه فلش عکاسی می باشد (احتمالا برای زمانی که شخصی قصد داشته باشد،LED یا .. به دوربین اتصال دهد تا در زمان فیلم برداری و .. روشن شود)  پایه FIFO RCK و OE و RRST و WR : مربوط به رم AL422 می باشد،که بتوان این رم را کنترول کرد .   پایه FIFO WR: مهمترین پایه AL422 می باشد! که به کمک ان دستور فعال سازی AL422 فرستاده میشود،تا بدین طریق رم اطلاعات فرستاده شده از دوربین به دورن خودش ذخیره کند.  [External Link Removed for Guests]برای مطالعه بیشتر در رابطه با پایه ها ایسی.  انشالله باقی توضیحات در پست بعد..   سعی خواهد شد،در اینده در نرم افزار مورد نظر در حال ساخت،پردازش تصویر نیز گنجانده شود! گرچه چند ساده باشد.!  . 
===========================
ویرایش 1396.2.27

فهرست موضوعات صفحه هات:

معرفی کدها و نرم افزار نمایش تصویر دوربین.ورژن 1 . (صفحه اول)

Re: راه اندازی دوربین OV7670 با atmega32 کدویژن

ارسال شده: چهارشنبه ۲۷ اردیبهشت ۱۳۹۶, ۱۰:۵۶ ق.ظ
توسط sinaset
بنام خداونده بخشنده و مهربان
باسلام


راه اندازی و اجرا دوربین بر روی کامپیوتر با نرم افزار!
تصویر
خوب خدا شکر توانستیم نرم افزار را اماده کنیم،اکنون نسخه اولیه نرم افزار اماده می باشد،ومی توانید به کمک ان عکس ها گرفته شده توسط دوربین را ببینید.

اما قبل از شروع و ادامه .. کسانی که قصد دارند،تصاویر ارسالی دوربین را به کمک نرم افزار مطلب اجرا کنند. به [External Link Removed for Guests]تاپیک ،که مربوط به انجمن eca می باشد،بروند و از کدهای مرجع معرفی شده،استفاده کنند.
(* ضمن اینکه از کاربر محترم که زحمت کشیدن و کدها را به زبان کدویژن ترجمه کردن همینجا تشکر می کنم).
---
خوب برای راه اندازی به قطعات زیر نیاز می باشد:

ماژول مبدل منطق 3.3 به 5 ولت به تعداد 4 عدد! (که هر ماژول ان 4 خروجی و ورودی داشته باشد)
میکروکنترولر Atmega32
دوربین OV7670 + AL422
سیم و رابط جهت ارتباط دوربین و دیگر قطعات.
رگولاتور 5 ولت (برای میکروکنترولر) و رگولاتور 3.3 ولت برای تامین ولتاژ دوربین ( و قسمت LOW ماژول ها منطق)
یک ماژول usart به USB
کریستال 16 مگاهرتز.
*سعی کنید،حتما خازن الکترولیت(1000 میکرو) و عددسی(104) برای نویز و .. کامپیوتر در مدار قرار دهید.
مبدل منطق 3.3 به 5 مورد نظر.
تصویر
مبدل usart به usb مورد نظر
تصویر
اما نحویه اتصال قطعات بهم دیگر.
شماتیک اصلی به مانند تصویر زیر می باشد
تصویر
 ******  *حتما دو مقاومت 4.7 کیلواهمی از VCC مدار به پایه SIOC و SIOD اتصال داده شود (پول دان)  *حتما یک مقاومت 4.7 کیلو اهمی از GND به پایه vsync (پایه 16 میکروکنترولر) اتصال داده شود.(پول اپ) 
--------------
نحویه سیم کشی ها تغذیه و موارد حاشیه ی ماژول،دوربین و میکروکنترولر
تصویر
-----------------------------------------
نحویه سیم کشی اطلاعاتی ..
تصویر
 اما کدها  کدهایی صفحه اصلی،چنین می باشد: 
Please Login or Register to see this code
اکنون دیگر همه چیز اماده می باشد. می توانید کل برنامه (شامل فایل های برنامه و نرم افزار) را از [External Link Removed for Guests]دانلود کنید.
می توانید خود نرم افزار را به صورت جداگانه از [External Link Removed for Guests]دانلود کنید.(در فایل بالا نیز می باشد،اما در این فایل به صورت تنها می باشد)

قابلیت های نرم افزار:
تصویر
1-نرم افزار به صورت اتوماتیک طراحی شده، بطوری که شما می توانید با تعویض سایز تصویر،و زدن کلید شروع،رزولیشن دلخواه خودتان را دریافت کنید، اما در حال حاضر، دو رزولیشن VGA و QQVGA با مشکل روبرو می باشند:
*در رزولیشن VGA تصویر به طور کامل ارسال نمیشود و مقداری از تصویر تکرار می باشد! اینجانب بسیار تلاش کردم،اما نتواستم عیب ان را پیدا کنم،اگر کسی توانست این مشکل را برطرف کند،حتما قید کند،تا ان را رفع کنم..
*در رزولیشن QQVGA تصویر درست ارسال میشود،اما یک نویز بر روی دوربین می افتد،که دلیل ان را نیز نمی دانم و نتوانستم ان را نیز برطرف کنم .. (اگر این رزولویشن را انتخاب کردید،و نویز بر روی دوربین افتاد،یک بار مدار را ریست کنید)

2-از دیگر قابلیت ها نرم افزار، ذخیره هر تصویر ارسالی به کامپیوتر می باشد، هر تصویر برای کامپیوتر ارسال شود و نرم افزار بتواند ان را اجرا کند،بلافاصله در پوشه Resources یک کپی از ان را قرار میدهد!

3- از دیگر قابلیت ها،نمایش اتوماتیک تصویر می باشد،با تیک زدن این قابلیت،خود نرم افزار به صورت اتوماتیک بعد ار ارسال هر تصویر،دستور فرستادن تصویر دیگر را میدهد،بدین ترتیب می توانید بصورت دائم تصویر دریافت کنید!

4-نمایش تصویر در سایز QVGA در خود نرم افزار. به کمک گزینه لیست عکس،می توانید عکس ها ارسال شده را در خود نرم افزار اجرا کنید ببینید و یا با عکس تازه ارسال شده مقایسه کنید.

5-نمایش تعداد بایت دریافت شده

و...

نکات مهم:

*فیوزبت JTAG میکروکنترولر را غیر فعال کنید،فیوزبیت، کریستال خارجی را نیز فعال کنید،همچنین فیوزبیت CKOPT را بزنید .
*در زمان فرستادن اطلاعات،لطفا کار دیگری انجام ندهید،وگرنه دیتا بدرستی فرستاده نمی شود...(اگر دیتا بدرستی ارسال نشد،یک بار نرم افزار را ببندید و از دوباره اجرا کنید)
* نسخه شماره 4.5 نرم افزار Microsoft NET Framework را حتما بر روی سیستم داشته باشید (که معمولا بر روی سیستم ها که ویندوز سون را دارند نصب می باشد،اگر مشکلی بود از [External Link Removed for Guests]سایت ان را دانلود کنید)

امیدوارم که پروژه مفیده بوده باشد،لطفا اشکالات و پیشنهادات و راهنمایی ها و .. را در رابطه با کدها و برنامه بفرمایید تا ان را برطرف کنم.

باتشکر.

Re: راه اندازی دوربین OV7670 با atmega32 کدویژن

ارسال شده: چهارشنبه ۸ شهریور ۱۳۹۶, ۶:۲۸ ب.ظ
توسط mehdi.zamani
سلام.من این برنامه رو دانلود کردم.اونو به arm at91sam7x256تغییر دادم ولی تنها چیزی که میبینم روی lcd اینه که با هر بار رفرش صفحه یک رنگ کل صفحه نمایش رو پرمیکنه.راهنماییم کنید

Re: راه اندازی دوربین OV7670 با atmega32 کدویژن

ارسال شده: چهارشنبه ۸ شهریور ۱۳۹۶, ۹:۰۴ ب.ظ
توسط sinaset
سلام بر شما
خوب برنامه برای atmega32 نوشته شده،و ARM متفاوت تر از avr می باشد، مطمعا نباید به این راحتی ها اجرا بشه.

الگوریتم برنامه کامپیوتر بعد از زدن کلید "شروع کن" :
1-رزولیشن برای میکرو فرستاده میشود(میکرو براساس ان تنظیمات را ارسال می کند،سپس یک عکس تهیه می کند )
2-سپس منتظر می ایستد،تا تک تک بایت ها دریافت شود
3-بعد از اتمام دریافت بایت ها (* بایت ها براساس رزولیشن متفاوت می باشد)،تصویر نمایش داده میشود.

حالا احتمالا مشکل از چند مسئله می باشد:

1- برنامه بدرستی برای ARM تنظیم نشده و ارتباط صحیح بین میکرو و دوربین برقرار نشده است
2-سرعت uart را درست تنظیم نکرده اید!
3-تنظیم سفارشی (مثل سایز تنظیمات صفحه در برنامه بدرستی نوشته نشده است)
و...

باید بیشتر به روی ان کار کنید.
باتشکر.

Re: راه اندازی دوربین OV7670 با atmega32 کدویژن

ارسال شده: پنج‌شنبه ۹ شهریور ۱۳۹۶, ۱۰:۱۰ ق.ظ
توسط mehdi.zamani
سلام.من USART رو غیر فعال کردم و فقط روی LCDنمایش میدم.من خودم بعد از تنظیمات اولیه ی LCDو دوربین , SCCB رزولیشن رو با تابعqvga_setting();وrgb565_setting();انجام میدم.ارتباط SCCBهم میدونم درسته چون با اجرای if(local_var!=0x76){while(1);} درون حلقه ی WHILE(1) نمیمونه.من این برنامه رو دقیقا برای AT91SAM7X256نوشتم.اگه میخواین تا برنامه رو بفرستم؟

Re: راه اندازی دوربین OV7670 با atmega32 کدویژن

ارسال شده: پنج‌شنبه ۹ شهریور ۱۳۹۶, ۲:۲۹ ب.ظ
توسط sinaset
سلام بر شما
خیر نیازی نیست..
ابتدا بررسی کنید،ببینید کجا برنامه توقف می کند،ایا تنظیمات بدرستی برای برای دوربین ارسال میشود،و از تنظیمات عبور می کند .. یا که در همانجا توقف می کند.
سپس اینتراپ ها را بررسی کنید،ببینید بدرستی فعال شده اند(در میکروکنترولر) چون اگر اینتراپ ها بدرستی فعال نشده باشن،حلقه بدرستی اجرا نمیشون.
سخت افزار را به مانند تصاویر بالا قرار دهید.و نکات که گفته شده رعایت کنید(البته ولتاژ میکرو شما 3.3 ولتی می باشد و اصلا نیازی به مبدل ولتاژ ندارد)
در انتها توابع LCD را بررسی کنید،ببینید بایت ها ارسالی را بدرستی ارسال می کنید.
-----
یک سوال فرعی،تصویر دقیقا به چه شکل می باشد!؟
باتشکر.

Re: راه اندازی دوربین OV7670 با atmega32 کدویژن

ارسال شده: پنج‌شنبه ۹ شهریور ۱۳۹۶, ۶:۴۱ ب.ظ
توسط mehdi.zamani
با هر بار رفرش یک رنگ کل صفحه نمایش رو پر میکند و هر بار رنگ عوض میشود

Re: راه اندازی دوربین OV7670 با atmega32 کدویژن

ارسال شده: پنج‌شنبه ۹ شهریور ۱۳۹۶, ۶:۴۶ ب.ظ
توسط mehdi.zamani
چطور میتونم فیلمشو براتون بفرستم؟

Re: راه اندازی دوربین OV7670 با atmega32 کدویژن

ارسال شده: پنج‌شنبه ۹ شهریور ۱۳۹۶, ۷:۲۸ ب.ظ
توسط mehdi.zamani
یه سوال هم داشتم.مگه پایه ی WEN با صفر فعال نمیشه؟چرا توی برنامه اول 1 شده بعد صفر؟
interrupt [EXT_INT0] void ext_int2_isr(void) //تابع وقفه صفر و کدهاي مربوط به ذخير اطلاعات درون رم
{
// Place your code here
if (start==2)
{
WEN=0;//stop catching frame
start++;
}
if (start==1)
{
WEN=1;//strat catching frame
start++;
}
}

Re: راه اندازی دوربین OV7670 با atmega32 کدویژن

ارسال شده: پنج‌شنبه ۹ شهریور ۱۳۹۶, ۹:۱۸ ب.ظ
توسط sinaset
سلام بر شما
*درصورت امکان همه پیام ها را در یک پست ارسال کنید .

اینطور که از توضیحات شما پیداست،احتمالا شما یک بایت رو برای همه پیکسل ها اعمال می کنید! (یا چیزی شبیه به ان،)
در رابطه با سوال اخرتان،برنامه را در گذشته تنظیم کردم،ولی فکر میکنم،وقتی WENبرابر با 1 بشه فعال میشه.
در رابطه با فیلم هم نیازی به اون صورت نیست.

نکته بعد،فکر میکنم در اینترنت جستجو کنید،بتوانید برنامه مناسب به میکروکنترولر مورد استفاده خودتان را پیدا کنید.

باتشکر.

Re: راه اندازی دوربین OV7670 با atmega32 کدویژن

ارسال شده: شنبه ۱۱ شهریور ۱۳۹۶, ۱۰:۳۱ ق.ظ
توسط mehdi.zamani
سلام.توی دیتاشیتal422نوشته پایه ی wenبا صفر فعال میشه.توی فایل back_up که من از اینجا دانلود کردم هم همین کاره کرده.برای ذخیره اطلاعات wen=0شده

Re: راه اندازی دوربین OV7670 با atmega32 کدویژن

ارسال شده: شنبه ۱۱ شهریور ۱۳۹۶, ۲:۱۲ ب.ظ
توسط sinaset
سلام دوباره.
مدتها قبل این مدار رو راه اندزای کردم،جزییات ان را بدرستی بخاطر ندارم،اما این مسئله که شما اشاره کردید. رو کمی بخاطر دارم(اگر اشتباه نکنم) مدار را که بررسی کردم،متوجه شدم،این پایه مورد اشاره شما با پایه دیگر! توسط یک ایسی کنترول میشود(ایسی که بر روی برد نیز وجود دارد). ان ایسی نیز با 0 غیرفعال و با 1 فعال میشود ...
حال اگر دیتا شیت مدار ov7670+al422 را ببینید،احتمالا بهتر متوجه خواهید شد.
باتشکر.