نظام مراقبة نقاوة الجو باستخدام الاردوينو و حساس الغبار

المقدمة

قد يتسبب تلوث الهواء والأجواء الغابرة بمشاكل صحية على الإنسان وخصوصا الذين يعانون من ضيق تنفس أو مشاكل في الجهاز التنفسي لذلك يعد من الضروري قياس ومراقبة نقاوة الجو. نركز في هذا الدرس على تعلم كيفية توصيل حساس الغبار مع الاردوينو وعرض قراءة المستشعر على شاشة (OLED). كذلك تحديد مستوى الغبار  و تشغيل ثنائي مشع للضوء يشير إلى كمية الغبار بالجو.

حساس الغبار

 

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

اردوينو

1 X اردوينو

سلك اردوينو

1 X سلك الأردوينو

حساس الغبار

1 X حساس الغبار

لوحة تجارب حجم متوسط

1X لوحة تجارب

red led

1 X  الثنائي المشع للضوء لون أحمر

green-led-5mm

1 X  الثنائي المشع للضوء لون أخضر

مقاومة 220

2X مقاومة 220

مكثف

1X مكثف (16v,220uf) متوفر مع الحساس

مقاومة 150 اوم

1X مقاومة (150 اوم ) متوفره مع الحساس

اسلاك توصيل

مجموعة أسلاك توصيل (ذكر/ ذكر )

 

حساس الغبار

يتكون حساس الغبار من صمام ثنائي ضوئي. يبعث الضوء ومستكشف ضوء (Photodiode) لتحديد انعكاسات الضوءـ ويتم وضعهما بشكل قطري بالقرب من مدخل الهواء.

حساس الغبار

عندما تعبر كمية من الهواء إلى المستشعر من خلال مدخل الهواء، تسقط الأشعة الضوئية بشكل متكرر على الهواء بداخل الحساس. يسقط الضوء على جزيئات الغبار الموجودة في الهواء ونتيجة لذلك، يتم إنتاج إشارة ضوئية مشتتة. ويتم الكشف عنها بواسطة مستكشف الضوء (Photodiode). يتم تضخيم خرج دائرة كاشف الضوء بواسطة دائرة مضخم الإشارة. بعد ذلك، تتم معالجة الإشارة الضوئية المضخمة للحصول على تركيز جزيئات الغبار في الهواء.

 

يحتوي حساس الغبار على 6 منافذ وظيفتها كالتالي

حساس الغبار

 

الجدول التالي يوضح وضيفة كل منفذ موجود بحساس الغبار

المنفذ وظيفة منفذ حساس الغبار
V-LED لتزويد الصمام الثنائي الضوئي بالطاقة
LED GND الأرضي للصمام الثنائي الضوئي
LED للتحكم بتشغيل الضوء
S-GND المنفذ الأرضي للحساس
Vo ينتج نبضات جهد تناظرية وفقًا لتركيز جزيئات الغبار في الهواء.
VCC لتزويد الحساس بالطاقة مقدارها 5 فولت
GND GUN

 

 

توصيل الدائرة

توصيل حساس الغبار

 

البرمجة

#include <Wire.h> 
#include <Adafruit_GFX.h> 
#include <Adafruit_SSD1306.h> 
#define OLED_RESET 4 
Adafruit_SSD1306 display(OLED_RESET);
#if (SSD1306_LCDHEIGHT != 64) 
#error("Height incorrect, please fix Adafruit_SSD1306.h!"); 
#endif 
const int LED1 = 8;
const int LED2 = 10; 
int measurePin = 0; 
int ledPower = 2; 
unsigned int samplingTime = 280;
unsigned int deltaTime = 40;
unsigned int sleepTime = 9680;
float voMeasured = 0; 
float calcVoltage = 0; 
float dustDensity = 0; 
void setup(){ 
  pinMode(ledPower,OUTPUT); 
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C); 
  display.display(); // show splashscreen 
  delay(2000); 
  display.clearDisplay(); // clears the screen and buffer 
  pinMode(LED1,OUTPUT);
  pinMode(LED2,OUTPUT);
  }
  void loop(){
    digitalWrite(ledPower,LOW);// power on the LED 
    delayMicroseconds(samplingTime); 
    voMeasured = analogRead(measurePin); // read the dust value 
    delayMicroseconds(deltaTime); 
    digitalWrite(ledPower,HIGH); // turn the LED off 
    delayMicroseconds(sleepTime); 
    calcVoltage = voMeasured * (5.0 / 1024.0); 
    dustDensity = 0.17 * calcVoltage - 0.1; 
    display.clearDisplay(); 
    display.setTextSize(2); 
    display.setTextColor(WHITE); 
    display.setCursor(0,0); 
    display.println("airquality="); 
    display.print(dustDensity); 
    display.display(); 
    delay(100); 
     if ( dustDensity < 0)
  {
    dustDensity = 0.00;
  }
    if(dustDensity < 0.12) { 
digitalWrite(LED1, HIGH); 
digitalWrite(LED2, LOW); } 
if(dustDensity >0.12 ) {
        digitalWrite(LED1, LOW);
        digitalWrite(LED2, HIGH);} 
        delay(100); 
  }

شرح الشفرة البرمجية

نبدأ بتحميل المكتبات شرح طريقة تحميل المكتبات من خلال الرابط

ابحث عن مكتبتي (Adafruit_GFX) و (Adafruit_SSD1306) عن طريق النقر على sketch < include library < manage libraries ثم حمل المكتبات

من داخل ملف المكتبات على جهاز انقر على مكتبة (Adafruit_SSD1306) ثم على ملف (Adafruit_SSD1306.h) و قم بالتعديل التالي :

ازالة رمز التعليق () //عن سطر

#define SSD1306_128_64

اضافة رمز التعليق (//) إلى السطر

//#define SSD1306_128_32

بالبداية نقوم باستدعاء المكتبات المطلوبة

#include <Wire.h> 
#include <Adafruit_GFX.h> 
#include <Adafruit_SSD1306.h> 
#define OLED_RESET 4 
Adafruit_SSD1306 display(OLED_RESET); 
#if (SSD1306_LCDHEIGHT != 64) 
#error("Height incorrect, please fix Adafruit_SSD1306.h!"); 
#endif 

نقوم بتعريف منافذ الثنائي المشع للضوء

const int LED1 = 8; 
const int LED2 = 10;

نقوم بتعريف المنافذ التي تم توصيلها مع حساس الغبار وهي  A0 و  المنفذ الرقمي 2

و حدد قيمة ابتدائية تساوي 0 للمتغيرات التالية (samplingTimeو deltaTime  و  int sleepTime)

int measurePin = 0; 
int ledPower = 2; 

int samplingTime = 280;
int deltaTime = 40;
int sleepTime = 9680;

نحدد قيمة ابتدائية لكل من (voMeasured  و calcVoltage  و dustDensity )

float voMeasured = 0;
float calcVoltage = 0;
float dustDensity = 0;

في دالة void setup نعرف نعرف منافذ الدخل و الخرج و تهيئة شاشة Oled

void setup(){
  pinMode(ledPower,OUTPUT);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C); 
  display.display(); 
  delay(2000);
  display.clearDisplay();   
  pinMode(LED1,OUTPUT);
  pinMode(LED2,OUTPUT);

}

في دالة void loop نشغل و نطفئ الثنائي المشع للضوء الموجود في حساس الغبار و نقرأ البيانات من المنفذ التناظري A0

void loop(){
  digitalWrite(ledPower,LOW); // power on the LED
  delayMicroseconds(samplingTime);

  voMeasured = analogRead(measurePin); // read the dust value

  delayMicroseconds(deltaTime);
  digitalWrite(ledPower,HIGH); // turn the LED off
  delayMicroseconds(sleepTime);

نقوم بعمل عملية حسابية لحساب تركيز ذرات الغبار بالجو بالميكروجرام (واحد على مليون من الجرام) لكل متر مكعب من الهواء أو ميكروغرام / م 3.

calcVoltage = voMeasured * (5.0 / 1024.0);

  dustDensity = 0.17* calcVoltage - 0.1;

بعد حساب تركيز الغبار نقوم بطباعة القيمة على الشاشة

 display.clearDisplay();
    display.setTextSize(2);
    display.setTextColor(WHITE);
    display.setCursor(0,0);
    display.println("airquality=");
    display.print(dustDensity);
    display.display();
    delay(2000);

اذا كان تركيز الغبار عدد سالب يتم احتاسبه بقيمة صفر

 if ( dustDensity < 0)
{
dustDensity = 0.00;
}

اذا كان تركيز الغبارأصغر من  (0.12 ) نعطي أمر بتشغيل الثنائي المشع للضوء الأول

if(dustDensity <= 0.12) {
 digitalWrite(LED1, HIGH); 
digitalWrite(LED2, LOW); }

اذا كان تركيز الغبار أكبر من قيمة (0.12) نعطي أمر بتشغيل الثنائي المشع للضوء الثاني

if(dustDensity > 0.12) {   
digitalWrite(LED1, LOW);
   digitalWrite(LED2, HIGH);}
  delay(1000);
}



مطرقة المركبة الفضائية باستخدام ليتل بيتس (Littlebits)

مقدمة

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

littlebits-space-hammer مطرقة الفضاء ليتل بيتس

المواد والأدوات من ليتل بيتس

حتى تتمكن من صناعة مطرقة المركبة الفضائية تحتاج من مجموعة مستكشف الفضاء ليتل بيتس (little bits Space Rover Inventor Kit):

littlebits-space-hammer

 1×  قالب كرتوني رقم (4)

littlebits-space-hammer مطرقة الفضاء ليتل بيتس

 1×  قالب كرتوني رقم (1)

littlebits-space-hammer مطرقة الفضاء ليتل بيتس

 1×  قالب كرتوني رقم (2)

littlebits-space-hammer

 1×  قالب كرتون رقم (5) – لوحة الطاقة الشمسية

