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

ما الذي تحتاجه لصنع ميزان حرارة رقمي من اردوينو؟

يمكن العثور على كل هذه المكونات على مواقع الويب مثل eBay و Amazon.

لوحة اردوينو

يمكنك استخدام أي بطاقة Arduino ذات خرج 5 فولت لهذا المشروع. نحن نستخدم Arduino Pro Micro بحيث يكون مقياس الحرارة النهائي لدينا مضغوطًا ، ولكن يمكنك استخدام لوحة أكبر مثل Arduino Uno إذا كنت ترغب في تجنب اللحام لهذا المشروع.

DS18B20 مسبار درجة الحرارة

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

instagram viewer

شاشة OLED / LCD

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

أجزاء صغيرة إضافية

  • 4.7 كيلو (كيلو أوم) المقاوم
  • 28 إلى 22 AWG سلك معزول من السيليكون / PVC
  • لوح توصيل (اختياري لمن لا يرغبون في اللحام)

الأسلاك مقياس الحرارة DIY الخاص بك

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

توصيل مسبار درجة الحرارة DS18B20

يعد توصيل مسبار درجة الحرارة DS18B20 الخاص بك بشكل صحيح أمرًا حيويًا لهذا المشروع ، وتحتاج إلى التأكد من استخدام المقاوم 4.7K الذي ذكرناه سابقًا أو أن المسبار الخاص بك لن يعمل بشكل صحيح. يأتي المسبار بثلاثة أسلاك: أرضي (أسود عادةً) و VCC (أحمر عادةً) و Data.

  • يتصل VCC بدبوس 5 فولت على Arduino
  • يتصل الأرضي بدبوس GND على Arduino
  • يمكن توصيل البيانات بأي دبوس رقمي على Arduino (اخترنا الرقم الرقمي 15)
  • يجب أيضًا توصيل أسلاك البيانات و VCC ببعضها البعض باستخدام المقاوم 4.7 كيلو

توصيل شاشة I2C OLED

نظرًا لأننا نستخدم اتصال I2C بين شاشة OLED الخاصة بنا و Arduino ، فلا يتعين علينا سوى توصيل أربعة أسلاك قبل أن نبدأ في استخدام شاشة العرض الخاصة بنا: VCC و Ground و SDA و SCL. يحتوي كل أردوينو حديث تقريبًا على دبابيس SDA و SCL مدمجة ، مما يوفر القدرة على توصيل ما يصل إلى 128 مكونًا فريدًا من مكونات I2C بلوحة واحدة.

يحتوي Arduino Pro Micro على SDA على رقم التعريف الشخصي 2 و SCL على الرقم الرقمي 3 ، ولكن قد تحتاج إلى البحث عن مخطط pinout للوحة المحددة التي اخترتها قبل أن تبدأ.

  • يتصل VCC بدبوس 5 فولت على Arduino
  • يتصل الأرضي بدبوس GND على Arduino
  • تتصل SDA بدبوس SDA على Arduino
  • يتصل SCL بمسمار SCL الموجود في Arduino

اختبار دائرتك

من الأهمية بمكان أن تختبر الدائرة التي قمت بإنشائها قبل أن تبدأ في كتابة الكود النهائي لها ، ولكن يمكنك استخدام أمثلة المشاريع التي تأتي مع المكتبات التي تمت مناقشتها أدناه لاختبار الدائرة التي لديك مصنوع.

ترميز مستشعر درجة الحرارة وشاشة OLED

يعد ترميز مقياس الحرارة الرقمي DIY الخاص بك أصعب من توصيله بالأسلاك ، ولكن يمكن استخدام Arduino IDE لهذا الأمر لتسهيل الأمر.

اختيار المكتبات الصحيحة

  • مكتبة عرض OLED: نحن نستخدم مكتبة Adafruit_SH1106.h لعرضنا ، فهذه هي المكتبة التي تم تصميمها للعمل معها. شاشات OLED الأخرى قد تستخدم مكتباتهم الخاصة ، مثل مكتبة Adafruit_SSD1306.h ، ويمكنك عادةً معرفة أي منها تحتاجه من صفحة المنتج التي حصلت على شاشتك منها.
  • مسبار درجة الحرارة DS18B20: نحتاج إلى مكتبتين لمسبار درجة الحرارة لدينا. يتم استخدام DallasTemperature.h لجمع بيانات درجة الحرارة ، و OneWire.h لجعل الاتصال أحادي السلك ممكنًا.

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

#تتضمن  // عرض المكتبة
#تتضمن
#تتضمن // مكتبة التحقيق المؤقتة
# تعريف OLED_RESET -1
عرض Adafruit_SH1106 (OLED_RESET) ؛
#define ONE_WIRE_BUS 15 // دبوس سلك بيانات التحقيق المؤقت
OneWire oneWire (ONE_WIRE_BUS) ، // أخبر OneWire بالدبوس الذي نستخدمه
مستشعرات دالاس درجة الحرارة (وسلك واحد) ؛ // إشارة OneWire إلى درجة حرارة دالاس

بناء الوظائف

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

بمجرد الانتهاء ، يجب أن يبدو هذا مثل المقتطف أدناه.

