جدول المحتويات:

متعدد القنوات واي فاي الجهد والتيار متر: 11 خطوة (مع الصور)
متعدد القنوات واي فاي الجهد والتيار متر: 11 خطوة (مع الصور)

فيديو: متعدد القنوات واي فاي الجهد والتيار متر: 11 خطوة (مع الصور)

فيديو: متعدد القنوات واي فاي الجهد والتيار متر: 11 خطوة (مع الصور)
فيديو: أعلى مستوى وصلتوا في البرمجة 2024, يوليو
Anonim
متعدد القنوات واي فاي الجهد والتيار متر
متعدد القنوات واي فاي الجهد والتيار متر

عند استخدام اللوح ، غالبًا ما يحتاج المرء إلى مراقبة أجزاء مختلفة من الدائرة في وقت واحد.

لتجنب الألم الذي يضطر إلى لصق مجسات القياس المتعدد من مكان إلى آخر ، أردت تصميم جهد متعدد القنوات ومقياس تيار.

توفر لوحة Ina260 من Adafruit طريقة فعالة للغاية وفعالة للقيام بذلك. يحتوي على مقياس جهد وتيار دقيق للغاية مع جسر I2C متكامل (يوفر الكثير من المسامير عند الجمع بين 3 منهم!).

الشيء الوحيد المفقود هو العرض. ومن هنا جاء قرار ربط اللوحات بلوحة تطوير ESP32 ، والتي يمكنها بسهولة حمل خادم ويب لعرض العناصر المقاسة على شاشة الكمبيوتر / الهاتف المحمول.

اللوازم

3 × Ina260 لوح أدافروت

3 × دبابيس رأس مع دبابيس طويلة

6 أسلاك توصيل كحد أدنى

1 × ESP32 Wrover-B (أو أي لوحة Wifi أخرى مع دعم I2C)

2 × 19 رأس دبوس (إن وجد)

1 × ثنائي الفينيل متعدد الكلور أو بيرفبورد

1 × 3.3 فولت امدادات الطاقة

الخطوة 1: جندى لوحات INA الثلاثة

جندى لوحات INA الثلاثة
جندى لوحات INA الثلاثة

تتمثل الخطوة الأولى في تجميع لوحات INA260 الثلاثة.

يمكن العثور على تعليمات جيدة جدًا على موقع Adafruit. اتبع تعليمات تجميع Adafruit.

لتكون قادرًا على تكديسها فوق بعضها البعض ، استخدم رؤوس الدبوس الطويلة بدلاً من شرائط الدبوس التي تم توصيلها!

الخطوة 2: تكوين ثلاثة عناوين I2C مختلفة

تكوين ثلاثة عناوين I2C مختلفة
تكوين ثلاثة عناوين I2C مختلفة
تكوين ثلاثة عناوين I2C مختلفة
تكوين ثلاثة عناوين I2C مختلفة
تكوين ثلاثة عناوين I2C مختلفة
تكوين ثلاثة عناوين I2C مختلفة
تكوين ثلاثة عناوين I2C مختلفة
تكوين ثلاثة عناوين I2C مختلفة

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

هذا هو الحال أيضًا بالنسبة للوحات INA260 الثلاثة. يحتوي الجهاز على دبابيس عنوان ، A0 و A1 والتي يمكن توصيلها بـ GND أو VS أو SCL أو SDA لتعيين العنوان المطلوب. في ورقة البيانات الخاصة بشريحة INA260 من أدوات texas ، يمكن للمرء العثور على قائمة توصيلات الدبوس لكل عنوان من العناوين المحتملة الستة عشر.

تحدد لوحة adafruit هذا بـ 4 ألواح عن طريق تعريض وسادتين يمكن استخدامهما لسحب A0 و / أو A1 إلى VS. العنوان الافتراضي للوحة INA260 هو 0x40.

تكمل هذه الخطوة عن طريق تخصيص عناوين مختلفة للوحتين الأخريين:

عن طريق لحام لوحة A0 للوحة الثانية ، تقوم بتعيين عنوانه على: 0x41 (أو 1000001 BIN)

من خلال لحام اللوحة A1 للوحة الثالثة ، تقوم بتعيين العنوان إلى: 0x44 (أو 1000100 BIN)

الخطوة 3: قم بتوصيل لوحات Ina بـ ESP32

قم بتوصيل لوحات Ina بـ ESP32
قم بتوصيل لوحات Ina بـ ESP32

