دستکش موس

دستکش موس
ابتکار موس هوایی دانشگاه کرنل یه دستکش حرکت سنج با یک سری دکمه روی اونه که این دستکش به عنوان یه موس برای کامپیوتر شما کار میکنه..!!

بسیاری از کارهایی در کامپیوتر انجام میشن نیاز به استفاده از کیبورد و موس به طور همزمان دارن واین برای کاربران غیر استادارده و باعث سردر گمی اونها در استفاده از موس ویا کیبورد برای انجام کارهاشون میشه بنابراین این پروژه میتونه یه راه حل مناسبی برای این مشکل باشه زیرا ازاین به بعد شما میتونی این دستکش رو دستت کنی و بااستفاده از دکمه هایی که روی اون هست در زمان تایپ ویا کلن استفاده از کیبورد نشانه گر موستو فقط با انگشتات جابجا کنی..!!

طرح اصلی این پروژه استفاده از شتاب سنجها برای اندازه گیری حرکات(شتاب) دست کاربر به عنوان داده ورودی برای تغییر موقعیت و ریاضیات استفاده شده برای این موضوع بسیار سادست ما تقریب میزنیم انتگرال شتاب رو به درجه دو verletورودی رو داخل میکنیم بین دو شتاب اندازه گیری شده با استفاده از میانگین انحراف بین آنها شتاب رو به دست میاریم این گاهی اوقات بانام ورودی ذوزنقه ای شناخته میشه در اینجا هم معادله ای هست تواضع پروفسور land’s cs417

Xn=Xn-1+Vn-1.dt+1/2.An-1.dt^2

Vn=Vn-1+1/2.(An+An-1).dt

این روش مارو به یه کار غیر عملی میرسونه زیرا حتی در صورتی که با موفقیت این طرح رو اجرا کنیم و نشانه گر موس رو با این روش بتونیم ببینیم دستکش ما مجبور خواهد که وزنی بارب صفر داشته باشه حتی اگه شتاب گرانشی شتاب سنجهای مارو تحت تاثیر قرار نده این شتاب گرانش خودش به عنوان ورودی وارد محاسبات ما میشه ونتایج رو تحت تاثیر قرا میده و هیچ شتاب منفی نیز نیست که اونو ازبین ببره و محاسبات ما بی نتیجه میمونه پس در نتیج ما نیاز به یه سری ژیروسکوپ پیدا خواهیم کرد تا شتاب گرانشی رو اندازه بگیرن و به این روش میتونیم تاثیر شتاب گرانش رو در محاسباتمون از بین ببریم اما ژیروسکوپها ارزون نیستن و ارزونترین اونها به راحتی توسط انسان قابل لحیم کاری نیست…
به خاطر همین تصمیم به جایگزین کردن و ساخت موس شتاب به جا ی اون گرفته شد…….—-
ریاضیات ومحاسبات این طرح نیز آسونه به این صورت که در این موس شتاب نسبت به شتاب زمین اندازه گیری میشه و با استفاده از یکسری ثابتها خروجی به خروجی مناسب برای این کار تبدیل میشه. پروتکل موس در مایکروسافت به این صورته که 8بیت دیتا برای کامپیوتر ارسال میکنه و مبدل آنالوگ به دیجیتال atmega32نیز به همین تعداد رو میتونی پشتیبانی کنه.به هرحال شتاب سنجهای استفاده شده در این پروژه باید تنظیم بشن تا atmega بتونه ازداده های اونه استفاده کنه به این معنی که باید تنظیم بشن تا نهایتا بین-128 تا 127تغییر یابند ودر حالت سکون 0 باشه که دراین مورد مفصلا در قسمت طراحی سخت افزار و همچنین قسمت برنامه نویسی بحث شده و نحوه انجام این کاره کاملا توضیح داده شده.

همچنین برای استفاده بهتر از این موس از یه فیلتر بر روی دیتاها استفاده شده . ضمنا بدلیل حساس بودن شتاب سنجها و اینکه کوچکترین حرکت باعث میشه خروجی این سنسوره ناصفر باشه واین موضوع کاربر رو اذیت خواهد کرد بنابراین با استفاده از قضیه…مقدارهایی از خروجی این سنسورها در برنامه صفر در نظر گرفته شده وسپس بقیه مقدارها یی که خارج از این ناحیه هستن طبق نیاز تبدیل شدند
طرز کار موس:
موسها اساسا فشار دکمه هارو آشکار میکنن وبر اسااس اونه عملیات مورد نظر کاربر رو انام میدن .
در این پروژه از 4 شاسی(push botton) برای موس استفاده شده که حالت خاموش روشن دارن فقط
راست کلیک,چپ کلیک و پیچک(همون scrollوسط موسها کا باش صفحاتو پایین بالا میکنین)
هر شاسی به یک پین از میکرو وصله و وقتی هرکدوم از اونها فشار داده بشه موس این داده هارو به کامپیوتر ارسال میکنه چه فشار داده شده باشن چه نه واین این اجازه رو به کاربر میده که براحتی دستاشونو تکون بدن واین کار تاثیری در عملکرد نشانگر موس نداشته باشه.
در این موس راست کلیک مثل راست کلیک سایر موسها و چپ کلیک مثل چپ کلیک سایر موسها عمل میکنه پیچک به اینصورت عمل میکنه که فعال شدنش همه حرکته و شاسیها رو غیر فعال میکنه یعنی وقتی که فشار داده بشه و خروجی شتابسنجهارو به کامپیوتر منتقل میکنه.
در هر کلیک adc تقریبا 19.5v/click و در حالیکه شتاب سنجهای این پروژه با حساسیتی تقریبا 50mV/g برای موقعیت موس دارند پس مجبوریم خروجی آنهرو تبدیل کنیم تو رنج0-5V تا میکرو بتونه آنرا بخونه بنابراین حساسیت خوبی بر روی شتاسنجها وجود داره و برای این پروژه بسیار مناسبه.
برای این موس از شتابسنجهای استفاده شده که خروجیشون 1000mV/g که این حساسیت زیاده ولی اون را با استفاده از مدارهای طراحی شده برای این کار برده شده تو رنج 2000mV/g .
موضوع دیگه ای که باید بش توجه کرد مرحله گذر از یک حالت به حالت دیگر در شاسی(push bottons) است اما این موضوع در داخل خود شاسیها درنظر گرفته شده (که اگه در نظر گرفته نشده باشه باید در نظر گرفته شود)همانطور که در شکل زیر دیده میشود پس نیازی به نگرانی در مورد فاصله مناسب جهت نمونه برداری نیست.

دو استاندارد در طراحی این پروژه در نظر گرفته شده :
1-پروتکل استفاده شده برای موس توسط مایکروسافت
2-استادارد ارتباط سریال RS232
در ارتباطRS232 از-12 برای سیگنال پایین و از+12 برای سیگنال مثبت استفاده شده ودر +12حالت بیکاری آن است.
درحالی که در میکرو +5V سیگنال بالا و-5V برای سیگنال پایین استفاده میشه(ttl) بنابراین باید از یک چیپ برای تبدیل این دو سطح ولتاژ به یکدیگر کرد تا میکرو وکامپیوتر بتوانند به درستی با هم ارتباط برقرار کنند.

پروتکل موس مایکروسافت به اینطور عمل میکنه که:وقتیکه خطRTS از ارتباط سریال ابتدا درسطح بالا و سپس در سطح پایین قرار داره کامپیوتر منتظر رشته ای به عنوان معرفی دستگاه مرتبط است وبا نرخ ارسال داده 1200(b/s) و 8 دیتا بدون پریتی و یک بیت توقف کار میکنه و میکرو در این پروژه میفرسته “mz” برای کامپیوتر .
کامپیوتر هر چند مدتی این اطلاعات رو از دستگاه دریافت میکنه اما بعد از 5 یا تعداد بیشتری میشه این کار رو متوقف کرد دستگاه دیگه تعریف شده باشه برای کامپیوتر واین شکل داده ارسالی به مانند زیر است:

Pocket 0 1 1 L R Y7 Y6 X7 X6
Pocket 1 1 0 X5 X4 X3 X2 X1 X0
Pocket 2 1 0 Y5 Y4 Y3 Y2 Y1 Y0
Pocket 3 1 0 0 M Z3 Z2 Z1 Z0