الإعداد باطل() {
}
حلقة فارغة() {
}
عرض باطل () {
}
int Temp () {
}

ترميز شاشة OLED

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

الإعداد باطل() {
display.begin (SH1106_SWITCHCAPVCC، 0x3C) ؛ // التغيير بناءً على مكتبة العرض الخاصة بك
display.clearDisplay () ،
}

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

عرض باطل () {
display.clearDisplay () ،
int intTemp = Temp () ، // يستدعي وظيفة درجة الحرارة لدينا
display.setTextSize (3) ، // يعين حجم النص لدينا
display.setTextColor (WHITE) ، // يعين لون النص لدينا
display.setCursor (5 ، 5) ؛ // يعين موضع النص لدينا على الشاشة
display.print (intTemp) ؛ // يطبع القيمة التي توفرها وظيفة Temp
display.drawCircle (44، 7، 3، WHITE) ؛ // يرسم رمز الدرجة
display.setCursor (50، 5) ؛
display.print ("C") ؛ // يضيف C للإشارة إلى أن درجة حرارتنا بالدرجة المئوية
}

ترميز مسبار درجة الحرارة DS18B20

مثل شاشة العرض لدينا ، يحتاج مسبار درجة الحرارة أيضًا إلى رمز الإعداد لتهيئة المكون.

الإعداد باطل() {
display.begin (SH1106_SWITCHCAPVCC، 0x3C) ؛
display.clearDisplay () ،
أجهزة الاستشعار. beegin () ؛
}

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

int Temp () {
مجسات.طلب درجات الحرارة () ؛ // أرسل الأمر للحصول على درجات الحرارة
تعويم tempC = sensors.getTempCByIndex (0) ، // هذا يطلب درجة الحرارة بالدرجة المئوية ويخصصها إلى عدد عشري
int intTemp = (int) tempC ؛ // هذا يحول العدد العائم إلى عدد صحيح
إذا (tempC! = DEVICE_DISCONNECTED_C) // تحقق مما إذا كانت قراءتنا تعمل
{
عودة intTemp ؛ // إرجاع قيمة درجة الحرارة إلى وظيفة العرض
}
}

الانتهاء

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

#تتضمن  // عرض المكتبة
#تتضمن
#تتضمن // مكتبة التحقيق المؤقتة
# تعريف OLED_RESET -1
عرض Adafruit_SH1106 (OLED_RESET) ؛
#define ONE_WIRE_BUS 15 // دبوس سلك بيانات التحقيق المؤقت
OneWire oneWire (ONE_WIRE_BUS) ، // أخبر OneWire بالدبوس الذي نستخدمه
مستشعرات دالاس درجة الحرارة (وسلك واحد) ؛ // إشارة OneWire إلى درجة حرارة دالاس
الإعداد باطل() {
display.begin (SH1106_SWITCHCAPVCC، 0x3C) ؛
display.clearDisplay () ،
أجهزة الاستشعار. beegin () ؛
}
حلقة فارغة() {
عرض()؛ // يستدعي وظيفة العرض لدينا
}
عرض باطل () {
display.clearDisplay () ،
int intTemp = Temp () ، // يستدعي وظيفة درجة الحرارة لدينا
display.setTextSize (3) ، // يعين حجم النص لدينا
display.setTextColor (WHITE) ، // يعين لون النص لدينا
display.setCursor (5 ، 5) ؛ // يعين موضع النص لدينا على الشاشة
display.print (intTemp) ؛ // يطبع القيمة التي توفرها وظيفة Temp
display.drawCircle (44، 7، 3، WHITE) ؛ // يرسم رمز الدرجة
display.setCursor (50، 5) ؛
display.print ("C") ؛ // يضيف C للإشارة إلى أن درجة حرارتنا بالدرجة المئوية
}
int Temp () {
مجسات.طلب درجات الحرارة () ؛ // أرسل الأمر للحصول على درجات الحرارة
تعويم tempC = sensors.getTempCByIndex (0) ، // هذا يطلب درجة الحرارة بالدرجة المئوية ويخصصها إلى عدد عشري
int intTemp = (int) tempC ؛ // هذا يحول العدد العائم إلى عدد صحيح
إذا (tempC! = DEVICE_DISCONNECTED_C) // تحقق مما إذا كانت قراءتنا تعمل
{
عودة intTemp ؛ // إرجاع قيمة درجة الحرارة إلى وظيفة العرض
}
}

بناء ميزان حرارة رقمي DIY

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

15 مشروع اردوينو كبير للمبتدئين

هل أنت مهتم بمشاريع Arduino ولكنك لست متأكدًا من أين تبدأ؟ ستعلمك مشاريع المبتدئين هذه كيفية البدء.

اقرأ التالي

يشاركسقسقةبريد الالكتروني
مواضيع ذات صلة
  • افعلها بنفسك
  • اردوينو
  • إلكترونيات
عن المؤلف
صموئيل ل. غاربيت (تم نشر 35 مقالة)

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

المزيد من Samuel L. غاربيت

اشترك في نشرتنا الإخبارية

انضم إلى النشرة الإخبارية لدينا للحصول على نصائح تقنية ومراجعات وكتب إلكترونية مجانية وصفقات حصرية!

انقر هنا للاشتراك