ايران ويج

نسخه‌ی کامل: كدهاي ريموت كنترل سيستمهاي صوتي و تصويري براي AVR
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2 3 4 5 6
علاوه بر تلویزیون پارس با رسیور استارست هم تست کردم اما هیچ گونه عکس العملی ندیدم ! :!:
حتی چشمک زدن چشم فرستنده مادون قرمز رو هم با دوربین موبایل دیدمش . 8O

من فرکانس میکرو هم رو روی 4 مگاهرتز و prescale=256 تنظیم کردم ، با این تنظیمات فرکانس کار تایمر دریافت و ارسال پالس ها برابر 15.6 کیلوهرتز می شود . آیا منظور شما همین فرکانس تایمر هاست ؟ یعنی من باید Prescale=128 تنظیم کنم :
من تو محیط بسکام برای تایمر صفر 128 نمی تونم تعریف کنم ولی تایمر 2 که برای تولید پالس های خروجی پیکربندی کردم میتونم روی prescale=128 تعریف کنم .

این راه هم تست کردم اما هیچ به هیچ ... :cry: :evil:



-----------------------------------------------------------------------------------------------
همگی می دونیم که برای بدست آوردن طلای خالص چه مشقت ها و زمان هایی صرف میشه پس نتیجه اینکه باید در ابتدا یک وقت و اراده کافی وجود داشته باشه تا گرانبهاترین چیزها بدست آید.
اینجانب پیرمرد 90 ساله !
:wink:
سلام آقایان pardazeshgar و etermodern !!!من تو یه سایت دیگه مطلبی رو پیدا کردم میذارم اینجا شاید کمکی بکنه!این برنامه ای است که نوشتن و توضیحش هم پایین است!میدونید که مشکل تو پروتکل های متفاوت ریموت هاست پس ممکنه یک برنامه به همه ریموت ها جواب نده!
لطفا اگه جواب گرفتین با توضیحات و نقشه کامل همین جا قرار بدین تا همه استفاده کنند!
$regfile = "m8def.dat"
$lib "mcsbyte.lbx"
$crystal = 8000000
Config Rc5 = Pind.2
Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portb.0 , Rs = Portb.1
Config Lcd = 16 * 2
Enable Interrupts
Dim Address As Byte , Command As Byte
Dim Contor As Byte
Cls
Contor = 0
Do
Getrc5(address , Command)

Command = Command And &B01111111
If Address <> 255 Then
Locate 1 , 1
Lcd Address ; " " ; Command ; " "
Contor = Contor + 1
Locate 2 , 1
Lcd Contor ; " "
End If
Loop
End

این رو تست کن.(البته با ال سی دی).
احتمالا با این سنسور های تو بازار هم مشکلی نداره (کلا RC5 یک استاندارده که هم سنسور و هم دیکدر استاندارد عمل میکنند). مشکل از کنترل هاست چون همه از این استاندارد استفاده نمیکنند و برای خودشون یک پروتکل مجزا طراحی کرده اند. برای همین با دیکدر Rc5 کدهای نا مفهوم مشاهده میشده.
شما با چند نوع کنترل مختلف امتحان کنید و همچنین میتونید با دستور Rc5Send یک فرستنده rc5 هم بسازید و با اون تستش کنید.
به هر حال مشکل از کنترلهاست بیشتر.
مهندس غفاری من کارم از اینا گذشته ، شما دقیقا متوجه پروژه من نشدید : من می خوام یک دستگاه کپی کننده کد درست کنم به عبارتی مدارم کاری به پروتکل و اینا نداره و فقط تعداد و اندازه پالس های دریافتی رو حفظ می کنه و مشابه آنها رو درست و ارسال میکنه .
طرح من با یک چشم کد رو میگیره و با یه چشم دیگه مشابه کد رو ارسال می کنه (send - receive)

