با گذشت زمان و پیشرفت تکنولوژی حس راحت طلبی انسان نیز قوی تر شده است. امروزه انسان به کنترل از راه دور بیش از پیش به علاقه مند شده است زیرا باعث راحتی در انجام امور ، شخصی سازی و همچنین قیمت کمتر و کارایی بالاتری نسبت به روش های قدیمی را دارد. بلوتوث یکی از همین وسیله هاست که باعث کنترل تمام وسایل برقی میشود. در این آموزش قصد کنترل رله بلوتوث با at mega 8 از طریق ماژول بلوتوث hc-05 را داریم. در ادامه این آموزش با مرجع تخصصی میکروکنترلر AVR به زبان فارسی، دیجی اسپارک همراه باشید.
مشخصات ماژول بلوتوث HC05
HC05 یک ماژول بلوتوث با امکانات فراوان و پر مصرف میباشد. میتواند در دو مد master و slave ، پورت سریال را به صورت بی سیم در اختیار شما بگذارد. از این رو میتوانید از این ماژول در طراحی خانههای هوشمند ، هدستهای بی سیم و … استفاده کنید. با استفاده از ماژول HC05 میتوان دیتا را در فواصل معین ( ۱۰ الی ۳۳ متر) با استفاده از پروتکل بلوتوث دریافت و ارسال کرد. یکی از ویژگیهای جذاب ماژول بلوتوث، امکان انتقال دیتا از آردوینو، میکروکنترلر، تلفن همراه و…… به صورت سریال میباشد. سپس خود ماژول دیتا را از طریق پروتکل بلوتوث ارسال خواهد کرد. همچنین میتواند دیتا را از طریق پرونکل بلوتوث دریافت کند. سپس آنها را به سریال تبدیل کرده و به کاربر تحویل دهد. ماژولهای سری HC به دو صورت با پسوند اعداد زوج و فرد وارد بازار میشوند. ماژولهای بلوتوث با پسوند اعداد زوج فقط میتوانند در مد master یا slave باشند. مانند HC-04M که فقط در مد master میباشد. یا HC-04S که فقط میتواند در مد slave باشند.
- ولتاز ۳٫۳ ولت
- فرکانس ISM Band 2.4Hhz
- حساسیت ۸۴dBm
- بلوتوث کلاس ۲ ، برد ۱۰ الی ۳۳ متر
- حداکثر سرعت ۲٫۱Mbps
- مدولاسیون GFSK
- دارای مد master ,slave
- محدوده دمای کاری ۲۵- الی ۷۵ درجه سانتی گراد
- پروتکل ارتباطی سریال
تنظیمات پیش فرض ماژول بلوتوث HC05
- نام پیش فرض HC-05
- پسورد پیش فرض: ۱۲۳۴
- بادریت در هنگام تبادل دیتا: ۹۶۰۰
شماتیک پروژه کنترل رله بلوتوث
این پروژه از دو بخش فرمان که شامل میکروکنترلر و ماژول و بخش اجرا که شامل رله ها و مدار راه انداز می باشد.
بخش دوم
اتصالات ماژول کنترل رله بلوتوث
- پایه VCC ماژول به +۵v
- پایه ی GND ماژول به قطب منفی
- پایه ی rx ماژول به پایه ی tx میکرو
- پایه ی tx ماژول به پایه ی rx میکرو
** اگر پایه ی EN ماژول به قطب منفی وصل شود ماژول خاموش میشود.
** اگر ماژول به یک دستگاه بلوتوثی اتصال برقرارکند وضعیت پایه state یک منطقی می شود.
کدهای پروژه کنترل رله بلوتوث
جهت اجرای پروژه کنترل رله بلوتوث باید در نرم افزار کدویژن، کدها را آماده کرده و سپس پروگرام کنید. چنانچه این روش را نمیدانید به آموزش نحوه ی ساخت پروژه جدید و پروگرام کردن میکروکنترلر مراجعه کنید. پس از ساخت پروژهی جدید در نرم افزار کدویژن CodeVision کدهای زیر را داخل آن کپی کنید. سپس تراشه میکروکنترلر Atmega8 را پروگرام کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 |
#include <mega8.h> // تعريف کتابخانه ها #include <delay.h> #include <string.h> #include <stdio.h> #define CH1 PORTC.0 //تغير اسم پايه ها #define CH2 PORTC.1 #define CH3 PORTC.2 #define CH4 PORTC.3 int a; unsigned char drx,c,st[102],flag; // تعريف متغيير ها interrupt [USART_RXC] void usart_rx_isr(void) //USART_RX اينتراپت { drx=UDR; if(drx>=0x01){st[c]=drx;c++;} if(c>=100) { c=0; } flag=50; } void main(void) { DDRC=0xff; //تعريف ورودي يا خروجي بودن پايه ها // USART تنظيمات // USART initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: On // USART Transmitter: On // USART Mode: Asynchronous // USART Baud Rate: 9600 UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) | (0<<UPE) | (0<<U2X) | (0<<MPCM); UCSRB=(1<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (1<<RXEN) | (1<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8); UCSRC=(1<<URSEL) | (0<<UMSEL) | (0<<UPM1) | (0<<UPM0) | (0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL); UBRRH=0x00; UBRRL=0x33; // Global enable interrupts #asm("sei") // فعال ساز وقفه عمومي while (1<2) // حلقه اصلي { if(flag>1) { delay_ms(10); flag--; if(strstr(st,"all off")||strstr(st,"All off"))// جستجو در اطلاعات دريافت شده { puts("All turned off"); // ارسال جواب براي کاربر memset(st,0,strlen(st)); // پاک کردن اطلاعات دريافت شده c=0; PORTC=0X00; flag=1; } if(strstr(st,"all on")||strstr(st,"All on"))// جستجو در اطلاعات دريافت شده { putsf("All turned on"); // ارسال جواب براي کاربر memset(st,0,strlen(st)); // پاک کردن اطلاعات دريافت شده c=0; PORTC=0Xff; flag=1; } if(strstr(st,"Ch1 on")||strstr(st,"ch1 on")) { putsf("CH1 on"); memset(st,0,strlen(st)); c=0; CH1=1; flag=1; } if(strstr(st,"Ch1 off")||strstr(st,"ch1 off")) { putsf("CH1 off"); memset(st,0,strlen(st)); c=0; CH1=0; flag=1; } if(strstr(st,"Ch2 on")||strstr(st,"ch2 on")) { putsf("CH2 on"); memset(st,0,strlen(st)); c=0; CH2=1; flag=1; } if(strstr(st,"Ch2 off")||strstr(st,"ch2 off")) { putsf("CH2 off"); memset(st,0,strlen(st)); c=0; CH2=0; flag=1; } if(strstr(st,"Ch3 on")||strstr(st,"ch3 on")) { putsf("CH3 on"); memset(st,0,strlen(st)); c=0; CH3=1; flag=1; } if(strstr(st,"Ch3 off")||strstr(st,"ch3 off")) { putsf("CH3 off"); memset(st,0,strlen(st)); c=0; CH3=0; flag=1; } if(strstr(st,"Ch4 on")||strstr(st,"ch4 on")) { putsf("CH4 on"); memset(st,0,strlen(st)); c=0; CH4=1; flag=1; } if(strstr(st,"Ch4 off")||strstr(st,"ch4 off")) { putsf("CH4 off"); memset(st,0,strlen(st)); c=0; CH4=0; flag=1; } if(flag==1) // پاک کردن اطلاعات اشتباه { memset(st,0,strlen(st)); c=0; flag=0; } } if(a==1) // پاک کردن اطلاعات اشتباه { PORTA=0X00; PORTC=0X00; delay_ms(1000); PORTA=0Xff; PORTC=0Xff; delay_ms(1000); flag=1; } } } |
سخت افزار مورد نیاز
ترانزیستور BC547
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
پروژه و دریافت بن ارسال رایگان
برای دریافت بن خرید از دانشجو کیت، کاربران بایستی با استفاده از وسایل این آموزش، پروژه را اجرا کرده و یا حتی مدار جدیدی تعریف کنید. سپس از اجرای کار فیلم گرفته و در شبکههای اجتماعی از جمله آپارات و اینستگرام، با هشتگهای دیجی_اسپارک دانشجوکیت digispark daneshjookit منتشر کنند. سپس از طریق بخش نظرات در ادامه همین آموزش، جهت دریافت بن خرید ارسال رایگان به ارزش ۱۲۰۰۰ تومان از دانشجو کیت، لینک را زیر همین پست ارسال کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.
سلام،خسته نباشید،ممکنه فایل hex رو هم به صورت جدا بذارید؟
سلام ممنونم اگه به همین صورت کامپایل کنید فایل hex رو به صورت کامل برای شما ارسال میشه همچنین فایل hex برای شما ایمیل میشه
سلام خسته نباشید میشه برا منم ارسال کنید ؟
سلام میشه فایل پروژه رو برا منم ارسال کنید ممنون میشم مرسی.
لطفا هم لینک دانلود رو بزارید و هم بیشتر درباره کد ها توضیح دهید
سلام هر جا که شما دچار مشکل شدید از طریق تیکت سایت سوالتون رو بپرسین ما جواب میدیم
سلام ،
درج نشده که از چه طریقی به ماژول بلوتوث کانکت بشیم .
برنامه ای که روی تلفن همراه باید نصب بشه رو نگفتید که
سلام
برنامه های متنوعی موجوده توی بازار شما میتونید از bluetooth terminal استفاده کنید اگه دقت کرده باشید لینک آموزش کانکت شدن به ماژول بلوتوث رو گذاشتم
با سلام
میکروکنترلر رو چطوری به کامپیوتر وصل کنیم ؟
با سلام
ارتباط از طریق کابل برقرار میشود.
سلام آموزشی هست که من بتونم خروجی یه سنسور اردوینورو روی گوشی ببینم؟
من با اندروید برنامه ساختم که وصل میشه به اردوینو و دستوراتم اوکی هست، فقط مشکل من دریافت از اردوینو روی اندروید هستش.
راه حلی دارید؟
سلام شما میتونید با ابزار های مختلفی این کار رو انجام بدین مثلا یکی همین بلوتوث با اتصال بلوتوث به برد میتونین مقدار خروجی سنسور رو دریافت کنین البته از طریق کابل یو اس بی و یوآرت هم میتونن از طریق کامپیوتر مشاهده کنین.
در کل شما هرطوری که بتونین با بردتون ارتباط دو طرفه برقرار کنید میتونین وضعیت سنسور ها رو مشاهده کنین
سلام خسته نباشید . اگه میشه تنظیمات داخل کدویژن رو هم اضافه کنید . مانند تنظیم کردن ویزارد . خروجی ورودی ها. برای بلوتوث هم باید تعریف کرد ک خروجی ار ایکس و تی ایکس رو؟؟؟؟
سلام ممنونم.
اگه دقت کرده باشید برای کوتاه شدن مطلب لینک کار با نرم افزار کد ویژن رو قرار دادم فقط دقت داشته باشید فرکانس کاری ۸ مگاهرتز هست منظورتون رو از
برای بلوتوث هم باید تعریف کرد ک خروجی ار ایکس و تی ایکس رو
متوجه نشدم
سلام اگه بخوام تعداد رله و خروجی رو زیاد کنم میتونم کد
if(strstr(st,”Ch4 on”)||strstr(st,”ch4 on”))
{
putsf(“CH4 on”);
memset(st,0,strlen(st));
c=0;
CH4=1;
flag=1;
}
if(strstr(st,”Ch4 off”)||strstr(st,”ch4 off”))
{
putsf(“CH4 off”);
memset(st,0,strlen(st));
c=0;
CH4=0;
flag=1;
}
رو مثلا تا CH8 ادامه بدم؟ و داخل برنامه باید خروجی هارو بزارم.
اگه نمیشه میشه بگید چطوری انجام بدم؟
بعدم برنامه داره تو نت یا باید بنویسم براش
سلام بله کافی همین رو تغیر بدین این سورس تا ۱۶ کانال تست شده
عالی. فقط برای برنامه اندرویدیش چیکار کنم؟
سلام میشه فایل hex ارسال کنید ممنون
سلام با چه برنامه ای باید اینو راه اندازی کنیم رو گوشی؟؟؟؟؟؟
سلام توی این آموزش کامل توضیح داده شده
https://digispark.ir/hc-05-arduino/
سلام , چطور میتوان دستورات لازم را با بلوتوث به میکرو فرستاد در این پروژه؟
سلام توی این آموزش کامل توضیح داده شده
https://digispark.ir/hc-05-arduino/
لطفا به ایمیل من فایل hex رو ایمیل کنید ممنون
با سلام
متاسفانه چنین کاری امکان پذیر نیست. در صورتی که سوالی دارید از همین طریق با نویسنده در ارتباط باشید.
سلام و وقت به خیر
جناب میخواستم بپرسم قطعه کد زیر به چه دلیل قرار داده شده است؟
if(drx>=0x01)
هم چنین چرا سایز st، صدو دو(۱۰۲) ىر نظر گرفته شده است؟
سلام
حجم بافر یوآرت اینجا مشخص میشه و وقتی پر بشه کامل بافر پاک میشه
۱ سلام
من می خوام به لامپ وصل کنم می خوام بدونم اگه من بلوتوث رو خاموش کنم لامپ هم خاموش می شه یا روشن می مونه
سلام چه بلوتوث گوشی خاموش بشه چه بلوتوث روی برد لامپ شما روشن میمونه