منابع پایان نامه ارشد درباره گوشی تلفن همراه، تلفن همراه

دانلود پایان نامه ارشد

داد.
پایه 32: این پایه تا زمانی که ماژول بلوتوث با ماژول بلوتوث دیگری جفت42 نشده باشد خاموش است و به محض برقراری ارتباط به مد High رفته و روشن باقی می ماند. معمولاً ﻣﯽتوان این پایه را وصل نکرد، چرا که پایه 31 به تنهایی ﻣﻰتواند Pairing را نمایش دهد. نحوه اتصال LED در صورت نبود آن روی ماژول بلوتوث کاملاً مشابه پایه 31 است.
پایه 34: این پایه یکی از مهمترین پایه ها ﻣﯽباشد و در واقع تعیین کننده وضعیت ماژول بلوتوث است. برای قرار گرفتن در مد AT Mode1 یا مد Pairing باید این پایه در وضعیت Low قرار بگیرد. و اما برای قرار گرفتن در مد AT Mode2 باید این پایه را در وضعیت High قرار داشته باشد.

شکل 4-15: ماژول HC05
4-3-5 اتصال ماژول HC05 و RS232
در این پروژه ماژول RS232 را بر روی بردی قرار دارد که دارای ولتاژ 5V است، منتها همانطور که اشاره شد قرار نیست پایه ولتاژ این ماژول به ولتاژ مثبت مدار وصل شود و این ماژول ولتاژ مورد نیاز خود را از سیستمی که به آن متصل است تامین خواهد کرد. از طرف دیگر ماژول بلوتوث بر روی بردی قرار دارد که دارای ولتاژ 3.3V ﻣﯽباشد. اگر فرض شود که این ماژول در مد Pairing قرار بگیرد باید پایه شماره 34 آن به حالت Low برود (اتصال به زمین). و اما مهمترین بخش نحوه اتصال پایه های RX و TX دو ماژول به هم است. پایه شماره یک ماژول HC05، TX ﻣﯽباشد که به پایه RX ماژول RS232 (یا پایه RX میکروکنترلر) وصل ﻣﯽشود. پایه بعدی پایه RX ماژول HC05 است که باید به پایه TX ماژول RS232 وصل گردد، نکته ای در این بخش وجود دارد و آن اینکه باید در بین اتصال این دو پایه از دو مقاومت در حد کیلواهم استفاده شود. به این صورت که یک مقاومت 3.3K اهمی را از یک طرف به زمین و از طرف دیگر آن را به یک مقاومت 1.5K اهمی وصل کرده، سر مشترک این دو مقاومت به RX ماژول HC05 متصل شده و سر دیگر مقاومت 1.5K اهمی را به TX ماژول RS232 (یا پایه TX میکروکنترلر) وصل ﻣﯽگردد.

