با آردوینو و LED یک ماگ هوشمند بسازید

فهرست مطالب

مقدمه

در این پروژه، نحوه ی ساخت یک ماگ هوشمند با استفاده از آردوینو و LED های RGB را فرا می گیرید. رنگ کف این ماگ با توجه به دمای نوشیدنی داخل آن تغییر می کند.

آن‌چه در این آموزش یاد می‌گیرید

سنسور DS18B20 چیست؟

سنسور DS18B20 یک دماسنج دیجیتال با دقت 9 تا 12 بیت است که دمای محیط را بر حسب درجه ی سلسیوس اندازیه گیری می کند. این سنسور دارای 3 پایه است. 2 پایه ی آن برای تغذیه ی سنسور و 1 پایه ی دیگر خروجی سنسور می باشد. ارتباط این سنسور با آردوینو یک ارتباط تک سیمه است. نکته ی جالب راجع به این سنسور این است که این سنسور بدون وصل کردن پایه ی تغذیه نیز کار می کند. برای این کار فقط کافیست پایه های خروجی و زمین سنسور وصل باشند. (parasite power) هر سنسور DS18B20 دارای یک کد سریال 64 بیت یکتا است. این خاصیت به کاربر این امکان را می دهد که از چند سنسور دما روی تنها یک خط (یک سیم) استفاده کند و خرجی چند سنسور را فقط با یک سیم دریافت کند. در نتیجه برای خواندن خروجی چند سنسور، فقط به یک پایه ی آردوینو نیاز است.

لوازمی که به آن احتیاج دارید

قطعات مورد نیاز

برد آردوینو NANO × 1
سنسور دما DS18B20 × 1
ال ای دی RGB × 1
باتری × 1
سیم یا کابل ریبونی × 1

نرم افزارهای مورد نیاز

Arduino IDE

ساخت ماگ هوشمند با آردوینو: سیم بندی

ظرفیت باتری به تعداد ال ای دی های شما بستگی دارد. ال ای دی هایی که ما استفاده کردیم، کاتد مشترک هستند. اگر از ال ای دی آنود مشترک استفاده می کنید، باید کدتان را کمی تغییر دهید.
نکته
برخی از ال ای دی های RGB نیاز به مقاومت دارند. در این صورت آن ها را مستقیما به پایه ی آردوینو وصل نکنید.
نکته
بهتر است پایه ی خروجی و تغذیه ی سنسور دما را با یک مقاومت 4.7 کیلو اهم به یکدیگر وصل کنید. (این کار ضروری نیست)

ساخت ماگ هوشمند با آردوینو: کد

پس از بستن مدار، باید کتابخانه های مورد نیاز را نصب کنید. کتابخانه های “One Wire” و “Dallas” را می توانید از لینک زیر دانلود کنید.

پس از نصب کتابخانه ها، کد زیر را روی آردوینو آپلود کنید.

دانلود کتابخانه های مورد نیاز:

/********************************************************************/
// First we include the libraries
#include "OneWire.h" 
#include "DallasTemperature.h"
/********************************************************************/
// Data wire is plugged into pin 2 on the Arduino 
#define ONE_WIRE_BUS 2 
/********************************************************************/
// Setup a oneWire instance to communicate with any OneWire devices  
// (not just Maxim/Dallas temperature ICs) 
OneWire oneWire(ONE_WIRE_BUS); 
/********************************************************************/
// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensors(&oneWire);
/********************************************************************/ 
float temp;
void setup(void) 
{ 
 // start serial port 
 Serial.begin(9600); 
 Serial.println("Dallas Temperature IC Control Library Demo"); 
 // Start up the library 
 sensors.begin(); 
} 
void loop(void) 
{ 

 // call sensors.requestTemperatures() to issue a global temperature 
 // request to all devices on the bus 
/********************************************************************/
 Serial.print(" Requesting temperatures..."); 
 sensors.requestTemperatures(); // Send the command to get temperature readings 
 Serial.println("DONE"); 
/********************************************************************/
 Serial.print("Temperature is: ");
 Serial.print(sensors.getTempCByIndex(0));temp= sensors.getTempCByIndex(0); Serial.print("  "); Serial.println(temp);// Why "byIndex"?
   // You can have more than one DS18B20 on the same bus.  
   // 0 refers to the first IC on the wire 
if (analogRead(A0)>100)
{   if (temp>50)
   temp=100;
   if (temp<30) temp=0; temp=(12.5)*(temp-30); Serial.println(temp); if (temp>255)
   temp=255;
   if (temp<0)
   temp=0;
analogWrite(6,temp);
analogWrite(9,temp);
analogWrite(3,255-temp);
analogWrite(11,255-temp);}
else
{analogWrite(6,0);
analogWrite(9,0);
analogWrite(3,0);
analogWrite(11,0);}
   delay(100); 
}

