الجمعة، 24 يونيو 2016

استخدام البلوتوث HC05/HC06 Bluetooth Module مع اردوينو



شرح استخدام البلوتوث HC05 Bluetooth Module مع لوحة اردوينو





الادوات المطلوبة

  • - HC05/HC06 Bluetooth Module
  • - لوحة اردوينو
  • - دايود ضوئي LED
  • - مقاومة قيمتها ما بين (220 اوم) و (1 كيلو اوم)
  • - موبايل يعمل بنظام اندرويد



التوصيل

 

قم بتوصيل اطراف البلوتوث موديول مع لوحة اردوينو طبقا للجدول التالي:

To Arduino PinBluetooth Pin
RX (Pin 0)TX
TX (Pin 1)RX
5VVCC
GNDGND
انتبه: لا تقوم بتوصيل Rx بـ Rx , و Tx بـ Tx


قم بتوصيل الطرف السالب من الليد بالـ GND , والطرف الموجب بالمقاومة ثم الطرف الاخر للمقاومة بـ PIN-13 في لوحة اردوينو





الشكل النهائي





كيف يعمل؟


يعمل البلوتوث موديول بطريقة التواصل السريال (Serial Communication) , حيث يقوم برنامج الاندرويد (الموجود في اخر المقالة) بارسالة بيانات للبلوتوث موديول في حالة الضغط علي زرار معين , وفي الناحية الاخري عندما يستلم البلوتوث موديول اي بيانات من الجهاز المقترن به (الموبايل في هذه الحالة) , يقوم بارسال هذة البيانات الى لوحة الاردوينو عن طريق الـ Tx من الموديول (Rx في لوحة اردوينو).

الكود المستخدم علي لوحة اردوينو يقوم بفحص البيانات التي استلمها عن طريق البلوتوث موديول , فاذا كانت "1" يقوم بإضاءة الليد LED , وإذا كانت هذة البيانات "0" يقوم بإطفاء الليد.
ويمكنك اثناء التشغيل فتح شاشة الـ Serial Monitor لترى ما يتم استلامه

 






  الكود

قم برفع هذا الكود علي لوحة اردوينو

 

/*
* Bluetooh Basic: LED ON OFF - Avishkar
* Coder - Mayoogh Girish
* Website - http://bit.do/Avishkar
* Download the App : https://github.com/Mayoogh/Arduino-Bluetooth-Basic
* This program lets you to control a LED on pin 13 of arduino using a bluetooth module
*/
char data = 0;            //Variable for storing received data
void setup()
{
    Serial.begin(9600);   //Sets the baud for serial data transmission                             
    pinMode(13, OUTPUT);  //Sets digital pin 13 as output pin
}
void loop()
{
   if(Serial.available() > 0)      // Send data only when you receive data:
   {
      data = Serial.read();        //Read the incoming data & store into data
      Serial.print(data);          //Print Value inside data in Serial monitor
      Serial.print("\n");      
      if(data == '1')              // Checks whether value of data is equal to 1
         digitalWrite(13, HIGH);   //If value is 1 then LED turns ON
      else if(data == '0')         //  Checks whether value of data is equal to 0
         digitalWrite(13, LOW);    //If value is 0 then LED turns OFF
   }
}
github




برنامج الاندرويد




يمكنك استخدام اي برنامج مخصص للتعامل مع بلوتوث الاندرويد الموجودين علي متجر جوجل , و يمكنك تطوير برنامج بنفسك

او يمكنك استخدام البرنامج المستخدم في هذا الشرح



رابط تحميل البرنامج مرفق مع الملف المصدري (Source Code)
github





فيديو شرح لطريقة العمل





هذا الشرح هو مجرد بداية لتتعامل مع البلوتوث موديول , حيث يمكنك تطوير الكود وبرنامج الاندرويد وتنفيذ بيه مشاريع كـ Home automation او اي شئ آخر


المصدر: Arduino Project-Hub

البلوتوث - Bluetooth Module
Bluetooth Module Tutorial Get Started with HC05 HC06 Module and Arduino
HC05 HC06 Bluetooth Module
شريحة البلوتوث موديول اردوينو , شرح استخدام البلوتوث مع الاردوينو

الأربعاء، 2 مارس 2016

استخدام مستشعر الحركة PIR Sensor مع اردوينو


شرح استخدام مستشعر الحركة PIR Sensor مع لوحة اردوينو


نبذة:





الادوات المطلوبة:

  • PIR Sensor
  • لوحة اردوينو

الخطوات:

 

التوصيل:

قم بتوصيل اطراف المستشعر بلوحة اردوينو طبقا للجدول التالي

Line To Arduino PinPIR Pin
GNDGND1
OUTPUT32
POWER5V3








كتابة الكود:



قم برفع هذا الكود علي لوحة اردوينو

/*
 * //////////////////////////////////////////////////
 * //making sense of the Parallax PIR sensor's output
 * //////////////////////////////////////////////////
 *
 * Switches a LED according to the state of the sensors output pin.
 * Determines the beginning and end of continuous motion sequences.
 * The sensor's output pin goes to HIGH if motion is present.
 * However, even if motion is present it goes to LOW from time to time,
 * which might give the impression no motion is present.
 * This program deals with this issue by ignoring LOW-phases shorter than a given time,
 * assuming continuous motion is present during these phases.
 *
 */


