تب سنج لیزری با ESP8266 به همراه سورس کد Arduino

فهرست مطالب

تب سنج لیزری Arduino

در ایام کرونا یکی از وسایل بدرد بخور تب سنج دقیق است. در این مقاله با نحوه ساخت یک تب سنج لیزری Arduino یا همان دماسنج غیر تماسی آشنا میشوید. این دماسنج قابلیت اندازه گیری دما از -70 تا 382.2 بر حسب °C را دارد. برای ساخت این دماسنج از سنسور GY-906 MLX90614 استفاده میکنیم. این سنسور یک سنسور مادون قرمز (IR) برای اندازه گیری دما است. در این مقاله سورس برنامه Arduino را نیز در اختیار شما قرار میدهیم. در پایان توسط برنامه Blynk میتوانید از طریق موبایل نیز با برد ارتباط بگیرید.

 

لوازم مورد نیاز برای ساخت تب سنج لیزری Arduino

1-یک برد ESP8266 مثلا Nodemcu یا هرچی

2- سنسور GY-906 MLX90614

3- نمایشگر OLED

4-سیم‌های رابط

5-برد بورد

 

 

معرفی سنسور GY-906 MLX90614

GY-906 MLX90614 یک سنسور دمای دیجیتال غیر تماسی است. این سنسور از امواج مادون قرمز (IR) تابشی از سطح جسم میتواند دمای آن را اندازه بگیرد. در تب سنج لیزری طبی نیز از همین روش استفاده شده است. برای اطلاعات بیشتر در مورد تئوری اندازه گیری دما توسط IR به مقاله زیر مراجعه کنید:

ارتباط با GY-906 MLX90614 از طریق پروتکل SMBus که مشابه پروتکل I2C است، انجام می‌شود. این سنسور 4 پین دارد که شامل SDA , GND , VCC و SCL هستند. ولتاژ کاری این سنسور بین 3.3v تا 5v است. همچنین این سنسور به 1.5ma جریان برای عملکرد نیاز دارد. دقت GY-906 MLX90614 حدود 0.02 بر حسب °C است. همان طور که در مقدمه گفتیم این سنسور میتواند دما را از -70 تا 382.2 درجه اندازه گیری کند. این سنسور یک adc با رزولوشن 17 بیت دارد یعنی حدودا رزولوشن آن 0.0007 درجه است. برای اندازه گیری دقیق باید فاصله سنسور تا جسم بین 2 تا 5cm باشد. همچنین میدان دید سنسور نیز باید بیشتر از 80 درجه باشد. برای اطلاعات بیشتر Datasheet مربوط به سنسور را مطالعه کنید. تصویر سنسور به صورت زیر است:

سنسور دمای GY-906 MLX90614 برای تب سنج لیزری غیر تماسی
ماژول سنسور GY-906 MLX90614

نحوه اتصال مدار تب سنج لیزری Arduino

نقشه اتصال سنسور و نمایشگر OLED به ESP8266 در شکل زیر آورده شده است:

نقشه مدار تب سنج یا دما سنج غیر تماسی لیزری با ESP8266 و Arduino
مدار ساخت تب سنج لیزری برای ایام کرونا

پس از اتصال پایه‌های تغذیه، پایه‌های SCL و SDA مربوط به GY-906 MLX90614 را به ترتیب به پایه‌های D2 و D1 ماژول ESP8266 متصل میکنیم.

اپلیکیشن Blynk

Blynk یک پلت فرم عالی IoT است که می تواند سخت افزار را از راه دور کنترل کند، داده‌های حسگر را نمایش دهد ، داده‌ها را ذخیره کند، آن را تجسم کند و کارهای جالب دیگر انجام دهد. میتوانید این برنامه را از Google Play دانلود کنید.

پس از نصب برنامه و ثبت نام یا ورود، یک پروژه جدید ایجاد کنید و نوع سخت افزار را ESP8266 و IDE مربوطه را Arduino انتخاب کنید. در این مرحه یک authentication code به شما داده میشود، این کد برای ارتباط با ESP8266 لازم است.

بعد از آن باید کتابخانه Blynk را به Arduino اضافه کنید. سپس از ویجت‌های موجود در نرم افزار دو ویجت Guage اضافه کنید و آنها را به Virtual Pin 1 و Virtual Pin 2 وصل کنید.

 

برنامه Blynk برای ارتباط با ESP8266 GY-906
برنامه Blynk برای ارتباط با ESP8266

برنامه Arduino

پس از آماده سازی موارد قبل نوبت به کد برنامه دماسنج غیر تماسی ( دماسنج لیزری ) است. برای ادامه کار نیاز است کتابخانه سنسور GY-906 MLX90614 را داشته باشیم تا در برنامه Arduino از آن استفاده کنیم.

 

کتابخانه سنسور GY-906 MLX90614

کتابخانه Blynk

 

 

در ابتدای برنامه کد زیر را قرار دهید و مقادیر را با کد خودتان و SSID و PASSWORD دلخواه عوض کنید.

//
//
char auth[] = "bOTy***********115buIiZC";    // Blynk Auth Token 
char ssid[] = "***************";                      // Your WiFi SSID
char pass[] = "***************";                      // Your WiFi password
//
//

ضریب کالیبراسیون 2.36 را برای کالیبره کردن دمای جسم اضافه کرده ایم. در صورت نیاز شما می توانید خود را در قسمت کد اضافه کنید.

کد کامل برنامه تب سنج لیزری Arduino با سنسور GY-906 MLX90614 به صورت زیر است:

//
//
#include <Wire.h>
#include <Adafruit_MLX90614.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define BLYNK_PRINT Serial
#include <Blynk.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
 
#define SCREEN_WIDTH 128    // OLED display width, in pixels
#define SCREEN_HEIGHT 64    // OLED display height, in pixels
#define OLED_RESET -1       // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
 
Adafruit_MLX90614 mlx = Adafruit_MLX90614();
 
double temp_amb;
double temp_obj;
double calibration = 2.36;
 
char auth[] = "bOTyO9tRJyp8d0FLY8CoFyW115buIiZC";    // You should get Auth Token in the Blynk App.
char ssid[] = "MSB-CO.IR";                       // Your WiFi credentials.
char pass[] = "msb-co.ir";
 
void setup()
{
  Serial.begin(9600);
  mlx.begin();         //Initialize MLX90614
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //initialize with the I2C addr 0x3C (128x64)
  Blynk.begin(auth, ssid, pass);
  
  Serial.println("Temperature Sensor MLX90614");
 
  display.clearDisplay();
  display.setCursor(25,15);  
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.println(" Thermometer");
  display.setCursor(25,35);
  display.setTextSize(1);
  display.print("Initializing");
  display.display();
  delay(2500);
}
 
void loop()
{
  //Reading room temperature and object temp
  //for reading Fahrenheit values, use
  //mlx.readAmbientTempF() , mlx.readObjectTempF() )
  Blynk.run();
  temp_amb = mlx.readAmbientTempC();
  temp_obj = mlx.readObjectTempC();
 
  //Serial Monitor
  Serial.print("Room Temp = ");
  Serial.println(temp_amb);
  Serial.print("Object temp = ");
  Serial.println(temp_obj);
 
  display.clearDisplay();
  display.setCursor(25,0);  
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.println(" Temperature");
  
  display.setCursor(10,20);
  display.setTextSize(1);
  display.print("Ambient: ");
  display.print(temp_amb);
  display.print((char)247);
  display.print("C");
 
  display.setCursor(10,40);
  display.setTextSize(1);
  display.print("Object: ");
  display.print(temp_obj + calibration);
  display.print((char)247);
  display.print("C");
  
  display.display();
  
  Blynk.virtualWrite(V1, temp_amb);
  Blynk.virtualWrite(V2, (temp_obj + calibration));
  
  delay(1000);
}

//
//

بعد از آپلود کد دماسنج غیر تماسی در ESP8266 میتوانید هم روی نمایشگر و هم در برنامه Blynk مقادیر دمای محیط و دمای جسم را به صورت زیر مشاهده کنید:

MLX90614 ESP8266
نمایش دمای جسم توسط دماسنج IR

برای بهتر شدن پروژه تب سنج لیزری Arduino میشد از یک سنسور Ultrasonic برای سنجش فاصله جسم استفاده کرد تا فاصله به درستی رعایت شود.

به جای Blynk از پلتفرم‌های دیگر IOT نیز میتوانید استفاده کنید. مثلا Thingspeak، Ubidotsو یا Adafruit IO.

زمان تقریبی مطالعه: 6 دقیقه

انتشار مطالب با ذکر آدرس بلاگ الکتروکالا مانعی ندارد.

۲ comments

  1. سلام
    مطالب بسیار مفید و واضح و جامع بود.
    با تشکر از شما امیدوارم که همیشه موفق باشید.

  2. سلام خواهش میکنم.
    توجه شما باعث دلگرمی ماست

دیدگاهتان را بنویسید
ارسال رایگان

برای سفارشات بالای ۳ میلیون تومان

گارانتی ویژه

برای محصولات شرکت

مشاوره رایگان

در امور تخصصی