الأحد، 9 يونيو، 2013

البلوتوث Bluetooth و ربطه بالأردوينو

البلوتوث Bluetooth

في كثير من التطبيقات الحياتية المختلفة , نهتم في موضوع التحكم بالأجهزة عن بُعد لاسلكياً Wirless  , كالتحكم بالبيوت الذكية Smart Home و الروبوتات Robot و غيرها الكثير .


تتعد طرق التحكم عن بعد , فهناك التحكم بواسطة الأشعة تحت الحمراء IR  او موجات الراديو RF أو عن طريق الايثرنت Ethernet أو GSM , xbee و غيرها .

سأتناول بالتفصيل كل نوع على حدا , و سأبدأ بطريقة تندرج تحت بند RF ألا و هي البلوتوث Bluetooth .

 في البداية ما هو البلوتوث Bluetooth ؟ 




هي تقنية اتصالات  في نطاق الموجات الراديو  القصيرة صممت لنقل البيانات لمسافات قصيرة من المتر الواحد إلى المائة متر وبأستهلاك كميات ضئيلة من الطاقة وتستخدم هذه التقنية بشكل كبير في نقل البيانات بين الأجهزة المحمولة وفى الملحقات الطرفية للحاسب

ما سنقوم به اليوم هو ربط الأردوينو بالبلوتوث و جعل الأردوينو ينقل البيانات من و إلى الحاسوب  .

ماذا سنحتاج في هذه التجربة ؟ 

المعدات :

سنحتاج لتنفيذ هذه التجربة إلى :
1) بطاقة اردوينو 
2)قطعة بلوتوث Bluetooth module HC-05 
3)مصدر تغذية خارجي "بطارية 9فولت "
4) بلوتوث usb "اختياري في الأجهزة التي لا تمتلك بلوتوث "
5) اسلاك توصيل Solderless jumper
6) BreadBoard

البرمجيات :

ستحتاج لتنفيذ هذه التجربة لبرمجية الأردوينو الأصدار 1.0.1 او أعلى .

برمجية  Tera Term أو Putty  


في البداية طريقة التوصيل :

هذا المخطط ادناه يوضح طريقة التوصيل .

يمكن ان تكون التغذية اما 3.3 فولت أو 5 فولت حسب الموديل المستخدم 

سنقوم في البداية بتعريف جهاز البلوتوث HC-05 المربوط مع الأردوينو مع جهاز الحاسوب .



اسم الجهاز هو HC-05 و الpairing code هو 1234 

بعد ان تتم عملية الربط Pairing بنجاح , يأتي دور البرنامج tera term 

قم بفتح برنامج Tera Term و حدد خيار Serial  الموجود اسفل الشاشة .

يجب عليك معرفة الcom port  الخاص بالبلوتوث في جهاز الحاسوب , و يمكن معرفته عبر الضغط على اجهزة البلوتوث في لوحة التحكم و فتح اعدادات البلوتوث 



بعد ان تحدد رقم الCom port  في لوحة Tera term الرئيسة اضغط OK ستلاحظ أن الLED  الموجود على قطعة البلوتوث توقف عن الترميش المستمر السريع fast blink و اصبح يضيء بشكل ابطئ , و ستظهر لك شاشة البرنامج و يمكنك رؤية البيانات المرسلة و المستقبلة ظاهرة عليها .

سيظهر تطبيق البرنامج على شاشة المخرجات كما في الشكل :


// This program shown how to control arduino from PC Via Bluetooth
// Connect ...
// arduino>>bluetooth
// D11   >>>  Rx 
// D10   >>>  Tx
//Written By Mohannad Rawashdeh
//for http://www.genotronex.com/

// you will need arduino 1.0.1 or higher to run this sketch 

#include <SoftwareSerial.h>// import the serial library

SoftwareSerial Genotronex(10, 11); // RX, TX
int ledpin=13; // led on D13 will show blink on / off
int BluetoothData; // the data given from Computer

void setup() {
  // put your setup code here, to run once:
  Genotronex.begin(9600);
  Genotronex.println("Bluetooth On please press 1 or 0 blink LED ..");
  pinMode(ledpin,OUTPUT); 
}

void loop() {
  // put your main code here, to run repeatedly: 
   if (Genotronex.available()){
 BluetoothData=Genotronex.read();
   if(BluetoothData=='1'){   // if number 1 pressed ....
   digitalWrite(ledpin,1);
   Genotronex.println("LED  On D13 ON ! ");
   }
  if (BluetoothData=='0'){// if number 0 pressed ....
  digitalWrite(ledpin,0);
   Genotronex.println("LED  On D13 Off ! ");
  }
}
delay(100);// prepare for next data .. 
}
  


----------------------------------------------------

// This program shown how to control arduino from PC Via Bluetooth
// Connect ...
// arduino>>bluetooth
// D11   >>>  Rx 
// D10   >>>  Tx
//Written By Mohannad Rawashdeh
//for http://www.genotronex.com/

// you will need arduino 1.0.1 or higher to run this sketch 

#include <SoftwareSerial.h>// import the serial library

SoftwareSerial Genotronex(10, 11); // RX, TX
int ledpin=13; // led on D13 will show blink on / off
long previousMillis = 0;        // will store last time LED was updated

