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

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


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



في البدايه دعونا نتعرف على الحساس ( بطل الحلقه ) وهو mlx90614
وهو حساس يقوم بألتقاط امواج ال Infrared وهي نوع من الموجات الكهرومغناطيسيه حيث يقوم بألتقاطها وارسالها للمتحكم الذي هو الاردوينو في مشروعنا الذي يقوم بدوره بتطبيق بعض المعادلات على هذه القرائات وتوحيلها الى قرائات حراره .

يجب لفت نظركم هنا ان الحساس وحسب تجاربنا عليه ليس دقيق بشكل تام لاكنه يفي بالغرض حيث ان دقته تتراوح من 0.02 الى 0.05 حسب بعد الجسم عن الحساس .

أعلم انكم متشوقون للبدء سنبدأ بقائمه من القطع المطلوبه : 


اسم القطعه بالعربيه
اسم القطعه بالانجليزيه
زر اوامر
Push Button
مقاومه 5 كيلو اوم
5Kohm resistor
ليزر 5 فولت
5 volt laser
اردوينو نانو
Arduino Nano
زر تشغيل
on/off Switch
شاشة oled
oled screen
حساس اشعة انفرارد MLX90614
infrared sensor MLX90614
بطاريه 9 فولت
9 volt battery
مقاومه 200 اوم
200 ohm resistor

التوصيلات :

فيما يلي توصيلات الداره حيث نقوم بجمع الحساسات مع الاردوينو 



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

قبل رفع الكود البرمجي على الاردوينو قم بتحميل المكتبات الاتيه : 

Adafruits SSD1306
Adafruits MLX90614

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



   /*
 * www.JoThings.com
 * Laser Temp Gun project
 * prepared by : Anas Jubran 
 * +962-790087879
 */


#include 
#include 
#include 

#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels

const int Laser_Pin=5;  //Laser Pin
int buttonState = 0; 
const int buttonPin = 2;     // the number of the pushbutton pin

// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

Adafruit_MLX90614 mlx = Adafruit_MLX90614();

void setup() {
  Serial.begin(9600);
  Serial.println("Adafruit MLX90614 test"); 
  
  pinMode(Laser_Pin,OUTPUT);
  pinMode(buttonPin, INPUT);
  
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3D for 128x64
    Serial.println(F("SSD1306 allocation failed"));
    for(;;);
  }
  

  display.clearDisplay();
  display.setRotation(2);
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0, 35);
  display.println("Initializing Temp");
  display.display();
  delay(250);
  display.clearDisplay();

  mlx.begin(); 
  
}

void loop() {

  buttonState = digitalRead(buttonPin);
  Serial.println(buttonState);
  
  Serial.print("Ambient = "); Serial.print(mlx.readAmbientTempC()); 
  Serial.print("*C\tObject = "); Serial.print(mlx.readObjectTempC()); Serial.println("*C");
  Serial.print("Ambient = "); Serial.print(mlx.readAmbientTempF()); 
  Serial.print("*F\tObject = "); Serial.print(mlx.readObjectTempF()); Serial.println("*F");
  
  // check if the pushbutton is pressed. If it is, the buttonState is HIGH:
  if (buttonState == HIGH) {
    // turn LED on:
    digitalWrite(Laser_Pin, HIGH);
    
    display.clearDisplay();
    display.setTextSize(2);  //Size 2 means each pixel is 12 width and 16 high
    display.setCursor(25, 10);
    display.print(mlx.readObjectTempC());
    display.setCursor(95, 10);
    display.print("C");
    display.setTextSize(2);
    display.setCursor(25, 36);
    display.print(mlx.readObjectTempF());
    display.setCursor(95, 36);
    display.print("F");
    display.display();
    
    
  } else {
    // turn LED off:
    digitalWrite(Laser_Pin, LOW);
  
    display.clearDisplay();
    display.setTextSize(2);  //Size 2 means each pixel is 12 width and 16 high
    display.setCursor(35, 10);
    display.print("-----");
    display.setCursor(105, 10);
    display.print("");
    display.setTextSize(2);
    display.setCursor(35, 36);
    display.print("-----");
    display.setCursor(105, 36);
    display.print("");
    display.display();
    
    
  }

  Serial.println();
  delay(500);
}
    

ملفات الطابعه ثلاثية الابعاد :

قم تنزيل الملفات المتوفره بصيغة Stl وقم بطابعتها 


تهانينا لقد قمت بصنع جهازك الخاص 

2 تعليقات

  1. Quel programme avez-vous utilisé pour le dessiner le circuit

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

    ردحذف
أحدث أقدم