شکل 4-16: نحوه اتصال ماژول HC05 و RS232
4-4 شرح نرﻡﺍفزارهای مورد استفاده
در این بخش نرﻡﺍفزارهای مورد استفاده برای راهﺍندازی میکروکنترلر با Pic C Compiler، و برنامه مربوط به بخش آندروید به طور کامل تشریح ﻣﯽشود. و در بخشی دیگر نرﻡﺍفزارهای جانبی برای طراحی برد سنسور با کمک پروتل و ریختن فایل کامپایل شده از سیستم به میکروکنترلر با کمک TNM معرفی خواهند شد.
4-4-1 Pic C Compiler
میکروکنترلرهای قدرتمند PIC محصول شرکت میکروچیپ ﻣﯽباشند، در این میکروکنترلرها قابلیت هایی همچون ADC، تایمر/کانتر، پروتکل های ارتباطی نظیر I2C، SPI، RS232، CAN BUS و…، مقایسه کننده آنالوگ، PWM و… تعبیه شده است. یکی دیگر از ویژﮔﻰهای مهم این خانواده، مصونیت بالا در برابر نویز ﻣﯽباشد، به گونه ای که ﻣﯽتوان از آن در تمامی مکاﻥهای صنعتی و… استفاده نمود. برای برناﻣﻪنویسی و راهﺍندازی این میکروکنترلرها کامپایلرها و مفسرهای زیادی ارائه شده است.در این پروژه از کامپایلر Pic C Compiler استفاده شده است. از ویژﮔﻰهای این کامپایلر ﻣﯽتوان به موارد زیر اشاره کرد:
دارای HELP بسیار قوی
قابلیت برناﻣﻪنویسی به زباﻥهای C و اسمبلی
دارای Editor پیشرفته با قابلیت شناسایی دستورات
محیط بسیار ساده و جذاب
دسترسی به کتابخانه ها و توانایی ویرایش آنها
در این نرﻡﺍفزار منوها و زیرمنوها در دسترس است. در منوی Project گزینه هایی برای کار با پروژه ها وجود دارد. در این برنامه ﻣﯽتوان نوع میکروکنترلر، فرکانس کاری، پورت های آنالوگ و… را انتخاب نمود. امکاناتی برای کامپایل برنامه و ساختن کد Hex وجود داردکه بتوان برنامه ای با قابلیت اجرایی در میکروکنترلر تولید کرد. برای راحتی استفاده از تمام امکانات یک میکروکنترلر یک سری کتابخانه آماده نوشته شده است که کاربر به راحتی ﻣﯽتواند آن را به برنامه اضافه کند مانند کتابخانه های مختلفی که برای اتصال LCD به میکروکنترلر وجود دارد و کتابخانه هایی برای دسترسی به ارسال و دریافت داده به صورت سریال.
خروجی بعضی از ماژول ها به صورت آنالوگ ﻣﯽباشد، مانند شتاﺏسنج. برای راهﺍندازی مبدل آنالوگ به دیجیتال معمولاً دستوری برای راهﺍندازی مبدل آنالوگ به دیجیتال وجود دارد، که ﻣﯽتواند تمام پین ها و یا تعدادی را به صورت آنالوگ تنظیم کند. در ادامه مجموع دستوراتی وجود دارد که با کمک آنها ﻣﯽتوان برای این مبدل کلاک را به صورت داخلی و یا خارجی تعریف کرد.
4-4-1-1 برنامه نويسی ميکروکنترلر
در ابتدای هر کدنویسی در محیط نرﻡﺍفزار Pic C Compiler باید کد مربوط به نوع میکروکنترلری که قرار است برنامه در آن ریخته شود را ذکر کرده و همانطور که قبلاً هم ذکر شد در این پروژه از PIC16F877A استفاده شده است.
#include <16F877A.h>
در ادامه باید مقدار کلاکی که نوسان ساز خارجی استفاده ﻣﯽکند را قرار داده، که در کارهای معمولی 4MHz یا 8MHz استفاده ﻣﯽشود.
#use delay(clock=8000000)
بعد از اینکه دادﻩها توسط سنسور دریافت و با کمک میکروکنترلر پردازش اولیه روی آن صورت گرفت باید بتوان برای دریافت اطلاعات بیشتر، این دادﻩها را بر روی یک پردازنده قوی مانند گوشی تلفن همراه منتقل کرد. در این پروژه هم برای ارتباط سیمی و بیسیم از پروتکل سریال (با نام RS232) استفاده شده است. در کد خط زیر بعد از معرفی پروتکل باید پین هایی که برای ارتباط دوطرفه استفاده ﻣﯽشود را قرار داد، که در این کد خاص پین C6 برای ارسال و پین C7 برای دریافت داده روی میکروکنترلر استفاده ﻣﯽشود.
#use rs232(baud=9600, xmit=PIN_ C6, rcv=PIN_ C7)
در این نرﻡﺍفزار امکانی برای افزودن کتابخانه های آماده، مانند دیگر نرﻡﺍفزارهای برناﻣﻪنویسی، قرار داده شده است. در مواردی برای تست نحوه کار سنسور و قبل از ارسال ﻣﯽتوان دادﻩهای دریافت شده از سنسور را بر روی LCD مشاهده کرد. برای تعریف نحوه اتصال این ماژول به میکروکنترلر انواع کتابخانه ها نوشته شده است، که تقریباً کارآیی یکسانی دارند، مانند کتابخانه آماده lcd.c، Flex_LCD420.c و….
#include “Flex_LCD420.c”
در این کتابخانه ها اتصال دقیق پین ها از LCD به پین های میکروکنترلر مشخص است، در مجموعه خطوط زیر از کتابخانه Flex_LCD420.c، چهار پین B4، B4، B4 و B4 از میکروکنترلر به چهار پین DB4، DB4، DB4 و DB4 از LCD جهت دریافت داده به منظور نمایش آن مرتبط شده است. در ادامه کنترل پایه رجیستر LCD به پین B0 میکروکنترلر، پایه R/W به B1 و پایه Enable به B2 متصل ﻣﯽشود.

