ریموت کدلرن و دکد همراه سورس برنامه

blog
۱۳۹۶-۰۱-۳۱
8 دقیقه

متأسفانه سورس های زیادی وجود دارند که از منابع متن‌باز (OpenSource) کپی شده‌اند و به‌صورت تجاری در فضای اینترنت به فروش می‌رسند. سورس ریموت های کدلرن نیز از این دسته است. اگر سورس های متن‌باز وجود نداشتند شاید این میزان از پیشرفت در حوزه علم و تکنولوژی حاصل نمی‌شد. پس شایسته است که به‌جای منفعت شخصی خود به منفعت جمعی بیندیشم و سورس هایی ازاین‌دست را بفروش نرسانیم و با انتشار رایگان آنها نقشی در بالا بردن سطح دانش داشته باشیم.

ریموت کنترل امروزه کاربرد زیادی پیدا کرده است؛ از ریموت‌های درب بازکن تا ریموت‌های دزدگیر و کنترل روشنایی همه از یک اصول اولیه پیروی می‌کنند و آن‌هم ارسال اطلاعات به‌صورت بی‌سیم است. بسترهای متفاوتی برای ارسال اطلاعات وجود دارد که از پرکاربردترین آن‌ها، امواج مادون‌قرمز است که نمونه‌اش را همگی در ریموت‌های تلویزیون و وسایل خانگی دیده‌ایم و نوع دیگر، ریموت‌های رادیویی هستند که از امواج رادیویی برای ارسال داده‌ها استفاده می‌کنند. موضوع بحث ما، مورد دوم است: ریموت‌های رادیویی. این ریموت‌ها برای این‌که بتونند اطلاعات را منتقل کنند نیاز دارند که اول اطلاعات را روی یه موج دیگر که به آن موج حامل گفته می‌شود سوار (مدولاسیون) کنند. با این کار اطلاعات قابلیت انتشار در فضا را به‌دست خواهند آورد.

شاید برای شما مفید باشد: ساخت ریموت کنترل 4 کاناله

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

انواع مدلاسیون

انواع مدلاسیون

همان‌طور که در عکس فوق مشاهده می‌کنید، در مدلاسیون AM سیگنال داده بر روی دامنه‌ی موج حامل تأثیر می‌گذارد و در مدلاسیون FM سیگنال داده بر روی فشردگی سیگنال حامل (فرکانس) تأثیر می‌گذارد. این مدلاسیون به‌مراتب داری برد بیشتری نسبت به مدلاسیون AM است؛ چراکه در مدلاسیون AM کاهش دامنه به معنی کاهش توان فرستنده است. نوع بعدی مدلاسیون دیجیتال (Keying) است که درواقع نوعی از مدلاسیون FM محسوب می‌شود.

در مدارات دیجیتال ما با دو منطق صفر و یک سروکار داریم که برای انتقال به فرکانس‌های F0 و F1 تبدیل می‌شوند. فرکانس F0 یعنی منطق 0 و فرکانس F1 یعنی منطق 1. در این روش کار گیرنده خیلی ساده است و باید بتواند تفاوت بین فرکانس F0 و F1 را تشخیص دهد و آشکار کند. در ریموت‌کنترل‌های رادیویی برای ارسال داده از این نوع مدلاسیون یا مدلاسیون های مشابه استفاده می‌شود.

شاید برای شما مفید باشد: ریموت هاپینگ چیست

ریموت‌های کدلرن از مدلاسیون ASK برای ارسال داده استفاده می‌کنند. مدلاسیون ASK زیرشاخه‌ی ساده‌شده‌ای از مدلاسیون دیجیتال است؛ فرکانس F0 از آن حذف شده است و فقط فرکانس F1 در آن استفاده می‌شود. یعنی وقتی‌که منطق 1 باشد فرکانس F1 تولید می‌شود و وقتی‌که منطق صفر است فرستنده خاموش می‌شود و هیچ سیگنالی تولید نمی‌شود.

مدلاسیون ASK

مدلاسیون ASK

ترفند هم باعث ساده‌سازی فرستنده و هم گیرنده می‌شود؛ چراکه در فرستنده فقط باید فرکانس حامل با فرکانس F1 تولید شود و در گیرنده هم فقط باید فرکانس F1 شناسایی شود.

 

انواع گیرنده ریموت

تا اینجا با نحوه‌ی ارسال اطلاعات آشنا شدیم. برای ساخت یک ریموت کنترل ابتدا لازم است که امواج ارسالی از ریموت (فرستنده) را دریافت کنیم که بعد از پردازش بتوانیم عملی مناسب با درخواست کاربر را اجرا کنیم. با توجه به نوع فرستنده نیاز داریم که یک گیرنده ASK داشته باشیم که فرکانس آن با فرکانس ریموت یکی باشد، یعنی اگر از ریموت با فرکانس 433 مگاهرتز استفاده می‌کنیم گیرنده ASK نیز باید با همان فرکانس کار کند. در غیر این صورت مدار به‌درستی کار نخواهد کرد.

مطابق عکس زیر می‌توانیم مدار گیرنده را خودمان بسازیم؛ اما با توجه به پیچیدگی‌های بحث RF این کار توصیه نمی‌شود و بهتر است که از مدارها و ماژول‌های آماده‌ی موجود در بازار استفاده کنید.

مدار گیرنده ASK

مدار گیرنده ASK

 

معمولاً ریموت‌ها در دو فرکانس 433 و 315  مگاهرتز موجود هستند. در خرید گیرنده دقت کنید که گیرنده‌ی تهیه‌شده با فرکانس ریموت شما هم‌خوانی داشته باشد. در حال حاضر دو نوع گیرنده ASK در بازار ایران یافت می‌شود:

مدل قدیمی‌تر درواقع یک گیرنده‌ی ترانزیستوری ساده از نوع super regenerative است که دارای حساسیت و دقت کمتر و قیمت پایین‌تری است. این گیرنده نیاز به ولتاژ کاری 5 ولت دارد و خروجی داده صفر و یک دارد، ولی به دلیل ساختار و نحوه آشکارسازی، بسیار تحت تأثیر نویزهای محیطی قرار می‌گیرد. (عکس زیر)

ASK Regenerative Receiver

ASK Regenerative Receiver

مدل جدیدتر درواقع یک گیرنده super heterodyne است و دارای مدار پیچیده‌تری برای آشکار‌سازی داده است. این گیرنده از کریستال کوارتز استفاده می کند؛ همین امر سبب می‌شود که هم کیفیت گیرندگی و هم دقت بالاتری داشته باشد.

ASK super heterodyne

ASK super heterodyne

این گیرنده‌ها علاوه بر 5 ولت قادرند با 3.3 ولت نیز به خوبی کار کنند و خروجی داده هم دارند. درواقع چینش پایه‌های این دو نمونه گیرنده به نحوی است که به‌راحتی می‌توان آن‌ها را جایگزین هم کرد. پس اگر گیرنده‌ای دارید که از برد آن راضی نیستید می‌توانید فقط ماژول ASK را به super heterodyne تغییر دهید و شاهد برد بهتر باشید.

 

پروتکل ریموت کدلرن

بعد از دریافت داده‌ها و هموار شدن مسیر، نیاز است که پروتکل ارسال اطلاعات این‌گونه ریموت ها را بشناسیم تا قادر به رمزگشایی آن‌ها باشیم. اولین نکته‌ی مبهی که در خصوص ریموت‌های کدلرن به ذهن می‌آید، خود واژه کدلرن است. درواقع تا قبل از فراگیر شدن این نوع ریموت‌ها، ریموت‌های کدفیکس وجود داشتند. ریموت‌های کدفیکس دارای 8 پایه بودند که برای کد کردن آن‌ها باید این پایه‌ها را در حالات مختلفی به صفر و یک وصل می‌کردید و همین کار را در گیرنده نیز تکرار می‌کردید تا گیرنده و فرستنده باهم هم‌خوانی داشته باشند و کار کنند. این عمل را کد دادن می‌گفتند.

کد کردن ریموت کدفیکس

کد کردن ریموت کدفیکس

دلیل نام‌گذاری کدفیکس هم این است که گیرنده‌های این نوع ریموت، کد ثابتی دارند و اگر بخواهید ریموت دیگری نیز با این گیرنده کار کند باید دقیقاً مطابق دیگر ریموت‌ها کددهی شود. که البته این موضوع به لحاظ امنیتی مساله ساز است؛ چراکه اگر کد انتخابی شما را کسی متوجه شود به‌راحتی می‌تواند یک ریموت سازگار با گیرنده شما بسازد.

اما ریموت‌های کدلرن دارای امنیت بالاتری هستند. به این معنی که توسط شرکت یک کد 20 بیتی اتفاقی در حافظه آنها نوشته شده است. هر ریموت یک کد منحصربه‌فرد دارد و دو ریموت با کد یکسان وجود ندارد: بنابر این برای همگام کردن ریموت‌ها با گیرنده، گیرنده باید قادر باشد که کد هر ریموت را در خود ذخیره کند تا در مواقع درخواست، چک کند که آیا ریموت معتبر هست یا نه. این عمل را  اصطلاحاً لرن کردن می‌گویند. یعنی شما باید ریموت موردنظر خود را در گیرنده لرن کنید و برای همین هم به آنها ریموت‌های کدلرن می‌گویند.

خوشبختانه پروتکل مورداستفاده در ریموت‌های کد لرن مشابه است و فرقی نمی‌کند که شما از آی‌سی HS1527 یا EV1527 یا خانواده‌های مشابه استفاده می‌کنید. همه از انکدر OTP استفاده می‌کنند.

Otp Encoder

Otp Encoder

 

در این روش 24 بیت داده از ریموت ارسال می‌شود که بیست بیت اول همان کد منحصربه‌فرد برای هر ریموت است و 4 بیت انتهایی مربوط به وضعیت کلیدهای فشرده‌شده ریموت است. در ابتدای هر ارسال، یک وضعیت همزمانی (Preamble) ارسال می‌شود که ما با دریافت این همزمانی باید منتظر دریافت 24 بیت داده باشیم. با توجه به توضیحات ارائه‌شده، ما نیاز 3 حالت منحصربه‌فرد داریم: حالت اول برای ایجاد سیگنال همزمانی (Preamble)، حالت دوم برای ایجاد وضعیت 1 منطقی و حالت سوم برای ایجاد 0 منطقی.

  1. حالت همزمانی: در این حالت اگر میزان یک بودن سیگنال مثلاً 1 میکروثانیه باشد، میزان صفر آن باید 31 میکروثانیه باشد.
  2. حالت یک منطقی : در این حالت اگر میزان یک بودن سیگنال مثلا 3 میکروثانیه باشد میزان صفر بودن آن باید 1 میکروثانیه باشد.
  3. حالت صفر منطقی: در این حالت اگر میزان یک بودن سیگنال مثلا 1 میکروثانیه باشد میزان صفر بودن آن باید 3 میکروثانیه باشد.

توجه داشته باشید زمان‌های ذکرشده به‌عنوان مثال هستند. برای روشن‌تر شدن موضوع و درواقع میزان این زمان‌ها با توجه به نوسان‌ساز داخلی آی‌سی تعیین می‌شود ولی نسبت‌ها به‌صورت توضیح داده شده حفظ می‌شوند.

 

توپولوژی برنامه ریموت

نمونه کدهای زیادی را در این راستا دیده‌ام؛ چه سورس هایی که در اینترنت به فروش می‌رسند و چه سورس هایی که به‌صورت آموزشی منتشرشده است، هیچکدام از روش اصولی برای این کار استفاده نکرده‌اند. نمونه‌هایی دیده‌ام که حتماً باید ریموت مورداستفاده مقاومت نوسان سازش مقداری خاص باشد (چون در کد صرفاً مقدار صفر بودن بررسی می‌شده)، برد خوبی نداشته‌اند،‌ با ضعیف شدن باطری ریموت درست کار نمی‌کنند و مسائل زیادی که به وجود می‌آورند.