littlebits-space-hammer مطرقة الفضاء ليتل بيتس

 1×  قالب كرتوني رقم (6)

littlebits-space-hammer

 1×  مركز التحكم

littlebits-space-hammer مطرقة الفضاء ليتل بيتس

 1×  محور

littlebits-space-hammer

 1× وصلة محور

littlebits-space-hammer مطرقة الفضاء ليتل بيتس

 1×  ذراع تحكم

littlebits-space-hammer

 1×  محرك السيرڤو

littlebits-space-hammer

 2×  محرك تيار مستمر

littlebits-space-hammer مطرقة الفضاء ليتل بيتس

 1×  عجلة كروية

littlebits-space-hammer

 2×  عجلات

littlebits-space-hammer

 1×  حامل البطارية

littlebits-space-hammer

 1×  سلك البطارية

littlebits-space-hammer مطرقة الفضاء ليتل بيتس

 1×  بطارية

littlebits-space-hammer

 1× منفذ الطاقة

توصيل الدائرة

تحتوي مجموعة ليتل بيتس على بطارية ومنفذ الطاقة اللذان يعتبران مسؤولان عن تزويد دائرتك بالطاقة اللازمة لتشغيلها.

ادخل البطارية في حامل البطارية، ثم صل سلك البطارية مع البطارية.

littlebits-space-hammer مطرقة الفضاء ليتل بيتس

اربط سلك البطارية مع منفذ الطاقة.

littlebits-space-hammer

صل السلك مع منفذ الطاقة، وفي الطرف الآخر اضف مركز التحكم.

littlebits-space-hammer

محرك التيار المستمر يقوم بتدوير المحور حسب القيمة التي يتلقاها، كلما زادت القيمة زادت سرعة دوران المحرك.

littlebits-space-hammer مطرقة الفضاء ليتل بيتس

تجنب تدوير المحرك بيدك؛ فذلك قد يؤدي إلى تلفه.

littlebits-space-hammer

صل محرك التيار المستمر الأول مع المخرج الأول، ومحرك التيار المستمر الثاني مع المخرج الثالث في مركز التحكم.littlebits-space-hammer

محرك

يمكن من خلال وحدة التحكم بالمحرك تحديد اتجاه الدوران للمحرك:

ccw عكس عقارب الساعة

Cw مع عقارب الساعة

Var متغير يمكن أن تكون مع أو عكس عقارب الساعة

حرك المفتاح في كلا محركين التيار المستمر لوضع var في المنتصف.

littlebits-space-hammer

اضف محرك السيرڤو في المخرج الثاني لمركز التحكم.

محرك السيرڤو يدور حسب الزوايا التي يتم إدخالها له.

littlebits-space-hammer مطرقة الفضاء ليتل بيتس

شغل المفتاح الموجود على محرك السيرڤو.

littlebits-space-hammer

تركيب مكونات مطرقة المركبة الفضائية

 قم بطي الخطوط المتصلة في القالب الكرتوني (4) ثم فك الطي، كرر ذلك مع جميع الخطوط المتصلة؛ حتى تصبح مرنة أثناء عملية التجميع.

littlebits-space-hammer

طبق الأوجه التي لها نفس الرقم (1) مع (1) كرر ذلك مع كل الأوجه في القالب الكرتوني، واغلقها بإحكام.

littlebits-space-hammer

littlebits-space-hammer

littlebits-space-hammer

قم بطي الخطوط المتقطعة في القالب الكرتوني (1) ثم فك الطي، كرر ذلك مع جميع الخطوط المتقطعة؛ حتى تصبح مرنة أثناء عملية التجميع.

littlebits-space-hammer

قم بطي الخطوط المتصلة في القالب الكرتوني (1) ثم فك الطي، كرر ذلك مع جميع الخطوط المتصلة؛ حتى تصبح مرنة أثناء عملية التجميع.

littlebits-space-hammer مطرقة الفضاء ليتل بيتس

طبق الأوجه التي لها نفس الرقم (1) مع (1)، كرر ذلك مع كل الأوجه في القالب الكرتوني، واغلقها بإحكام.

littlebits-space-hammer

littlebits-space-hammer

littlebits-space-hammer

littlebits-space-hammer

littlebits-space-hammer

littlebits-space-hammer

قم بطي الخطوط المتقطعة في القالب الكرتوني (5) ثم فك الطي، كرر ذلك مع جميع الخطوط المتقطعة؛ حتى تصبح مرنة أثناء عملية التجميع.

littlebits-space-hammer

قم بطي الخطوط المتصلة في القالب الكرتوني (5) ثم فك الطي، كرر ذلك  مع جميع الخطوط المتصلة؛ حتى تصبح مرنة أثناء عملية التجميع.

littlebits-space-hammer

قم بطي الخطوط المتصلة في القالب الكرتوني (6) ثم فك الطي، كرر ذلك مع جميع الخطوط المتصلة؛ حتى تصبح مرنة أثناء عملية التجميع.

littlebits-space-hammer مطرقة الفضاء ليتل بيتس

طبق الوجه رقم (1) مع (1)، وادخل وصلة التثبيت (2) في المنفذ المقابل (2).

littlebits-space-hammer

قم بطي الوجه رقم (3) مع (3)، كما هو ظاهر.

littlebits-space-hammer

ادخل ذراع التحكم في القالب الكرتوني (6) الذي يسمى بالمطرقة.

littlebits-space-hammer مطرقة الفضاء ليتل بيتس

قم بطي الخطوط المتصلة في القالب الكرتوني (2) ثم فك الطي، كرر ذلك مع جميع الخطوط المتصلة؛ حتى تصبح مرنة أثناء عملية التجميع.

littlebits-space-hammer

طبق الأوجه التي لها نفس الرقم (1) مع (1) وهكذا حتى تصل للرقم (7)، ادخل وصلة التثبيت رقم (8) مع المنفذ المقابل (8) حينها ستصل للشكل النهائي الموجود على اليسار.

littlebits-space-hammer littlebits-space-hammer مطرقة الفضاء ليتل بيتس

ادخل وصلة المحور بالمحور.

littlebits-space-hammer

ادخل أحد أطراف المحور أسفل القالب الكرتوني (2) الذي يسمى رأس العجلة.

littlebits-space-hammer مطرقة الفضاء ليتل بيتس

تبيث مكونات مطرقة المركبة الفضائية:

ثبت اللوحة في هيكل عربة الفضاء.

littlebits-space-hammer

ثبت العجلة الكروية في الفتحة السفلية لهيكل عربة الفضاء، كما هو ظاهر.

littlebits-space-hammer

ثبت محركا التيار المستمر في الفتحات السفلية لهيكل عربة الفضاء، كما هو ظاهر.

littlebits-rover-body

ثبت مركز التحكم، منفذ الطاقة والمتحكم لكلا محركا التيار المستمر على اللوحة، كما هو ظاهر.

littlebits-cargo-carrier

ثبت العجلتين على محركا التيار المستمر.

littlebits-rover-body مطرقة الفضاء ليتل بيتس

ثبت وصلة المحور على الهيكل.

خطوة اختيارية: استخدم ربطات قابلة للإلتواء؛ لتجعلها أكثر ثباتًا.

ذراع الروبوت ليتل بيتس

ثبت محرك السيرڤو على اللوحة.

littlebits-space-hammer

ثبت المطرقة على محرك السيرڤو.

littlebits-space-hammer

ثبت وصلات التثبيت الموجودة على لوحة الطاقة الشمسية في المنافذ الموجودة بالقالب الكرتوني (4).

littlebits-rover-body

ثبت لوحة الطاقة الشمسية على اللوحة.

littlebits-space-hammer مطرقة الفضاء ليتل بيتس

بعد تجميع كل مكونات ليتل بيتس افحص مجددًا تركيب مطرقة المركبة الفضائية لترى انها متوافقة مع الصور.

تأكد من تشغيل وحدة مزود الطاقة

وتأكد أن المركبة الفضائية تسير بالشكل الصحيح وعند اقتراب مطرقة الفضاء من الأجسام أو الحواجز المقابلة لها تقوم بتكسيرها.

littlebits-space-hammer مطرقة الفضاء ليتل بيتس

تذكر فصل وحدة مزود الطاقة عند الانتهاء من استخدام النظام.




جهاز تصنيف الألوان باستخدام الاردوينو

المقدمة

حساس الألوان

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

المواد والأدوات

اردوينو

1X اردوينو 

حساس الألوان

1X سلك A-B USB 

حساس الألوان

1X حساس الألوان 

محرك سيرفو

2 X محرك السيرفو 

اسلاك توصيل

مجموعة أسلاك توصيل (ذكر / ذكر)

اسلاك توصيل

مجموعة أسلاك توصيل (أنثى/ ذكر)

حساس الألوان (ألواح أكليريك)

1 X لوح أكليريك ( ملم 3*600*600)

طابعة ثلاثية الأبعاد

طابعة ثلاثية الأبعاد 

حساس الألوان خيوط طباعة

1X خيط الطباعة 

arduino-automatic-candy-dispenser-machine

1× لوحة تجارب حجم صغير

حساس الألوان

 يتكون الضوء الأبيض من ثلاثة ألوان أساسية (الأحمر والأخضر والأزرق)، والتي لها أطوال موجية مختلفة. تتحد هذه الألوان مع بعضها البعض لتشكيل الألوان المختلفة. عندما يسقط الضوء الأبيض على سطح أي جسم، يمتص الجسم جزء من الطول الموجي ويعكس جزء آخر حسب خصائص السطح. وبالتالي اللون الذي نراه هو نتيجة انعكاس الأطوال الموجية.

حساس الألوان
و بناء على هذا يعمل حساس الألوان حيث أنه يحول شدة الضوء الطول الموجي المنعكس من الأجسام إلى تردد، و يتكون حساس الألوان من مصدر ضوء (LED) أبيض يضيء عند تشغيل الوحدة ويستخدم لإضاءة الكائن الذي يتم استشعاره ثم وحدة استشعار اللون TCS230 وهي عبارة عن شبكة 8*8 من الصمامات الثنائية الضوئية مغطاة بمرشح حساس للألوان بحيث تكون 16 صمامًا ضوئيًا عليه مرشحات حمراء ، و 16 صمامًا ضوئيًا عليه مرشحات خضراء ، و 16 صمامًا ضوئيًا عليه مرشحات زرقاء ، و 16 صمامًا ضوئيًا متبقيًا بدون مرشحات.

حساس الألوان

حساس الألوان

تمكنك دبابيس التحكم  S2 وS3 من اختيار أي من الصمامات تريد قراءته. على سبيل المثال، إذا كنت ترغب في اكتشاف اللون الأحمر فقط، فيمكنك تحديد 16 صمامًا ضوئيًا عليه المرشح باللون الأحمر عن طريق ضبط دبابيس التحكم  S2 وS3 على LOW وفقًا للجدول.

photodiodes S3 S2
احمر LOW LOW
ازرق HIGH LOW
اخضر HIGH HIGH
بدون لون LOW HIGH

 

توصيل الدائرة

حساس الألوان

نوصل حساس الألوان مع الأردوينو حسب الجدول
الاردوينو حساس الألوان
2 S0
3 S1
4 S2
5 S3
6 OUT
5V VCC
GND GUN

 

الهيكل

توجد تقنيات متعدده ممكن أن تساعدك على بناء الهيكل المناسب، يمكن أن تكون قاطع الليزر أو جهاز التفريز و غيرها يمكنك تحميل الهيكل من خلال الرابط 

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

الشفرة البرمجية

#include <Servo.h>

#define S0 2
#define S1 3
#define S2 4
#define S3 5
#define sensorOut 6

Servo topServo;
Servo bottomServo;

int frequency = 0;
int color=0;

void setup() {
  pinMode(S0, OUTPUT);
  pinMode(S1, OUTPUT);
  pinMode(S2, OUTPUT);
  pinMode(S3, OUTPUT);
  pinMode(sensorOut, INPUT);

  digitalWrite(S0, HIGH);
  digitalWrite(S1, LOW);

  topServo.attach(9);
  bottomServo.attach(10);

  Serial.begin(9600);
}

void loop() {

  topServo.write(115);
  delay(500);
  
  for(int i = 115; i > 35; i--) {
    topServo.write(i);
    delay(4);
  }
  delay(1000);
  
  color = readColor();
  delay(10);  

  switch (color) {
    case 1:
    bottomServo.write(50);
    break;

    case 2:
    bottomServo.write(90);
    break;

    case 3:
    bottomServo.write(120);
    break;

  }
  delay(300);
  
  for(int i = 35; i > 4; i--) {
    topServo.write(i);
    delay(2);
  } 
  delay(200);
  
  for(int i = 4; i < 115; i++) {
    topServo.write(i);
    delay(2);
  }
  color=0;
}


int readColor() {
  // Setting red filtered photodiodes to be read
  digitalWrite(S2, LOW);
  digitalWrite(S3, LOW);
  // Reading the output frequency
  frequency = pulseIn(sensorOut, LOW);
  int R = frequency;
  // Printing the value on the serial monitor
  Serial.print("R= ");//printing name
  Serial.print(frequency);//printing RED color frequency
  Serial.print("  ");
  delay(50);

  // Setting Green filtered photodiodes to be read
  digitalWrite(S2, HIGH);
  digitalWrite(S3, HIGH);
  // Reading the output frequency
  frequency = pulseIn(sensorOut, LOW);
  int G = frequency;
  // Printing the value on the serial monitor
  Serial.print("G= ");//printing name
  Serial.print(frequency);//printing RED color frequency
  Serial.print("  ");
  delay(50);

  // Setting Blue filtered photodiodes to be read
  digitalWrite(S2, LOW);
  digitalWrite(S3, HIGH);
  // Reading the output frequency
  frequency = pulseIn(sensorOut, LOW);
  int B = frequency;
  // Printing the value on the serial monitor
  Serial.print("B= ");//printing name
  Serial.print(frequency);//printing RED color frequency
  Serial.println("  ");
  delay(50);

  if(R<50 & R>46 & B<92 & B>80){
    color = 1; // Red
   
  }
   if(G<89 & G>80 & B<96 & B>105){
    color = 2; // Yellow

  }
  if(G<89 & G>80  & B<97 &B>93){
    color = 3; // Orange
  }
  
  return color;  
}

 شرح الشفرة البرمجية

في بداية سيتم استعداء مكتبة محرك السيرفو ثم نقوم بتعريف منافذ حساس الألوان وتعريف  محرك السيرفو

#include <Servo.h>

#define S0 2
#define S1 3
#define S2 4
#define S3 5
#define sensorOut 6

Servo topServo;
Servo bottomServo;

 

انشاء متغيرين للتردد و اللون و تكون بالبداية قيمة 0

int frequency = 0;
int color=0;

 

نحدد منافذ الدخل و الخرج في حساس الألوان

void setup() {
pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
pinMode(sensorOut, INPUT);

 

لتحديد عامل تحجيم التردد 20%

digitalWrite(S0, HIGH);
digitalWrite(S1, LOW);

نحدد المنفذ المتصل مع كل محرك سيرفو

topServo.attach(9);
bottomServo.attach(10);

لتحديد معدل نقل البيانات من الاردوينو إلى اللابتوب

Serial.begin(9600);
}

سوف نحتاج إلى تحريك المحرك الأول في ثلاث زاوية الزاوية الأولى حتى يأخذ قطعة حلوى واحدة ثم ينقلها للزاوية الصانية و تكون الزاوية الموافقة لموقع الحساس و يتم قراءة تردد اللون ثم الزاوية الثالثة لنقل قطعة الحلوى إلى المحرك التالي

أولا الزاوية الأولى نحددها بقية 115

void loop() {

topServo.write(115);
delay(500);

نعرف متغير (i) والذي يمثل قيمة الزاوية تتناقص قيمة (i) إلى أن تصل إلى 35 و التي تعد زاوية قراءة التردد

for(int i = 115; i > 35; i--) {
topServo.write(i);
delay(4);
}
delay(1000);

نحدد 3 زواية مختلفة لمحرك السيرفو الثاني حسب موقع الكوب الذي سنفصل فيه قطع الحلوى حسب لونها

color = readColor();
delay(10);

switch (color) {
case 1:
bottomServo.write(50);
break;

case 2:
bottomServo.write(90);
break;

case 3:
bottomServo.write(120);
break;

}
delay(300);

نغير قيمة الزاوية (i) الى 4 والتي تمثل موقع نقل قطعة الحلوى إلى المحرك الثاني

for(int i = 35; i > 4; i--) {
topServo.write(i);
delay(2);
}
delay(200);

نعيد قيمة (i) إلى 115 و هي أول زاوية و يتم عندها أخذ قطعة حلوى جديدة

for(int i = 4; i < 115; i++) {
topServo.write(i);
delay(2);
}
color=0;
}

انشاء متغير باسم (readColor) لقراءة الألوان

int readColor() {

لقراءة اللون الأحمر نفعل الصمام الثنائي الضوئي المرشح باللون الأحمر عن طريق جعل قيمة s2 و s3 loW

 

digitalWrite(S2, LOW);
digitalWrite(S3, LOW);

لقراءة قيمة التردد و طباعته على شاشة العرض

frequency = pulseIn(sensorOut, LOW);
int R = frequency;
// Printing the value on the serial monitor
Serial.print("R= ");//printing name
Serial.print(frequency);//printing RED color frequency
Serial.print(" ");
delay(50);

لقراءة اللون الأخضر نفعل الصمام الثنائي الضوئي المرشح باللون الأخضر عن طريق جعل قيمة s2 و s3 HIGH

digitalWrite(S2, HIGH);
digitalWrite(S3, HIGH);

 

لقراءة قيمة التردد و طباعته على شاشة العرض

frequency = pulseIn(sensorOut, LOW);
int G = frequency;
// Printing the value on the serial monitor
Serial.print("G= ");//printing name
Serial.print(frequency);//printing RED color frequency
Serial.print(" ");
delay(50);

لقراءة اللون الأزرق نفعل الصمام الثنائي الضوئي المرشح باللون الأزرق عن طريق جعل قيمة S2 LOW و S3 HIGH

digitalWrite(S2, LOW);
digitalWrite(S3, HIGH);

لقراءة قيمة التردد و طباعته على شاشة العرض

frequency = pulseIn(sensorOut, LOW);
int B = frequency;
// Printing the value on the serial monitor
Serial.print("B= ");//printing name
Serial.print(frequency);//printing RED color frequency
Serial.println(" ");
delay(50);

نحدد نطاق اللون لكل قطعة حلوى حسب التي تم قراءة في شاشة العرض ثم نحدد الزاوية التي يتجة لها محرك السيرفو الثاني

if(R<50 & R>46 & B<92 & B>80){
color = 1; // Red
}
if(G<89 & G>80 & B<96 & B>105){
color = 2; // Yellow

}
if(G<89 & G>80 & B<97 &B>93){
color = 3; // Orange
}

return color;
}



انشاء منصة ألعاب باستخدام الراسبيري باي

مقدمة

تعد ألعاب الفيديو من أساليب التسلية لقضاء أوقات الفراغ وتتوفر ألعاب متنوعة , متناسبة مع الفئات العمرية المختلفة، في هذا الدرس ستتعلم انشاء منصة ألعاب الفيديو، وذلك باستخدام الراسبيري باي مع نظام التشغيل (RetroPie).

install-retropie-raspberry-pi

القطع المطلوبة

install-retropie-raspberry-pi

 1× راسبيري باي

ذاكرة

 1× كرت ذاكرة

raspberry-pi-HDMI

 1× سلك (HDMI)

raspberrypi-cable

1× محول تيار (5V-2A)

المروحة منصة ألعاب الراسبيري باي

1× مروحة الراسبيري باي

غطاء الراسبيري باي منصة ألعاب

غطاء الراسبيري باي

ذراع تحكم راسبيري باي منصة ألعاب

1× ذراع تحكم سلكية

راسبيري باي منصة ألعاب

1× ذاكرة خارجية (Flash memory)

توصيل القطع

قد يتعرض معالج الراسبيري باي إلى الحرارة الزائدة عند تشغيل برامج ثقيلة لفترات طويلة. فقد تقترب درجة الحرارة الداخلية للمعالج من 85 درجة مئوية، وسيؤدي ذلك أن يعمل الراسبيري باي على خفض تردد التشغيل أو إيقاف التشغيل تمامًا. ويمكن أن يؤثر ذلك سلبًا على أداء مشروعك. ومن هنا تأتي فائدة توفير أسالب لخفض حرارة المعالج لذلك ستحتاج إلى مروحة ومسرب حراري.

ثبت المسرب الحراري على وحدة (SOC) ووحدة (USB controller)

wifi

قم بإضافة المروحة؛ لتقوم بالتبريد على أجزاء اللوحة وحفظها من التلف

raspberry-pi-connection

تصبح المروحة بهذا الشكل بعد تثبيتها.

المروحة - رازبيري باي - نقطة اتصال لاسلكية

يتكون غطاء الراسبيري باي من طبقتين يمكنك تثبيتهما على اللوحة.

غطاء الراسبيري باي منصة ألعاب

 

تنصيب ريترو باي (Retro Pie)

تتوفر أنظمة تشغيل متناسبة مع الراسبيري باي ويمكن تنصيبها بسهولة على بطاقة الذاكرة، تحتاج في البداية إلى تهيئة البطاقة الذاكرة قبل رفع نظام التشغيل عليها؛ ليتم مسح جميع البيانات على الذاكرة نهائيًا. ثم رفع نظام التشغيل باستخدام Raspberry Pi Imager يمكن متابعة الدرس الأول من سلسلة تعليم الراسبيري باي لمعرفة خطوات تنصيب برنامج تهيئة البطاقة و Raspberry Pi Imager.

سنحتاج في هذا الدرس إلى نظام التشغيل (Retro Pie) لرفع البرنامج على الذاكرة بعد التهيئة افتح برنامج rRaspberry Pi Image

منصة ألعاب راسبيري باي

يوجدة عدة نسخ لنظام التشغيل (Retro Pie) اختر النظام المتوافق مع اصدار لوحة الراسبيري باي لديك:

الراسبيري باي منصة ألعاب

من قائمة (SD Card) اختر الذاكرة التي ستنصب النظام عليها:

منصة ألعاب الراسبيري باي

اضغط على (Write) ليتم تثبيت نظام (RetroPie).

راسيري باي منصة ألعاب

تهيئة نظام ريترو باي (Retro Pie)

بعد رفع نظام التشغيل على الذاكرة يمكنك إزالة كرت الذاكرة ووضعه على لوحة الراسبيري باي.

وصل سلك (HDMI) وسلك محول التيار وذراع التحكم على لوحة الراسبيري باي وشغل الشاشة.

يمكنك الرجوع لطريقة التوصيل في الدرس الثاني.

 بعد توصيل الراسبيري باي بالطاقة سيبدأ النظام بالتهيئة.

منصة ألعاب الراسبيري باي

 راسبيري باي منصة ألعاب

راسبيري باي منصة ألعاب

تأكد أنك قمت بتوصيل ذراع التحكم بالراسبيري باي حتى يتعرف الراسبيري باي عليها حيث ستظهر رسالة: (GAMEPAD DETECTED 1)

منصة ألعاب الراسبيري باي

تعريف أزرار المتحكم مع الأوامر

لتحديد مهام أزرار المتحكم ستعمل على ربط  كل زر موجود على ذراع التحكم (يظهر اسم الزر باللون الرمادي) مع تعريفها على الراسبيري باي الظاهرة باللون الأسود الغامق:

بعد الانتهاء من تعريفها اضغط OK.

حجب الإعلانات الراسبيري باي وباي هول

تظهر في القائمة التي على اليسار أسماء ازرار المتحكم و نحدد في القائمة التي على اليمين اسم الزر بالنسبة للراسبيري باي.

راسبيري باي منصة ألعاب

بعد الانتهاء انقر على (OK).

الآن نظام ريترو باي (Retro Pie) أصبح مفعل ومهيئ للألعاب.

راسبيري باي منصة ألعاب

ألعاب ريترو باي (Retro)

1. تحميل الألعاب

بعد تنصيب نضام التشغيل الرترو باي (retropie) أصبح الراسبيري باي جاهز كمنصة ألعاب ـ ويمكن تحميل ألعاب الرومس (Roms game) التي تعد نسخة محاكاة للألعاب الشهيرة مثل ( العاب البلاستيشن – ألعاب الأتاري) فيمكنك لعب هذه الألعاب بدون امتلاك جهاز أتاري أو جهاز البلايستيشن ، ولتحميل الألعاب تحتاج إلى ذاكرة خارجية و يتم مسح بيانات الذاكرة وتهيئتها، ثم قم بانشاء مجلد داخل الذاكرة الخارجية باسم (retropie) يكتب بأحرف صغيرة  ثم داخل مجلد (retropie) أنشئ مجلد آخر باسم (roms).

سيكون عنوان الملف كالتالي:

F:\retropie\roms

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

راسبيري باي منصة ألعاب

بعد أن تم تهيئة الذاكرة قم باعادة توصيلها مع جهاز الكمبيوتر ستجد أن هناك عدة مجلدات تم اضافتها داخل المجلد الذي قمنا بانشائه (roms)  لتحميل الألعاب عليها.

roms

يمكنك الان تحميل الألعاب من خلال الرابط 

 في هذا الدرس سنقوم بتحميل لعبة  Mario Brothers (1988)  وهي أحد ألعاب(Atary 7800) 

راسبيري باي منصة ألعاب

بعد تحميل اللعبة قم بفك الملف المضغوط للعبة، واحفظ ملفات اللعبة داخل المجلد المناسب لها من مجلدات (roms) بالذاكرة.

لعبة Mario Brothers (1988) سيتم حفظها داخل مجلد (Atary 7800).

2.  رفع الألعاب على الراسبيري باي

قم بإعادة الذاكرة الخارجية للوحة الراسبيري باي انتظر عدة دقائق حتى ينتهي الوميض.

راسبيري باي

حتى تظهر كل الألعاب على واجهة ريترو باي اتبع الخطوات التالية:

اضغط على القائمة الرئيسية (MAIN MENU) ثم اضغط على (GAME COLLECTION SETTINGS):

تنصيب نظام التشغيل

اضغط على (AUTOMATIC GAME COLLECTIONS).

الراسبيري باي منصة ألعاب

اختر (ALL GAMES).

الراسبيري باي منصة ألعاب

ستظهر مباشرة قائمة الألعاب التي قمت بتحميلها.

بدء اللعبة

الآن قد اكتملت منصة الألعاب لتشغيل اللعبة يمكنك إدارة ذلك من خلال ذراع التحكم.

ريترو باي

تذكر فصل وحدة مزود الطاقة عند الانتهاء من استخدام المنصة.




استخدام الراسبيري باي كنقطة وصول لاسلكية (Access Point)

مقدمة

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

الراسبيري باي نقطة وصول لاسلكية

المواد والأدوات

الرازبيري باي نقطة وصول لاسلكية

 1× راسبيري باي

raspberry-pi-sandisk

 1× كرت ذاكرة

raspberry-pi-HDMI

 1× سلك (HDMI)

raspberrypi-cable

1× محول تيار (5V-2A)

المروحة نقطة وصول لاسلكية

1× مروحة الراسبيري باي

سلك ايثرنت - الراسبيري باي - نقطة وصول لاسلكية

1× سلك ايثرنت

 

1 × مسرب حراري 

تبريد المعالج

قد يتعرض معالج الراسبري باي إلى الحرارة الزائدة عند تشغيل برامج ثقيلة لفترات طويلة. فقد تقترب درجة الحرارة الداخلية للمعالج من 85 درجة مئوية، وسيؤدي ذلك أن يعمل الراسبيري باي على خفض تردد التشغيل أو إيقاف التشغيل تمامًا. ويمكن أن يؤثر ذلك سلبًا على أداء مشروعك. ومن هنا تأتي فائدة توفير أسالب لخفض حرارة المعالج لذلك ستحتاج إلى مروحة ومسرب حراري.

ثبت المسرب الحراري على وحدة (SOC) ووحدة (USB controller)

wifi

وصل السلك الأحمر لمروحة التبريد(الموجب) مع المنفذ رقم 4

وصل السلك الأسود لمروحة التبريد (السالب) مع المنفذ رقم 6

raspberry-pi-connection

تصبح المروحة بهذا الشكل بعد تثبيتها.

المروحة - رازبيري باي - نقطة اتصال لاسلكية

تثبيت خادم (dnsmasq) ومضيف نقطة الوصول

أولا، سوف تحتاج إلى تثبيت نظام الراسبيان على الراسبيري باي إذا لم تكن قد فعلت ذلك قم بالإطلاع على  الدرس الأول نظام تشغيل الراسبيري باي

وبعد تثبيت النظام، يمكنك تهيئة النظام من خلال الرجوع  للدرس الثاني تهيئة نظام التشغيل

افتح الشاشة السوداء LXterminal للبدء بإعداد نقطة وصول لاسلكية باستخدام الراسبيري باي.

LX نقطة اتصال لاسلكية راسبيري

للبدء، قم بإستخدام الـ Termial  لتحديث الراسبيري باي إلى أحدث إصدار.

sudo apt-get update
sudo apt-get upgrade

ثم أعد تشغيل الراسبيري باي:

reboot

يعد خادم (dnsmasq) من الخيارات الجيدة عند بناء الشبكات الصغيرة فهو مصدر مفتوح وسهل التكوين وبحجم صغير، وتكمن أهميته في تنفيذ وظائف  (DNS): لتحليل أسماء النطاق  إلى عنوان IP للاتصال، و تنفيذ وظائف (DHCP) : لتوفير عنوان IP لأجهزة الكمبيوتر المتصلة بالشبكة.

وكذلك سنقوم بتحميل حزمة نقطة الوصول (hostapd)

و لتثبيت حزمة (dnsmasq) و حزمة (hostapd)اكتب الأمر التالي:

sudo apt install dnsmasq
sudo apt install hostapd

نظرًا لأن ملفات التكوين ليست جاهزة بعد، قم بإيقاف تشغيل البرنامج بكتابة الأمر التالي:

sudo systemctl stop dnsmasq
sudo systemctl stop hostapd

تكوين IP ثابت

يحتاج الراسبيري باي إلى الحصول على عنوان IP ثابت مخصص للمنفذ اللاسلكي. سنقوم بتعيين عنوان IP للخادم 192.168.4.1. الجهاز اللاسلكي المستخدم هو wlan0. لتكوين عنوان IP الثابت ، قم بتحرير ملف تكوين dhcpcd باستخدام:

sudo nano /etc/dhcpcd.conf

قم بتحرير الملف باضافة الأسطر التالية:

interface wlan0 
static ip_address=192.168.4.1/24 
nohook wpa_supplicant

أعد تشغيل (dhcpcd) بكتابة السطر التالي:

sudo service dhcpcd restart

تكوين خادم DHCP (dnsmasq)

يتم توفير خدمة DHCP من خلال dnsmasq. بشكل افتراضي. أعد تسمية ملف التكوين، وقم بتحرير ملف جديد من خلال كتابة الأسطر التالية:

sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
sudo nano /etc/dnsmasq.conf

سنقوم بتوفير عناوين IP بين 192.168.4.2 و 192.168.4.20، مع فترة تأجير تبلغ 24 ساعة، ولذلك اكتب في ملف تكوين dnsmasq الأسطر التالية:

interface=wlan0 # Use the require wireless interface - usually wlan0
dhcp-range=192.168.4.2,192.168.4.20,255.255.255.0,24h

ثم اضغط ctrl , x ثم Y لحفظ الملف.

فعل dnsmasq سيستخدم الآن التكوين المحدث:

sudo systemctl start dnsmasq

تكوين برنامج مضيف نقطة الوصول اللاسلكية (hostapd)

تحتاج إلى تحرير ملف تكوين hostapd ؛ لإضافة المعلومات الخاصة بنقطة الوصول اللاسلكية.

اكتب السطر التالي للوصول لملف التكوين:

sudo nano /etc/hostapd/hostapd.conf

ادخل البيانات التالية وحدد عنوان نقطة الوصول اللاسكية (ssid) الذي تريده و الرقم السري مع مراعاة أن يتراوح طول الرقم السري بين 8 و 64 حرفًا.

interface=wlan0
driver=nl80211
ssid=NameOfNetwork
hw_mode=g
channel=7
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=YOURPASS
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

ثم اضغط ctrl , x ثم Y لحفظ الملف

حدد للنظام المثبت على الراسبيري باي مكان العثور على ملف التكوين الذي تم إنشاؤه:

sudo nano /etc/default/hostapd
ثم اكتب السطر التالي في نهاية الملف:
DAEMON_CONF="/etc/hostapd/hostapd.conf"

تفعيل الاتصال

تفعيل وتمكين برنامج مضيف نقطة الاتصال بالأوامر التالية:

sudo systemctl unmask hostapd
sudo systemctl enable hostapd
sudo systemctl start hostapd

اضف التويجه:

sudo nano /etc/sysctl.conf

ثم اكتب السطر التالي داخل الملف واحفظ الملف:

net.ipv4.ip_forward=1

اكتب الأمر التالي:

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
sudo nano /etc/rc.local
iptables-restore < /etc/iptables.ipv4.nat

الراسبيري باي كنقطة وصول لاسلكية في أجهزة الحاسوب.

 الرازبيري باي كـ نقطة وصول لاسلكية

استخدام الرازبيري باي كـ نقطة وصول لاسلكية في منازلنا أو مكاتب عملنا

وكنقطة وصول لاسلكية في هاتفك المحمول أيضًا.

استخدام الراسبيري باي كـ نقطة وصول لاسلكية في هواتفنا المحمولة

يمكنك اختبار سرعة الانترنت من خلال التطبيقات أو المواقع المخصصة لذلك.

سرعة الراسبيري باي كـ نقطة وصول لاسلكية




قياس درجة حرارة الماء باستخدام الاردوينو

مقدمة

DS18B20 درجة الحرارة المقاوم للماء

في هذا الدرس نتعرف على كيفية استخدام مستشعر درجة الحرارة المقاوم للماء وإظهار القراءة على شاشة العرض (OLED Display). حيث يمكننا مستشعر درجة الحرارة من قياس درجة الحرارة من (-55 ℃ إلى 125 ℃) بدقة ± 5. كما يمكن استخدامه في قياس درجة حرارة الهواء أو السوائل.

المواد والأدوات

ds18b20-digital-temperature-arduino

1 X اردوينو

OLED شاشة

1 X شاشة عرض (OLED Display)

DS18B20 مستشعر الحرارة درجة الحرارة المقاوم للماء

1 X حساس حرارة ( DS18B20)

 

ds18b20-digital-temperature-arduino

1X لوحة تجارب

1 X مقاومة مقدار 4.7k

ds18b20-digital-temperature-arduino

مجموعة أسلاك ذكر/ ذكر

شاشة عرض (OLED Display)

التوصيل

شاشة عرض (OLED Display) اختصارا لـ (organic light emitting diode) متوفرة بحجم 128 × 64 وهي شاشة عرض رسومية نقطية بسيطة. تحتوي على 128 عمودًا و64 صفًا مما يجعله يعرض إجمالي 128 × 64 = 8192 بكسل. تحتوي الشاشة على أربعة دبابيس فقط ويتواصل مع Arduino باستخدام بروتوكول اتصال I2C.

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

الاردوينو OLED Display
5v VCC
GND GND
A4 SLC
A5 SDA

عمل مسح لمعرفة عنوان i2c

بعد توصيل الشاشة مع الاردوينو، نقوم برفع الكود البرمجي التالي عليها لمعرفة عنوان i2c

#include 

void setup()
{
    Wire.begin();

    Serial.begin(9600);
    while (!Serial); // Leonardo: wait for serial monitor
    Serial.println("\nI2C Scanner");
}

void loop()
{
    byte error, address;
    int nDevices;

    Serial.println("Scanning...");

    nDevices = 0;
    for (address = 1; address < 127; address++) {
  
        Wire.beginTransmission(address);
        error = Wire.endTransmission();

        if (error == 0) {
            Serial.print("I2C device found at address 0x");
            if (address < 16)
                Serial.print("0");
            Serial.print(address, HEX);
            Serial.println(" !");

            nDevices++;
        }
        else if (error == 4) {
            Serial.print("Unknown error at address 0x");
            if (address < 16)
                Serial.print("0");
            Serial.println(address, HEX);
        }
    }
    if (nDevices == 0)
        Serial.println("No I2C devices found\n");
    else
        Serial.println("done\n");

    delay(5000); // wait 5 seconds for next scan
}

 و من ثم نقوم بإظهار شاشة (serial Monitor) ومعرفة عنوان i2c

OLED شاشة

البرمجة:

للتحكم في شاشة OLED ، تحتاج إلى مكتبة  adafruit_SSD1306.h مكتبة  adafruit_GFX.h. لتثبيت هذه المكتبات نقوم بالخطوات التالية:
1. افتح Arduino IDE وانتقل إلى Sketch> Include Library> Manage Libraries. يجب أن يفتح مدير المكتبة
. 2. اكتب “SSD1306” في مربع البحث وقم بتثبيت مكتبة SSD1306 من Adafruit.

OLED شاشة

3. بعد تثبيت مكتبة SSD1306 من Adafruit ، نكتب  “GFX” في مربع البحث ونقوم بتثبيت المكتبة.

ds18b20-digital-temperature-arduino

نفتح  ملف Adafruit_SSD1306.h في محرر نصي. من خلال القسم الذي يعرض SSD1306. نقوم بإلغاء التعليق #define SSD1306_128_64 بحيث يظهر الكود في هذا القسم كما يلي:

ds18b20-digital-temperature-arduino

توصيل الدائرة:

ds18b20-digital-temperature-arduino

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

نقوم بتحميل مكتبة  DallasTemperature بالبحث عن المكتبات عن طريق Tools > Manage Libraries لبرمجة DS18B20 مستشعر درجة الحرارة المقاوم للماء

 درجة حرارة الماء

و مكتبة OneWire Arduino library

 درجة حرارة الماء

ثم ستقوم برفع الكود البرمجي التالي :

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Wire.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
#if (SSD1306_LCDHEIGHT != 64)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif

void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3D (for the 128x64)
display.display(); // show splashscreen
delay(2000);
display.clearDisplay(); // clears the screen and buffer
Serial.begin(9600);
sensors.begin();
}
void loop() {
// Send the command for all devices on the bus to perform a temperature conversion:
sensors.requestTemperatures();

// Fetch the temperature in degrees Celsius for device index:
float tempC = sensors.getTempCByIndex(0); // the index 0 refers to the first device
// Fetch the temperature in degrees Fahrenheit for device index:
float tempF = sensors.getTempFByIndex(0);

// Print the temperature in Celsius in the Serial Monitor:
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0,0);

display.println("Temp: ");
display.print(tempC);
display.print((char)247); // degree symbol
display.print("C");
display.display();
delay(2000);
// routine for displaying text for temp/hum readout

}

 شرح الكود البرمجي

استدعاء المكتبات التي ستساعدنا في برمجة شاشة OLED Display و حساس الحرارة

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Wire.h>
#include <OneWire.h>
#include <DallasTemperature.h>

نقوم بتعريف المنفذ الذي سيتم توصيل and حساس الحرارة معه

#define ONE_WIRE_BUS 2

بعد ذلك ، نقوم بإنشاء كائن
من أجل التواصل مع مستشعر DS18B20 ، نحتاج إلى إنشاء كائن من مكتبة DallasTemperature

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

نكتب بروتوكول إعادة الضبط

#define OLED_RESET 4 
Adafruit_SSD1306 display(OLED_RESET);
#if (SSD1306_LCDHEIGHT != 64)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif

في دالة void setup()نحتاج إلى تهيئة حساس الحرارة و تهيئة العرض ومسحه لشاشة OLED Display تأكد من كتابة عنوان  I2Cلشاشة العرض

void setup()   {                
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C); 
  display.display(); // show splashscreen
  delay(2000);
  display.clearDisplay();   // clears the screen and buffer
  Serial.begin(9600);
  sensors.begin();  
}

نعطي الأمر استشعار  درجة الحرارة

void loop() {
  sensors.requestTemperatures();

  float tempC = sensors.getTempCByIndex(0); // the index 0 refers to the first device

نعطي الأمر بطباعة درجة الحرارة بالدرجة المئوية على شاشة OLED Display

  // Print the temperature in Celsius in the Serial Monitor:
 display.clearDisplay();
    display.setTextSize(2);
    display.setTextColor(WHITE);
    display.setCursor(0,0);

  display.println("Temp: ");
  display.print(tempC);
  display.print((char)247); // degree symbol 
  display.print("C");
    display.display();
    delay(2000);    
  }



نظام انذار الحرائق باستخدام حساس الغاز مع الاردوينو

مقدمة

في هذا الدرس، ستتعلم كيفية توصيل حساس الغاز مع الاردوينو؛ حتى تتمكن من الكشف عن تسرب الغاز في المنازل أو المصانع أو المكاتب بتكلفة بسيطة.

 بعد توصيل حساس الغاز مع الاردوينو يمكنك إضافة شاشة كرستالية تعرض كمية الغاز في المكان ومصدر صوت بمثابة صافرة إنذار حتى يتم إخطار الأفراد بحدوث أي تسرّب ويتم إخلاء المبنى فورًا قبل الوقوع في خطر الحرائق لا قدر الله.

حساس الغاز الاردوينو

المواد والأدوات

الاردوينو يستخدم في حساس الغاز/ الدخان

اردوينو اونو

arduino-smoke-gas-sensor

1× سلك الاردوينو

arduino-smoke-gas-sensor

لوحة تجارب – حجم كبير

الشاشة تستخدم في مع الاردوينو وحساس الغاز/ الدخان

 1× شاشة كرستالية

حساس الغاز/ الدخان الاردوينو

حساس الغاز

arduino-smoke-gas-sensor

1× مقاومة متغيرة

arduino-smoke-gas-sensor

1× مصدر صوت

arduino-smoke-gas-sensor

 حزمة أسلاك توصيل (ذكر- ذكر)

arduino-smoke-gas-sensor

1× مقاومة 220 Ω

مهاراتك في الرياضيات

1× 40 رأس دبوس

حساس الغاز

هو حساس يكشف عن تسرب الغاز في المكان.

يُمكن لحساس الغاز الكشف عن الغازات القابلة للاشتعال مثل البوتان، البروبان، الميثان والهيدروجين.

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

gas-smoke-sensor-gif

له أربعة مداخل موضحة في الشكل التالي:

arduino-smoke-gas-sensor

توصيل الدائرة

لمعرفة المزيد حول الشاشة الكرستالية يمكنك الرجوع للدرس التحكم بالشاشة الكرستالية LCD

لابد من تلحيم المنافذ مع الشاشة الكرستالية، للمزيد حول اللحام يمكنك الرجوع للدرس تعلم كيفية التلحيم – تلحيم القطع باللوحة الإلكترونية

arduino-smoke-gas-sensor

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

الكود البرمجي لنظام انذار الحرائق باستخدام حساس الغاز.
#include <LiquidCrystal.h>
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
#define buzzer 8
#define Gas A0
void setup() {
Serial.begin(9600);
lcd.begin(16,2);
pinMode(buzzer,OUTPUT);
lcd.setCursor(0, 0);
lcd.print("Calibrating");
for(int i = 0; i <10; i++) {
if (i==4)
{
lcd.setCursor(0, 1);
lcd.print("."); }
else lcd.print(".");
delay(500);
}
lcd.setCursor(5,1);
lcd.print("done");
delay(1000);
lcd.clear() ;
lcd.setCursor(1,0);
lcd.print("SENSOR ACTIVE");
delay(1500);
lcd.clear(); }
void loop() {
int gasSensor = analogRead(Gas);
if (gasSensor > 300) {
digitalWrite(buzzer,HIGH);
lcd.setCursor(0, 0);
lcd.print("Value: ");
lcd.print(gasSensor);
Serial.print(gasSensor);
Serial.print("\t");
lcd.setCursor(0,1);
Serial.println("Gas is Detected"); 
lcd.print("Gas is Detected"); 
delay(300);
lcd.clear(); }
else if (gasSensor < 300) {
digitalWrite(buzzer,LOW);
lcd.setCursor(0, 0);
lcd.print("Value: ");
lcd.print(gasSensor);
Serial.print(gasSensor);
Serial.print("\t");
lcd.setCursor(0,1);
Serial.println("Gas not Detected"); 
lcd.print("Gas not Detected"); 
delay(300); }}

 إذا كانت نسبة التسرب 300 فأكثر سينطلق جرس الإنذار؛ لتنبيه الأفراد المتواجدين في المكان بوجود تسرب وسيكون هناك توضيح لكمية التسرب على الشاشة الكرستالية.

هذا السطر يطلب من الأردوينو استعمال مكتبة الشاشة الكرستالية (حتى يستطيع الاردوينو استيعاب الأوامر الخاصة بالشاشة).

نستطيع تحميلها بتتبع المسار التالي:

Sketch > Include libraries > Manage libraries

ثم نكتب بخانة البحث Liquid crystal by Arduino

ثم نضغط على Install.

#include <LiquidCrystal.h>

هذه الأسطر توضح منافذ الاردوينو التي ستستخدمها للربط في هذا المشروع:

#define buzzer 8
#define Gas A0

بعد ذلك أعلنا عن المتغيرات اللازمة مثل المتغيرات الخاصة بالشاشة الكرستالية والتي تستخدمها المكتبات أيضًا:

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

في الدالة ()setup قمنا بوضع الإعدادات اللازمة مثل تشغيل الشاشة الكرستالية وتهيئتها وبيان جاهزية الحساس لاختبار المكان:

void setup()
 { 
 Serial.begin(9600);
 lcd.begin(16,2); 
 pinMode(buzzer,OUTPUT); 
 lcd.setCursor(0, 0); 
 lcd.print("Calibrating"); 
 for(int i = 0; i <10; i++) 
 { if (i==4) { 
 lcd.setCursor(0, 1); 
 lcd.print("."); } 
 else lcd.print("."); 
 delay(500); } lcd.setCursor(5,1); 
 lcd.print("done"); 
 delay(1000); 
 lcd.clear();  
 lcd.setCursor(1,0); 
 lcd.print("SENSOR ACTIVE"); 
 delay(1500); 
 lcd.clear(); 
}

تبدأ عملية المعايرة واختبار جاهزية حساس الغاز.

 معايرة حساس الغاز/ الدخان المربوط مع الاردوينو

ستظهر رسالة عند انتهاء عملية المعايرة (done).

arduino-smoke-gas-sensor

تليها رسالة تبين جاهزية الحساس لاختبار المكان.

 جاهزية حساس الغاز/ الدخان المربوط مع الاردوينو

في الدالة ()loop يقوم الحساس بحساب نسبة الغاز الموجود في الهواء.

إذا كانت نسبة الغاز  أكثر من 300 فسينطلق جرس الإنذار؛ لتنبيه الأفراد بوجود تسرب وسيتم طباعة نسبة التسرب على الشاشة.

إذا كانت نسبة الغاز أقل من 300 فسينطفئ جرس الإنذار ويُطمئن الأفراد بعدم وجود تسرب وسيتم طباعة نسبة الغاز الطبيعية المنتشرة في الهواء على الشاشة.

void loop() 
{ 
int gasSensor = analogRead(Gas); 
if (gasSensor > 300) { 
digitalWrite(buzzer,HIGH); 
lcd.setCursor(0, 0); lcd.print("Value: "); 
lcd.print(gasSensor); 
Serial.print(gasSensor); 
Serial.print("\t"); 
lcd.setCursor(0,1); 
Serial.println("Gas is Detected"); 
lcd.print("Gas is Detected"); 
delay(300); lcd.clear(); } 
else if (gasSensor < 300) { 
digitalWrite(buzzer,LOW); 
lcd.setCursor(0, 0); 
lcd.print("Value: "); 
lcd.print(gasSensor); 
Serial.print(gasSensor); 
Serial.print("\t"); 
lcd.setCursor(0,1); 
Serial.println("Gas not Detected"); 
lcd.print("Gas not Detected"); 
delay(300); }
}

هنا نسبة الغاز في المكان أكثر من 300.

 بدء عمل حساس الغاز/ الدخان المربوط مع الاردوينو اكتشاف الغاز

هنا نسبة الغاز  في المكان أقل من 300.

 بدء عمل حساس الغاز/ الدخان المربوط مع الاردوينو

يصبح حساس الغاز بعد فترة من استخدامه ساخنًا علينا الحذر من لمسه.



نظام الأمان و الإنذار باستخدام الليزر و الاردوينو

المقدمة

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

الليزر

المواد والأدوات

اردوينو

 1 X اردوينو

سلك اردوينو

1 X سلك الأردوينو

1 X لوحة تجارب

laser-security-arduino

1 X مصدر صوت

مستقبل الليزر

1 X مستقبل أشعة الليزر

مرسل الليزر

1 X مرسل أشعة الليزر

أسلاك ذكر / ذكر

مجموعة أسلاك توصيل ( ذكر/ ذكر)

أسلاك توصيل

مجموعة أسلاك توصيل ( أنثى/ ذكر)

توصيل الدائرة

قم بتوصيل القطع مع الأردوينو كما هو موضح بالشكل التالي

توصيل مستقبل و مرسل الليزر مع الاردوينو

 

جدول توصيل منافذ مستقبل أشعة الليزرمع الاردوينو
الاردوينو مستقبل أشعة ليزر
GND GND
2 OUT
5 V VCC
جدول توصيل مرسل أشعة الليزر مع الأردوينو
الاردوينو مرسل أشعة ليزر
5v S
GNS

 

وحدة إرسال الليزر :

laser-security-arduino

 تعتمد وحدة إرسال الليزر على صمام ثنائي ليزر ، يبلغ طيف انبعاثه 650 نانومتر. تنتشر الإشعاع في شكل حزمة ضيقة ، يظهر لون الضوء الأحمر اذا اصطدمت بحاجز .

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

البرمجة

قم برفع الكود البرمجي على الأردوينو

#define DETECT 2
#define ACTION 13
void setup() {
pinMode(DETECT, INPUT); //define detect input pin 
pinMode(ACTION, OUTPUT);//define ACTION output pin 
} 
void loop() { 
int detected = digitalRead(DETECT);
if( detected == HIGH) 
{ digitalWrite(ACTION,LOW); }
else{ digitalWrite(ACTION,HIGH); }
delay(200); 
}

 شرح الكود البرمجي:

بالبداية نقوم بتسمية منافذ الأردوينو المستخدمة في هذا المشروع

حيث سيكون المنفذ رقم 2 موصل مع مستقبل أشعة ليزر

والمنفذ رقم 13 يكون موصل مع مصدر الصوت

#define DETECT 2
#define ACTION 13

في دالية setup(): نقوم بتعريف المنافذ سواء كانت منافذ ادخال أو منافذ اخراج

و في هذا المشروع يعد منافذ الادخال هي المفذ المتصل مع مستقبل أشعة الليزر

و يعد منفذ الاخراج هو المنفذ المتصل مع مصدر الصوت

void setup() {
pinMode(DETECT, INPUT); //define detect input pin 
pinMode(ACTION, OUTPUT);//define ACTION output pin 
}

 

في دالة loop() نقوم بجعل البرنامج يعطي اشارة لتشغيل مصدر الصوت اذا اخترق احد أشعة الليزر

يقوم البرنامج بقراءة منفذ الادخال، فاذا كانت القراءة (LOW)  يتم اعطاء اشارة للمنفذ رقم 13 (منفذ مصدر الصوت ) ليعملو العكس حيث في حال أعطى منفذ الادخال اشارة (HIGH) لن يعمل مصدر الصوت

ثم يتم اضافة زمن انتظار و هو ثانيتين

void loop() { 
int detected = digitalRead(DETECT);
if( detected == HIGH) 
{ digitalWrite(ACTION,LOW); }
else{ digitalWrite(ACTION,HIGH); }
delay(200); 
}



صنع أداة لحماية الممتلكات باستخدام Littlebits ليتل بيتس

مقدمة

littlebits-alarm-proximity/

في هذا الدرس سوف نقوم بإنشاء أداة باستخدام ليتل بيتس  تساعدنا على حماية ممتلكاتنا ،وذلك عند وضع الأداة في مكان قريب من ممتلكاتنا و عند اقتراب شخص منها  سوف تعطي تنبيه صوتي وإضاءة .

المكونات المطلوبة:

جميع المكونات المطلوبة متوفرة في مجموعة ليتل بيتس وحدات المبتكر للأطفال

littlebits-alarm-proximity

1 لوحة

littlebits-alarm-proximity/

1 قالب كرتوني

littlebits-alarm-proximity/

1 البطارية

1 سلك البطارية

littlebits-alarm-proximity

1 حامل بطارية

littlebits-alarm-proximity

 

1 منفذ طاقة

littlebits-alarm-proximity

1 سلك توصيل

littlebits-alarm-proximity

1 حساس الإقتراب

 

littlebits-alarm-proximity

1 مصدر صوت

littlebits-alarm-proximity

1 إضاءة

 

بناء هيكل الأداة:

 

littlebits-alarm-proximity

نضع القالب الكرتوني بحيث يكون الجزء الغير ملون و الذي يحتوي على رقم القالب الكرتوني  للأعلى

littlebits-alarm-proximity littlebits-alarm-proximity

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

littlebits-alarm-proximity

 الوجة الأول يحتوي على لسان،و يقابله منفذ بالوجة الثاني، نقوم بتثبيت اللسان داخل المنفذ المقابل له (لاحظ تطابق الأرقام بين الفتحة و اللسان)

littlebits-alarm-proximity

 

littlebits-alarm-proximity littlebits-alarm-proximity

نكرر نفس الخطوات مع المنفذ رقم 3 و المنفذ رقم 4

littlebits-alarm-proximity

تركيب قطع ليتل بيتس:

تعتبر البطارية و منفذ الطاقة، هي المسؤولة عن تزويد دائرتك المكونة من قطع ليتل بيتس بالطاقة اللازمة لتشغيلها

نثبت البطارية على الحامل ثم نثبت سلك البطارية

littlebits-alarm-proximity

نوصل الطرف الثاني من سلك البطارية مع منفذ الطاقة

littlebits-alarm-proximity

 حساس الاقتراب هو المدخلات في الدائرة فهو يتحسس الأجسام التي تقترب منه

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

littlebits-alarm-proximity/

 مصدر الصوت و الاضاءة هو الخرج في الدائرة

نوصل مصدر الصوت مع حساس الاقتراب ثم نوصل مصدر الصوت مع الاضاءة

littlebits-alarm-proximity/

littlebits-alarm-proximity/

نقوم بتثبيت اللوحة على الهيكل بادخالها في الفتحة المستطيلة على الهيكل ثم

littlebits-alarm-proximity/

littlebits-alarm-proximity/

نثبت الدائرة المكونة من قطع ليتل بيتس كما بالشكل التالي

littlebits-alarm-proximity/

نشغل  الدائرة من خلال المفتاح الموجود في منفذ الطاقة و ثم نبدأ بتجربة المشروع

 

littlebits-alarm-proximity/




التحكم بالمصباح عن طريق الصوت باستخدام ليتل بيتس (LittleBits)

مقدمة

في درس التحكم بالمصباح  الصوت باستخدام ليتل بيتس ستتعلم التحكم بإغلاق وتشغيل المصباح  وكيفية توصيل قطع ليتل بيتس بالطريقة الصحيحة.

المواد والأدوات من ليتل بيتس

حتى تتمكن من تجميع مكونات نظام التحكم بالمصباح عن طريق الصوت تحتاج مجموعة (littleBits Base Inventor Kit) وحدات المبتكر ليتل بيتس:

Automatic-LED

1× مستشعر الصوت

Automatic-LED

2× سلك

Automatic-LED

1×حامل البطارية

Automatic-LED

1×سلك البطارية

Automatic-LED

1× بطارية

Automatic-LED

1× قالب الكرتوني رقم (5)

1× منفذ الطاقة

Automatic-LED ليتل بيتس

1×مزلاج

Automatic-LED

1× مصباح

Automatic-LED

1× لوحة

توصيل الدائرة

يعتبر كلًا من البطارية و منفذ الطاقة الموجدان في مجموعة ليتل بيتس، مسؤولان عن تزويد دائرتك بالطاقة اللازمة لتشغيلها.

ثبت البطارية على الحامل ثم ثبت سلك البطارية.

littlebits-alarm-proximity/

صل الطرف الثاني من سلك البطارية مع منفذ الطاقة.

ليتل بيتس

ثبت البطارية وسلك البطارية على اللوحة.

ليتل بيتس

اسحب السلك لمنفذ الطاقة، ثم اضف مستشعر الصوت للطرف الآخر.

ليتل بيتس

يقوم مستشعر الصوت الموجود في ليتل بيتس بالكشف عن درجة الصوت الموجودة بالقرب منه ثم يقوم بإرسال الإشارات للمزلاج لمدة 3 ثوانٍ، بعد ذلك سيضيء المصباح.

ليتل بيتس

اسحب الزر في مستشعر الصوت للمنتصف كما هو ظاهر.
يستخدم الزر لتحديد حجم الصوت المطلوب اكتشافه، يمكنك جعل حجم الصوت المطلوب أعلى أو أقل حسب احتياجات مشروعك.
ليتل بيتس

اسحب المزلاج لمستشعر الصوت، ثم اسحب المصباح  للمزلاج.

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

ليتل بيتس

تجميع مكونات نظام التحكم بالمصباح عن طريق الصوت

ضع القالب الكرتوني بحيث يكون الجزء اللغير ملون والذي يحتوي على رقم القالب للأعلى.

littlebits-alarm-proximity/ ليتل بيتس

اطو القالب من المنتصف بحيث يتقابل الوجه الأول مع الوجه الثاني.

ليتل بيتس

 الوجه الأول يحتوي على وصلة تثبيت، و يقابله منفذ بالوجه الثاني، ثبت وصلة التثبيت داخل المنفذ المقابل له (لاحظ تطابق الأرقام بين الفتحة ووصلة التثبيت).

littlebits-alarm-proximity/

كرر نفس الخطوات مع المنفذ رقم 3 و المنفذ رقم 4.

littlebits-alarm-proximity/ ليتل بيتس

 شكل القالب الكرتوني بعد الطي.

littlebits-alarm-proximity/ ليتل بيتس

ادخل اللوحة في الفتحة المستطيلة للقالب الكرتوني.

تثبيت مكونات ليتل بيتس على اللوحة:

ثبت الدائرة على اللوحة.

الآن قد اكتمل نظام التحكم بالضوء عن طريق الصوت بعد تجميع كل مكونات ليتل بيتس.