/////////////////////////////
//VARS
//the time we give the sensor to calibrate (10-60 secs according to the datasheet)

int calibrationTime = 30;      

//the time when the sensor outputs a low impulse
long unsigned int lowIn;       

//the amount of milliseconds the sensor has to be low
//before we assume all motion has stopped

long unsigned int pause = 5000;

boolean lockLow = true;
boolean takeLowTime;

int pirPin = 3;    //the digital pin connected to the PIR sensor's output
int ledPin = 13;


/////////////////////////////
//SETUP

void setup(){
  Serial.begin(9600);
  pinMode(pirPin, INPUT);
  pinMode(ledPin, OUTPUT);
  digitalWrite(pirPin, LOW);

  //give the sensor some time to calibrate
  Serial.print("calibrating sensor ");
    for(int i = 0; i < calibrationTime; i++){
      Serial.print(".");
      delay(1000);
      }
    Serial.println(" done");
    Serial.println("SENSOR ACTIVE");
    delay(50);
  }

////////////////////////////
//LOOP

void loop(){

     if(digitalRead(pirPin) == HIGH){
       digitalWrite(ledPin, HIGH);   //the led visualizes the sensors output pin state
       if(lockLow){
         //makes sure we wait for a transition to LOW before any further output is made:
         lockLow = false;          
         Serial.println("---");
         Serial.print("motion detected at ");
         Serial.print(millis()/1000);
         Serial.println(" sec");
         delay(50);
         }       
         takeLowTime = true;
       }

     if(digitalRead(pirPin) == LOW){     
       digitalWrite(ledPin, LOW);  //the led visualizes the sensors output pin state

       if(takeLowTime){
        lowIn = millis();          //save the time of the transition from high to LOW
        takeLowTime = false;       //make sure this is only done at the start of a LOW phase
        }
       //if the sensor is low for more than the given pause,
       //we assume that no more motion is going to happen

       if(!lockLow && millis() - lowIn > pause){
           //makes sure this block of code is only executed again after
           //a new motion sequence has been detected

           lockLow = true;                      
           Serial.print("motion ended at ");      //output
           Serial.print((millis() - pause)/1000);
           Serial.println(" sec");
           delay(50);
           }
       }
  }

 يمكنك ان تجد هذا الكود علي موقع شركة اردوينو بالضغط هنا

 

 افتح شاشة الـ Serial Monitor

واختر السرعة: 9600


قبل ان يبدأ المستشعر ف العمل  , يحتاج فترة تتراوح من بين 30 ثانية الى 60 ثانية حتى يدخل الي وضع الاستعداد:

calibrating sensor ..................

عند بدأ المستشعر بالعمل تظهر هذة الرسالة:

SENSOR ACTIVE

في حالة حدوث اي حركة بالقرب من عدسة المستشعر . تظهر الرسالة

motion detected at 35 sec

الى ان تنتهي الحركة

motion ended at 44 sec


للحصول علي معلومات إضافية حول المستشعر , يمكنك تحميل الداتا شيت الخاصة بالمستشعر من الرابط التالي: Datasheet

مستشعر الحركة و اردوينو - Motion Sensor
PIR Sensor Tutorial   Get Started with PIR Sensor and arduino

راسبيري باي 3 - إطلاق النسخة الأحدث من الكمبيوتر المصغر راسبيري باي





إطلاق راسبيري باي3

بعد أربع سنوات من إطلاق الشركة للنسخة الأولى من راسبيري باي، أتاحت الشركة منتجها الأحدث وهو راسبيري باي3، الطراز B- وهو بمواصفة 64 بت، واي فاي وبلوتوث.
المواصفات، كما هو مفصل في الفيديو أدناه، تتضمن a quad-core ARM Cortex مما يجعله أسرع بنسبة 50% من النسخة السابقة، a built-in 4.1, 400MHz VideoCore IV multimedia، و 1GB LPDDR2-900 SDRAM.
كل هذه المزايا تجعل باي3 ليس مجرد استبدال بسيط بل تطوير حقيقي للنسخة الأصلية، وذلك تماشياً مع ملائمة المنتجات السابقة.
 



ماذا نتوقع من باي3؟

إذا كنت تتوقع أن قدرات باي3 مثل قدرات باي 2، خصوصاً مع تشابه الشريحتان فعليك التفكير مجدداً.
على الرغم من أن سعر النسخة الأحدث هو نفس سعر النسخة السابقة (35$) إلا أنه تم تطوير وحدة المعالجة المركزية في باي3 إلى 1.2 غيغاهيرتز. وهذا لن يجعله أسرع فقط، بل أكثر كفاءةً أيضاً. لكنه يعني ولسوء الحظ أنه يستهلك طاقة أكبر من باي2.



هذه المواصفات تجعل من راسبيري باي3 جيداً كفايةً لاستبداله بدلاً عن الحواسيب المكتبية، لا سيما مع وجود ميزات الاتصال التي يتميز بها الآن من خلال الواي فاي و البلوتوث.

بينما كان من السهل إضافة باي3 إلى الأجهزة للحصول على وظائفها، بني باي3 مع ميزة تجعل المستخدم لا يقلق من التعامل مع الأجهزة والسواقات غير المتوافقة معه.

راسبريباي راسبري باي Raspberry Pi
Raspberry Pi 3 

المصدر: مرصد المستقبل , Make