این برنامه ای که شما گذاشتی یه چیز ساده هستش که فقط با پروتکل RC5 کار میکنه و روی دو سه تا کنترل هم بیشتر جواب نمیده . تازه فقط هم یک گیرنده هستش .
به این راحتی که فکر می کنی نیست
اولا کد ها مدوله می شن باید اول ببینی این قسمت مدارت کار می کنه یا نه
یه فرکانس 37KHz هست که باید حدف و اضافه بشه با یه گیرنده معمولی (3 پایه ها) اول تست کن ببین از این رد می شه یانه
بعد پهنای پالس ها خیلی مهمه یعنی حداقل 10 برابر فرکانس کاری باید نمونه برداری کنی (که فکر کنم کم باشه) و بعد بتونی فرکانس تکرار رو به دست بیاری که کار راحتی نیست
سلام اساتید!
من که نگفتم برنامه ای که میفرستم آخرشه!قبول هم دارم که سوادم تو AVR کمتر از دوستان هست!
موضوع بحث فرمان دادن به میکرو با ریموته که با هر دکمه یه کاری بکنه!حالا با چه روشی به میکرو پالسهای ریموت رو بفهمونیم بماند!روش شما خیلی خوبه و اگر جواب بگیرید منم میتونم استفاده کنم!هدف تو این بحث ها اینه که هرکی هرچی میدونه بذاره اینجا حالا برای یکی جالب و مفیده و برای دیگری ساده و پیش پا افتاده!میکرو وقتی فهمید که چی میگیره اونوقت من میگم با هر کد اینکار رو بکن و شما میگید هرچی گرفتی از این پورت عین اونو بده بیرون!پس فقط مهمه که میکرو دریافتیش رو درک کنه!من یه سایتی پیدا کردم که شکل پالسهای خروجی ریموت رو خیلی دقیق داده...مال سونی رو... شاید همین جا بهم معرفی شده....به هر حال لینکش رو میذارم اینجا یه نگاهی بکنید!برای اینکه بتونید به میکرو یه پالسی رو بدید و ازش عین اونو بخواهید باید بدونید فرکانس حامل و نوع مدول و عرض پالس هاش و ..چیه!فکر کنم تو این سایت به همشون به خوبی اشاره شده!با شکل موج و تمام مشخصاتش!
http://users.pandora.be/davshomepage/index.htm
اول شرمنده که وقفه در ارسال وجود داشت. مشکل اینترنت بود.
فرمایش های شما کاملا صحیح و درست. من تنها دو روز شروع کردم.
اولین روز رفتیم تو جاده خاکی :wink: و دست انداز بعد که راه رو پیدا کردیم دو سه ساعت دور خودم چرخیدم میکرویی که داشتم انگاری نیمسوز شده بود. در فرکانس 16M کار نمی کرد. اصلا فکر میکرو نبودم. اولین بار بود چنین حالتی پیش آمد در فرکانس پایین کار میکرد :!: این هم تمام شد حالا دوباره امیدوار شدم :roll: .
راستی شما مدار گیرنده رو چه چیزی قرار دادید؟ Detector یا LED؟ اگر از آشکار ساز 3 پایه استفاده می کنید برنامه بالا جواب نخواهد داد اول نمی دونستم اشتباه می کردم!!!
اطلاعاتم کامل نبود :oops: اول نگاهم فرق می کرد داخل کار آمدم فهمیدم چی شده :roll: .
به کل باید دقیق تر باشیم فکر کنم مشکل همین زمان باشه(این زمان با اون زمان تفاوت دارد)
بیشتر کنترل ها از فرکانس حامل 40K و 38K استفاده میکنند. اساسشان خیلی شبیه به همه. تنها قالب ها متفاوتند یعنی فهماندن به میکرو راه خوبی است. یه مشکل همین فرکانس حامل است. باید آزمایش کنیم که فکر کنم جواب بدهد. مثلا دستگاهی که فرکانس حامل 40k دارد را با 38K کنترل کنیم این بشه ادامه کار آسان میشه.
از کدهای که در اختیار قرار دادید ممنون کد ها صحیح اند به شرطی که قالب Sony را داشته باشیم.که آن را هم داریم. به بخاطر شباهت عمل کرد انتخاب یاد دادن به میکرو گسترده تر و کاربردی تر است.
مواردی که لازم است PWM INT Timer. حالا نظر شما چیست؟ رو یک کنترل کار کنیم. دقیق بفرمایید در چه زمینه ای صحبت کنیم؟ هم اکنون در حال تحقیق و آزمایشم. با کمال میل :P من در خدمتم اطلاعاتی که تا اینجا و همچنین بعد از این بدست می آورم را به اشتراک قرار دهم. تا روزی بعد خدا نگهدار.
سلام آقا هادی ،

آره میدونم که فرکانس ارسال و دریافت حدود 38 کیلوهرتز هست اما نمیدونم چطوری مدوله کنم .

آقا هادی من متوجه این مدوله نیستم ، آخه من دارم با زمان کار می کنم یعنی مدت زمان پالس های سطح 1و 0 رو اندازه می گیرم و بعدش بازم با راهاندازی تایمر همون مدت زمانها رو درست می کنم ! خوب در ظاهر فکر می کنم کارم درسته اما باطن قضیه رو درک نمی کنم ! ؟

آیا باید ابندا یک سیگنال با فرکانس 38 کیلوهرتز درست کنم بعدش به روش 1T و 2T و ... پالس کد برای ارسال درست کنم ؟

این پروژه ساده ای هست منم یه نکته کوچولو رو از قلم انداختم ! :?: خستم کرده !
دیگه دارم نا امید میشم از این پروژه :cry:
از آقای غفاری عذرخواهی می کنم ، قصد جسارت نداشتم .

آقای غفاری شما استاد بنده هستید ، شسکت نفسی می فرمائید .

صحبت شما کاملاً درسته و منطقی هست .

ممنون از لینکتون ، قبلاً دیده بودمش اما گمش کرده بودم شما کمک کردید که یه چیزایی دستگیرم بشه ، سپاسگذارم .

موفق باشید
آقای Pardazesh-gar کاملاً درست می فرمائید این زمان و اون زمان خیلی فرق میکنه .

مدار گیرنده که به میکرو متصله یک چشم 3 پایه به شماره 1238 هستش و مدار گیرنده اون طرف هم که تلویزیون پارس که باهاش مدارم رو تست می کنم .
عرض کردید که این برنامه با گیرنده 3 پایه جواب نمیده ؟ ! ! ! میشه بیشتر توضیح دید .

متاسفانه هنوز متوجه نشدم که چطوری باید مدوله کنم ،( ساخت کریر 38 کیلو هرتز که با PWM کاری نداره ) من مشکلم اینه که نمیدونم چطوری باید این مدت زمانها رو که دریافت کردم روی کریر قرار بدهم و یا چگونه باید ارسالش کنم ؟

چقدر دوستان فعال ، مححقق و پژوهشگر و ... داشتم و خودم بی خبر بودم ،(آب در کوزه و ما تشنه) یک دنیا ممنون از همگی دوستان .

خوب دقیقاً زمینه صحبت ما میشه " درست و ارسال کردن پالسهای مادون قرمز مشابه همون پالسهای دریافتی " .


پیروزی همگی را از خداوند متعال خواستاریم .
سلام!آقا من که ناراحت نشدم.اصلا ما کوچیک همتونیم!
شما تو پستهایی که اوایل فرستادید روشتون خیلی خوب بود..همونی که با خود ریموت کدهارو تو حافظه میکرو ذخیره کردی..اونو ادامه بدی بهتره که...من مشکلم اینه که تو AVR ضعیفم!به پالسهای سونی که نگاه میکردم حتما شما هم متوجه شدید که خروجی هر عملکرد پالسهاش فرق میکنه..یعنی زمان یک شدنشون...واقعا آدم میمونه تو کار این ریموت...آیا فقط با زمان یک و صفر شدن کلید هارو تعریف کردن؟ یا با یه فرکانس حامل کد میفرستن؟آیا پالسهای همزمانی (بین فرستنده و گیرنده) هم به همراه کد ارسال میشه؟
اگه لطف کنید بحث رو با دو موضوع ادامه بدیم...البته این دو موضوع عین همه و فقط کاربردش متفاوته!
1)" درست و ارسال کردن پالسهای مادون قرمز مشابه همون پالسهای دریافتی "
2)" دریافت کدهای ریموت توسط میکرو و انجام کاری که ازش میخواهیم "یعنی با ریموت بتونیم چندتا دستگاه رو روشن وخاموش کنیم!
موافقید؟
من یه بحث دیگه پیدا کردم...که فکر کنم شبیه کار etrmodern هست!میذارم اینجا:
فقط وجدانیش هر وقت به نتیجه رسیدید ما رو تنها نذاریدها!!! 8)

rc5 پروتكلي براي فرستنده گيرندههاي شركت فيليپس هست.من با اين دستور كار كردم و به خوبي هم كار ميكند. اما من از پروتكل شركت سوني و از كنترلهاي اين شركت استفاده كردم و از دستورات RC5 استفاده نكردم.چون اين دستورات كمي كند كار ميكند. براي اين كار شما به يك گيرنده مادون قرمز سه پايه احتياج داريد كه من يك نمونه از آن را 750 تومان خريدم. شما ميتوانيد از گيرنده هاي CD يا تلويزونهاي اوراقي نيز استفاده كنيد.اين گيرنده ها دوپايه براي تغذيه و يك پايه نيز براي ديتا دارند.در مرحله بعد بايد يك عدد ريموت از بازار تهيه كنيد . من نوعي از ريموت راكه حدود 20 مدل تلويزون را ساپورت ميكرد به قيمت سه هزار تومان خريداري كردم كه هم گيرندههاي فيليپس را راه اندازي ميكرد و هم گيرندههاي سوني وهم تلويزون خونمون رو! به قيمت سه هزار تومان!
در مرحله بعد شما بايد يا از دستورات RC5 استفاده كنيد كه كاملا در HELP نرم افزار BASCOM توضيح داده يا بايد با استفاده ازشكل موج ريموت برنامه آن را بنويسيد. براي اين كار شما بايد از يك LOGIC ANALYZER ويا اوسيلوسكوپ استفاده كنيد. اين هم شكل موج ريموتهاي سوني حاضر و آماده :
http://www.ustr.net/infrared/sony.shtml
اين نوع شكل موج همان طور كه توضيح داده شده براي ريموتهاي سوني از قبيل RM-Y123 و RMT-V124B وغيره كار ميكند. دراين نوع ريموتهابيت اول START BIT
هست كه طول آن 2.4MS است . بيتهاي 1 طول آن 1.8MS است وبيتهاي صفر طول آن 1.2MS است.7 بيت اول مربوط به دستورات (كد هر دكمه )و پنج بيت دوم مربوط به آدرس (كد ريموت ) است. در زير يك نمونه برنامه كه براي ريموتهاي سوني نوشته شده آورده شده:

http://mcselec.com/index.php?option=com_...&Itemid=57

من اين برنامه را براي فركانس 8MHZ بهينه سازي كرده ام . براي فركانسهاي ديگر بايد اعداد قرمز تغيير كند
$regfile = "m16def.dat" 'the chip type, subtitutes with the one you like
$crystal = 8000000 'the crystal speed i used

Config Timer0 = Timer , Prescale = 256 'config timer0 for data trap timer
Stop Timer0 'stop timer0 first for other process

Config Pind.3 = Input 'configure the int pin , i used int1 pin
Set Portd.3 'set the pull up resistor
Pin_ir Alias Pind.3 'alias for easy naming

Config Int1 = Falling 'configure int1 on falling edge
On Int1 Isr_int1 'the isr label

Dim Data_ir As Word 'the variabel need for the purpose
Dim Cnt_ir As Byte
Dim Flag_ir_start As Bit
Dim Flag_ir_ok As Bit

Print "SONY REMOTE DECODER" 'print some output to rx

Enable Interrupts 'enable global interrupt
Enable Int1 'enable int1 interrupt

Do 'main program start here
If Flag_ir_ok = 1 Then 'wait flag_ir_ok=1
Reset Flag_ir_ok 'reset the flag
Disable Int1 'disable the int1, so ignore all ir data from here

Print Data_ir 'print the data
Reset Flag_ir_ok 'reset the flag