اما حال که با نحوه‌ی عملکرد ریموت آشنایی پیدا کردید، نوبت به آن می‌رسد که با توجه به امکانات و اختیارات موجود در میکروکنترلرها، برنامه‌ای بنویسیم که قادر باشد کد دریافتی را شناسایی کند و نسبت به آن عکس العمل نشان دهد. برای این‌که بتوانید به بهترین نحو داده‌های ارسالی را دکد کنید، باید به این صورت عمل کنید: با دریافت لبه بالارونده، یک کانتر شروع به شمارش کند و با لبه پایین‌رونده مقدار کانتر را خوانده و دوباره کانتر را صفر کنید  و با لبه بالارونده بعدی مقدار قبلی خونده شده از کانتر را با وضعیت فعلی کانتر مقایسه کنید که باید شامل یکی از حالات بالا باشد. دقت داشته باشید که حتماً باید پترن ارسال داده توسط ریموت را دنبال کنید (اول همزمانی بعد 24 بیت داده معتبر) چراکه نویزهای محیطی خود باعث به وجود آمدن حالات بالا به‌صورتی تصادفی می‌شوند که اگر پترن را رعایت نکرده باشید ممکن است گیرنده شما عکس العمل نشان دهد و خروجی را به‌صورت اتفاقی قطع یا وصل نماید (اتفاقی که در برخی از گیرنده‌ها شاهد آن هستیم).

خوب سؤال کلیدی این است که تایمر کانتر ما با چه سرعتی باید شروع به شمارش کند تا بتوانیم به‌درستی طول پالس‌ها را با دقت مناسب اندازه‌گیری کنیم. برای پاسخ به این سؤال، به برگه مشخصات آی‌سی مذکور مراجعه می‌کنیم و با جدول زیر مواجه می‌شویم:

توپولوژی برنامه ریموت

توپولوژی برنامه ریموت

که درواقع مدت‌زمان لازم برای ارسال یک فریم داده را با مقدار ولتاژهای مختلف و مقاومت رزوناتورهای مختلف رسم کرده است. کمترین زمانی که این چیپ قادر به ارسال یک فریم از داده است (24 بیت به‌علاوه همزمانی) 1.34 میلی‌ثانیه است که با توجه به این‌که هر فریم شامل 128 پالس است طول هر پالس 10 میکروثانیه خواهد بود. پس اگر تایمر کانتر ما با فرکانس 1 مگاهرتز شروع به شمارش کند (1 میکروثانیه) قادر خواهیم بود طول یک پالس را با دقت بالایی اندازه بگیریم.

 

توضیح سورس موجود

سورس قرارگرفته، در دو نسخه کدویژن و GCC موجود است که با استفاده از میکروکنترلر ATMega8 پیاده‌سازی شده است. خروجی داده ماژول گیرنده به پایه شماره 4 آی‌سی وصل شده است که درواقع پایه ورودی انتراپت صفر است (جهت تشخیص لبه‌ها) و از تایمر کانتر صفر برای اندازه‌گیری طول هر پالس استفاده شده است. برنامه به‌گونه‌ای نوشته‌شده که به‌راحتی قابل‌حمل باشد و شما بتوانید آن را بر روی هر میکروکنترلر دلخواهی پیاده‌سازی کنید.
فرکانس کاری میکروکنترلر 8 مگاهرتز است که از کریستال خارجی تامین شده است.
این کد با سه نمونه ریموت آزمایش شده است؛ هم با فرکانس ۳۱۵ و هم با فرکانس ۴۳۳. با ریموت ۴۳۳ بدون آنتن گیرنده، تا حدود ۸ متر جواب داده است!

 

توضیح سورس موجود

 

دانلود سورس کد ریموت

* برای دانلود ورژن جدید کتابخانه بهپروژه ریموت کنترل 4 کانال کاملا رایگان به همراه مستنداتپست مراجعه کنید.

 


Sisoog_GNU_GCC_EV1527


Sisoog_CodeVision_EV1527


 

اطلاعات
188
0
لینک و اشتراک
profile

Zeus ‌

متخصص الکترونیک

زئوس هستم ساکن المپ

مقالات بیشتر
slide

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند. فروش در پالت
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد. جستجو در آیسی
family

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند. پرسش در سیسوگ فرم
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
خانواده سیسوگ

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند.
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد.
family

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند.
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند.
family

دیدگاه ها

profile
مهدی قدیری گفت :
۱۴۰۳-۰۶-۲۶ ۱۰:۵۸

خیلی عالی بود . تشکر از بیان گویا و روان شما

profile
جواد امینی گفت :
۱۴۰۳-۰۵-۰۸ ۱۹:۰۳

درود بر شما
دوستان من در کد ویژن چطور ریموت لرن کنم. من کد را در کدویژن باز کردم حالا برای شناساندن یک ریموت باید چیکار کنم.؟

profile
Zeus ‌ گفت :
۱۴۰۳-۱۰-۰۱ ۱۷:۵۷

سلام
یک کلید برای این کار در نظر گرفته شده که اگر کد رو مطالعه کنید فکر میکنم عملگردش دستتون بیاد
تا اونجا که خاطرم هست کلید رو برای زمانی نگه دارید وارد مود لرن میشه

profile
مچید گفت :
۱۴۰۳-۰۵-۰۸ ۱۴:۲۵

سلام من ازین ریموت های super heterodyne تهیه کردم بیشتر از 2 متر اصلا روی اسکوب موج نشون نمیده شما فرمودید بردش خوب شرایط خاصی داره؟ من هم ولتاژ 3.7 تا 5 دادم هم حازن گذاری کردم اصلا فرقی نکرد و میشه بفرمایید از کجا تهیه می کنید؟ در صورتی که آنالوگ رو تا حدود 80 متر به راحتی جواب گرفتم

profile
Zeus ‌ گفت :
۱۴۰۳-۱۰-۰۲ ۰۹:۵۲

سلام دوست عزیز
دقت کنید که علاوه بر فرستنده گیرنده هم باید کیفیت خوبی داشته باشد – و البته آنتن درست نکته خیلی مهمی است

profile
جواد امینی گفت :
۱۴۰۲-۰۱-۲۴ ۱۸:۳۹

سلام. چرا فایل کد ویژن باز نمیشه. وقتی از حالت فشرده خارجش میکنی همینطور فشرده هست و دیگه باز نمیشه

profile
Zeus ‌ گفت :
۱۴۰۲-۰۲-۰۴ ۱۰:۰۳

سلام دوست عزیز من الان فایل رو چک کردم سالم بود
برای از حالت فشرده خارج کردن فایل دوم از نرم افزار 7zip استفاده کنید

profile
محمد صادق گفت :
۱۴۰۱-۰۸-۱۲ ۱۰:۰۰

عرض سلام و ادب
يک گيرنده با بسکام و avr و ماژول rxb61 ساختم.اما برد خوبي نداره.ميخواستم از راهنمايي شما استفاده کنم
منطق برنامه من اينجوريه که يک پايه ورودي تعريف کردم (ورودي سيگنال) و دائما با دستور whil & went پايه رو چک ميکنم.زماني که پايه يک ميشه تايمر شروع ميشه و طبق الگوي ريموت اول سيگنال همزماني رو چک ميکنم و اگر اوکي بود تک تک بيت ها رو بررسي ميکنم.هر بيت که خارج از رنج تعريف شده شمارش بود برنامه ريست ميشه و دوباره منتظر سيگنال همزماني ميمونه(با توجه به زمانبندي ريموت و تغييرات و ناپايداري ها، توي برنامه يک بازه تعريف کردم که ميگه همزماني بين x و y بايد باشه و بعد از اون اگر ديتاي يک بين z و w بود يک منطقي و اگر بين s و d بود صفر منطقي لحاظ ميشه و بعدش هم بقيه ماجرا.حالا نميدونم مشکل کجاست که برد کمه

profile
مجید کشمیری گفت :
۱۴۰۱-۰۴-۰۹ ۱۰:۳۰

ببخشید دوباره مزاحم می شم من خیلی عجله دارم میشه این تنظیمات رو خودتون انجام بدید من هزینشو پرداخت کنم

profile
عباس گفت :
۱۴۰۱-۰۹-۱۱ ۱۳:۳۳

عالی بود ممنون از توضیحات شما

profile
Zeus ‌ گفت :
۱۴۰۱-۰۴-۰۹ ۱۸:۲۶

ببخشید ولی برای من انجام چنین کاری مقدور نیست
اگر پیدا کنید دقیقا کدام خط از برنامه باعث ربست میشود بهتر میشود مساله رو بررسی کرد.

profile
مجید کشمیری گفت :
۱۴۰۱-۰۴-۰۹ ۱۰:۱۳

سلام من از میکرو atmega32 با فرکانس 11.059200 استفاده می کنم و کدوژن هر بار کلید ریموت می زنم میکرو ریست می شه کثل اینکه واچ داگ عمل کنه

profile
Zeus ‌ گفت :
۱۴۰۱-۰۴-۰۹ ۱۸:۲۲

سلام دوست عزیز
این که میگید هنگ میکنه میکنه برمیگرده به یه مشکل نرم افزاری
مثلا میزان استک کم باشه یا چنین چیزهایی
آیا توی برنامه از printf توی اینتراپت که استفاده نمیکنه
تا جای ممکن باید سعی کنید توی اینراپت از دستوارات زمان بر استفاده نکنید

profile
عرفان گفت :
۱۴۰۱-۰۲-۱۶ ۱۶:۴۵

سلام وقت بخیر
ببخشید من راجع به کتابخونه ای که نوشتید سوال داشتم.
یجا دیفاین کردید که حداقل طول موج 200 میکرو ثانیه و حداکثرش 16000 میکروثانیه.من دلیلش رو متوجه نمیشم
مگه حداقل طول موج طبق جدول زمانی نیست که 12V , 300k داشته باشیم؟ خب تو این حالت طول هر پالس 10 میکروثانیه میشه.
و حداکثر مگه زمانی نیست که طبق جدول 4v,330k داشته باشیم؟خب تو این حالت طول هر پالس 23 میکروثانیه میشه که بلند ترین موجی که داریم همون 31 پالس هست . پس 713=23*31
نمیدونم دارم کجا اشتباه میکنم لطفا راهنماییم کنید

profile
Zeus ‌ گفت :
۱۴۰۱-۰۲-۲۱ ۱۶:۵۵

سلام و درود بر شما
این کد خیلی قدیمی هست و فکر میکنم برای این بوده که کلاه پالس های بزرگتر رو فیلتر کنه و پردازش نکنه
میشه این فیلتر رو دقیقتر هم کرد. همونطور که گفتید

profile
فرشاد گفت :
۱۴۰۰-۰۷-۲۹ ۲۱:۰۶

با دروود فراوان خدمت شما

فرمودید هر فریم 128 پالس هست اما هر فریم 24 بیت هست و تعداد پالس ها میشه 48 عدد

ممکنه راهنمایی کنید من درست متوجه نشدم
با تشکر

profile
Zeus گفت :
۱۴۰۰-۰۸-۱۴ ۱۳:۵۳

خوب من دارم کلاک مصرف شده رو محاسبه میکنم
هر صفر یا یک 4 کلاک (سه واحد صفر یک واحد یک یا برعکس) هست، همزمانی اولیه هم ۳۲ کلاک نیاز داره میشه به عبارتی
۲۴×۴ بعلاوه ۳۲ که میشه ۱۲۸

profile
Amir Ali گفت :
۱۴۰۰-۰۷-۰۸ ۱۸:۱۶

با سلام و خسته نباشید. ممنون بابت زحماتتون. من مدار رو با ماژول گیرنده 433 مگاهرتز که چیپش آی سی LM هست بستم. بدون اینکه لیرن کنم ریموت اطلاعاتشو می فرسته. آیا بخاطر اینه که از این نوع ماژول استفاده کردم یا ایراد از جای دیگست.
سوال دومم چطور میشه دکمه های ریموت رو به میکرو فهموند تا با فشار دادن هر دکمه عملیات خاص خودشو انجام بده.
ممنونم.

profile
Zeus گفت :
۱۴۰۰-۰۷-۲۵ ۱۱:۴۷

سلام دوست عزیز
فکر میکنم مقاله زیر به شما کمک کنه 🙂
پروژه ریموت کنترل 4 کاناله کاملا رایگان به همراه مستندات

profile
عرفان گفت :
۱۴۰۰-۰۵-۱۰ ۲۲:۰۴

سلام وقت بخیر ممنون از زحماتتون
ولی من ب بسم الله به مشکل خوردم D:
ماژول گیرنده 2 تا پایه data داره ، یکیش باید NC بمونه یا زمین بشه یا چی؟!
بعد اینکه وقتی یه پایه data رو NC میذارم و یکیشو میدم به اینتراپت میکرو ، کلا در حال پالس دادنه، حتی وقتی هیچی با ریموت نمیفرستم.

profile
علی گفت :
۱۴۰۰-۰۳-۰۷ ۱۸:۴۹

سلام
در متن گفته شده طبق جدول datacycle دیتاشیت EV1527 به ازای هر فریم از داده چند ثانیه طول می کشد و هر فریم را 128 بیت در نظر گرفته اید.(مثلا گفته اید هر فریم 128 بیتی 1.34 میلی ثانیه طول می کشد)
اما مطابق دیتاشیت اصلی که در سایت سازنده اصلی هست (http://www.sc-tech.cn/EV1527.pdf) گفته شده این اعداد مربوط به هر بیت هست:
صفحه 3 دیتاشیت (http://www.sc-tech.cn/EV1527.pdf)
بخش 8.3
بند 1: (ترجمه):
The data in the table is 1-bit data (code 0 or code 1 as shown in the figure above), the width TD=4t

من از گوگل ترنسلیت برای ترجمه PDF چینی استفاده کردم. همچنین جداگانه کلمه 位数据 را در دیکشنری چینی سرچ کردم و ترجمه آن “data bit” است.
همچنین ورژن جدیدتر این مقاله در سیسوگ (پروژه ریموت کنترل 4 کاناله کاملا رایگان به همراه مستندات) هم بر همین اساس نوشته شده است که باید به این موضوع دقت شود.
این تفاوت بسیار مهم است. مخصوصا اگر کسی بخواهد از میکرو دیگری استفاده کند باید بداند هر فریم(128 بیت) چند ثانیه طول می کشد.

* حدس من این است که چون میکروشما Atmega 8/16/32 بوده تایمرتان 16 بیتی بوده و به همین دلیل به مشکل Overflow نخواهید خورد
من از میکرو Attiny میخواهم استفاده کنم و چون تایمر 8 بیتی دارد نیاز دارم که بدانم این زمان های داده شده در جدول مربوط به هر بیت است یا هر فریم(128 بیت).

باز هم تشکر میکنم بابت مقاله بسیار خوب و کاربردی

profile
IOElectro گفت :
۱۴۰۱-۰۳-۰۵ ۱۴:۲۷

کاملا درست، زمان داده شده در جدول موجود در دیتاشیت، تنها برای یک بایت داده است. به عنوان مثال 1.4ms بیانگر این است که برای ارسال یک بیت دیتای 0 باید پالس به مدت 1.4ms/4=350us یک شود و پس از آن مدت 350us*3=1050us صفر باشد. پس در این حالت، کوچکترین پالسی که باید اندازه گیری شود 350us است و زمان ارسال کل پکت 350us*128=44.8ms خواهد بود.

profile
omid گفت :
۱۴۰۰-۰۲-۲۵ ۰۱:۲۴

واقعا از مطالب مفیدتون سپاسگذارم . زمان تحلیل کتابخانه ها و کد نویسی رو خیلی کم میکنه.

profile
محمد رضا گفت :
۱۳۹۹-۱۲-۰۹ ۲۲:۱۷

با سلام و تشکر از زحماتی که میکشید ومطالب آموزنده ومفید رو در اختیار بقیه قرار میدین . حقیقا کاملترین مباحث رو فقط در sisoog پیدا میکنم . قلبآ از شما تشکر و قدر دانی میکنم .
زنده و پاینده باشید

profile
Sisoog Os گفت :
۱۳۹۹-۱۲-۱۰ ۱۲:۰۹

سلام دوست عزیز
خیلی ممنون از نظر لطفتون

profile
هادی نوروزی گفت :
۱۳۹۹-۱۱-۲۰ ۲۱:۱۴

سلام ممنون از سایت آموزنده و مفیدتون و ممنون از اینکه بصورت رایگان سورس و آموزش این مبحث رو در اختیار همه قرار دادید تا کمکی در بالا بردن سطح دانش جمعی کرده باشید
لطف میکنید برای من و دوستان دیگه که مثل من تازه کار هستن و جنبه آموزشی این مبحث براشون مهمه کمی موضوع رو بیشتر بشکافید و یا اینکه اگر منابع دیگه ای سراغ دارید معرفی کنید ؟
چون همان جور که میدونید خیلی از دوستان دیگه بخاطر جنبه مالی قضیه مایل به آموزش پروژه های سطح میانی و پیشرفته بصورت رایگان به دیگران نیستند
باز هم ممنون از احساس مسولیت شما در اشاعه علم دانش

profile
zeus گفت :
۱۴۰۰-۰۳-۰۵ ۰۸:۳۷

سلام و درود بر شما دوست عزیز
تا اونجایی که برامون مقدور باشه سعی میکنیم که مساله رو باز کنیم ولی متاسفانه همه مشتاق مباحث تئوری نیستند و فقط دنیال حصول نتیجه هستند و این مقداری کار ما رو سخت تر میکنه برای همین سعی میکنیم که میانه رو نگه داریم و از هر بخش به اندازه لازم بیان کنیم
متشکرم برای کامنت شما

profile
Armin گفت :
۱۳۹۹-۰۹-۱۲ ۰۷:۰۰

سلام و خسته نباشید
من فایلای مربوط به کدویژن رو دانلود کردم، دوتا سوال یکی اینکه از کجا میتونم پین های مربوط به رله هارو عوض کنم؟ و وقتی میزنم پروژه کامپایل شه این وارنینگ هارو میگیرم میخواستم بدونم اوکیه؟
Warning: C:\Users\Gerami\Desktop\Remote\Timer.h(33): unused function ‘Read_timer’ was removed by the linker
Warning: C:\Users\Gerami\Desktop\Remote\Timer.h(27): unused function ‘Stop_Timer’ was removed by the linker
Warning: C:\Users\Gerami\Desktop\Remote\mainC.c(7): global variable ‘a’ was declared, but not referenced

profile
علی گفت :
۱۳۹۹-۰۹-۰۸ ۲۱:۳۹

با سلام و خسته نباشید
مطالب خیلی سودمند بود و بحث رو تخصصی باز کردید ممنونم از زحمات شما

profile
احمدرضا گفت :
۱۳۹۹-۰۸-۲۵ ۱۰:۰۲

سلام
من میخواستم وقتی دکمه رو فشار میدیم و نگه میداریم پایه خروجی بشه و تا دست رو دکمه رو برداریم خروجی خاموش میشه
کجای کد رو باید تغغیر بدیم که همچین حالتی پیدا کنه ؟

profile
saeed گفت :
۱۳۹۹-۰۸-۰۷ ۱۹:۴۲

سلام و خسته نباشد متشکر بابت مطلب خوبتون .
من اطلاعاتم کم هست در این زمینه . این ev1527 که نام بردید چه چیزی هست ، ای سی های فرستده ؟
من برای کاری نیاز به فرستنده و گیرنده دارم . یعنی فرضا دو میکرو رو بخوام از طریق بی سیم اطلاعاتش و رد و بدل کنم (در حد 3 الی 4 بایت) نیاز به مجموع 4 تا از این ماژول ها هست .
https://isee.sisoog.com/nc-products/397572155/%D9%85%D8%A7%DA%98%D9%88%D9%84%20%D9%81%D8%B1%D8%B3%D8%AA%D9%86%D8%AF%D9%87%20%D9%88%20%DA%AF%DB%8C%D8%B1%D9%86%D8%AF%D9%87%20%D8%B1%D8%A7%D8%AF%DB%8C%D9%88%DB%8C%DB%8C%20315MHz%20ASK

ایا این فرستنده ها هم 20 بیت ادرس دارن ؟ و چیکار کنم فقط فرستنده slave به گیرنده میکرو مستر دریافت اطلاعات کنه نه پایه بغلی خودش
با این روش ایا خوب هست:
مثلا اول دیتای کلمه رمز مورد نظر رو قرار داد ، برای دما t تا متوجه.
سوال زیاد شدن شرمنده ! ممنون میشم اگر وقت داشتید راهنمایی کنید . باز هم تشکر .

profile
زئوس Zeus گفت :
۱۳۹۹-۰۸-۱۱ ۰۹:۱۷

سلام دوست عزیز.
در واقع آیسی ev1527 آیسی کد کننده اطلاعات است و خودش کار فرستندگی رو انجام نمیده . اگر توی پروژتون نیاز دارید که بدونید گیرنده بایت هایی رو که ارسال کردید دریافت کرده یا نه استفاده از این ماژول ها مناسب نیست و توصیه میکنم از ماژوهایی که هندشلک دارند استفاده کنید مثل nrf24l01 استفاده کنید که تایید میکنند اطلاعات ارسالی توسط گیرنده دریافت شد یا نه

profile
saeed گفت :
۱۳۹۹-۰۸-۱۱ ۱۳:۱۳

با تشکر بابت پاسخ گویی و پیشنهاد خوبتون .
ممنون

profile
محمد گفت :
۱۳۹۹-۰۶-۱۷ ۱۷:۰۳

سلام
من یه ریموت کنترلر ساختم که تغذیه ev1527 در حد 5 ولت. برای همین با مقاومت ورودی بازی کردم تا به طول پالس برابر با ریموت های اماده برسم.
برای این کار مجبور شدم مقاومت رو کمتر کنم. الان طول پالس با ریموت های آماده برابره . اما مشکلی که هست اینه که ریموت روی یه سری از مرکز کنترل ها ست نمیشه. به عنوان مثال روی مرکز کنترلرهای بتا خوب کار میکنه اما تو برندای مثل سیماران ست نمیشه. به نظرتون مشکل از کجا میتونه باشه؟

profile
زئوس Zeus گفت :
۱۳۹۹-۰۶-۱۸ ۱۱:۵۹

قطعا مشکل از مرکز کنتره 🙂
منم قبلا ریموت ساختم ولی با میکروکنترلر و این مشکل رو دیدم روی مرکز کنترل های زیادی تست کردم و مشکلی نداشت ولی برخی از مرکز کنترل ها دچار مشکل بودن که من فکر میکنم مشکل اوناست 🙂
البته فرکانس کاری هم دقت کنید منظور ۳۱۵ یا ۴۳۳ مگاهرتز هست بع غیر از این مشکلی نباید باشه

profile
محمد گفت :
۱۳۹۹-۰۵-۲۰ ۱۵:۴۶

سلام شماتیک مدار رو قرار میدید اخه داخل پرتئوس پایه چهار وجود نداره و اگه خواسته باشیم از یه میکرو دیگه استفاده کنیم چجوری برنامه رو تغییر بدیم ممنون

profile
زئوس Zeus گفت :
۱۳۹۹-۰۵-۳۰ ۰۹:۰۳

واقعا شماتیک خاصی نداره و به سادگی از تصویری که قرار دادم قابل استخراجه – دو تا پاسه است نهایتا که باید تشخیص داده بشه
یکی کلید و یکی ورودی سیگنال :/
برای پورت کردن توی برنامه توضیحات کافی فکر میکنم وجود داره – اگر سوالی بود مطرح کنید

profile
امیر گفت :
۱۳۹۹-۰۵-۱۹ ۲۲:۲۴

سلام
طبق آزمایشی که من با لاجیک آنلایزر انجام دادم ، داده های مربوط به زمان موجود در دیتاشیت در واقع طول یک دیتا ( high or low ) می باشد و نه طول یک فریم . پس طول هر پالس 335 میکرو ثانیه می شود
از طرفی طبق این ویدئو https://www.youtube.com/watch?v=PKowvbnIxso
نهایت فرکانس ارسال 17 کیلو هرتز است که برابر با طول پالس 28 میکرو ثانیه و متناقض با طول پالس 10 میکرو ثانیه می باشد .
البته شاید من دارم اشتباه می کنم

profile
زئوس Zeus گفت :
۱۳۹۹-۰۵-۳۰ ۰۹:۰۱

امم خوب الان شک کردم – باید این مساله رو بررسی کنم مساله مربوط به خیلی وقت پیشه و درست خاطرم نیست
اجازه بدید بررسی میکنم – شاید من اشتباه نوشته باشم – ممنون برای توضیحتون

profile
حسن گفت :
۱۳۹۹-۰۴-۲۷ ۱۲:۲۹

با سلام و خسته نباشید بالاخره بعد کلی دردسر و فقط با کمک توضیحات جامع وکاربردیتون تونستم یه برنامه نسبتا خوب با بسکام بنویسم واقعا دستتون درد نکنه
خواستم از شما تشکر کنم

profile
زئوس Zeus گفت :
۱۳۹۹-۰۴-۲۷ ۱۴:۰۴

خواهش میکنم دوست عزیز
ممنونم برای بازخورد خوبتون 🙂

profile
شاهو گفت :
۱۳۹۹-۰۴-۱۳ ۱۵:۱۱

سلام مرسی بابت مطالب خوبتون. اگر خروجی یکی از این ماژولای ASK رو به یک اسیلوسکوپ یا لاجیک آنالیزر وصل کنید می بینید که خروجیش بسیار ناپایدار است . حتی در حالتی که هیچ سگنالی وجود ندارد خروجی ماژول با فرکانس زیادی تغییر حالت میده . استفاده از وقفه خارجی برای راه اندازی این ماژول به نظرتون کار درستیه ؟ چون میکروکنترلر رو خیلی درگیر میکنه و در ثانیه صد ها بار وقفه فعال می شه . من از یک شرط برای صفر شدن خروجی بیشتر از 2 میلی ثانیه برای اجرای روتین دیکد استفاده می کنم روش خوبیه .

profile
زئوس Zeus گفت :
۱۳۹۹-۰۴-۱۶ ۱۵:۴۵

سلام خواهش میکنم دوست عزیز
با توجه به نوع میکروکنترلر مورد استفاده منطقی ترنی راه همینه ! – اونقدرا که فکر میکنید میکرو رو درگیر نمیکنه و زمان خیلی کمی هست – البته در نظر داشته باشید که فرکانس تاگل شدن ماژول ask اونقدرا هم زیاد نیست
روش منطقی تر اینه که از مد کپچر تایمر استفاده بشه که خیلی بهینه تر عمل میکنه ولی با توجه به این که avr یک تایمر ۱۶ بیتی داره اگر بخوایم ازش استفاده کنیم ممکنه تو محصول واقعی با مشکل مواجه بشیم.

profile
حمید گفت :
۱۳۹۹-۰۴-۱۲ ۱۸:۲۹

با سلام و خدا قوت
من یک گیرنده PC-JC02 بعلاوه یک برد آردینو UNO و یک ماژول رله 4 کانال دارم
فقط هم با آردینو IDE کار کردم تا حالا.
چطور میتونم از این برنامه استفاده کنم.

profile
زئوس Zeus گفت :
۱۳۹۹-۰۴-۱۶ ۱۵:۴۰

سلام دوست عزیز
کتایخانه نوشته شده برای GCC رو دانلود کنید و کد داخلش رو احتمالا اگر کپی کنید توی ادیتور آردوینو نباید مشکلی داشته باشه
البته اگر آردوینو اونو یا نانو استفاده میکنید.

profile
پیمان نادری گفت :
۱۳۹۹-۰۳-۱۳ ۱۸:۰۸

با سلام و درود من این مدار رو بستم و همین کد رو اپلود کردم به صورتی که دیتا گیرنده رو زدم به اینتراپت صفر و tx میکرو رو زدم به rx مبدل و داخل برنامه اردینو تو سریال منیتور زدم وقتی ریموت رو میزنم هیچ کدی به یوارتم نمیفرسته. ولی وقتی دیتا رو مستقیم میزنم به rx تو سریال مانیتور چیز الکی مینویسه مشکل کجاست؟

profile
زئوس Zeus گفت :
۱۳۹۹-۰۴-۰۴ ۰۹:۲۴

سلام
برای کار نکردن مدار دلایل مختلفی میتونه وجود داشته باشه ولی دم دستی ترین احتمال اول اینه که فیوز بیت های میکروکنترلر رو درست تنظیم نکرده باشید
دوم اینه که فرکانس گیرنده و فرستنده یکی نبوده باشند و …

profile
مجید گفت :
۱۳۹۹-۰۲-۱۹ ۰۵:۴۵

با سلام و تشکر. فایلها باز نمیشه. روش خاصی داره؟

profile
Sisoog Os گفت :
۱۳۹۹-۰۲-۲۳ ۰۹:۵۹

فایلها زیپ هشتند و مشکل خاصی برای باز شدن ندارند
دقیقا مشکل شما چی هست؟

profile
رمضان رسولی گفت :
۱۳۹۹-۰۱-۳۰ ۱۲:۳۲

سلام ضمن تشکر از توضیحات بسیار مفید شما
بنظر در قسمتی از متن اشتباه وجود دارد
1.حالت همزمانی: در این حالت اگر میزان یک بودن سیگنال مثلاً 1 میکروثانیه باشد، میزان صفر آن باید 30 میکروثانیه باشد.

طبق عکس بالای متن میزان صفر آن باید 31 میکروثانیه باشد

profile
زئوس Zeus گفت :
۱۳۹۹-۰۱-۳۰ ۱۲:۴۵

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

profile
hadi گفت :
۱۳۹۹-۰۱-۲۲ ۰۲:۲۷

خیلی ممنون بسیار عالی و جامع توضیح دادین

profile
زئوس Zeus گفت :
۱۳۹۹-۰۱-۲۳ ۱۰:۳۴

خواهش میکنم دوست عزیز 🙂

profile
پرویر گفت :
۱۳۹۹-۰۱-۱۱ ۰۸:۴۱

سلام خیلی خوب بود بود مهندس واقعا عالی بود

profile
زئوس Zeus گفت :
۱۳۹۹-۰۱-۱۱ ۱۱:۱۰

خواهش میکنم دوست عزیز 🙂

profile
حسین گفت :
۱۳۹۹-۰۱-۰۳ ۱۴:۲۴

دوست عزیزم سلام. خیلی ممنونم از توضیحاتتون، خیلی عالی بود
من یک سوال داشتم، البته شاید یکم بی ربط باشه به متن. ما با یه مسئله ای مواجه هستیم، توی بعضی از ریموت ها از این کریستال های بزرگ استفاده می شه و توی بعضی ها از کریستال های SMD. خواستم یه مقایسه ای بین اینا داشته باشین، مثلا از نظر برد، مقاومت و …، کدومیکی بهتر هستند؟
مرسی

profile
زئوس Zeus گفت :
۱۳۹۹-۰۱-۰۵ ۰۹:۵۰

خواهش میکنم دوست عزیز.
smd یا dpi بودن کریستال مشخص کننده کیفیت نیست بلکه مدار و طراحی آنتن خیلی تو این مساله تاثیر داره و نمیشه صرفا از نوع قطعات استفاده شده در خصوص کیفیت اونها نظر داد.

profile
علی گفت :
۱۳۹۸-۱۲-۱۱ ۰۵:۲۴

سلام مهندس. سه چهار روزه هر کاری میکنم جواب نمیگیرم…
کریستال، تایمینگ پروژه، پروگرامر و خود میکرو رو عوض کردم…گیرنده هم به خوبی کار میکنه…. همه چی سالم…
.
بعد از کلی برسی متوجه شدم میکرو داخل تابع main میره دستورات اونجا رو اجرا میکنه ولی وارد تابع وقفه خارجی نمیشه!!!!!!!!
یک پروژه ساده و پروگرام کردم دیدم وقفه خارجی میکرو کاملا سالمه….
.
نمیدونم کدویژن برای پروژه های بزرگ داره اذیت میکنه چون نسخه کرک هست یا… واقعا نمیدونم… کدویژن نسخه 3.12 استفاده میکنم.
مهندس جان شما چی فکر میکنید… واقعا هیچ راه حلی به ذهنم نمیرسه…

profile
زئوس Zeus گفت :
۱۳۹۸-۱۲-۱۲ ۱۵:۰۶

امم من فکر نمیکنم مشکل از کدویژن باشه – فکر کنم همین پروژه رو با کدویژن هم گذاشتم
احتمالا مشکل از جای دیگه ای باشه – چطور رفتن رو اینتراپت رو چک کردید ؟

profile
علی گفت :
۱۳۹۸-۱۲-۱۴ ۰۸:۴۸

یه دستور خروجی گذاشتم تو اولین خط اینتراپت که وقتی بره توی تابع مثلا یه ال ای دی روشن بشه.
اخه شنیدم نرم افزار های کرک ممکنه درست کار نکنن…
دیدم این پروژه رو با اکلیپس گذاشتید ولی واقعا هیچی از دستورات متوجه نمیشم…

profile
زئوس Zeus گفت :
۱۳۹۸-۱۲-۱۴ ۰۹:۳۰

خوب بسیار عالی تنها در صورتی ممکنه فعال نشه که اینتراپت رو فعال نکرده باشید یا پالس نداشته باشید
غیر از این حالت ها ممکن نیست !!‌ اگر لاجیک آنالایزر داشته باشید خیلی راحت تر میتونید بررسی کنید
آره این که شنیدید کاملا درسته و هیچ تضمینی برای کارکرد صحیحش وجود نداره و بد تر از اون این که براش پشتیبانی هم نمی تونید داشته باشید.
شما دقیقا همین کد رو میتونید توی اتمل استودیو کامپایل کنید 🙂
+ توی همین پروژه سمپل کدویژن هم گذاشتم البته

profile
علی گفت :
۱۳۹۸-۱۲-۱۰ ۰۲:۴۷

با سلام و عرض ادب.
تو هدر فایل تایمر تابع
Read_Timer
چرا ریجیستر SREG رو ذخیره کردید و وقفه رو غیر فعال کردید.
میشه توضیحی بدید.

profile
زئوس Zeus گفت :
۱۳۹۸-۱۲-۱۰ ۱۰:۰۵

سلام و درود –
امم شاید الان دیگه لزومی نداشته باشه ولی وقتی اینو گذاشته بودم یه سری محاسبه هم اینجا یعنی تو این تابع انجام میشد که ممکن بود روی فلگ ها تاثیر بذاره برای همین اول وضعیت رو ذخیره میکردم که وضعیت فلگ های پیشین رو داشته باشم
الان میتونید حذفش کنید بعد از اصلاح کد فراموش کردم حذفش کنم

profile
امیر معین گفت :
۱۳۹۸-۱۱-۰۲ ۱۰:۵۲

سلام .ممنون که از قرار دادن اطلاعات این پروژه برای سایرین.
میخاستم بدونم من میتونم با یک ریموت چند عدد گیرنده کد لرن رو کنترل کنم .میخام داخل هر کدام از کلید های روشنایی خونه یک گیرنده بزارم و بایک ریموت 12 کانال کد لرن کنترلشون کنم.

profile
زئوس Zeus گفت :
۱۳۹۸-۱۱-۰۵ ۱۲:۳۷

سلام خواهش میکنم دوست عزیز
بله دقیقا امکانش هست و یه کوچولو باید کد رو عوض کنید – این کاری هست که خیلی از سیستم های اتوماسیون خانه دارن الان انجام میدن

profile
حمیدرضا گفت :
۱۳۹۸-۱۰-۱۱ ۱۳:۰۰

سلام
از اینکه این همه مطالب خوب و مفید در سایت قرار می‌دهید، سپاسگزارم.
اگر بخواهم به جای EV1527 ، از میکروکنترلر برای ارسال 24 بیت کد استفاده کنم، میزان باودریت پایه TXD میکرو چقدر باید باشد؟

profile
زئوس Zeus گفت :
۱۳۹۸-۱۰-۲۱ ۰۹:۴۵

دو تا راه دارید این که اول سیگنال ev1527 رو شبیه سازی کنید !!!
یا اگر میخواید از خود میکرو و ارتباط سریال استفاده کنید فکر میکنم باوود ۹۶۰۰ باوود مناسبی باشه

profile
SAEED گفت :
۱۳۹۸-۰۹-۱۲ ۱۵:۱۰

سلام مهندس عزیز،و سپاس فراوان بابت اشتراک چنین مطالبی
میتونم بپرسم که چرا این کتابخانه رو نمیشه به stm32 خوروند،من هرکاری میکنم تو stm اصلا جواب نمیده
در کل میخوام بدونم اصلا این کد طبق توابع hall قابل اجرا به روی stm هست؟

profile
زئوس Zeus گفت :
۱۳۹۸-۰۹-۱۳ ۱۴:۵۵

خواهش میکنم دوست عزیز
باید بگم که کلیت برنامه نوشته شده ربطی به کتابخونه های hal و spl نداره و به راحتی میتونید با هرکدوم از کتابخونه های مورد نظرتون راه اندازیش کرد
تنها نکته هایی که باید رعایت کنید فرکانس تایمر و اینتراپت پایه است که باید به شکل صحیح پیاده سازی کرد.

profile
SAEED گفت :
۱۳۹۸-۰۹-۱۶ ۱۶:۴۴

ممنونم از پاسختون
من تو روتین اینتراپت شرط بالا رونده بودن یا پایین رونده بودن رو به این شکل چک کردم که نمیدونم درسته یانه
(if (GPIO_InitStruct.Mode==GPIO_MODE_IT_RISING
}
;GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING
.
.
.
.
.
{

profile
زئوس Zeus گفت :
۱۳۹۸-۰۹-۱۷ ۱۲:۳۹

سلام دوست عزیز چرا این کار پیچیده رو کردید 😐
اینتراپت رو برای تغییر لول تعریف کنید و توی اینتراپت وای صفر یا یک بود رجیستر IDR رو بخونید

profile
saeed گفت :
۱۳۹۸-۰۹-۲۳ ۱۲:۳۸

خیلی ممنونم مهندس،اوکی شد

profile
زئوس Zeus گفت :
۱۳۹۸-۰۹-۲۳ ۱۳:۳۰

خواهش میکنم بسیار عالی 🙂

profile
Saeed گفت :
۱۳۹۸-۰۹-۲۱ ۱۶:۳۸

درسته؛پس چرا تو برنامه خودتون تو avr این کارو نکردین؟

profile
بهنام گفت :
۱۳۹۸-۰۵-۲۹ ۱۱:۱۰

سلام من این کد رو کامپایل کردم یک بار یه صورت تصادفی اجرا شد و جواب داد ولی بعدش دیگه نتمی شه لطفا بهم راهنمایی کنید ، روی میکروatmega 32 چه تغییرلتی باید روی سورس برنامه بدم ممنون .

profile
زئوس Zeus گفت :
۱۳۹۸-۰۶-۰۱ ۱۲:۲۳

سلام
تنها چیزی که به ذهنم میرسه اینه که فرکانس اسیلاتور رو درست تنظیم نکرده باشید ؛ اگر نه تا اونجا که اطلاع دارم نباید برای اجرا شدن روی atmega32 مشکلی داشته باشه
البته فکر کنم پایه ورودی اینتراپن روی اتمگا 32 متفاوت باشه

profile
بهنام گفت :
۱۳۹۸-۰۶-۰۶ ۲۲:۱۴

ممنون از جوابتون من از کریستال ۱۲مگاهرتز خارجی استفاده می کنم و تنظیمم کردم ،الان جواب داد ولی خود ب خود رسیو میشه مثل اینکه چون من بازر هم دارم برای اینکه چک کنم رسیورم عملکرد داره گاهی خود ب خود بوق میزنه

profile
زئوس Zeus گفت :
۱۳۹۸-۰۶-۱۰ ۱۶:۲۸

خوب بسیار عالی – بله این که می فرمایید کاملا صحیح و طبیعی ایت گاهی نوز های محیطی چنین شرایطی ایجاد می کنند ؛ برای برطرف شدن این مساله هم لازمه که دو کد ریموت رو مثلا در کمتر از یک ثانیه دریافت کنید و با هم مطابقت بدید
در صورت یکسان بودن اونها رو ولید در نظر بگیرد به همین سادگی

profile
احمدرضا گفت :
۱۳۹۸-۰۵-۲۲ ۱۹:۲۰

عرض سلام وادب
/”با توجه به این‌که هر فریم شامل 128 پالس است”
از کجا متوجه شدید، هر فریم 128 دارد؟

profile
زئوس Zeus گفت :
۱۳۹۸-۰۵-۲۶ ۱۰:۰۵

سلام دوست عزیز
خوب ساده است ؛ برای ارسال 0 یا یک منطقی نیاز به 4 پالس است (یک پالس یک و سه پالس 0 برای ارسال صفر منطقی و برعکسش برای یک منطقی ) ؛ در کد ارسالی 24 بیت داده را نیاز است که ارسال کنیم ؛ 24 در 4 می شود 96 پالس ؛ preamble هم که 32 پالس نیاز دارد که مجموعا می شود 128 پالس 🙂

profile
شیوا گفت :
۱۳۹۸-۰۴-۳۰ ۱۶:۲۰

سلام ببخشید میشه یه مطلب هم درباره ریموت بلوتوثی بزارید؟
ریموت های بلوتوثی که از هم کپی میشن ای سیشون فرق داره با ev1527?

profile
زئوس Zeus گفت :
۱۳۹۸-۰۵-۰۷ ۱۵:۵۸

ریموت بلوتوثی – پیشنهاد خوبیه !
در واقع توی ریموت های بلوتوثی یه بخش گیرنده هم وجود داره که کار کپی کردن کد رو بر عهده داره و برای ارسال فکر میکنم سیگنال رو شبیه سازی میکنه و به همین دلیل نیازی به ev1527 نداره

profile
صالح گفت :
۱۳۹۸-۰۴-۰۹ ۱۰:۵۹

با سلام من از پوشه GCC قسمت دیباگ فایل هگزو پروگرم مسکنم این خطا رو میده
GETTING ISP PARAMETER …SD=0X05 …OK THE SPECIFIEND FILE IS NOT A VALID INTEL HEX FILE

profile
زئوس Zeus گفت :
۱۳۹۸-۰۴-۰۹ ۱۲:۲۷

از آدرس زیر فایل های hex رو دانلود کنید
https://github.com/Sisoog/4Ch_learnRemote/releases
این فایل ها بارها چک شده اند و مشکلی نداشته اند

profile
صالح گفت :
۱۳۹۸-۰۴-۰۹ ۱۰:۱۵

با سلام من از فایل GCC از قسمت دیباگ هگزو پروگرم میکنم این خطا رو میده
GETTING isp parameter …SD=0X05…OK THE SPECIFIEND FIL IS NOT A VALID INTEL HEX FILE مشکل چیه با تشکر

profile
زئوس Zeus گفت :
۱۳۹۸-۰۴-۰۹ ۱۱:۱۶

امم از چه پروگرامر و میکرویی استفاده میکنید ؟

profile
پژمان گفت :
۱۳۹۸-۰۳-۲۱ ۲۱:۴۶

سلام مهندس توی کانفیگ پروژه روی 8MHZ کلاک داخلی تنظیم شده آیا درسته؟؟

profile
زئوس Zeus گفت :
۱۳۹۸-۰۳-۲۲ ۱۱:۰۴

سلام دوست عزیز
بله اونطور که خاطرم هست روی 8 مگ هست – خارجی و داخلی بودنش زیاد تفاوت نداره

profile
صالح گفت :
۱۳۹۸-۰۲-۲۳ ۲۳:۱۴

من با spi پروکرم میکنم

profile
صالح گفت :
۱۳۹۸-۰۲-۲۳ ۲۳:۱۳

با سلام من فایل هگزو از پوشه دیباگ با اتمل استادیو پروگرم میکنم ولی کلی خطا میگیره وپروگرم نمیشه من ی عکس از روی اون میفرستم به ادمین تلگرام مشاهده کنید ببینید مشکل چیه راهنمایی کنید با تشکر از شما

profile
زئوس Zeus گفت :
۱۳۹۸-۰۲-۲۴ ۱۶:۰۹

برای پروگرام کردن فایل هگز که نباید خطایی بگیره اخه ؛ احتمالا مشکل جای دیگه ای است
ممکنه فیوز بیت ها رو تغییر داده باشید به نحوی که دیگه پروگرامر میکرو رو شناسایی نکنه

profile
شیوا گفت :
۱۳۹۸-۰۲-۱۴ ۱۳:۲۱

سلام ممنون از مطلب خوبتون عالی بود
یه سوال داشتم اینکه
من می خوام ریموت رو خودم بسازم و گیرنده دارم اگه ولتاژ ریموت تلرانس داشته باشه زمان بندی پالس ها تغیر می کنه درسته؟ نمی خوام از باطری استفاده کنم و می خوام که از رگولاتور استفاده کنم نظرتون چیه؟
ساخت ریموت که ملاحضه ی RF خاصی نداره داره؟ جز طراحی انتن؟

profile
زئوس Zeus گفت :
۱۳۹۸-۰۲-۱۵ ۱۰:۵۶

سلام دوست عزیز ؛ خواهش میکنم
خوب البته اینطور هست که و اون هم به دلیل Rc بود اسیلاتور چیپ هستش ؛ ببینید نکته ای که مهمه اینه که نسبت پالس ها درست باشه؛ که قائدتا درسته و نباید مشکلی پیش بیاد ؛ پس فکر میکنم نگران این موضوع نباشد ؛
جز بحث RF بحث مهم دیگه ای نیست که بخواید نگرانش باشید.
برای شروع میتونید از فرستنده های ASK که توی بازار هست الهام بگیرید.

profile
شیوا گفت :
۱۳۹۸-۰۲-۱۸ ۱۴:۰۲

سلام مجدد ممنون که جواب دادید
مهندس منظورم اینه که چون من می خوام از سوییچ ماسفت به جای کلید ها استفاده کنم و چون یه افت ولتاژی هم روی ماسفت می افته فک کردم مثلا ولتاژ 6 ولت بشه 5.8 ولت ممکنه زمان بندی ها عوض بشه نظرتون چیه؟

profile
زئوس Zeus گفت :
۱۳۹۸-۰۲-۱۹ ۰۹:۵۱

سلام خواهش میکنم
بببیند اگر دارید از ماسفت استفاده میکنید و اگر ماسفت رو توی اشباء کامل ببرید ؛ مقاومتش در حد چند میلی اهم پایین میآد و اصولا ولتاژ خیلی کمی روی سورس و درین افت خواهد کرد.
ببخشید ولی من درست متوحه نشدم که میخواید چکار کنید.

profile
سعید گفت :
۱۳۹۸-۰۲-۱۰ ۲۲:۳۸

بسیار عالی،با تشکر از زحمات شما.

profile
electronic girl گفت :
۱۳۹۸-۰۲-۱۱ ۰۸:۵۱

سلام. خواهش میکینم
ممنون از شما

profile
صالح گفت :
۱۳۹۸-۰۲-۰۸ ۱۷:۳۶

با سلام فایل هگز رو که باز میکنم کلی ارور میده وفایل هگز هم همینطور و پروگرم نمیشه با تشکر

profile
زئوس Zeus گفت :
۱۳۹۸-۰۲-۰۹ ۰۹:۴۹

ببخشید متوجه نشدم ؛ از چیه فایل هگز خطا میگیره ؟ ، فایل هگز رو پروگرام میکنید کار میکنه
اگر منظورتون سورس کده ؛ خوب با چه نرم افزاری باز میکنید ؟

profile
صالح گفت :
۱۳۹۸-۰۲-۰۲ ۱۴:۴۷

با سلام این دو تا فایل هیچ فایل هگزی نداره که بخام پروگرام کنم دوما کدوم این فایلها برای atmega8 هست با تشکر

profile
زئوس Zeus گفت :
۱۳۹۸-۰۲-۰۳ ۰۹:۲۴

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

profile
سید علی پورطباطبایی گفت :
۱۳۹۸-۰۱-۲۵ ۱۳:۴۳

سلام
ممنون از شما مهندس بابات راهنمایی هاتون

مهندس ۲ سوال

روش تشخیص فرکانس کاری این گیرنده ها چیه ؟
مثلا روی بعضی هاش روی کریستالش نوشته jmr6.7458 ?

و اگر مهندس بخوایم توی یه برد ۲ تا فرکانس کاری رو به صورت همزمان با یه میکرو داشته باشیم چه کار کنیم؟
یعنی هم با ریموت ۳۱۵ کار کنیم هم با ۴۳۳

profile
زئوس Zeus گفت :
۱۳۹۸-۰۱-۲۶ ۰۹:۰۱

برای تشخیص فرکانس گیرنده میتونید به فرکانس کریستالش دقت کنید 6 مگاهرتز برای 433 و 4 مگاهرتز برای 315 مگاهرتز هست
برای این که دو تا فرکانس رو دریافت داشته باشید حتما باید از دو عدد ماژول استفاده کنید .

profile
سید علی پورطباطبایی گفت :
۱۳۹۸-۰۱-۲۶ ۱۱:۵۸

مهندس برای داشتن دو تا فرکانس با داشتن ۲ گیرنده در یک میکرو چه باید کرد؟
میشه پایه دیتا هر دو گیرنده رو به پین ۴ میکرو که در این پروژه استفاده شده برای داشتن هر دو فرکانس استفاده کرد؟(به هم متصل کردن پایه هر دو گیرنده مشکلی ایجاد نمیکنه؟)

یا اگر نمیشه چه راهکاری پیشنهاد میدید؟

profile
زئوس Zeus گفت :
۱۳۹۸-۰۱-۲۷ ۱۰:۰۵

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

profile
ali گفت :
۱۳۹۸-۰۱-۲۰ ۰۴:۰۴

سلام. ممنون از توضیحات کاملتون. فایل ها دانلود نمیشوند.
51.55 درصد گیر میکنه و خطا میده.
لطفا راهنمایی بفرمایید.

profile
زئوس Zeus گفت :
۱۳۹۸-۰۱-۲۰ ۰۹:۳۴

خواهش میکنم من چند بار سعی کردم برای دانلود و هر چند بارش بدون مشکل دانلود شد ؛ شما میتونید از GitHub سیسوگ این سورس کد رو نیز دریافت کنید.
این آدرس GitHub هستش

profile
سید علی پورطباطبایی گفت :
۱۳۹۸-۰۱-۱۹ ۰۲:۳۳

سلام خدمت شما و تشر بابت زحمات

مهندس منظور از این کدها چیه:؟
code[0]f
code[1]f
code[2]f
در کد 2 ما باید دنبال آدرس کلید زده شده باشیم؟
آخه کد 2 یه متغییر حاوی 6 بیته!
یه سوال دیگه هم اینکه مثلا ریموت های کد لردن کد های کلید های فشرده شدشون همیشه 4 کد ثابته؟ فق ممکنه جای کلیداشون فرق کنه؟

profile
زئوس Zeus گفت :
۱۳۹۸-۰۱-۱۹ ۰۹:۰۷

سلام دوست عزیز ؛ همونطور که توی پست توضیح دادیم ؛ ریموت یک کد 24 بیتی رو ارسال میکنه ؛ خوب توی میکرو کنترلر ما متغییر 24 بیتی نداریم پس دو راه وجود داره یکی این که داده ها رو توی یه متغییر 32 بیتی ذخیره کنیم که با توجه به 8 بیتی بودن میکروکنترلر ؛ احتمالا مقداری کار پردازشی خواهد برد یا این که در 3 متغییر 8 بیتی این کار رو انجام بدیم و این همون کاری هست که ما کردیم
بله درست متوجه شدید ؛ مقدار کلید ها در 4 بیت ابتدایی متغییر code[2]f ذخیره می شوند.
بله امکان داره داری کلید ها جابجا بشه که بسته به ریموت متغییره !

profile
حمید گفت :
۱۳۹۸-۰۱-۱۹ ۰۰:۴۴

سلام
من نمیتوانم دانلود کنم.لطفا راهنمایی بفرمایید.

profile
زئوس Zeus گفت :
۱۳۹۸-۰۱-۱۹ ۰۹:۰۰

سلام دوست عزیز
در اتنهای پست بخشی برای دانلود وجود داره به اسم ” دانلود سورس کد ریموت ” که میتونید کتابخانه ها رو هم برای کدویژن و هم برای GCC دانلود کنید.

profile
reza گفت :
۱۳۹۷-۱۲-۲۱ ۰۶:۵۴

سلام مهندس جان مطلب خوبی بود استفاده کردیم …126 پالس رو کجا زده آیا در داکیومنت ماژول تعداد پالس در فریم زده شده است….

profile
زئوس Zeus گفت :
۱۳۹۷-۱۲-۲۱ ۱۱:۱۵

سلام دوست عزیز ؛ خوب اول این که اشتباه نوشته بودم 126 – درستش 128 پالسه ؛ خوب تعداد این پالس ها اینطور به دست میآد که 24 بیت آدرس و وضعیت کلید هست ؛ برای تعیین هر بین 4 پالس لازمه که میشه 96 پالس ؛ سینک هم زمانی هم که 32 تا پالس لازم داره که میشه عدد 128 پالس 🙂
+ مطلب اصلاح شد.

profile
سجاد گفت :
۱۳۹۷-۱۰-۱۹ ۱۲:۴۹

سپاس.مطلب بسیار با ارزشی بود.

profile
زئوس Zeus گفت :
۱۳۹۷-۱۰-۱۹ ۱۷:۲۰

خواهش می کنم دوست عزیز

profile
رضا گفت :
۱۳۹۷-۱۰-۰۸ ۰۸:۳۸

سلام دوست عزیز
ضمن تشکر از شما
میخواستم یه راهنمایی بکنید که چطور ریموت هارو در حافظه eeprome ذخیره کنم و در اصل کدام متغییر را باید ذخیره کنم؟
یه کم گیج شدم، لطفا راهنماییم کنید

profile
زئوس Zeus گفت :
۱۳۹۷-۱۰-۰۹ ۰۹:۴۱

سلام دوست عزیز
قبلا توضیح دادیم که هر ریموت 24 بیت داده ارسال میکنه ؛ 4 بیت کم ارزش وضعیت کلید ها رو نمایش میده و 20 بیت پر ارزش تر کد یونیک خود ریموت هست ؛ برای این که بعدا بتونیم مجداا ریموت رو شناسایی کنیم نیازه که این 20 بیت رو ذخیره کنیم از اونجایی که متغییر 20 بیتی وجود نداره ما داده ها رو توی متغییر های 32 بیتی ذخیره میکنیم به همین سادگی

profile
عبدالله گفت :
۱۳۹۷-۰۹-۱۰ ۰۴:۳۱

اگر کد ارسالی یک ریموت همیشه یکی باشه و کسی یک گیرنده بگذارد و کد را دریافت و همان را تکرار کند در این صورت امنیت این کد به چیست؟ یعنی به همین راحتی میشود مثلا درب منزل کسی را باز کرد؟

profile
زئوس Zeus گفت :
۱۳۹۷-۰۹-۱۲ ۰۹:۳۸

بله دقیقا ، به همین راحتی میتوان این مدل ریموت ها رو هک کرد دوست عزیز ؛ به همین دلیل ریموت های هاپینگ به وجود اومدن
قبلا در مورد ریموت های هاپینگ مقاله ای نوشتم که میتونید از سیسوگ مطالعه اش کنید.
همه چیز در مورد ریموت هاپینگ

profile
امیر گفت :
۱۳۹۷-۰۹-۰۹ ۱۱:۵۸

دست شما درد نکنه امیدوارم هر روز پیشرفت داشته باشید

profile
زئوس Zeus گفت :
۱۳۹۷-۰۹-۱۲ ۰۹:۳۶

متشکرم دوست عزیز

profile
پورطباطبایی گفت :
۱۳۹۷-۰۹-۰۶ ۱۰:۴۰

سلام
اگر لطف کنید کد ها را دوباره آپلود کنید ممنون میشم
مثل اینکه مشکلی ایجاد شده

profile
زئوس Zeus گفت :
۱۳۹۷-۰۹-۰۶ ۱۰:۵۰

هر دو فایل چک شدند مشکلی مشاهده نشد ؛ در دانلود فایل ها مشکل دارید ؟

profile
ايوب گفت :
۱۳۹۷-۰۸-۲۸ ۱۵:۴۳

سلام مهندس
ممنونم از مطالبتون.
من برنامه Avr دانلود كردم ولى بوشهEEPRAM رو نداره ميشه يبار ديكه لطف كنيد توى تلكرام سوري برنامه رو واسم بفرستيد خيلي خيلي ممنون

profile
زئوس Zeus گفت :
۱۳۹۷-۰۸-۲۸ ۱۶:۴۷

سلام دوست عزیز
چزا فکر میکنید باید پوشه EEPROM وجود داشته باشه ؟ سورس رو چک کردم درسته و چیزی کم نداره

profile
ايوب گفت :
۱۳۹۷-۰۹-۱۹ ۱۶:۵۰

مهندس عزيز سلام شرمنده بزركوارى كنيد تو دستور زير منظور از T1و T2 جيه ؟
T1> min_pulse_len
T2<(T1*2(

profile
زئوس Zeus گفت :
۱۳۹۷-۰۹-۲۳ ۱۲:۲۱

سلام دوست عزیز
در واقع زمان یکی بیانگر زمان یک بودن و دیگری بیانگر مدت زمان صفر بودن یک سیکل هست !

profile
ایوب گفت :
۱۳۹۷-۰۸-۳۰ ۱۷:۵۲

سلام مهندس
ممنون
فقط اگه مشه در مورد حالتهای همزمانی
یک منطقی و صفر منطقی یه توضیحی بدید

profile
زئوس Zeus گفت :
۱۳۹۷-۰۹-۰۱ ۱۰:۰۵

سلام دوست عزیز
در واقع برای تشخص هر کدام از حالت ها تنها کافی است که مدت زمان یک بودن به صفر بودن سیگنال را اندازه گیری کنید ؛ در واقع یعنی نسبت را به دست بیاورید.

profile
ايوب گفت :
۱۳۹۷-۰۹-۰۸ ۲۲:۴۲

مهندس عزيز واقعا ممنونم كه اينقدر شكيبا هستيد ولي من تو عكس هيجى نفهميدم بخدا خيليم هم خنك نيستمم فقط ميخوام بفهمم نه كه كبي كنم حالا اكه ميشه بفرماييد رابطه اين نسبتها با ولناز باطري جيه و دوم اينكه نسبتهار و يكم دقيقتر توضيح بديد
خيلي خيلى خيلى شرمنده و ممنون

profile
مجید ملوندی گفت :
۱۳۹۷-۰۸-۱۹ ۱۵:۱۶

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

profile
زئوس Zeus گفت :
۱۳۹۷-۰۸-۱۹ ۱۹:۳۷

متشکرم دوست عزیز
متشکر از نظر دل گرم کننده شما

profile
Milad گفت :
۱۳۹۷-۰۸-۰۱ ۲۱:۱۰

سلام ممنون از اطلاعات خوبتون یک سوال داشتم خدمتتون در ریموت های بلوتوثی که بصورت روبروی هم قرار دادن کد هاشون گپی میشه از چه آی سی استفاده میکنن ؟ مثلا شما در ریموت لرن فرمودید از آی سی EV1527 استفاده میشه برای اون ریموت ها چه آی سی هستش؟

profile
زئوس Zeus گفت :
۱۳۹۷-۰۸-۰۲ ۰۹:۴۹

سلام دوست عزیز
دو سه مدل ریموت بلوتوثی که باز کردم ؛ ظاهرا از میکروکنترلر استفاده می کنند ، در واقع کاری که ریموت بلوتوثی انجام میده اینه که احتمالا طول پالس ها رو میخونه و ذخیره میکنه و بعد موقع ارسال همون ها رو ارسال میکنه !
اگر قصد دارید چنین چیزی بسازید باید برنامه اش رو با میکروکنترلر بنویسید که کار چندان دشواری نیست

profile
hamid گفت :
۱۳۹۷-۰۷-۳۰ ۱۰:۰۸

سلام و خسته نباشید خدمت شما
من برنامه نویسیم زیاد خوب نیست امکانش هست کدشو برام توضیح بدید که چجوری این مدار عمل لرن ریموت انجام میده؟

profile
زئوس Zeus گفت :
۱۳۹۷-۰۸-۰۲ ۱۰:۰۱

سلام و درود
ببینید برای ذخیره کد هر ریموت اول اونو به یع عدد 4 بایتی تبدیل میکنیم یعنی فشرده ترین حالت ممکن ؛ بعد داخل EEPROM ذخیره میکنیم کد رو ، به همین سادگی !
اما چطور چند ریموت رو ذخیره میکنیم ، به این صورت که در ایتدا کل حافظه EEPROM رو با مقدار FF پر میکنیم ، برای ذخیره اولین چهار بایتی که FF باشند رو پیدا میکنیم و کد ریموت رو ذخیره میکنم ، و این روند ادامه پیدا میکنه تا کل حافظه EEPROM پر بشه.

profile
hamid گفت :
۱۳۹۷-۰۷-۲۶ ۰۸:۱۶

سلام و خسته نباشید خدمت شما و همکارانتون
یه سوال داشتم من برنامه کد ویژن دیدم به این تابع برخوردم چرا +48 میشه؟
putchar(Remode_Data[i]+48);

profile
زئوس Zeus گفت :
۱۳۹۷-۰۷-۲۷ ۱۰:۳۸

سلام دوست عزیز ؛ ببینید کارکتر ‘0’ با عدد صفر متفاوت هستند ؛ برای نمایش کارکتر 0 باید عدد 48 ارسال شود و برای نمایش عدد 1 باید 49 و … تا عدد 9 همین روال پشت سر هم ادامه پیدا میکنه ؛ برای جزییات بیشتر به جدول Ascii کد کارکتر ها مراجعه کنید.
خوب حالا برای این که اعداد توی ترمینال درست نشان داده شوند با توجه به جدول Ascii نیازه که اونها رو با عدد 48 جمع کنیم که اگر عدد صفر بود معادل اسکی اون یعنی 48 به ترمینال اسال بشه و کارکتر ‘0’ به نمایش در بیاد.

profile
مجتبى گفت :
۱۳۹۷-۰۶-۱۰ ۰۱:۴۷

سلام من ريموت دزدگير رو گم كردم از كجا بفهمم گيرنده دزدگيرم فركانسش چيه؟به ريموت آوردم بازش كردم روى كريستاليش ١٣٣١٥ نوشته بود با ريسيور دزدگير مچ نشدممنون ميشم راهنماى كنيد

profile
زئوس Zeus گفت :
۱۳۹۷-۰۶-۱۰ ۰۹:۴۶

سلام دوست عزیز
دزگیر شما احتمالا باید ماژول گیرنده RF داشته باشه – مثل همون چیزی که توی تصاویر این پست موجوده ، معمولا روی گیرنده ها یه کریستال هست که مقدار اون کریستال فرکانس کاری رو مشخص میکنه ! به همین سادگی
در ضمن 315 که روی کریستال ریموت درج شده – نشون میده که فرکانس کاری ریموت شما احتمالا 315 مگاهرتز هست ، یه غیر از 315 مگاهرتز معمولا ریموت ها در فرکانس 433 مگاهرتز نیز موجود هستند
در ضمن تنها فرکانس ریموت برای خرید ریموت کافی نیست ، ریموت ها انواع مختلفی دارن به لحاظ پروتکل که ممکنه هاپینگ باشه ، معمولی باشه و …
اگر مدل دزگیر رو بگید شاید بشه بهتر در این مورد کمک کرد

profile
ali گفت :
۱۳۹۷-۰۵-۲۹ ۱۹:۰۳

سلام باید به نوع ترانزیستوری 55 ولت برق بدیم؟؟؟

profile
زئوس Zeus گفت :
۱۳۹۷-۰۵-۲۹ ۲۳:۵۵

سلام
سوالتون رو متوجه نشدم دوست عزیز

profile
محمد گفت :
۱۳۹۷-۰۴-۳۰ ۱۴:۵۰

با سلام
ممنون از اطلاعات ارزشمندتون
مدار را مونتاژ کردم و برنامه رو پروگرم کردن . ولی بعضی از اوقات کار می کنه بعضی اوقات نه. یک ال ای دی به خروجی ماژول وصل کردم که موقع فشاردادن ریموت چشمک میزنه. همه چیزی رو چک کردم ظاهرا مشکلی نیست اما گاهی اوقات کار نمی کنه

profile
زئوس Zeus گفت :
۱۳۹۷-۰۴-۳۱ ۰۹:۲۳

سلام دوست عزیز ، چرا از ورژن جدید این کتابخونه استفاده نکردید ؟
این کار نکردن میتونه دلایل مختلفی داشته باشه ، یکی از عمده ترین دلایلش عدم زمان بندی درست ریموت مروبط است ، که غالبا توی تشخیص بیت شروع اتفاق می افته و برای اینه که ما برای ساده تر شدن زمان ها رو محدود کردیم ، ممکنه ریموت شما با فاصله گرفتن از گیرنده از این زمان بندی خارج بشید ، در ضمن از چه نوع گیرنده ای استفاده کردید ؟

profile
سعید گفت :
۱۳۹۷-۰۴-۲۸ ۲۰:۴۱

بسیار ممنون.فقط زمانیکه ما این اطلاعاتو دریافت کردیم چطور بفرستیم؟

profile
زئوس Zeus گفت :
۱۳۹۷-۰۴-۳۰ ۰۹:۰۰

خواهش میکنم دوست عزیز
چرا باید بخواید دوباره بفرستید ؟

profile
سعید گفت :
۱۳۹۷-۰۴-۳۰ ۰۹:۱۱

خب وقتی ما کد ریموتو بگیریم،اصطلاحا لرن کنیم باز باید اینو واسه گیرنده بفرستیم.وقتی ما یک کانال از ریموتو لرن کنیم بقیشم لرن میشن؟

profile
زئوس Zeus گفت :
۱۳۹۷-۰۴-۳۰ ۰۹:۴۱

آها یعنی شما میخواید چیزی شبیه ریموت های بلوتوثی بسازید ؟
ببینید بعد از خودن کد یه کلید از ریموت شما در واقع کد ریموت رو دارید میشه به بیانی گفت هر 4 تا رو ، اگر مقاله ببینید گفتیم که کد ارسالی 24 بیت هست که 20 بیت اول ثابت است و برای همه کلید های اون ریموت تکرار میشه و 4 بیت آخر وضیعت کلید ها رو گزارش میکنه !
برای ارسال مجدد کد باید سینگال رو شبیه سازی کنید

profile
سعید گفت :
۱۳۹۷-۰۴-۳۰ ۰۹:۴۲

بسیار عالی.
متشکر از پاسختون

profile
زئوس Zeus گفت :
۱۳۹۷-۰۴-۳۰ ۰۹:۵۵

خواهش میکنم دوست عزیز 🙂
موفق باشید
اگر سوالی دارید حتما مطرح کنید

profile
سینا گفت :
۱۳۹۷-۰۳-۲۹ ۱۲:۳۶

متشکر برای این مطلب کاربردی و البته بسیار کامل

profile
زئوس Zeus گفت :
۱۳۹۷-۰۳-۲۹ ۱۹:۳۳

سلام
خواهش میکنم دوست عزیز 🙂

profile
مسعود گفت :
۱۳۹۷-۰۲-۱۲ ۲۲:۳۸

“” با توجه به این‌که هر فریم شامل 126 پالس است طول هر پالس 10 میکروثانیه خواهد بود “”

طول فریم از کجا بدست اومده

profile
زئوس Zeus گفت :
۱۳۹۷-۰۲-۱۵ ۱۰:۰۳

جدول بالا رو نگاه کنید ، زمان کل فریم رو برای ولتاژ و مقاومت رزوناتور نوشته

profile
مبین گفت :
۱۳۹۷-۰۱-۰۹ ۱۵:۰۲

سلام و خسته نباشید خدمت شما
از مطالب اموزنده و کاربردی که در اختیار عموم میزارین بسیار ممنونم
اگه امکانش هست این سورس رو به زبان بیسیک (بسکام)هم اضافه کنید.
با تشکر

profile
زئوس Zeus گفت :
۱۳۹۷-۰۱-۱۵ ۱۲:۴۹

سلام و درود دوست عزیز
متاسفانه تسلط چندانی به بیسکام ندارم و برای تبدیل اول باید بیسکام رو یادبگیرم :/
ولی اگر فرصتی پیش اومد حتما این کار رو انجام میدم

profile
محمدمهدی گفت :
۱۳۹۶-۰۹-۰۹ ۱۵:۵۶

با عرض سلام و تشکر فراوان بابت مطلب خیلی خوبتون
برای افزایش برد این ارتباط چیکار باید کرد ؟
ریموت من کد لرن ، گیرنده هم rxb22 هستش
حدودا بیست یا سی متر جواب میده حداکثر
آنتن هم زدم به گیرنده

profile
زئوس Zeus گفت :
۱۳۹۶-۰۹-۲۲ ۰۸:۵۰

شرایط تست رو باید دید ، ولی تا اونجایی که اطلاع دارم برد این نوع ریموت ها همین حدود است شاید تا 50 متر

profile
dave گفت :
۱۳۹۶-۰۸-۱۶ ۱۶:۴۸

سلام، خیلی ممنون متن بسیار مفیدیه! یه سوال داشتم
#define Min_Pulse_Len 200 /* In us */
#define Max_Pulse_Len 16000 /* In us*/
این زمان ها رو از کجا بدست اوردید؟

profile
زئوس Zeus گفت :
۱۳۹۶-۰۸-۱۸ ۱۴:۰۴

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

profile
علی گفت :
۱۳۹۶-۰۶-۱۴ ۱۸:۴۸

سلام
ممنون از مطلب مفیدتون!
من یه atmega 8a خریدم و برنامه رو روش پروگرم کردم.چه با کریستال خارجی ، چه با کریستال داخلی جواب نداد ( 8مگاهرتز)
به نظرتون مشکل میتونه از کجا باشه!
اینم بگم که من وقتی یه LED مستقیم به پایه دیتا ماژول متصل کردم و کلید ریموت رو فشار دادم روی LED تاثیر گذاشت (یعنی روشن و خاموش شد) آیا این موضوع میتونه گواه آن باشد که فرکانس فرستنده با فرکانس ماژول گیرنده برابر است؟! (همچنین وقتی LED رو به ماژول متصل کردم، LED روشن بود و چشمک میزد ولی وقتی کلید ریموت رو فشار میدادم با نور بیشتری چشمک میزد. مگه نباید LED کاملا خاموش باشد؟ مگر ماژول گیرنده هنگامی که ارسالی صورت نمیگیرد نباید در دیتا خروجی صفر داشته باشد؟)
توی ریموت فرستنده یه کریستال 433 مگاهرتز وجود داره! اما نمیدونم چطور باید فرکانس گیرنده رو تسشیص بدم!؟
ماژول گیرنده ای که استفاده میکنم ماژول pc-jc02 هست! (روی کریستال آن نوشته 6.7458) آیا این ماژول میتونه این کار رو به درستی انجام بده؟ (بدون آنتن) ماژول پیشنهادی شما کدام است؟!
آیا میشه که دیتا ارسالی از فرستنده (با آیسی ev1527) کمتر یا بیشتر از 24 بیت باشه؟! یعنی با اینکه آیسی یکسان است اما دیتا ارسال متفاوت باشد؟ یا خیر حتما 24 بیت است؟!
به نظر شما مشکل چیست؟
با تشکر

profile
زئوس Zeus گفت :
۱۳۹۶-۰۶-۱۹ ۰۹:۰۲

سلام درود دوست عزیز
اگر کریستال ماژول شما 6.7458 هست یعنی فرکانس ماژول شما 433 مگاهرتز هست
اگر LED رو به خروجی ماژول وصل میکنید و بعد فشردن کلید ریموت چشمک زدن LED قائده مند و مرتب میشه یعنی فرکانس گیرنده و فرستنده با هم یکی است
در مورد atmega8 هم سری a و غیر a فرقی نمی کنه و باید با هر دو به صورت صحیح کار کنه
شما مطمئن هستید که فیوز بیت های میکرو رو درست تنظیم میکنید ؟ ، وقتی میکرو رو روشن میکنید روی پورت سریال چیزی میفرسته ؟

profile
مجتبی گفت :
۱۳۹۶-۰۵-۱۳ ۱۵:۰۵

با تشکر از مطالب و سایت بسیار خوبتون

profile
Sisoog Os گفت :
۱۳۹۶-۰۵-۱۴ ۰۱:۲۷

متشکر از حسن توجه شما

profile
هنرفر گفت :
۱۳۹۶-۰۵-۰۲ ۰۹:۲۵

سلام
من میخوام ریموت کدفیکس رو بر روی میکروی خودم لرن کنم
با این سورس فقط ریموت کدلرن عمل میکنه
ظاهرا باید تغییراتی بر روی قسمت اینتراپت اعمال بشه ولی من هر کاری میکنم جواب نمیده
در صورت امکان بفرمائید این تغییر چطوری باید صورت بگیره که ریموت کدفیکسم دارای آی سی pt هم لرن بشه
ممنون

profile
زئوس Zeus گفت :
۱۳۹۶-۰۵-۰۳ ۰۹:۰۳

سلام دوست عزیز
این کد فقط برای ریموت های کدلرن هست و برای ریموت های کدفیکس باید قسمت دکد رو عوض بفرمایید ، چرا که پروتکل ارسال ریموت های کدفیکس مقداری متفاوت هست ، اگر شما اصول کارکرد کد در خصوص دکد کردن کد های ارسالی رو درک کرده باشید به راحتی قادر خواهید بود که پروتکل ریموت های کدفیکس رو پیاده سازی کنید ، تفاوت ها شامل محل قرار گیری پالس همزمانی و نحوه ارسال صفر و یک منطقی هست بعلاوه این که در ریموت های کدفیکس علاوه بر صفر و یک حالت سومی هم وجود دارد برای آدرس دهی ، تمام این مشخصات را می توانید با مراجعه به برگه فنی مثلا آسی pt2262 پیدا کنید.

profile
علی فلاح گفت :
۱۳۹۶-۰۴-۲۷ ۱۳:۱۱

سلام
خیلی عالی بود
ممنون

profile
زئوس Zeus گفت :
۱۳۹۶-۰۴-۲۷ ۱۴:۲۷

خواهش میکنم دوست عزیز
خواشحالم که این مقاله مورد توجه شما قرار گرفته

profile
Hamed Akbari گفت :
۱۳۹۶-۰۴-۱۸ ۱۹:۵۲

سلام
اگر ممکن هست مطلبی در مورد ریموت های هاپینگ و دکد کردن آنها قرار دهید.
با تشکر سایت خوبتون

profile
زئوس Zeus گفت :
۱۳۹۶-۰۴-۱۹ ۱۰:۱۶

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

profile
m.a گفت :
۱۳۹۶-۰۴-۱۷ ۱۵:۰۴

ممنون بابت اطلاعات مفیدتون

profile
زئوس Zeus گفت :
۱۳۹۶-۰۴-۱۷ ۱۵:۴۴

خواهش میکنم دوست عزیز

profile
reza گفت :
۱۳۹۶-۰۲-۲۰ ۰۸:۵۹

سلام
چرا نسخه GCC که گذاشتید کامپایل نمیشه ظاهرا مشکلی داره یا کتابخونه ها براش فراخوانی نشده ؟؟

profile
زئوس گفت :
۱۳۹۶-۰۲-۲۰ ۰۹:۲۹

نسخه GCC مشکلی نداره ، اول باید توی نرم افزار ایکلیپس ایمپورت کنید بعد کامپایل کنید ، میک فایل مستقیم نداره که بتونید تو کامند لاین کامپایل کنید.

profile
وحید گفت :
۱۳۹۶-۰۲-۱۹ ۱۰:۵۹

باتشکر از برنامه خوبتون
اگر بخواهیم از کریستال 16 مگا هرتز استفاده کنیم باید کجای برنامه تغییر کنه ؟
کدوم دستورات رو باید تغییر بدیم ؟

profile
زئوس گفت :
۱۳۹۶-۰۲-۱۹ ۱۲:۵۲

برای این تغییر اول باید از توی کانفیگ پروژه فرکانس رو 16 تغییر بدید که تاخیر ها درست انجام بشه
بعد باید تایمر 0 رو جوری کانفیگ کنید که سرریزش 1 میکرو ثانیه بشه !
البته شما از کدوم سورس استفاده میکنید ؟ کدویژن یا GCC ، توضیحات من برای کدویژن هست

profile
وحید گفت :
۱۳۹۶-۰۲-۱۹ ۱۴:۳۰

من با کد ویژن انجام دادم
شما در کتابخانه تایمر مقدار Clock value: 1000.000 kHz انتخاب کردید در صورتی اگه بخوایم از کریستال 16 مگ استفاده کنیم باید مقدار آن و همچنین ریجیستر TCCR1B=0x02 تغییر کنه یعنی چون فرکانس ما دوبرابر میشه باید مقدار تایمر ما نصف بشه که تاثیری در برنامه نویسی نداشته باشه حالا از شما سوال داشتم که باید مقدار ریجیسترها چگونه تغییر کنه ؟؟ ممنون میشم راهنمایی کنید متشکر

profile
زئوس گفت :
۱۳۹۶-۰۲-۱۹ ۱۷:۴۴

سلام دوست عزیز ، همانطور که مطلع هستید برنامه بر اساس زمان بندی 1 میکروثانیه نوشته شده است و زمان ها بر این اساس وارد شده است ، برای تغییر فرکانس میکرو ، باید زمان های مورد استفاده در قسمت کتابخانه EV رو اصلاح کنید.
چرا که متاسفانه نمیتوان با استفاده از سخت افزار میکرو زمان 1 میکرو ثانیه را در فرکانس 16 مگ ایجاد کرد.

profile
احمد رضا گفت :
۱۳۹۶-۰۲-۱۱ ۱۱:۲۱

نه ببینید
منظورم این بود که وقتی به عنوان مثال دکمه A ریموت فشرده شد و رها شد خروجی یک بمونه و وقتی که دوباره دکمه A زده شده خروجی صفر بشه و صفر بمونه تا وقتی که دوباره دکمه A زده بشه مثل کلید تاگل ( پوش باتن )
بعد نکته بعدی اینکه شما گفتید اگر کد تغیییر کرد و کد جدید آمد حالت عوض بشه اصلا کد عوض نمیشه دکمه A ویا B در یک ریموت یک کد اختصاصی داره که هربار فشرده بشه همون کد ارسال میشه نرم افزار از کجا میخواد بفهمه که کد جدید آمده ؟؟ کد همون کده
نکته آخر اینکه شما در برنامه تون در داخل whil از delay_ms استفاده کردید که یک اشتباه بزرگه و نباید استفاده بشه و تو کل سیستم تاخیر می اندازه کافیه این delay رو بردارید متوجه میشید مشکلات برنامه چیه
ببیند من زیاد با این برنامه کار کردم و میخوام به کمک شما برنامه مشکلاتش حل بشه تا دوستان عزیز ازش استفاده کننند خواهشا اگه میتونید به آی دی بنده در تلگرام مراجعه کنید تا بهتر بشه روی این پروژه کار کرد کرد ممنون
آی دی بنده :xxxxxxxxxxx

profile
زئوس گفت :
۱۳۹۶-۰۲-۱۱ ۱۱:۳۵

ببینید دوست عزیز ، کدهایی که من به شما ارائه میدم فقط نمونه هست و برای کاربردی شدن خودتون باید کامل کنید. من راهکار رو عرض کردم خدمتتون. حالا شما اونطوری که دوست دارید یا نیاز دارید پیاده سازی کنید !
ببینید همونطور که در توضیحات پست عرض کردم 20 بیت کد ثابت وجود داره و 4 بیت آخر وضعیت کلید ها رو ارائه میکنه ، پس شما باید وضعیت کلید ها رو از بیت های شناسه جدا کنید و مورد بررسی قرار بدید.
دلیل وجود اون تاخیر هم این بوده که توی کدویژن ما نوع volatile نداریم به همین دلیل متغیر های موجود ممکنه توی اینتراپت مقدار درستی رو دریافت نکنند (البته راهکار داره)، و دلیل دوم هم این بوده که کد ها رو توی سریال نمایش میداده است و شما لزومی در استفاده از اونها ندارید.
این کد مشکلی نداره به نظر من ، فکر میکنم منظور شما اینه که برای منظور خودتون تغییرش بدید ، مشکلی نیست ، اتفاقا خوشحال میشم که یه کد کاربردی هم در این زمینه منتشر کنیم !
آیدیتون توی تلگرام موجود نبود :/

profile
احمد رضا گفت :
۱۳۹۶-۰۲-۱۰ ۲۲:۴۶

سلام خدمت شما
با تشکر از برنامه خوبی که گذاشتید
من با این برنامه کار کردم مشکلی نداره و بدرستی کار میکنه ولی یک مشکلی که داره هر روشی سعی کردم روش پیاده کنم که درستش کنم نشد اینه که وقتی دکمه ریموت رو نگه میدارید پورت خروجی حالت چشمک زن پیدا میکنه و برنامه یک بار اجرا نمیشه یعنی تا وقتی که دست روی دکمه ریموت هست دائم خروجی چشمک میزنه در صورتی که باید طوری باشه اگر دست روی کلید بود خروجی 1 بشه و وقتی که دست رو برداشتی و دوباره زدی 0 بشه
امیدوارم درست سوالم رو مطرح کرده باشم بسیار بسیار ممنون میشم که مننو کمک کنید چون نزدیک به چند ماه دارم روش کار میکنم ولی نتیجه نگرفتم
ممنون

profile
زئوس گفت :
۱۳۹۶-۰۲-۱۱ ۱۰:۱۸

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

profile
علی گفت :
۱۳۹۶-۰۲-۰۳ ۲۰:۵۳

سلام‌…در دیکد کردن ریموت های لرن چگونه سیگنال اصلی فرستنده را از نویز جدا کنم…لطفا هر کس بلده کمک کنه…نویز اجازه هیچ کاری نمیدهد…

profile
زئوس گفت :
۱۳۹۶-۰۲-۰۴ ۰۹:۰۷

سلام دوست عزیز ، یک مقداری سوال شما مبهم هست. در خصوص این که اجازه هیچ کاری رو نمیده. ببینید محیط پیرامون ما مملو از انواع مختلف نویز هست !
در واقع نیازی به جدا کردن نیست؛ شما باید سیگنال صحیح را شناسایی کنید. درست مثل وقتی که در یک جمع شلوغ ، کسی اسم شما را صدا میزند ، در میان تمام سر و صدای محیط ، مغز الگوی اسم شما را شناسایی میکند؛ اما باز جانب احتیاط را رعایت میکند و جواب نمیدهد. منتظر میماند تا دوباره صدا را بشنود !
خوب اینجا هم دقیقا باید همین رفتار تکرار شود: یعنی اول اسم(الگوریتم ریموت) را درست تشخیص دهد که کد این کار رو انجام میده ، و در مرحله بالا تر ، چند بار یا حداقل دو بار اون الگوریتم درست تکرار بشه و این طور به راحتی میتونید بگید که ریموت بوده که کد رو فرستاده چراکه نویز قادر نخواهد بود دو بار پشت سر هم یک کد یونیک ایجاد کنه !

become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله