در این سیستم پیشنهادی ما قصد داریم یک ربات اصلی با موتور DC بسازیم که میخواهیم آن را با برنامه اندرویدی به راحتی در فروشگاه Google Play به نام bluecontrol کنترل کنیم.
با تحرک اولیه ربات مانند رو به جلو، معکوس، چپ، راست سعی می کنیم چهار عملکرد دیگر مانند روشن و خاموش کردن نور، روشن و خاموش کردن بوق (Buzzer) و غیره را اجرا کنیم. آنچه ما نیاز داریم
1) ماژول بلوتوث HC 05:
یک عنصر اصلی پروژه ما که روی باند ISM 2.4 گیگاهرتز بر روی استاندارد IEEE 802.15.1 کار می کند و برای تبادل داده در فواصل کوتاه استفاده می شود. جزئیات لطفاً برگه های داده را دنبال کنید بنابراین این ماژول 6 پین است که ما فقط از 4 یعنی VCC، GND، TX، RX استفاده می کنیم. اتصالات در نمودار مدار نشان داده شده است که آن را همانطور که هست انجام دهید یا اگر سریال TX RX مشغول است گزینه دیگری در آردوینو دارید که از نرم افزار سریال استفاده کنید. پس از تمام اتصالات و برق رسانی به مدار، فراموش نکنید که HC 05 خود را با استفاده از برنامه Android Bluecontrol با دستگاه وصل کنید.
ابتدا سعی کنید محتوای سریالی را که روی پین RX آردوینو قرار می گیرد، پس از فشار دادن هر کلید برنامه آبی مطابق با آن مقدار ASCII بخوانید، ما می توانیم برنامه اصلی خود را برای انجام این کار تغییر دهیم، لطفاً از برنامه خواندن سریال که قبلاً در Arduino IDE موجود است استفاده کنید.
2) درایور موتور L293D:
برای کنترل دو موتور DC فقط به یک تراشه L293D نیاز داریم. اتصالات ساده هستند مانند آنچه در نمودار مدار داده شده است.
ما همچنین چهار موتور را با موتورهای یدک کش یکسان در هر طرف وصل می کنیم. برای جزئیات بیشتر دیتاشیت ها را دنبال کنید.
3) میکروکنترلر:
در اینجا ما از Arduino UNO R3 استفاده می کنیم، اما بچه ها شما می توانید با توجه به برنامه خود با استفاده از Atmega 328, 168, 8 برد خود را بسازید، اما فراموش نکنید که بوت لودر را بدون آن رایت کنید، هرگز هیچ کدی از برد آردوینو رایت نکنید ( برای رایت بوت لودر در تراشه خالی لطفاً پیوند ما را دنبال کنید.
بچه ها آماده سازی اولیه ما تقریباً آماده است سایر اجزای متفرقه را همانطور که به صورت شماتیک راهنمایی می شود متصل کنید.
// www.geekystation.com // bluetooth control robot // program:- int M1 = 5; int M2 = 6; int M3 = 7; int M4 = 8; int LED = 13; int pin1 = 9; int pin2 = 10; int pin3 = 11; int pin4 = 12; int incomingByte = 0; void setup(){ Serial.begin(9600); pinMode(LED, OUTPUT); pinMode(M1, OUTPUT); pinMode(M2, OUTPUT); pinMode(M3, OUTPUT); pinMode(M4, OUTPUT); pinMode(pin1, OUTPUT); pinMode(pin2, OUTPUT); pinMode(pin3, OUTPUT); pinMode(pin4, OUTPUT); delay(500); } void loop(){ // check for serial data if (Serial.available() > 0) { incomingByte = Serial.read(); digitalWrite(LED, HIGH); // say what you got: Serial.print("I received: "); Serial.println(incomingByte); // delay 10 milliseconds to allow serial update time delay(10); if (incomingByte == 85){ digitalWrite(M1, HIGH); digitalWrite(M2, LOW); digitalWrite(M3, HIGH); digitalWrite(M4, LOW); Serial.println("FWD"); delay(100); } else if (incomingByte == 76) { digitalWrite(M1, HIGH); digitalWrite(M2, LOW); digitalWrite(M3, LOW); digitalWrite(M4, LOW); Serial.println("LEFT"); delay(100); } else if (incomingByte == 82){ digitalWrite(M1, LOW); digitalWrite(M2, LOW); digitalWrite(M3, HIGH); digitalWrite(M4, LOW); Serial.println("RIGHT"); delay(100); } else if (incomingByte == 68) { digitalWrite(M1, LOW); digitalWrite(M2, HIGH); digitalWrite(M3, LOW); digitalWrite(M4, HIGH); Serial.println("REVERSE") ; delay(100); } else if (incomingByte == 67) { digitalWrite(M1, LOW); digitalWrite(M2, LOW); digitalWrite(M3, LOW); digitalWrite(M4, LOW); Serial.println("STOP"); delay(100); } else if (incomingByte == 97) { digitalWrite(pin1, HIGH); Serial.println("LED ON"); delay(100); } else if (incomingByte == 99) { digitalWrite(pin1, LOW); Serial.println("LED OFF"); delay(100); } else if (incomingByte == 98) {digitalWrite(pin2, HIGH); Serial.println("LED2 ON"); delay(100); } else if (incomingByte == 100) { digitalWrite(pin2, LOW); Serial.println("LED2 OFF"); delay(100); } else if (incomingByte == 101) { digitalWrite(pin3, HIGH); Serial.println("LED3 ON"); delay(100); } else if (incomingByte == 102) { digitalWrite(pin3, LOW); Serial.println("LED3 OFF"); delay(100); } else if (incomingByte == 103) {digitalWrite(pin4, HIGH); Serial.println("FAN ON"); delay(100);} else if (incomingByte == 104) { digitalWrite(pin4, LOW); Serial.println("FAN OFF"); delay(100);}}}