L,Rو M به ترتیب کلید راست , چپ و وسط موس هستند . 1 نشان دهنده فشاردادن کلید و 0 نشان دهنده عدم فشار دادن دکمه است.Y7 داری بیشترین اهمیت و Y0 داری کم ترین اهمیت و مقدار است, که پارامترمثبت Y برای حرکت نشانه گر به پایین صفحه کامپیوتر است. Xنیز همانند Y عمل میکند بطوریکه نشانه گر موس به ازای مقدار مثبت X به سمت راست صفحه نمایش حرکت میکند وهمینطور Z که به ازای مقدار مثبت Z پیچک موس به سمت بالا حرکت میکند.اولین بیت 1 به معنای توقف بی نهایت تا اجرای جدیده (که این در بعضی عملیاته بیت استپ رو 1 قرار میدن و بعضی 0 )که دراینجا به دلیل استفاده مایکوسافت از بیت 1 برای این کار در اینپروژه نیز از 1 برای استپ استفاده شده است.
در بعضی از سایتها نیز پروژه های شبیه این پروژه که با عنوان موس و دستکش و دستکش موس و….هست که البته با این پروژه فرق دارن چرا که در این پروژه از سرعت و حرکت استفاده شده و نه صرفا دکمه ایه فشاری.
اینم یه بلوک دیاگرام از این پروژه:

 

بلوک دیاگرام مدار

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

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

شماتیک فیلترهای شتاب سنجها

خروجی های شتابسنجها از سه مرحله عبور میکنند:
1-مرحله اول:اولین مرحله یه فیلتر پایین گذره که نویزهای فرکانس بالا رو از شتابسنجها حذف میکنه.
2-مرحله دوم : دومین مرحله یک تقویت کننده تفاضلی است.که این تقویت کننده با دو فاکتور تقویت میکنه. خروجی شتاب سنجها رو از1.5V تا 3.5V برای -1g تا 1g به0.5V تا 4.5V تقویت میکنه . این تقویت برای خروجی شتابسنجها باعث میشه تا دقت بیشتری در واحد ADC میکرو داشته باشیم چرا که سیگنال خروجی شتاب سنجها تقریبا تو رنج0-5V ثابت هستند .
پایه منفی تقویت کننده خروجی شتاب سنجها خواهد بود و پایه مثبت تقویت کننده یه پتانسیومتره که یه ولتاژ بین 0-5V درست میکنه این پتانسیو متر این امکان رو میده تا شتاب سنجها رو بشه تنظیم و به یه نوعی کالیبره کرد.
3- مرجله سوم : مرحله حفاظت از واحد ADC میکرومیباشد
خروجی تقویت کننده از طریق یه مقاومت و سپس یه دیود به منبع 5V وصله و سر مشترک دیود و مقاومت خروجی مورد نظره که به عنوان ورودی واحد ADC به پین مربوطه وصل میشه .این مدار باعث میشه که خروجی نهایی از 5V تجاوز نکنه
علاوه بر شتاب سنجهایی که به عنوان ورودی به میکرو متصلن 4 کلید نیز نمونه برداری میشن که با اونها نحوه اجرای راست کلیک چپ کلیک و پیچک موس رو بر عهده دارند که این pushbutton ها پینهای میکرو رو به زمین وصل میکنند و پینهای میکرو پول آپ هستن بنابراین ای کلیدها منطق منفی هستند زیرا با فشاردادن آنها پایه میکرو به زمین وصل میشود.با این حال فکر میکنم اگر به شماتیک پروژه نگاه کنین این توضیحات رو بهتر متوجه میشین.

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

کد برنامه:

دانلود کد برنامهدانلود کد برنامه

دیتاشیتها:

دیتاشیت شتاب سنج ADXL203

دیتا شیت ATMEGA32

دیتاشیت رگولاتور LM350

دیتاشیت HINCPZ232

دیتاشیت آمپلی فایر LM358

درباره ی mostafa khezri

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

همچنین ببینید

مخابرات ماهواره

مخابرات ماهواره (قسمت چهارم)

مقدمه : در این قسمت از روایط فرکانسی در ماهواره و تداخلات فرکانسی می گوییم …

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

7 + 3 =