#define LCD_DB4 PIN_B4
#define LCD_DB5 PIN_B5
#define LCD_DB6 PIN_B6
#define LCD_DB7 PIN_B7
#define LCD_RS PIN_B0
#define LCD_RW PIN_B1
#define LCD_E PIN_B2
در این پروژه و در قسمت مربوط به ثبت داده در حافظه جانبی ملزم به تبدیل دادﻩهای عددی به رشته بوده، بنابراین از توابع مربوط به رشته ها از کتابخانه string.h استفاده شد.
#include
قبل از ورود به بدنه اصلی برنامه ﻣﯽتوان توابعی را تعریف نمود که در متن برنامه برای کار خاصی فراخوانی شوند. از یک تابع به نام initialisations() استفاده شده است. در این تابع ابتدا تنظیمات مربوط به مجموع پین های پورت A میکروکنترلر که ﻣﯽتواند در نقش یک مبدل آنالوگ به دیجیتال داخلی عمل نماید، قرار داده شده است. در خط اول پین های A0، A1 و A4 به عنوان پین های آنالوگ ورودی و پین های A2 و A3 به ترتیب به عنوان ولتاژ رفرنس منفی و مثبت تنظیم شدﻩاند. در این پروژه A0، A1 و A4 به ترتیب به خروجی محورهای x، y و z شتاﺏسنج و A2 و A3 به ترتیب به زمین و ولتاژ 3.3V متصل هستند.
setup_adc_ports(AN0_AN1_AN4_VREF_VREF);
در ادامه برای شروع به کار LCD، تابع lcd_init() فراخوانی ﻣﯽشود.
lcd_init();
در ادامه و قبل از ورود به بدنه مجموع متغییرهایی که برای دادﻩها لازم است، تعریف و در صورت نیاز مقداردهی اولیه ﻣﯽشوند.
long int x, y, z, g;
char strx[6];char stry[6];char strz[6];char strg[6];char strR[34];char strV[2]=”,”;char strN[4]=”n”;char strKh[2]=” “;
در این قسمت وارد بخش بدنه برنامه می شویم. در ابتدا تابع initialisations() را فراخوانی کرده تا تنظیمات و مقدار دهی های اولیه انجام شود. در هر میکروکنترلر از مجموعه پین هایی که استفاده ﻣﯽشود، باید مشخص گردد که پین می خواهد در نقش ورودی قرار بگیرد یا خروجی. بدین صورت که اگر SET_TRIS_Port با عددی به فرمت 0xxx تنظیم شود به این مفهوم خواهد بود که هر یک از دو x پایانی نماینده 4 پین از پورت مشخص شده خواهد بود و اگر صفر باشد یعنی پین مربوطه در نقش خروجی و اگر یک باشد در نقش ورودی خواهد بود. در کد زیر در خط اول پین های صفر، یک، دو، سه وشش پورت C در نقش خروجی و پین های چهار، پنج و هفت در نقش ورودی ظاهر شدﻩاند. در خط دوم تمام پین های پورت D ورودی هستند.
SET_TRIS_C(0xb0);//set pin 1011 0000
SET_TRIS_D(0xff);//set all pin as input for external ADC
زمانی پیش می آید که میکروکنترلر باید برای بیان یک مفهوم و یا دستور به یک ماژول دیگری که بایکی از پین های آن در ارتباط است، منظور خود را منتقل کند، مثلاً گاهی اوقات لازم است ماژول بلوتوث به طور موقت خاموش باشد، برای این کار پین reset بلوتوث که با یکی از پین های میکروکنترلر(به طور مثال در این حالت پین E1 ) در ارتباط است با صفر تنظیم شود. دستور زیر این حالت را نشان مـﯽدهد.
output_low(PIN_E1);//A6 is Bluetooth Reset
دستور عکس مثال بالا به صورت زیر است، زمانی که یک پین باید با یک منطقی مدار، که برای میکروکنترلر ما 5V است، تنظیم شود، از دستور زیر استفاده مـﯽگردد.
output_high(PIN_C1);
یکی از دستورات مهم ساخت یک فایل جدید در حافظه برای ذخیره داده با کمک دستور new ﻣﯽباشد. قبل از اجرای هر دستور دیگری برای عملیات خواندن و نوشتن در حافظه و من جمله new باید چند خط کد دیگر اجرا شود. برای اجرای هر فرمان باید ابتدا پین UB ماژول حافظه را با صفر منطقی تنظیم نماییم. اولین خط پین B1 میکروکنترلررا که با پین UB ماژول حافظه در ارتباط است صفر ﻣﯽکند. در خط دوم باید تا زمانی که پین DB ماژول حافظه صفر شود، نمیﺗﻭان عملیات دیگری را دنبال کرد. یک بودن این پین به معنای مشغول بودن آن با دستور دیگری است. بعد از اطمینان از اینکه ماژول حافظه به کار دیگری مشغول نیست ﻣﯽتوان خط فرمان خود را ارسال کرد. این خواسته با خط فرمان سوم و چهارم برای ساخت یک فایل جدید به نام text.txt محقق ﻣﯽشود. فرمت این دستور را به صورت شکل زیر می بینید.
/////new txt file in memory
output_low(PIN_B1);//UB
while(input(PIN_B2));//DB
printf(“newrn”); // Send Command
printf(“test.txtrn”); // More recipes
مجموع خطوط زیر معمولاً بعد از اجرای هر دستور استفاده ﻣﯽشود تا در صورت وجود خطا در اجرای دستور برنامه نویس را متوجه آن کند. در این مثال پین B4 میکروکنترلر به پین Err حافظه متصل شده است.
while(input(PIN_B2));//DB
if(input(PIN_B4))//ERROR
{
lcd_clear();
printf(lcd_putc,”new ERROR”);
delay_ms(1000);
}
else
{
lcd_clear();
printf(lcd_putc,”new Ok.”);
delay_ms(1000);
}
بعد از ساخت فایلی متنی نوبت به بازکردن آن برای نوشتن دادﻩها می رسد. مشابه تنظیماتی که مربوط به دستور new بود، در این بخش هم رعایت ﻣﯽشود. با کمک دستور open باز کردن فایل مهیا ﻣﯽشود. در کد زیر فایل text.txt باز ﻣﯽشود.
//////open txt file in memory
output_low(PIN_B1);//UB
while(input(PIN_B2));//DB
printf(“openrn”); // Send Command
printf(“test.txtrn”); // More recipes
بعد از ساختن و باز نمودن فایل متنی برنامه وارد حلقهﺍی بی نهایت برای خواندن داده از سنسور شتاﺏسنج و رسانایی پوست ﻣﯽشود. در پروژه ما سه ورودی محورهای شتاﺏسنج به پین های پورت A وارد ﻣﯽشوند. با کمک دستور زیر هر یک از پین های مربوط آماده خواندن شده و در متغیر مربوط به خود ذخیره ﻣﯽگردد. در خط اول و دوم دستورات زیر

پایان نامه
Previous Entries منابع پایان نامه ارشد درباره پايه، ﻣﯽباشد.، AD620 Next Entries منابع پایان نامه ارشد درباره تلفن همراه، نام تجاری