// the follow variables is a long because the time, measured in miliseconds,
// will quickly become a bigger number than can be stored in an int.
long interval = 1000;           // interval at which to blink (milliseconds)
int ledState = LOW;             // ledState used to set the LED
long Counter=0; // counter will increase every 1 second
void setup() {
  // put your setup code here, to run once:
  Genotronex.begin(9600);
  Genotronex.println("Bluetooth On please wait....");
  pinMode(ledpin,OUTPUT); 
}

void loop() {
  // put your main code here, to run repeatedly: 
  unsigned long currentMillis = millis();
 
  if(currentMillis - previousMillis > interval) {
    // save the last time you blinked the LED 
    previousMillis = currentMillis;   
     Counter+=1;
   
    Genotronex.println(Counter);
   
    // if the LED is off turn it on and vice-versa:
    if (ledState == LOW)
      ledState = HIGH;
    else
      ledState = LOW;

    // set the LED with the ledState of the variable:
    digitalWrite(ledpin, ledState);
  }

}
  


كما يمكن ربط البلوتوث بجهاز يعمل على نظام الأندرويد بسهولة , قم بتحميل برنامج Arduino bluetooth  و عرف اسم الجهاز HC 05 و من ثم قم بعملية الربط .

الفيديو التالي يوضح الفكرة .




23 التعليقات :

  1. hi Geno tronex!
    I am Rang. can you share the project android please. nhut.rang3101@gmail.com . Thank you very much..

    ردحذف
    الردود
    1. Hi

      Explain more please , do you need the software of android

      حذف
  2. أزال المؤلف هذا التعليق.

    ردحذف
    الردود
    1. لأكثر من سبب :

      اخترت المنفذ الخاطئ لل Bluetooth device على جهازك

      البلوتوث الذي تريد الأرتباط معه ليس في وضعيه التزامن مع جهازك .

      يجب ان يتغير وميض ال LED الموجود على البلوتوث من فلاش سريع لفلاش بطيء حتى يدخل في وضع التزامن .

      تأكد من توصيلاتك جيداً , و اكتب برنامج يقوم بارسال رسائل للجهاز في البداية , ان ظهرت الرسائل فهذا يعني ان كل شيء صحيح و يمكنك بعدها الكتابة للبلوتوث

      حذف
  3. كيف استطيع زيادة مدى ال bluetooth module ؟
    هل يمكن استخدام NRF24L01 كمستقبل مع مرسل bluetooth ؟

    ردحذف
  4. من فضلك ايه هتغير لو غيرت نوع البلوتوث ارجو الرد

    ردحذف
    الردود
    1. حسب النوع , قد لا يكون هناك اي اختلاف بالنسبة لبعض الأنواع , و انواع اخرى قد تتغير البرامج لها , حسب النوع المستخدم .

      حذف
  5. شكرا جزيلا استاذ لاكن هل اقوم طريقه بربط البلوتوث الى الأردوينو ثم اقوم بتوصيل الاردوينو للحاسوب ثم افتح برنامج التيرا تيرم؟ارجو الرد

    ردحذف
  6. هل يمكن استخدام هذا البلوتوث لعمل اتصال بين قطعتين اردوينو وارسال البيانات بينهما

    ردحذف
    الردود
    1. نعم .
      يمكن استخدام HC05 و وضعها في وضعيه ال AT Mode و تفعيل خيار Master لأحدى القطعتين "راجع النشرة الفنية لل HC05 "
      يعمل هذا النمط على البحث تلقائياً عن اقرب جهاز بلوتوث من نوع HC05 و الأرتباط معاه .

      حذف
  7. كيف يمكن عمل برنامج بلغة الجافا لاستقبال وارسال البيانات بدلا من tera term

    ردحذف
    الردود
    1. تحتاج لسؤال مبرمج جافا .

      حذف
  8. كيف يمكن ربط لردوينو باردوينو اخر عن طريق البلوثوت

    ردحذف
    الردود
    1. يمكن استخدام HC05 و وضعها في وضعيه ال AT Mode و تفعيل خيار Master لأحدى القطعتين "راجع النشرة الفنية لل HC05 "
      يعمل هذا النمط على البحث تلقائياً عن اقرب جهاز بلوتوث من نوع HC05 و الأرتباط معاه .

      حذف
  9. لو استخدمت بلوتوث bluegiga WT32 .هل لديك فكرة عن كيفية الربط مع الأردوينو وبرمجته

    شكراا

    ردحذف
    الردود
    1. لم استخدمه من قبل .
      هذا النوع يرتبط مع اجهزة ايفون فقط

      حذف
  10. اذا اردت ان اتحكم بالأردوينو عن طريق البلوتوث و استخدام برنامج الماتلاب ،هل عندك فكرة عن الموضوع أو توجيه .
    شكرا جزيلا

    ردحذف
  11. tera term يضهرلي COM 1,2,3,4 فقط لمذا ?.مع العلم أني قمت بجميع الخطوات المذكورة اعلاه
    واعد ت تثبيت البرناج لكن نفس النتيجة ، البلوتوث عندي في COM 19

    ردحذف
  12. يغطيك العافية...
    انا وصلت tx,rx من البلوتوث لل tx,rx اردوينو بزبط ولا لازم ادخلو ب pin

    ردحذف
  13. أزال المؤلف هذا التعليق.

    ردحذف
  14. هل أستطيع عمل واجهة مستخدم للتحكم والإرسال والاستقبال بين الموبايل والأردوينو وكيف

    ردحذف
    الردود
    1. نعم يمكن
      كيف , تريد مبرمج تطبيقات للهاتف حسب نظام التشغيل ليصمم لك الواجهة و طريقة الربط

      حذف

 
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.