Enable Int1 'enable the int1 interrupt to receive ir sony again
End If
Wait 1 'wait for sometime
Loop

'isr for infrared sensor
Isr_int1:

Timer0 = 0 'start timer0 to count
Start Timer0
Bitwait Pin_ir , Set 'wait the pin_ir to high again
Stop Timer0 'stop timer0

If Cnt_ir = 0 Then 'if this is the 1st data
If Timer0 > 36 And Timer0 < 40 Then 'check for a start bit, with prescale=256 and
Set Flag_ir_start 'crystal 11,0592MHz, got timer0 value between 111 and 114
Incr Cnt_ir 'as the correct ir start bit. Measure all the neccessary bit first
End If ' if you want to change it
End If

If Flag_ir_start = 1 And Cnt_ir > 0 Then 'a start bit found -> start sampling for next 12 bit

Decr Cnt_ir
If Timer0 < 18 Then 'timer0<18 then it is a zero(0), else it is a one (1)
Data_ir.cnt_ir = 0 'assign it to a word value for easy recording
Else
Data_ir.cnt_ir = 1
End If

Cnt_ir = Cnt_ir + 2
If Cnt_ir > 11 Then 'got all 12 bit
Shift Data_ir , Right , 1 'get rid of the start bit
Reset Flag_ir_start 'reset the start bit flag
Set Flag_ir_ok 'the data is ready to be read
Cnt_ir = 0 'reset the counter
End If

End If

Return
براي ريموتي كه در بالا معرفي كردم در 8MHZ بايد 36 به 80 و 40 به 90 و 18 به 30 تغيير كند.
در ضمن برد آن هم بسيار بالا و من تا 30 متر را امتحان كردم بسيار عالي جواب داد.
......................................................................................................
فقط چند نكته ديگه اگه خواستيد كنترلهاي تلويزيونهاي ديگه رو خودتون كشف رمز كنيد:
1-در طرف گيرنده شكل موج كاملا معكوس طرف فرستنده است و در حالتي كه كليدي فشرده نشده خروجي سنسور 1 هست.
2- در ريموتهاي مختلف تعداد بيتها و طول آنها فرق ميكند :
protocol name kHZ start bit data bits stop bit
1-NEC 39,2 1 32 1
2-SIRCS 40 1 12 -
3-RC5 36 1 12 -
4-JAPAN 32 1 48 -
5-SAMSUNG 39,2 1 32 1

اينهم شكل موجهاي آنها:
http://www.techdesign.be/projects/011/011_waves.htm
ارسال کردن پالسهای مادون قرمز مشابه همون پالسهای دریافتی به شرطی از LED استفاده کنید. نه آشکار ساز. البته استفاده از آشکار ساز انتخاب مناسب تری است. و تنها نیاز به تغییر برنامه است.به تصویر توجه کنید.
---
چرا واژه (ض ع ی ف) دیگه اینرو نگید لطفا.
همه از صفر شروع کردیم. شما هم باید شروع کنی خیلی زود نتیجه میده.
---
من از اول گفتم قصد دارم تمام کنم و به اشتراک قرار بدم. بهم وحی شده یه کاری کنم. تا یه ماه و یکمی اینجوریم. بعدش رو خبر ندارم. Amaze
حالا بعد از تمام شدن این موضوع اگر ایده دیگری دارید با کمال میل آماده همکاری هستم. بعد از تمام شدن این برنامه :!: .
با مشکلاتی که پیش آمده بود دیروز تونستم سیگنال رو شبیه سازی کنم.هنوز خودکار نیست. امروز رو همین موضوع کار می کنم.
امید دارم تا فردا تمام بشه.تمام تلاشم رو می کنم.
---
این تصویر آزمایشی که انجام دادم.
[تصویر:  2hnu9z7.jpg]
برای همین گفتم برنامه کار نمی کنه. چون نمی شود سیگنال پیام را مستقیم به LED فرستاد. شدن رو که میشه اما دیگه پیام رو در گیرنده نداریم.
----
----
راستی من متوجه پست های صفحه قبل نشدم. تازه دارم می خونم :wink: .
صفحه‌ها: 1 2 3 4 5 6