افحص مجددًا تركيب النظام لترى انه متوافق مع الصور.

تأكد من تشغيل وحدة مزود الطاقة.

يمكنك إصدار أي صوت لتختبر النظام في حال أضاء المصباح فخطواتك صحيحة يمكنك الرجوع للخطوات السابقة في حال وجود مشكلة ما.

تذكر فصل وحدة مزود الطاقة عند الانتهاء من استخدام النظام.



التحكم بالإضاءة باستخدام مستقبل الأشعة تحت الحمراء(IRreceiver)

المقدمة

في هذا الدرس سنتعرف على طريقة برمجة مستقبل الأشعة تحت الحمراء (IR receiver) مع الأردوينو، ليساعدنا في التحكم بإضاءة الثنائي المشع للضوء، حيث نستخدم ريموت تحكم عن بعد لتشغيل الإضاءة، يمكن أن يساعدنا هذا المشروع ، للتحكم في الأجهزة المنزلية عن بعد و لاسلكيا.

irreceiver مستقبل الأشعة تحت الحمراء

المواد والأدوات

اردوينو

X1 اردوينو أونو 

سلك اردوينو

X1 سلك الأردوينو

rgbcontrol

 X1مستقبل الإشارات تحت الحمراء(IR receiver)

led-5mm-red

X3 الثنائي المشع للضوء 

مقاومة 220

X3 مقاومة 220أوم

لوحة تجارب

X1 لوحة تجارب 

أسلاك ذكر / ذكر

مجموعة أسلاك توصيل (ذكر/ذكر)

 

مستقبل الأشعة تحت الحمراء(IRreceiver )

يعد الاتصال بالأشعة تحت الحمراء (IR) تقنية لاسلكية مستخدمة على نطاق واسع وسهلة التنفيذ ولها العديد من التطبيقات المفيدة. من أبرز الأمثلة في الحياة اليومية التلفزيون

الأشعة تحت الحمراء
الأشعة تحت الحمراء هي شكل من أشكال الضوء مشابه للضوء الذي نراه من حولنا. الفرق الوحيد بين ضوء الأشعة تحت الحمراء والضوء المرئي هو التردد وطول الموجة. تقع الأشعة تحت الحمراء خارج نطاق الضوء المرئي ، لذلك لا يمكن للبشر رؤيتها:

مستقبل الأشعة تحت الحمراء 

irreceiver مستقبل الأشعة تحت الحمراء

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

Label Value
CH- 0x00FFA25D
CH 0x00FF629D
CH+ 0x00FFE21D
|<< 0x00FF22DD
>>| 0x00FF02FD
>|| 0x00FFC23D
+ 0x00FFE01F
0x00FFA857
EQ 0x00FF906F
0 0x00FF6897
100+ 0x00FF9867
200+ 0x00FFB04F
1 0x00FF30CF
2 0x00FF18E7
3 0x00FF7A85
4 0x00FF10EF
5 0x00FF38C7
6 0x00FF5AA5
7 0x00FF42BD
8 0x00FF4AB5
9 0x00FF52AD

توصيل الدائرة

قم بتوصيل الدائرة كما هو موضح بالصورة التالية :

توصيل الدائرة لـ irreceiver مستقبل الأشعة تحت الحمراء

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

#include <IRremote.h>
int LED1= 3;
int LED2= 4;
int LED3= 5;

int RECV_PIN = 2;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup() {  
   Serial.begin(9600);
   irrecv.enableIRIn(); // Start the receiver
  
    /***Pin mode declaration***/
    pinMode(LED1, OUTPUT);
    pinMode(LED2, OUTPUT);
    pinMode(LED3, OUTPUT);
    
  }
  
  void loop() {
    if (irrecv.decode(&results)) {
    
    
    switch (results.value)
    {
      case 0xFFA25D:
      digitalWrite(red, HIGH);
      delay(300);
      digitalWrite(red, LOW);
      break;
      case 0xFF629D:
      digitalWrite (green, HIGH);
      delay(300);
      digitalWrite(green, LOW); 
      break;
      case 0xFFE21D:
      digitalWrite (blue, HIGH);
      delay(300);
      digitalWrite(blue, LOW); 
       break;
}
      
   irrecv.resume();

      
    }
 }

 

شرح الكود :

في البداية نقوم بتعريف متغيرات للإشارة إلى أرقام منافذ الأردوينو المستخدمة في المشروع. , واستدعاء مكتبة التحكم ب IRreceiver ، قم بتحميل المكتبة من هنا

int red = 3;
int green = 9;
int blue = 10;
#include <IRremote.h>
int RECV_PIN = 11

تعريف كائن  (object) من النوع IRrecv  ،  وتعريف متغيرات لحفظ قيم سطوع إضاءة الثلاث ألوان الخاصة بالRGB (أحمر،أخضر،أزرق).

IRrecv irrecv(RECV_PIN);
decode_results results;
int redBrightness = 0;
int greenBrightness = 0;
int blueBrightness = 0;

في الدلة ()setup ، نقوم بضبط الإعدادات اللازمة مثل ضبط المنافذ الموصلة مع الـ LEDs كمخرج وتهيئة معدل سرعة نقل البيانات عبرالمنفذ التسلسلي (Serial Port) لاستقبال بيانات من الأردوينو :

void setup() {  
   Serial.begin(9600);
   irrecv.enableIRIn(); 
  
 
    pinMode(red, OUTPUT);
    pinMode(green, OUTPUT);
    pinMode(blue, OUTPUT);
    
  }

إنشاء دالة ()setcolor والتي تقوم بحساب شدة الإضاءة الخاصة بكل لون في RGB اعتمادا على نوعه إما مصعد مشترك (Common anode) أو مهبط مشترك (Common Cathode)، ثم ارسال القيم عبر المنافذ الخاصة بالـ RGB ليتم إضاءة اللون المطلوب .

 void setcolor (int redx, int greenx, int bluex){
    Serial.print("Led");
    int red1= 255 - redx ;
    int green1=255 - greenx;
    int blue1=255 - bluex;
    analogWrite(red, red1);
    analogWrite(green, green1);
    analogWrite(blue, blue1);
  
  }  

في الدالة loop() نقوم بقراءة القيمة التي يستقبلها IR receiver عند الضغط على أزرار الريموت و تحديد اللون الذي سيظهر على RGB اعتمادا على القيمة المقروءة .

void loop() {
    if (irrecv.decode(&results)) {
    
    
    switch (results.value)
    {
      case 0xE318261B:
        setcolor (255, 0, 0);
        break;
      case 0x511DBB:
        setcolor (0, 0, 255);
        break;
      case 0xFFE21D:
        setcolor (0, 255, 0);
        break;
      }
   irrecv.resume();

      
    }
 }



أداة فتح الأبواب و ضغط الأزرار

مقدمة

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

grabberpusher

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

grabberpusher

طابعة ثلاثية الأبعاد 

grabberpusher

خيوط فيلمنت 

 

grabberpusher

برغي

 

grabberpusher

مطاط

 

 

فكرة المشروع

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

grabberpusher grabberpusher

 

التصميم

سنستخدم في التصميم برنامج (sketchUp) لبناء مجسم ثلاثي الأبعاد حيث تتكون الأداه من قطعتين

المقبض وهو الجزء الذي نمسكه بيدنا

 

 

 

grabberpusher

https://geeksvalley.com/tutorial/grabberpusher/

نستخدم أداة (offset) بمسافة 5ملم

grabberpusher/

رسم خطوط داخل مساحة الجزء الذي بالمقدمة لصنع ما يشبه الشبكة

grabberpusher/

نستخدم (offset)ثم نحذف الخطوط التي رسمناها

grabberpusher/

باستخدام أداة (push/pull)نرفع اطراف التصميم  بطول 15 ملم و المساحات الداخلية 5 ملم

 

الذراع المتحرك وهو الذراع الذي تساهم تحريك طرفه في الإمساك بالأشياء

grabberpusher

يمكنك تحميل الملفات stl من هنا

التركيب

ثبت  المقبض مع الذراع المتحرك باستخدام برغيي

grabberpusher

 

grabberpusher

استخدم المطاط لشد طرف الذراع النهائي مع المقبض

grabberpusher

 

/grabberpusher/

الاحتياطات المتبعة للتعقيم

عند الطباعة :

  1. لا تترك الجزء المطبوع لساعات طويلة على سطح الطابعة لتجنب تلوث الجزء المطبوع.
  2. تقيد بإرتداء قفازات جديدة والكمامة الطبية قبل إزالة المطبوعات .
  3.  احفظ الأجزاء المطبوعة على الفور في كيس قابل للاغلاق.

أثناء الاستخدام :

بعض المصادر توضح أن مدة بقاء الفايروس على البلاستك من 3-4 أيام ، كما أن الشقوق على أسطح المطبوعات ثلاثية الأبعاد، تمثل تحدي أكبر لعملية التعقيم ، تقوم مختبارات مستقلة بعمل دراسات لمعرفة أكثر الطرائق الآمنة في التعقيم (الدراسات قامت على قناع الوجة المطبوع بطابعة ثلاثية الأبعاد) .

الجدول يوضح نتائج الطرائق الموصى بها في التعيقيم يمكنك الاطلاع على المصدر لمعرفة أي تحديثات على الدرسات

الطريقة الخصائص مدة التعقيم
مجفف هواء ساخن  (Hot Air Dryer) 65 °C (149 °F)  60دقيقة
معقم يدين 75% Isopropyl Alcohol (IPA) 5 دقائق
Isopropanol (IPA) 96%- 75% تركيز 5دقائق
Sodium Hypochlorite (مبيض منزلي) 0.01 % of hypochlorite (e.g. SAVO 1:10) أكثر من دقيقتين
UV-C radiation, 30W, wavelength below 280 nm, 15 دقيقة
Ethanol 70-80% 5 دقائق
Hydrogen Peroxide 25% 5 دقائق