کد زیر، رنگ RGB را محاسبه می کند. با توجه به سرعت انتقال حرارت ماگ خود، کمی با اعداد آن بازی کنید تا به نتیجه ی دلخواه برسید.

if (temp>50)
   temp=100;
   if (temp<30)
   temp=0;
   temp=(12.5)*(temp-30);

سرهم بندی

ابتدا باید کف ماگ خود را سوراخ کنید. تعداد سوراخ ها بسته به مدار شما متفاوت است. ما 3 سوراخ در کف ماگ ایجاد کردیم. یکی برای سنسور دما و دو سوراخ دیگر برای اتصال پیچ ها (الکترود ها). حتی می توانید این پروژه را بدون سوراخ کردن هم انجام دهید. می توانید یکی از الکترود ها را به یک کلید وصل کنید. بعد از نصب دماسنج و الکترود ها، باید آن ها را آب بندی کنید. پس از آن باید یک قاب برای زیر ماگ خود بسازید. این قاب باید ضد آب باشد و در برابر سرما و گرما مقاوم باشد. برای ایجاد پوسته ها ی زیر ماگ، ابتدا باید قطر ماگ خود را به صورت دقیق اندازه بگیرید. سپس دایره ای دقیقا به همان اندازه از جنس پلکسی گلس ببرید. (می توانید از برش لیزر استفاده کنید) ما از پلکسی به ضخامت 3 میلی متر استفاده کردیم. دقت کنید که یکی از پوسته ها باید به رنگی باشد که نور ال ای دی ها از آن عبور کند. پوسته ی دیگر را می توانید به رنگ دلخواه خود انتخاب کنید.

یک گام جلوتر

امکانات ماگ هوشمند خود را افزایش دهید.

  • برای ماگ خود یک علامت هشدار تعریف کنید که مثلا اگر نوشیدنی شما به دمای مناسبی برای نوشیدن رسید، رنگ ال ای دی ها سبز شود.
  • به زیر ماگ خود المنت اضافه کنید کنید تا هروقت نوشیدنی شما از حد مورد انتظار سردتر شد، ماگ به صورت خودکار نوشیدنی را گرم کند. (حتما نکات ایمنی را رعایت کنید!)

از این مطلب خوشتان آمد؟

آخرین مطالت و آموزش ها را در ایمیلتان دریافت کنید:

مطالب بیشتر

Comments (2)

  • سهیل نیک دهقان Reply

    سلام ضمن عرض خسته نباشید بنده این کد شمارو روی میکرو پرو ریختم اما توی سریال مانیتورینگ دمای محیط رو -127 میزنه
    سنسور دمای من LM35 هستش میخواستم بدونم کجای کد رو دستکاری کنم تا بتونم به دمای دقیقم برسم؟

    آوریل 26, 2021 at 12:57 ب.ظ
    • مهران ملکی Reply

      سلام دوست عزیز
      سنسور دمای استفاده شده در این آموزش سنسور DS18B20 بوده و کد و همچنین سیم‌بندی که انجام شده مخصوص این سنسور بوده. برای اینکه با یه سنسور دما دیگه هم به نتیجه مطلوب برسید لازمه کاملا کد و سیم‌بندی رو مطابق با سنسور خودتون تغییر بدید. میتونید برای اطلاع از نحوه کار کردن با سنسور دمای lm35 میتونید از لینک‌های زیر استفاده کنید:
      “https://create.arduino.cc/projecthub/infoelectorials/project-003-arduino-lm35-temperature-sensor-project-0a43ba”
      “https://www.instructables.com/Arduino-Temperature-Sensor-Using-LM35/”

      آوریل 27, 2021 at 10:12 ق.ظ

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

نشانی ایمیل شما منتشر نخواهد شد.