المؤلف: بيتر جنسن
هذه هي محاولتي الأولى في مشروع إنترنت الأشياء "المفيد". لقد كان لديّ Arduino Uno لفترة من الوقت ، لكنني لم أستخدمه حقًا لأي شيء ، باستثناء المرور عبر تعليمي LED الوامض. لقد حان الوقت لجلبه للاستخدام. أجد أنه من المفيد التفكير في فكرة المشروع ثم البحث عن المعلومات التي تحتاجها عند الحاجة إليها. بالطبع ، غالبًا ما تجد أن الآخرين قد فعلوا شيئًا مشابهًا ، لكن هذا جيد ، ستظل تتعلم من العملية.
أردت جهازًا لقياس استهلاك الطاقة في منزلي وجعله يبلغ عن خدمة "سحابة" عندما تتغير الأمور ؛ تشغيل الأضواء/الإيقاف ، وما إلى ذلك ، أردت أيضًا عرضًا على المربع ، لذلك يمكنني قراءة ماهية استهلاك الطاقة الحالية.
لقد بدأت بتثبيت مستشعرات حالية إلى دبوس إدخال تمثيلي ؛ مثله:
المصدر: OpenEnergyMonitor.org
بالنسبة للمعايرة ، كنت أستخدم مقياسًا متعدد القدر الذي كان قادرًا على قياس ما يصل إلى 10A وتوصيله بسلك كان يعمل على تشغيل مصباح لمبة ثلاثة. يمكن تشغيل كل من المصابيح وإيقافها بشكل فردي. مع 60 واط في المقابس ، يمكنني الحصول على عينات لـ 60W و 120W و 180W.
لاحظ أن المستشعر الحالي يجب أن يتجول فقط في سلك واحد ، من أجل أن يمر تيار التيار المتردد عبر هذا السلك للحث على التيار في المستشعر.
التيار المقاس هو التيار الذي يمر عبر خط الطاقة الذي يلفه المستشعر الحالي.
إذا كان كل ما تفعله في وظيفة loop() في رسم Arduino الخاص بك هو استدعاء analogRead() وتخزين النتيجة بعيدًا في المخزن المؤقت للذاكرة ، فستتمكن من الحصول على حوالي 100 عينة خلال دورة واحدة (60 هرتز - 16.7 مللي ثانية). يعمل Arduino في 16 ميجا هرتز. يجب أن يكون ذلك كافيًا لحساب قيمة الجذر المربع (RMS) للمدخلات بدقة إلى حد ما.
لماذا تحتاج قيمة RMS؟ المدخلات على دبوس الإدخال التناظري هو انخفاض الجهد فوق المقاوم الحمل/العبء. يتناسب انخفاض الجهد هذا مباشرة مع التيار يمر عبر خط الطاقة الذي يتم قياسه في وقت القياس.
عندما يختلف التيار والجهد مع مرور الوقت ، يتم حساب الطاقة كمتوسط قوة خلال فترة موجة الجيوب الأنفية 60 هرتز ، وذلك باستخدام قيم RMS لـ I و V:
يتم الحفاظ على مكون V RMS ثابتًا بواسطة شركة الطاقة على 120 فولت ، وبالتالي فإن القيمة المثيرة للاهتمام هي قيمة I RMS . المحولات التناظرية إلى الرقمية Arduino هي 10 بتات ، وتم تصميم الدوائر بحيث تكون منتصف نقطة إدخال الجيوب الأنفية 2.5 فولت ، والتي يجب أن تؤدي إلى قراءة ~ 511. إذا كانت القراءات متباعدة بالتساوي في الوقت المناسب ، فيمكن حساب قيمة i rms على النحو التالي:
عندما يكون n هو عدد العينات التي تتطلبها لتغطية الفترة الكاملة لموجة الجيوب الأنفية 60 هرتز ، فإن K هو ثابت للمعايرة سيتم تحديده بعد قياس قيم I RMS الفعلية بمقياس متعدد ، و V I هي القيم التي يتم إرجاعها بواسطة المكالمات إلى analogRead()
يمكن العثور على مزيد من المعلومات حول الرياضيات هنا: ويكيبيديا
<تودو: أدخل صورة لقياس الاختبار>
لقد اشتريت كل ما أحتاجه على Amazon Prime. إذا لم تكن مشتركًا رئيسيًا ، فقد ينتهي بك الأمر إلى دفع المزيد. بالنسبة لبعض العناصر ، كان من المنطقي شراء أكثر من وحدة واحدة ، نظرًا لأنه لم يكن سوى بضعة دولارات ، ومن الجيد دائمًا أن يكون لديك قطع غيار في حال كنت تقلى. أيضًا ، إذا كنت ترغب في إنشاء وحدة ثانية (أو ثالثة) ، فلديك بالفعل ما تحتاجه.
| غرض | التكلفة الإجمالية | تكلفة الوحدة |
|---|---|---|
| Arduino Pro Mini (3 عبوات) | 11 دولار | 4 دولارات |
| وحدة تزويد الطاقة 3.3V/5V (5 عبوات) | 9 دولارات | 2 دولار |
| ESP8266 ESP-01 (4 عبوات) | 14 دولار | 4 دولارات |
| 2x SCT-013-000 مستشعر تيار التيار المتردد غير الغازي | 26 دولار | 13 دولار |
| وحدة عرض 16x2 LCD | 6 دولارات | 6 دولارات |
| 110VAC-> محول 9V | 6 دولارات | 6 دولارات |
| 10pcs 4x6cm الجانب الأولي PCB | 7 دولارات | 1 دولار |
| 10pcs 3.5mm مركبات ثنائي الفينيل متعدد الكلور | 8 دولارات | 2 دولار |
| متفرقات: مكثف ، مقاومات ، زر ، أسلاك | ~ 2 دولار | 2 دولار |
| المجموع | 89 دولار | 40 دولار |
إليكم كيف قمت بتسجيل كل شيء معًا:
لقد استخدمت برنامج Digikey Scheme-IT لإنشاء مخطط أسلاك الأجهزة أعلاه. يعمل في متصفح!
هناك بعض الأشياء التي يجب الإشارة إليها:
المعلومات الموضحة في خطوط LCD من 2 خط من خلال هذه المعلومات ، عندما يتم الضغط على الزر:
إذا تم اكتشاف مطبعة طويلة عند عرض "الخيارات المتقدمة" ، يتم تضمين هذه الشاشات الإضافية في الدوران:
من أجل تغيير حالة التشغيل/الإيقاف أو إعادة تعيين البيانات ، يجب إجراء الضغط لفترة طويلة على الزر.
القوة الكلية | خط السلطة |
الخط الحالي | إجمالي استخدام الطاقة منذ إعادة تعيينه الأخير |
عنوان IP المحلي | اضغط الطويل على الخيارات المتقدمة |
انتقال wifi ON/OFF | نقل كل قيمة عينة |
انتقال في التقدم |
يبدو أن عرض/واجهة المتصفح حاليًا هكذا:

تمثل الخطوط السوداء والحمراء الطاقة المستمدة من كل من المرحلتين القادمة إلى المنزل. ستذهب أزرار السهم الأيسر والأيمن في الأعلى إلى اليوم السابق أو في اليوم التالي. إذا كنت في يوم اليوم ، فسيتم جلب بيانات جديدة. لا حاجة لضرب "التحديث"!
إليك بعض الأشياء التي يمكن اشتقاقها من هذا:
استهلاك الاستعداد "الأسود" هو حوالي 125 واط ، و "الأحمر" هو 25W. هذا هو السحب الطفيلي لجميع الأجهزة الموجودة في وضع الاستعداد (التلفزيون ، الميكروويف ، أجهزة الكمبيوتر ، كاميرات الويب ، إلخ)
النمط المربع لأعلى/لأسفل على خط "الأسود" هو الضاغط في الثلاجة تشغيل وإيقاف.
استيقظت في حوالي الساعة 6 صباحًا وبدأت في تشغيل الأنوار والتلفزيون. التلفزيون يستمد من خط "الأسود".
الارتفاع في "الأحمر" هو مروحة ثاني أكسيد الكربون على سخان المياه الخاص بي. يمتد سخان المياه لمدة 10 دقائق تقريبًا
الارتفاع الأصغر بعد ارتفاع سخان الماء هو فتح باب الجراج.
لقد استخدمت OpenScad لتصميم مربع. ملف .scad وملفات .stl في هذا الريبو. يبدو أن المربع الذي يحتوي على قواطع للشاشة والزر والموصلات المختلفة:

إمدادات الطاقة القشرية
تسبب الاعتماد على مصدر الطاقة من USB في بعض التقلبات في قراءات الدبوس التناظرية. أيضًا ، من أجل توفير الطاقة لـ ESP-01 ، كنت بحاجة إلى عرض 3.3 فولت. لا يحتوي Arduino Pro Mini على منظم جهد 3.3V ، مثل UNO. تتناسب وحدة تزويد الطاقة غير المكلفة للغاية مع الفاتورة ، ويبدو أنها توفر قوة مستقرة بما يكفي لضمان قراءات مستقرة.
معدل باود ESP8266 ESP-01
اضطررت إلى استخدام اثنين من دبابيس I/O الرقمية على Arduino للاتصال التسلسلي بين Arduino ووحدة ESP-01. هناك حاجة إلى دبابيس TX/RX العادية لمواجهة البرنامج على Arduino. عند استخدام الوحدة النمطية للبرمامات مع دبابيس I/O الرقمية ، لم يكن من الممكن الحصول على رابط اتصال موثوق به إلى ESP-01 بمعدل باود 115200 الافتراضي. نظرًا لأن كمية تبادل البيانات بين Arduino و ESP-01 محدود إلى حد ما ، فقد حددت معدل الباود إلى باود آمن 9600.
نفاد الذاكرة على Arduino
Arduino لديه فقط 2K ذاكرة ذاكرة الوصول العشوائي. يتم استخدام RAM لجميع البيانات العالمية وبيانات المكدس وحتى بيانات السلسلة الثابتة. يقوم برنامج التحويل البرمجي Atmel 328 GCC بعمل جيد يلغي جميع التعليمات البرمجية والبيانات الميتة ، وأنا مندهش للغاية من أنه يمكنك بالفعل تشغيل برنامج C ++ 1000+ في تلك الكمية الصغيرة من ذاكرة الوصول العشوائي. لا يتطلب الأمر بعض العبث لجعله لائقًا.
new لتخصيص الكائنات:String : منظر أعلى | موصلات إمدادات الطاقة |
موصلات CT | هوائي جزء من ESP8266 |
عرض أسفل | عرض أسفل بدون أردوينو |
العرض السفلي بدون Arduino و ESP8266 | ![]() |
زر وشاشة LCD متصلة بأعلى | ![]() |
PCB أسفل الجانب | صندوق مع غطاء |
here's some code
هذا طاولة:
| 1 | 2 | | | | | ADADF | ADFADF |