نظرة عامه:
يعد استخدام Servo Motor شائعًا في الروبوتات. حيث تكمن وظيفته في الحركة بزوايا مختلفة تصل الى 360 درجة وبشكل دقيق جدا. في هذا المشروع سنقوم بشرح كيفية استخدام Servo Motor لاسلكيًا مع Arduino UNO عبر اتصال Bluetooth.
الادوات المستخدمه:
- Arduino UNO
- Bluetooth module
- Servo Motor
- Breadboard
- Connecting wire
- Roboremo App from Playstore
خطوات ربط تطبيق Roboremo بالمشروع:
الخطوة 1: قم بتنزيل تطبيق Roboremo من متجر Android Play وتثبيته على هاتفك. بعد تثبيته ، سترى نافذة التطبيق كما هو موضح في الشكل الاول ومن خلال النقر على زر “القائمة” سترى النافذة الظاهرة في الشكل الثاني:
الخطوة 2: انقر فوق زر الاتصال وستظهر لك النافذة المبينة في الشكل أدناه ، ثم يجب عليك تحديد “Bluetooth RFCOMM” ومن ثم ستتمكن من توصيل وحدة Bluetooth HC-06 الخاصة بك مع تطبيق Android “Roboremo”.
الخطوة 3: بعد الاتصال بوحدة البلوتوث، عد إلى نافذة الشكل الثاني ، ثم انقر فوق “تحرير واجهة المستخدم” لإنشاء واجهة المستخدم حسب حاجتك.
عند النقر فوق “تحرير واجهة المستخدم” ، سترى مرة أخرى النافذة الموضحة في الشكل الاول ، ثم انقر في أي مكان على الشاشة سترى نافذة التطبيق مثل figure4 وحدد “الزر” للحصول على بنية الزر.
الخطوة 4: بعد اختيار الزر ، ستحصل على بنية زر على الشاشة لتحريرها. يمكنك تغيير حجم ونقل الهيكل في أي مكان على الشاشة، لتعيين القيمة المراد إرسالها عند النقر عبر Bluetooth، لديك “تعيين إجراء صحفي” (كما هو موضح في الشكل الاول ادناه) ثم اكتب القيمة التي تريد إرسالها من هذا الزر المحدد. مثال على ذلك نرسل الرقم “1” لتدوير المؤازرة عن طريق الضغط على زر “البدء” في تطبيق Roboremo android.
الخطوة 5: سيصبح لدينا واجهة المستخدم للتحكم في محرك سيرفو باستخدام الهاتف الذكي.
طريقة التوصيل:
الشيفرة البرمجيه:
[sourcecode]
#include <SoftwareSerial.h>
#include <Servo.h>
Servo myServo;
int TxD = 11;
int RxD = 10;
int servoposition;
int servopos;
int new1;
SoftwareSerial bluetooth(TxD, RxD);
void setup() {
int pos=0;
myServo.attach(9);
myServo.write(0);
Serial.begin(9600); // start serial communication at 9600bps
bluetooth.begin(9600);
}
void loop() {
if (bluetooth.available())
{
String value = bluetooth.readString();
servoposition = value.toInt();
if (value.toInt() == 0)
{
Serial.println(servoposition);
myServo.write(0);
}
if (value.toInt() == 45)
{
Serial.println(servoposition);
myServo.write(45);
}
if (value.toInt() == 90)
{
Serial.println(servoposition);
myServo.write(90);
}
if (value.toInt() == 135)
{
Serial.println(servoposition);
myServo.write(135);
}
if (value.toInt() == 180)
{
Serial.println(servoposition);
myServo.write(180);
}
while(value.toInt()==1){
if (bluetooth.available())
{
value = bluetooth.readString();
Serial.println(value);
if (value.toInt()==2)
{Serial.println(“YYY”); break; }
}
servopos++;
delay(30);
Serial.println(servopos);
myServo.write(servopos);
if (servopos ==180 )
{servopos=0;break;}
}
}
}
[sourcecode/]