احتمالا در مسابقات و یا در تلویزیون رباتهایی را دیدهاید که از راه دور کنترل شده و یا با یکدیگر در تعامل هستند. شاید برای شما هم این سوال پیش آید، که راه ارتباطی به چه صورت و چگونه برقرار میشود. روشهای مختلفی برای ایجاد ارتباط بیسیم وجود دارد. یکی از روشهای انتقال بیسیم داده و کنترل ربات، استفاده از بلوتوث است. در ادامه به معرفی ماژول بلوتوث hc05 و قابلیتهای آن خواهیم پرداخت. با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
ماژول HC05 بلوتوث
پروتکل ارتباط سخت افزاری ماژول بلوتوث UART میباشد. در دو مود Master و Slave قرار گرفته و آماده برقراری ارتباط با سایر دستگاهها میشود. ولتاژ کاری این ماژول ۳٫۳v است، اما چون داخل این ماژول از رگولاتور استفاده شده، میتوانید آن را به ۵v متصل کنید. در اینجا منظور از (V) همان ولت میباشد. فرکانس کاری ماژول بلوتوث HC05 عدد ۲٫۴گیگا هرتز است. برد آن در حدود ۳۳ متر است. سرعت انتقال داده ۲٫۱ مگابایت هست.
- پایه RX : دریافت کننده اطلاعات
- پایه TX :فرستنده اطلاعات
ارتباط دو ماژول بلوتوث HC-05
اتصالات
- پایه TX ماژول بلوتوث را به پایه TX آردوینو اتصال دهید.
- پایه RX ماژول بلوتوث را به پایه RX اتصال دهید.
- پایه GND ماژول بلوتوث را به پایه GND اتصال دهید.
- پایه ۵ ولت ماژول بلوتوث را به پایه ۵ ولت اتصال دهید.
نکته اول: قبل از اینکه +۵V یا Gnd ماژول را به آردوینو متصل کنید، دکمه Switch را نگه دارید و در همین هنگام نگه داشتن VCC یا GND را متصل کنید.
نکته دوم : چون از خود TX و RX آردوینو استفاده شده است, هیچ کدی نوشته نمیشود. اصل کار با دستورات AT کامند میباشد.
تنظیم ماژول در حالت master و Slave
نرم افزار آردوینو Arduino را باز کرده و سپس یک برنامه پیشفرض آپلود کنید. البته توجه داشته باشید که در هنگام آپلود کردن کدها، هیچ پایه ای به TX وRX آردوینو متصل نباشد. بعد از آپلود برنامه پایههای TX و RX ماژول بلوتوث HC05 را به آردوینو متصل کنید. روش اتصلات چند خط بالاتر توضیح داده شده است. سپس در نرم افزار آردوینو، سریال مانیتور را باز کنید. برای این کار میبایست دکمههای control+shift+M را نگه دارید و سریال پرینت را باز کنید. حالت را روی Both Nl & CR بگذارید. از طریق سریال مانیتور، کلیه تنظیمات مربوط به ماژول بلوتوث را انجام میدهیم.
تنظیم ماژول بلوتوث HC-05 در مود Slave
- AT: این دستور برای این است که شما متوجه شوید ارتباط بین کامپیوترتان و ماژول برقرار شده است.
- AT + ORGL : این برای اینکه کامل اطلاعات ماژول به حالت کارخانه برگردد.
- AT + VERSION: این دستور برای دانستن ورژن ماژول میباشد.
- AT+NAME: با این دستور شما میتوانید نام ماژول را تغییر دهید و برای راحت تر شدن میتوانید، اسم را SLAVE کنید یعنی میتوان نوشت: AT+NAME=SLAVE.
- AT+ROLE=0: این دستور برای حالت گیرنده ماژول است که مطابق نوشته آن را ۰ قرار میدهیم.
- AT+ADDDR: با دادن این دستور ماژول IP (شناسنامه خود) خودش به شما میدهد, مثال : ۱۸:BD19:192H , حال شما IP داده شده را کپی کنید یا در جایی بنویسید.
تنظیم ماژول بلوتوث HC-05 در مود Master
- AT : این دستور برای اینکه شما متوجه شوید ارتباط بین کامپیوترتان و ماژول برقرار شده است.
- AT+ORGL : این برای اینکه کامل اطلاعات ماژول به حالت کارخانه برگردد.
- AT+VERSION : این دستور برای دانستن ورژن ماژول است.
- AT+ROLE=1 : این دستور برای حالت فرستنده ماژول است که مطابق نوشته آن را ۱ قرار میدهیم.
- AT+CMODE=0 : این دستور هم برای فرستنده است که حنما باید مورد استفاده قرار گرفته باشد.
- AT+BIND=ADDR(SLVE) : به عبارتی با این دستور IP ماژول Slave را به ماژول Master میدهیم.
نکته: زمانی که میخواهیم ADDR را به BIND بدهیم باید به جای” : ” از ” , ” استفاده کنیم. برای اتصال دو ماژول ورژن دو ماژول باید یکسان باشد. به همین خاطر سعی کنید دو ماژول را از یک جا و از یک مکان تهیه کنید.
بخش دوم: کنترل سرو موتور با بلوتوث
همانطور که در ابتدای آموزش اشاره کردم. هدف کنترل یک ربات توسط بلوتوث است. برای این منظور در این آموزش از سرو موتور استفاده کردهام. سروو موتورها دارای ۳ سیم هستند. سیم تیره تر یا سیاه همان Gnd است. سیم قرمز Vcc است و سیم دیگری که نارنجی است، جهت کنترل سرو Servo میباشد. این مدار را به آردوینویی متصل کنید که ماژول بلوتوث Slave را متصل کردهاید.
- سیم Gnd سروو موتور را به Gnd متصل کنید.
- سیم Vcc سروو را به +۵v آردوینو متصل کنید.
- سیم کنترل سروو را به هر پایه خروجی اردوینو میتوان متصل کرد, که ما در این پروژه به پایه ۹ آردوینو متصل میکنیم.
- TX ماژول به RX اردوینو اتصال دهید.
- RX ماژول به TX اردوینو اتصال دهید.
- GND ماژول به GND اتصال دهید.
- +۵v ماژول به +۵v اتصال دهید.
مدار پتانسیومتر
این مدار را به همان آردوینویی متصل کنید که ماژول بلوتوث master متصل شده است، یکی از سه پایه پتانسومتر را به مقاومت ۱K متصل کنید، سپس آن سر مقاومت را به +۵v متصل نمایید. حال پایه بعدی پتانسیومتر را به پایه بعدی اون پایه ای که انتخاب کردید به Gnd متصل کنید. سپس پایه ای که بین پتانسیومتر و مقاومت اتصال برقرار کرده (همان پایه پتانسیومتر که به مقاومت متصل شده) را خروجی بگیرید. و سیمی که از آن خروجی گرفتید را به پایه A0 آردوینو متصل کنید.
کد ماژول بلوتوث آردوینو Master
توجه داشته باشید در هنگام اپلود برنامه سیمی پایه های TX و RX آردوینو را اشغال نکرده باشد. سپس بعد از آپلود متصل نمایید. چنانچه روش آپلود کدها روی آردوینو را نمیدانید به آموزش کار با برد آردوینو Arduino مراجعه کنید.
int potpin (0); //متغیر برای پتانسومتر و تعریف پایه آن int Read; // متغیر برای خواندن داده ها void setup () { Serial.begin (38400); // مربوط به اطلاعات ماژول برای گرفتن و دادن اطلاعات } void loop() { potpin = analogRead(0); // تعریف پایه پتانسومتر Read = map(potpin,0,980,0,180); // با این دستور مقدار ۰_ ۹۸۰ را تبدیل ۰ _ ۱۸۰ کرده ایم Serial.println (Read); // خواندن داده های پتانسومتر Delay (200); // فاصله زمانی Serial.println (Read); // خواندن داده های پتانسومتر If (Serial.available()) {// اگر اتصال به ماژل ها برقرار شد : Serial.write (Read); // داده پتانسومتر که متغیر Read تعریف شده , به ماژول Slave میفرستد. } {
حال این برنامه را در آردوینو آپلود کنید که ماژول Master به آن متصل شده است.
کد ماژول بلوتوث آردوینو Slave
#include <Servo.h>; // کتابخانه سرو موتور را فراخانی کرده ایم Servo myservo; // متغیری از کلاس سروو تعریف کرده ایم int servo = 9; //************************ int Read; void setup () { Serial.begin (38400); // بازدهی برای ماژول بلوتوس myservo.attach (servo); // متغیر مای سروو را به پایه ۹ اتصال دادیم } void loop() { if (Serial.available ()) { // اگر بین ماژول اتصالی بر قرار شد Read = Serial.read (); // هرچیزی که از سریال دریافت میکند بخوند if(Read == 0 && Read == 180){ // اگر بازده بین ۰ تا ۱۸۰ بود myservo.write (Read); // موقیت سروو را به عددی که دریافت میکند ببرد. } } }
وسایل مورد نیاز
دو عدد ماژول بلوتوث HC05
یک بسته سیم برد بردی
برد برد
دو عدد آردوینو Arduino UNO
مقاومت (۱۰K)
سرو موتور
سیم نری به مادگی
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
پروژه و دریافت بن ارسال رایگان
برای دریافت بن خرید از دانشجو کیت، کاربران بایستی با استفاده از وسایل این آموزش، پروژه را اجرا کرده و یا حتی مدار جدیدی تعریف کنید. سپس از اجرای کار فیلم گرفته و در شبکههای اجتماعی از جمله آپارات و اینستگرام، با هشتگهای دیجی_اسپارک دانشجوکیت digispark daneshjookit منتشر کنند. سپس از طریق بخش نظرات در ادامه همین آموزش، جهت دریافت بن خرید ارسال رایگان به ارزش ۱۲۰۰۰ تومان از دانشجو کیت، لینک را زیر همین پست ارسال کنید.
سلام
ببخشید شما در اول نوشتید که پایه RX ماژول به RX آردوینو و در آخر نوشتید که RX ماژول به TX آردوینو متصل بشه
سلام و خسته نباشید
بله جناب درسته در قسمت اول پایه TX به RX , ،TX به RX , در قسمت اول این کار را انجام میدهیم برای انجام دادن دستورات AT کامنت تا اینکه دو ماژول به هم متصل شود.
اما در قسمت اخر, پایه ها را جابه جا میکنیم زیرا میخواهیم ماژول ها دستوراتی که دادیم را دریافت کنند و ارسال کنند .( کار عادی خود را انجام دهند)
به عبارتی در قسمت اول برای انجام دادن دستورات AT کامنت باید آن کارارا انجام داد.
اگر باز اطلاعات کافی نبود حتما بگید جناب با کمال میل پاسخگو هستم.
میشه از ماژول بلوتوث spp_c استفاده کرد
سلام جناب
بنده متاسفانه، تا به حال با این ماژولی که معرفی کردید فعالیتی نداشتم
اما به ظاهر جزو خانواده های ، hc باید باشد
و به همین منظور هم پس احتمالش هست با این روش گفته شده بتوان ارتباط بین دو ماژول را برقرار کرد .
و در ضمن اموزش گفته مربوط به hc_05 هستش، خوشحال میشم اگر شما تونستید با ماژول که معرفی کردید با این روش خروجی بگیرید، با بنده به اشتراک بگذارید!
سلام ممنون از پروژه خوبتون،
میشه تعداد سروو ها و پتانسیومترها رو بیشتر کرد؟ برنامه چه تغییری میکنه؟
سلام عرض ادب امیدوارم حالتون خوب باشه .
بله میتوان زیاد کرد فقط باید تعداد متغیر رو هارو افزایش داد که داخل برنامه نویس آموزش توضیح دادم که هر خط برای چه کاری هستش و شما میتونید مثلا یک پتانسیومتر دیگر اضافه کنید و پایه ورودی آنالوگش رو متصل کنید و ددخل برنامه هم تعریف کنید (p2=analogread(A2
همچنین برای سروو موتور هم میتوانید اضافه کنید و فقط باید پایه رو تعریف کنید از همون. دستور attach که کاملش رو داخل برنامه نوشتم و داخل برنامه پرانتز شما شماره پایه ای که پایه کنترل کننده سرووتون متصل هستش رو تایپ میکنید . البته میتونید همون شماره رو متغیر کنید و ازش متعیر استفاده کنید مثلا:
Servo servo2=8 الان پایه کنترل کننده شما پایه هشت هست و متونید داخل پرانتز به جای عدد ۸ از servo2 استفاده کنید
سلام خسته نباشید. سوال اول برای کنترل با گوشی باید چه کار کنم ؟ و برای اینکه به غیر از ماژول بخام کنارش یه کلید بزارم باید چکار کنم.
خیلی ممنون از سایت خوبتون.
سلام و عرض ادب
برای کنترل با گوشی شما میتوانید از برنامه arduino rc استفاده کنید . البته برنامهی دیگه هم هست که میتونید آن را داخل گوگل سرچ کنید.
برای کلیدی که میخواهید بزارید بستگی به نوع کلیدی که انتخاب میکنید دارد. دقیق متوجه سوال دومتون نشدم. اگر واصح تر بگید ممنون میشم
سلام.
اگه من بخوام چهار تا کلید فشاری استفاده کنم برای جلو رفتن یا عقب رفتن و ….
باید چی کار کنم
از پتانسیومترم میخوام برای سروو استفاده کنم تو ربات
سلام جناب وقتتون بخیر باشه.
شما میتوانید از یک از کلید ها یک خروجی بگیرید و به پاهای دیجیتال آردویینو که از ۰ تا ۱۳ هست متصل کنید . وقتی چهارتاکلید رو به اردویینو متصل کردید. حال باید اون هارو داخل برنامه فراخوان کنید و از دستور if استفاده کنید .
بنده مثالی برای یکی از کلید هارو برای شما میزنم.
Int key1=5
Voide setup(){
(Pinmode(key1,INPUT
}
Voide loop(){
(۵)Key1=digitalread
}(If(key1==1
(Digitalwrite(motor,high
}
به یک همچین حالتی میتونید به زدن دکله موتور خودتون رو روشن کنید البته من از متغیر موتور استفاده کردم برای مثال بود . شما اول لاید نوع درواور خودتون رو انتخاب کنید و بر اساس آن برنامه نویسی کنید
با سلام خداقوت به شما.با این ماژول بلوتوث چند تا میتوان سروو موتور و موتور دی سی و موتور براشلس را کنترل کرد؟
سلام جناب وقتتون بخیر باشه
بستگی به نوع اپی که استفاده میکنید برای اتصال ماژول به تلفن همراه و همچنین نوع درایور موتور برای براشلس و نوع برد آردوینو
دارد . و تمام اینها تعیین میکند که حداقل و حداکثر البته با خلاقیت در برنانه نویسی چند عدد میتوان از لین رسته موتور ها راه اندازی کرد
با سلام
کاربر گرامی از اینکه تجربه و دانش خود را با دیگر کاربران به اشتراک میگذارید، صمیمانه سپاسگزارم.