الآن وقد قمنا بتعيين عناوين I2C مختلفة لكل من لوحات INA ، فقد حان الوقت لتوصيلها بلوحة ESP32!

في الصورة أعلاه ، قم بالاتصال

1) دبوس VCC إلى 3.3V دبوس

2) دبوس GND إلى دبوس GND

3) دبوس SDA إلى دبوس GPIO 21

4) دبوس SCL إلى دبوس GPIO 22

لقد استخدمت تصميم ثنائي الفينيل متعدد الكلور لإجراء الاتصالات لأنه جزء من مشروع أكبر (مصدر جهد قابل للضبط عبر WiFi مع حد تيار قابل للتعديل - آمل أن أجعل تعليمات لهذا أيضًا).

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

الخطوة 4: قم بتثبيت لوحة ESP32 في Arduino IDE

قم بتثبيت لوحة ESP32 في Arduino IDE
قم بتثبيت لوحة ESP32 في Arduino IDE

الآن وقد قمنا بتوصيل الألواح ببعضها البعض ، فقد حان الوقت للتحقق من الاتصال.

سنفعل ذلك من خلال جمع عناوين I2C للوحات Ina.

تعمل لوحة ESP32 بشكل مثالي مع Arduino IDE.

لذلك دعونا نثبت لوحة ESP32 في Arduino باستخدام مدير اللوحة.

الخطوة 5: تحقق من اتصال Ina بـ ESP32 باستخدام الماسح الضوئي I2C

تحقق من اتصال Ina بـ ESP32 باستخدام ماسح I2C
تحقق من اتصال Ina بـ ESP32 باستخدام ماسح I2C

سنستخدم ماسحًا ضوئيًا بسيطًا لعنوان I2C لضمان الاتصال بين لوحات ESP32 و Ina260.

يمكن نسخ رمز الماسح الضوئي لعنوان I2C ولصقه في مشروع اردوينو فارغ.

تم أخذ الكود من موقع Arduino cc:

// -------------------------------------- // i2c_scanner // // الإصدار 1 / / يمكن العثور على هذا البرنامج (أو الكود الذي يشبهه) // في العديد من الأماكن. // على سبيل المثال في منتدى Arduino.cc. // المؤلف الأصلي لا يعرف. // الإصدار 2 ، Juni 2012 ، باستخدام Arduino 1.0.1 // تم تكييفه ليكون بسيطًا قدر الإمكان بواسطة مستخدم Arduino.cc Krodal // الإصدار 3 ، 26 فبراير 2013 // V3 بواسطة louarnold // الإصدار 4 ، 3 مارس 2013 ، باستخدام Arduino 1.0.3 // بواسطة مستخدم Arduino.cc Krodal. // التغييرات التي كتبها louarnold إزالتها. // تم تغيير عناوين المسح من 0… 127 إلى 1… 119 ، // وفقًا لماسح ضوئي i2c بواسطة Nick Gammon // https://www.gammon.com.au/forum/؟id=10896 // الإصدار 5 ، مارس 28 ، 2013 // كإصدار 4 ، لكن مسح العنوان الآن إلى 127. // يبدو أن المستشعر يستخدم العنوان 120. // الإصدار 6 ، 27 نوفمبر 2015. // تمت إضافة انتظار اتصال ليوناردو التسلسلي. // // // يختبر هذا الرسم التخطيطي عناوين 7 بت القياسية // قد لا تُرى الأجهزة ذات عنوان بت أعلى بشكل صحيح. // #include void setup () {Wire.begin ()؛ Serial.begin (9600) ؛ بينما (! المسلسل) ؛ // Leonardo: انتظر الشاشة التسلسلية Serial.println ("\ nI2C Scanner")؛ } حلقة فارغة () {خطأ بايت ، عنوان ؛ n الأجهزة. Serial.println ("مسح …") ؛ n الأجهزة = 0 ؛ لـ (العنوان = 1 ؛ العنوان <127 ؛ العنوان ++) {// يستخدم i2c_scanner القيمة المرجعة لـ // Write.endTransmisstion لمعرفة ما إذا كان // قد أقر الجهاز بالعنوان. Wire.beginTransmission (العنوان) ؛ خطأ = Wire.endTransmission () ؛ إذا (خطأ == 0) {Serial.print ("تم العثور على جهاز I2C في العنوان 0 ×") ؛ إذا (العنوان <16) Serial.print ("0") ؛ Serial.print (العنوان ، HEX) ؛ Serial.println ("!") ؛ nDevices ++ ؛ } else if (error == 4) {Serial.print ("خطأ غير معروف في العنوان 0x")؛ إذا (العنوان <16) Serial.print ("0") ؛ Serial.println (العنوان ، HEX) ؛ }} if (nDevices == 0) Serial.println ("لم يتم العثور على أجهزة I2C / n")؛ آخر Serial.println ("تم / n")؛ تأخير (5000) ؛ // انتظر 5 ثوانٍ للمسح التالي}

الخطوة السادسة: إنشاء مجلد خادم ويب HTML

إنشاء مجلد خادم ويب HTML
إنشاء مجلد خادم ويب HTML

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

يوفر Arduino IDE وظيفة لتحميل صفحات الويب التي تم إنشاؤها على ذاكرة الوصول العشوائي الخاصة بـ ESP32 مباشرة.

للقيام بذلك ، تحتاج إلى إنشاء مجلد "بيانات" أسفل مجلد مشروع Arduino. في حالتي ، هذا هو / Arduino / esp32_Power_supply_v1_implemented / data.

من المهم تسمية المجلد بالضبط باسم "البيانات" لأنه اسم المجلد الذي سيبحث عنه Arduino عند تحميل ملفات صفحة الويب إلى ESP.

الخطوة 7: قم بإنشاء صفحة ويب Power Monitor

HMTL هي لغة تسمح بتقديم نص في متصفح الويب. يتم حفظ ملف HTML تحت الامتداد htm (l). عادة ما يتم وضع تنسيق صفحة الويب في ملف منفصل (مثل ملف css). يتم عادةً وضع وظائف البرنامج التي تحتاجها صفحة الويب لتقديمها في ملف آخر (مثل ملف js لجافا سكريبت).

في مستند HTML الخاص بي ، قمت بتضمين النص والتنسيق وجافا سكريبت في ملف واحد. لذلك فهو ليس مثالًا جيدًا على كيفية إنشاء صفحة ويب ولكنه يخدم الأغراض. قمت بتسمية مستند HTML باسم "Index.htm".

يتم تضمين ملف ثانٍ في مجلد البيانات الخاص بي ، أي. PicoGraph.js. يتم توفير مكتبة PicoGraph بواسطة Vishnu Shankar B من RainingComputers وتتيح طريقة بسيطة جدًا وفعالة ومرنة لعرض الرسوم البيانية على صفحة ويب. لقد قمت بتعديل الرمز بشكل طفيف لخدمة غرضي بشكل أفضل.

ستلاحظ أن صفحة الويب بتنسيق HTML تتضمن أيضًا رمزًا للتحكم في إمدادات الجهد على لوحة PCB الخاصة بي. يتحكم رمز إمداد الجهد في مستوى الجهد لـ 5 دبابيس I / O. يمكنك تغيير الرمز لاستبعاد هذا أو يمكنك تركه في حالة عدم وجود تأثير.

يتم إرفاق كود html بهذه الخطوة كملف txt (لأن التعليمات لا تسمح بتحميل كود htm).

من أجل استخدام كود HTML ، يمكنك نسخه ولصقه في محرر نصوص (أستخدم Notepad ++) وحفظه باسم "Index.htm" ضمن مجلد "البيانات". أنت تفعل الشيء نفسه لملف picograph.txt ولكن إعادة تسميته إلى picograph.js

فيما يتعلق بملف HTML:

يتم استخدام وظيفة SndUpdate لإرسال الرسائل مرة أخرى وإعادة توجيهها من ESP إلى صفحة الويب.

تخدم الرسائل المرسلة من ESP وظيفة مزود الطاقة وهي خارج نطاق هذا التوجيه. تخدم الرسائل المرسلة إلى ESP قياسات لوحة Ina260.

var Msg = JSON.parse (xh.responseText) ، PG1_yrand0 = Msg. PG1_yrand0 ، PG2_yrand0 = Msg. PG2_yrand0 ، PG3_yrand0 = Msg. PG3_yrand0 ، PG4_yrand0 = Msg. PG4_yrand0 ، PG5_yrand0 = Msg. PG5_yrand0 ، PG6_yrand0 = Msg. PG6_yrand0 ،

يقرأ الكود أعلاه 6 أرقام من لوحة ESP32 ، أي. قياس الجهد ، قياس التيار من اللوحة الأولى ، متبوعًا بقياسين من الثاني وما إلى ذلك.

يتم تضمين الرسوم البيانية في ما يسمى حاويات مرنة ، والتي تسمح بتغيير حجم صفحة الويب بشكل مرن.

.flex-container {display: flex؛ لون الخلفية: cadetblue. التفاف المرن: التفاف. }.flex-container> div {background-color: # f1f1f1؛ الهامش: 10 بكسل ؛ الحشو: 20 بكسل ؛ حجم الخط: 20 بكسل ؛ عائلة الخطوط: "Seven Segment" ؛ وزن الخط: عريض ؛ }

يتكون محتوى كل حاوية من الحاويات المرنة على النحو التالي ، بما في ذلك الرسوم البيانية المضمنة.

(لاحظ أن المكان الذي تمت إزالته)

تسمية div لـ = "PG1_scale" المقياس: / اسم إدخال التسمية = "PG1_scale" القيمة = "10" brbr! - لوحة الرسم البياني للخط - نمط اللوحة = "الارتفاع: 100 بكسل ؛ الحد: 2 بكسل خالص # 000000 ؛ لون الخلفية: # فافافا " /اللوحة القماشية

! - div للمقولات / التسميات -

div / div div / div / div

القسم الأخير ذو الأهمية في ملف HTML يعمل مع مكتبة PicoGraph لعرض الأرقام:

var PG1_demograph = createGraph ("PG1_graphDemo"، ["Ch1"]، "V"، "PG1_graphLabels"، 20، 11، false، false، 11، "# e52b50") ؛ var PG2_demograph = createGraph ("PG2_graphDemo"، ["Ch1"]، "mA"، "PG2_graphLabels"، 20، 11، false، false، 11، "# e52b50") ؛ var PG3_demograph = createGraph ("PG3_graphDemo"، ["Ch2"]، "V"، "PG3_graphLabels"، 20، 11، false، false، 11، "# 008000") ؛ var PG4_demograph = createGraph ("PG4_graphDemo"، ["Ch2"]، "mA"، "PG4_graphLabels"، 20، 11، false، false، 11، "# 008000") ؛ // var PG5_demograph = createGraph ("PG5_graphDemo" ، ["Ch3"] ، "V" ، "PG5_graphLabels" ، 20 ، 11 ، false ، false ، 11 ، "# 0000ff") ؛ var PG6_demograph = createGraph ("PG6_graphDemo"، ["Ch3"]، "mA"، "PG6_graphLabels"، 20، 11، false، false، 11، "# 0000ff") ؛ / * تحديث القيم كل ثانية * / setInterval (updateEverySecond ، 1000) ؛ وظيفة updateEverySecond () {/ * احصل على قيم جديدة * / SndUpdate () ؛

/ * تحديث الرسم البياني * / PG1_demograph.update ([PG1_yrand0]، parseInt (byID ("PG1_scale"). value) + parseInt (byID ("PG1_scale"). value) / 10، "# e52b50") ؛ PG2_demograph.update ([PG2_yrand0]، parseInt (byID ("PG2_scale"). value) + parseInt (byID ("PG2_scale"). value) / 10، "# e52b50") ؛ PG3_demograph.update ([PG3_yrand0]، parseInt (byID ("PG3_scale"). value) + parseInt (byID ("PG3_scale"). value) / 10، "# 008000") ؛ PG4_demograph.update ([PG4_yrand0]، parseInt (byID ("PG4_scale"). value) + parseInt (byID ("PG4_scale"). value) / 10، "# 008000") ؛ // PG5_demograph.update ([PG5_yrand0]، parseInt (byID ("PG5_scale"). value) + // parseInt (byID ("PG5_scale"). value) / 10، "# 0000ff") ؛ PG6_demograph.update ([PG6_yrand0]، parseInt (byID ("PG6_scale"). value) + parseInt (byID ("PG6_scale"). value) / 10، "# 0000ff") ؛ var Watts = Math.round (PG1_yrand0 * PG2_yrand0 * 100) / 100 ؛ byID ("PG1_wattLabel"). innerHTML = `WATT: $ {Watts} mW`؛ var Watts = Math.round (PG3_yrand0 * PG4_yrand0 * 100) / 100 ؛ بواسطة ID ("PG3_wattLabel"). innerHTML = `WATT: $ {Watts} mW`؛ // var Watts = Math.round (PG5_yrand0 * PG6_yrand0 * 100) / 100 ؛ // byID ("PG5_wattLabel"). innerHTML = `WATT: $ {Watts} mW`؛ byID ("PG1_scale"). value = Math.floor (parseInt (byID ("PG1_scale"). value) / 2 + PG1_yrand0) ؛ byID ("PG2_scale"). value = Math.floor (parseInt (byID ("PG2_scale"). value) / 2 + PG2_yrand0) ؛ byID ("PG3_scale"). value = Math.floor (parseInt (byID ("PG3_scale"). value) / 2 + PG3_yrand0) ؛ byID ("PG4_scale"). value = Math.floor (parseInt (byID ("PG4_scale"). value) / 2 + PG4_yrand0) ؛ // byID ("PG5_scale"). value = Math.floor (parseInt (byID ("PG5_scale"). value) / 2 + PG5_yrand0) ؛ byID ("PG6_scale"). value = Math.floor (parseInt (byID ("PG6_scale"). value) / 2 + PG6_yrand0) ؛

عند دراسة الكود ، ستلاحظ أنني أستخدم 5 رسوم بيانية من الـ 6 فقط لغرضي. سيؤدي إلغاء التعليق على الأسطر اليمنى إلى تمكين الرسم البياني السادس.

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

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

الخطوة التالية هي تحميل صفحات الويب التي تم إنشاؤها في ESP32.

الخطوة 8: قم بتحميل صفحة الويب في ESP32

قم بتحميل صفحة الويب إلى ESP32
قم بتحميل صفحة الويب إلى ESP32

بعد الحصول على نتيجة مرضية ، حان الوقت لتحميل صفحة الويب في ESP32.

يمكنك القيام بذلك عن طريق حفظ "Index.htm" (صفحة الويب الخاصة بك) و "PicoGraph.js" في مجلد "البيانات" ضمن مشروع Arduino الخاص بك.

الخطوة التالية هي توصيل لوحة ESP32 بالكمبيوتر. بعد تحديد اللوحة الصحيحة ومنفذ COM ، حدد ESP32 Sketch Data Upload ضمن قائمة الأدوات في Arduino IDE.

سترى أن IDE سيبدأ عملية التحميل الخاصة به ، والتي يجب أن تؤدي إلى تحميل ناجح.

بجانب هذه الخطوة ، يتم تكوين وحدة التحكم الدقيقة ESP32 كخادم ويب.

الخطوة 9: تكوين ESP32 كخادم ويب

مرفقًا تجد رسم Arduino Ino الذي سيهيئ ESP32 كخادم ويب.

ستحتاج إلى استبدال SSID وكلمة المرور ذات الصلة بكلمة مرور جهاز التوجيه الخاص بك.

كما ذكرنا سابقًا ، يحتوي هذا المخطط أيضًا على الكود لتكوين صفحة الويب كوحدة تحكم لجانب مصدر الطاقة في PCB (في الواقع ، تكوين 5 دبابيس IO كدبابيس PWM والتحكم فيها من خلال تدفق الرسائل من صفحة الويب).

يعتمد الرسم على مخطط Webserver القياسي الذي طوره Hristo Gochkov.

بعض الشرح عن الكود.

ترتبط جميع الوظائف التالية بإعداد خادم الويب.

تنسيق السلسلة بايت (size_t bytes) سلسلة getContentType (اسم ملف سلسلة) يوجد bool (مسار سلسلة) bool handleFileRead (String path) void handleFileUpload () void handleFileDelete () void handleFileCreate () void handleFileList ()

كما أن الكود الأول في وظيفة setup () مرتبط بإعداد PWM وخادم الويب.

يعيّن الكود التالي وظيفة المقاطعة التي تخدم تدفقات الرسائل من صفحة الويب وإليها:

(يجب أن تتعرف على المعرفات من إنشاء صفحة الويب)

server.on ("/ SndUpdate"، HTTP_GET، () {

سلسلة رسالة = "{" ؛ msg + = "\" PG1_yrand0 / ":" + (سلسلة) Vina [1]؛ msg + = "، \" PG2_yrand0 / ":" + (سلسلة) Iina [1]؛ msg + = "، \" PG3_yrand0 / ":" + (سلسلة) Vina [0]؛ msg + = "، \" PG4_yrand0 / ":" + (سلسلة) Iina [0]؛ msg + = "، \" PG5_yrand0 / ":" + (سلسلة) Vina [2]؛ msg + = "، \" PG6_yrand0 / ":" + (سلسلة) Iina [2]؛ msg + = "}" ؛

server.send (200، "text / json"، Msg) ؛

هذا يبدأ الخادم:

server.begin () ،

الكتلة التالية من التعليمات البرمجية ، تقوم بتهيئة لوحات INA260:

// تهيئة INA260 if (! ina260_0x40.begin (0x40)) {Serial.println (F ("تعذر العثور على شريحة INA260 0x40")) ؛ // بينما (1) ؛ } Serial.println (F ("Found INA260 chip 0x40")) ؛ if (! ina260_0x41.begin (0x41)) {Serial.println (F ("تعذر العثور على شريحة 0x41 INA260")) ؛ // بينما (1) ؛ } Serial.println (F ("Found INA260 0x41 chip")) ؛ if (! ina260_0x44.begin (0x44)) {Serial.println (F ("تعذر العثور على شريحة INA260 0x44")) ؛ // بينما (1) ؛ } Serial.println (F ("Found INA260 chip 0x44")) ؛

ina260_0x40.setAveragingCount (INA260_COUNT_256) ،

ina260_0x40.setVoltageConversionTime (INA260_TIME_1_1_ms) ؛ ina260_0x40.setCurrentConversionTime (INA260_TIME_1_1_ms) ، ina260_0x40.setMode (INA260_MODE_CONTINUOUS) ، ina260_0x41.setAveragingCount (INA260_COUNT_256) ، ina260_0x41.setVoltageConversionTime (INA260_TIME_1_1_ms) ، ina260_0x41.setCurrentConversionTime (INA260_TIME_1_1_ms) ، ina260_0x41.setMode (INA260_MODE_CONTINUOUS) ، ina260_0x44.setAveragingCount (INA260_COUNT_256) ، ina260_0x44.setVoltageConversionTime (INA260_TIME_1_1_ms) ؛ ina260_0x44.setCurrentConversionTime (INA260_TIME_1_1_ms) ، ina260_0x44.setMode (INA260_MODE_CONTINUOUS) ،

في التعليمات البرمجية التكرارية ، تؤكد العبارة التالية معالجة رمز المقاطعة:

server.handleClient () ،

يرتبط الرمز التالي في عبارة الحلقة بوظيفة مصدر الطاقة.

الكود التالي في الحلقة () مثير للاهتمام مرة أخرى:

فينا [0] = ina260_0x40.readBusVoltage () / 1000.0f ؛ إينا [0] = ina260_0x40.readCurrent () ، فينا [1] = ina260_0x41.readBusVoltage () / 1000.0f ؛ إينا [1] = ina260_0x41.readCurrent () ، فينا [2] = ina260_0x44.readBusVoltage () / 1000.0f ؛ إينا [2] = ina260_0x44.readCurrent () ،

تجمع هذه العبارات وتجهز القياسات لنقلها إلى صفحة الويب عبر Server.on مكالمات المقاطعة (تحدث كل 1000 مللي ثانية ، والمحددة في نص جافا لصفحة الويب html java).

الخطوة 10: لقد انتهيت

انتهيت!
انتهيت!

يجب أن يؤدي تحميل الرسم التخطيطي إلى لوحة ESP32 إلى إنهاء الإعداد ويجب أن تكون شاشة الطاقة الخاصة بك نهائية!

ربما لاحظت أن تشغيل ESP32 يتم الآن عبر منفذ USB ، وهذا يرفع جزءًا كبيرًا من مزايا الاتصال المستند إلى WiFi مع مقاييس الجهد / التيار. ومن ثم ، فقد صنعت مصدر طاقة بسيطًا مبنيًا على LM317 من أجل ESP32. لقد احتفظت به خارج نطاق هذا التوجيه ، ولكن إذا كان هناك اهتمام ، فقد تصبح التعليمات التالية.

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

الخطوة 11: تشغيل ESP32

تشغيل ESP32
تشغيل ESP32

مع مصدر إلهام لبناء مصدر طاقة مستقل لجهاز ESP32 الخاص بك ، إذا لم يكن لديك أحد.

تعمل دائرة الطاقة بمصدر طاقة للكمبيوتر المحمول بجهد 19 فولت. يتطلب هذا تنحى الجهد على مرحلتين للحفاظ على تبديد الطاقة في LM317 تحت السيطرة. (حتى مع أحواض الحرارة!). لا تنس أيضًا تضمين مكثف 100 فائق التوهج أمام خط VCC_ESP لأن هذه المتحكمات الدقيقة لها تقلبات تيار كبيرة بالتأكيد عند بدء اتصال WiFi.

لاحظ عدم تشغيل ESP32 بأكثر من مصدر طاقة واحد في وقت واحد!

علاوة على ذلك ، إخلاء المسؤولية المعتاد ، ولكن الأهم من ذلك كله

استمتع!

يمكن العثور على جميع الملفات على جيثب الخاص بي:

موصى به: