সুচিপত্র:
- সরবরাহ
- ধাপ 1: তিনটি আইএনএ বোর্ড সোল্ডার
- ধাপ 2: তিনটি ভিন্ন I2C ঠিকানা কনফিগার করুন
- ধাপ 3: ইনা বোর্ডগুলিকে ESP32 এর সাথে সংযুক্ত করুন
- ধাপ 4: Arduino IDE এ ESP32 বোর্ড ইনস্টল করুন
- ধাপ 5: I2C স্ক্যানার ব্যবহার করে Ina থেকে ESP32 সংযোগ পরীক্ষা করুন
- ধাপ 6: HTML ওয়েবসাইট সার্ভার ফোল্ডার তৈরি করা
- ধাপ 7: পাওয়ার মনিটর ওয়েবপেজ তৈরি করুন
- ধাপ 8: ESP32- এ ওয়েবপেজ লোড করুন
- ধাপ 9: ওয়েব সার্ভার হিসাবে ESP32 কনফিগার করুন
- ধাপ 10: আপনি সম্পন্ন
- ধাপ 11: ESP32 পাওয়ারিং
ভিডিও: মাল্টি-চ্যানেল ওয়াইফাই ভোল্টেজ এবং বর্তমান মিটার: 11 ধাপ (ছবি সহ)
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 07:57
রুটিবোর্ডিং করার সময়, প্রায়শই সার্কিটের বিভিন্ন অংশ একবারে পর্যবেক্ষণ করা প্রয়োজন।
মাল্টিমিটার প্রোবগুলিকে এক জায়গা থেকে অন্য জায়গায় আটকে রাখার যন্ত্রণা এড়াতে, আমি একটি মাল্টি-চ্যানেল ভোল্টেজ এবং বর্তমান মিটার ডিজাইন করতে চেয়েছিলাম।
Adafruit থেকে Ina260 বোর্ড এটি করার জন্য একটি খুব কার্যকর এবং কার্যকর উপায় প্রদান করে। এটি একটি খুব নির্ভুল ভোল্টেজ এবং একটি সমন্বিত I2C সেতুর সাথে বর্তমান মিটার রয়েছে (তাদের মধ্যে 3 টি একত্রিত করার সময় প্রচুর পিন সংরক্ষণ করে!)।
শুধুমাত্র একটি জিনিস অনুপস্থিত ছিল একটি প্রদর্শন। অতএব বোর্ডগুলিকে একটি ESP32 ডেভেলপমেন্ট বোর্ডে সংযুক্ত করার সিদ্ধান্ত, যা সহজেই একটি পিসি/মোবাইল স্ক্রিনে পরিমাপকৃত আইটেমগুলি উপস্থাপন করতে একটি ওয়েব সার্ভার বহন করতে পারে।
সরবরাহ
3 x Ina260 adafruit বোর্ড
লম্বা পিনের সাথে 3 x হেডার পিন
ন্যূনতম 6 জাম্পার তার
1 x ESP32 Wrover-B (অথবা I2C সাপোর্ট সহ অন্য কোন ওয়াইফাই বোর্ড)
2 x 19 পিন পিন হেডার (প্রযোজ্য ক্ষেত্রে)
1 x PCB বা Perfboard
1 x 3.3 V পাওয়ার সাপ্লাই
ধাপ 1: তিনটি আইএনএ বোর্ড সোল্ডার
প্রথম ধাপ হল তিনটি INA260 বোর্ড একত্রিত করা।
অ্যাডাফ্রুট ওয়েবসাইটে খুব ভাল নির্দেশনা পাওয়া যাবে। Adafruit সমাবেশ নির্দেশাবলী অনুসরণ করুন।
একে অপরের উপরে স্ট্যাক করতে সক্ষম হওয়ার জন্য বিতরণকৃত পিন স্ট্রিপের পরিবর্তে লম্বা পিন হেডার ব্যবহার করুন!
ধাপ 2: তিনটি ভিন্ন I2C ঠিকানা কনফিগার করুন
I2C হল দুই-তারের ইন্টারফেসের জন্য একটি সিরিয়াল প্রোটোকল যা স্বল্প দূরত্বের উপর কম গতির ডিভাইসগুলিকে সংযুক্ত করে। একজন 127 টি ক্রীতদাসকে সংযুক্ত করতে পারে। একটি বাসে প্রতিটি ডিভাইস একটি অনন্য I2C ঠিকানা দ্বারা চিহ্নিত করা প্রয়োজন। একটি ডিভাইসের I2C ঠিকানা প্রায়ই একটি ডিভাইসের চিপে শক্ত তারযুক্ত হয়। একটি বাসে একই ডিভাইসগুলিকে সংযুক্ত করার জন্য, নির্মাতারা প্রায়ই পিনের কনফিগারেশন সোল্ডার করে I2C ঠিকানা পরিবর্তনের সম্ভাবনা ছেড়ে দেয়।
এটি তিনটি INA260 বোর্ডের ক্ষেত্রেও। ডিভাইসটিতে দুটি ঠিকানা পিন, A0 এবং A1 রয়েছে যা কাঙ্ক্ষিত ঠিকানা সেট করতে GND, VS, SCL বা SDA- এর সাথে সংযুক্ত হতে পারে। টেক্সাস যন্ত্র থেকে INA260 চিপের ডেটশীটে, 16 টি সম্ভাব্য ঠিকানার প্রত্যেকটির জন্য পিন সংযোগের তালিকা খুঁজে পেতে পারেন।
অ্যাডাফ্রুট বোর্ড দুটি প্যাড উন্মুক্ত করে 4 টি বোর্ডে সীমাবদ্ধ করে যা A0 এবং/অথবা A1 কে VS এ টানতে ব্যবহার করা যেতে পারে। INA260 বোর্ডের ডিফল্ট ঠিকানা হল 0x40।
আপনি অন্য দুটি বোর্ডে বিভিন্ন ঠিকানা বরাদ্দ করে এই ধাপটি সম্পন্ন করুন:
দ্বিতীয় বোর্ডের A0 প্যাড সোল্ডার করে আপনি তার ঠিকানা সেট করুন: 0x41 (অথবা 1000001 BIN)
তৃতীয় বোর্ডের A1 প্যাড সোল্ডার করে আপনি ঠিকানাটি বরাদ্দ করেন: 0x44 (বা 1000100 BIN)
ধাপ 3: ইনা বোর্ডগুলিকে ESP32 এর সাথে সংযুক্ত করুন
এখন যেহেতু আমরা প্রতিটি আইএনএ বোর্ডের জন্য আলাদা আই 2 সি ঠিকানা বরাদ্দ করেছি, এখন তাদের ইএসপি 32 বোর্ডের সাথে সংযুক্ত করার সময় এসেছে!
উপরের ছবি অনুযায়ী, সংযোগ করুন
1) VCC পিন থেকে 3.3V পিন
2) GND পিন থেকে GND পিন
3) SDA পিন থেকে GPIO পিন 21
4) এসসিএল পিন থেকে জিপিআইও পিন 22
আমি সংযোগ স্থাপনের জন্য একটি PCB নকশা ব্যবহার করেছি কারণ এটি একটি বৃহত্তর প্রকল্পের অংশ (একটি সামঞ্জস্যযোগ্য বর্তমান সীমাবদ্ধতার সাথে একটি ওয়াইফাই নিয়মিত ভোল্টেজ সরবরাহ - এটির জন্য একটি নির্দেশযোগ্য করার আশা করি)।
আপনি সংযোগের জন্য অন্য কোন উপায় ব্যবহার করতে পারেন, এটি একটি পারফোর্ড হতে পারে যা আপনি সোল্ডার আপ করেন বা ব্রেডবোর্ড ব্যবহার করেন। এগুলি উভয়ই ভাল কাজ করবে।
ধাপ 4: Arduino IDE এ ESP32 বোর্ড ইনস্টল করুন
এখন যেহেতু আমরা বোর্ডগুলিকে একে অপরের সাথে সংযুক্ত করেছি, এখন সময়টি সংযোগ পরীক্ষা করার।
আমরা ইনা বোর্ডগুলির I2C ঠিকানা সংগ্রহ করে তা করব।
ESP32 বোর্ড Arduino IDE এর সাথে পুরোপুরি কাজ করে।
তাই আসুন আমরা বোর্ড ম্যানেজার ব্যবহার করে আরডুইনোতে ESP32 বোর্ড ইনস্টল করি।
ধাপ 5: I2C স্ক্যানার ব্যবহার করে Ina থেকে ESP32 সংযোগ পরীক্ষা করুন
ESP32 এবং Ina260 বোর্ডের মধ্যে সংযোগ নিশ্চিত করার জন্য আমরা একটি সাধারণ I2C ঠিকানা স্ক্যানার ব্যবহার করব।
I2C ঠিকানা স্ক্যানার কোডটি একটি খালি Arduino প্রকল্পে আটকানো কপি করা যেতে পারে।
কোডটি Arduino cc ওয়েবসাইট থেকে নেওয়া হয়েছে:
// -------------------------------------- // i2c_scanner // // সংস্করণ 1/ / এই প্রোগ্রাম (বা কোড যা মনে হয়) // অনেক জায়গায় পাওয়া যাবে। // উদাহরণস্বরূপ Arduino.cc ফোরামে। // মূল লেখক জানেন না। // সংস্করণ 2, জুনি 2012, Arduino 1.0.1 ব্যবহার করে // Arduino.cc ব্যবহারকারী Krodal দ্বারা যতটা সম্ভব সহজ করার জন্য অভিযোজিত // সংস্করণ 3, ফেব্রুয়ারী 26 2013 // V3 by louarnold // সংস্করণ 4, 3 মার্চ, 2013, Arduino.cc ব্যবহারকারী Krodal দ্বারা Arduino 1.0.3 // ব্যবহার করে। // লাউনারোল্ড দ্বারা পরিবর্তনগুলি সরানো হয়েছে। // স্ক্যানিং ঠিকানা 0 থেকে পরিবর্তন… 127 থেকে 1… 119, // নিক গ্যামনের i2c স্ক্যানার অনুযায়ী // https://www.gammon.com.au/forum/?id=10896 // সংস্করণ 5, মার্চ 28, 2013 // সংস্করণ 4 হিসাবে, কিন্তু ঠিকানা এখন 127 তে স্ক্যান করে। // একটি সেন্সর ঠিকানা 120 ব্যবহার করে বলে মনে হয়। // সংস্করণ 6, নভেম্বর 27, 2015 // // // এই স্কেচটি স্ট্যান্ডার্ড 7-বিট ঠিকানা পরীক্ষা করে // উচ্চ বিট ঠিকানা সহ ডিভাইসগুলি সঠিকভাবে দেখা নাও যেতে পারে। // #অন্তর্ভুক্ত অকার্যকর সেটআপ () {Wire.begin (); Serial.begin (9600); যখন (! সিরিয়াল); // লিওনার্দো: সিরিয়াল মনিটরের জন্য অপেক্ষা করুন Serial.println ("I nI2C স্ক্যানার"); } অকার্যকর লুপ () {বাইট ত্রুটি, ঠিকানা; int nDevices; Serial.println ("স্ক্যানিং …"); nDevices = 0; জন্য (ঠিকানা = 1; ঠিকানা <127; ঠিকানা ++) {// i2c_scanner // এর রিটার্ন মান ব্যবহার করে Wire.beginTransmission (ঠিকানা); ত্রুটি = Wire.endTransmission (); যদি (ত্রুটি == 0) {Serial.print ("I2C ডিভাইস পাওয়া যায় ঠিকানা 0x"); যদি (ঠিকানা <16) Serial.print ("0"); Serial.print (ঠিকানা, HEX); Serial.println ("!"); n ডিভাইস ++; } অন্যথায় যদি (ত্রুটি == 4) {সিরিয়াল.প্রিন্ট ("ঠিকানা 0x এ অজানা ত্রুটি"); যদি (ঠিকানা <16) Serial.print ("0"); Serial.println (ঠিকানা, HEX); }} যদি (nDevices == 0) Serial.println ("কোন I2C ডিভাইস পাওয়া যায়নি / n"); অন্য সিরিয়াল.প্রিন্টলন ("সম্পন্ন / n"); বিলম্ব (5000); // পরবর্তী স্ক্যানের জন্য ৫ সেকেন্ড অপেক্ষা করুন}
ধাপ 6: HTML ওয়েবসাইট সার্ভার ফোল্ডার তৈরি করা
ESP32 একটি ওয়েব সার্ভার চালানোর সম্ভাবনা প্রদান করে। এটি কিছু ওয়েবপৃষ্ঠা ধরে রাখার জন্য বেশ বড় RAM মেমরিও সরবরাহ করে। (এটি স্বয়ংক্রিয়ভাবে ওয়েবপেজ ফাইলগুলিকে সংকুচিত করে)।
Arduino IDE তৈরি করা ওয়েবপৃষ্ঠাগুলি সরাসরি ESP32 এর RAM- এ আপলোড করার জন্য কার্যকারিতা প্রদান করে।
এটি করার জন্য, আপনাকে Arduino প্রকল্পের ফোল্ডারের নীচে একটি ফোল্ডার 'ডেটা' তৈরি করতে হবে। আমার ক্ষেত্রে এটি / Arduino / esp32_Power_supply_v1_implemented / ডেটা।
ফোল্ডারটিকে ঠিক 'ডেটা' নাম দেওয়া গুরুত্বপূর্ণ কারণ এটি ESP তে ওয়েবপেজ ফাইল আপলোড করার সময় ফোল্ডারের নাম Arduino খুঁজবে।
ধাপ 7: পাওয়ার মনিটর ওয়েবপেজ তৈরি করুন
এইচএমটিএল একটি ভাষা যা একটি ওয়েব ব্রাউজারে একটি পাঠ উপস্থাপন করতে দেয়। একটি HTML ফাইল এক্সটেনশন htm (l) এর অধীনে সংরক্ষিত হয়। একটি ওয়েবপৃষ্ঠার বিন্যাস সাধারণত একটি পৃথক ফাইলে রাখা হয় (যেমন css ফাইল)। একটি ওয়েবপৃষ্ঠা যে প্রোগ্রামের কার্যকারিতা অফার করতে চায় তা সাধারণত অন্য একটি ফাইলে রাখা হয় (যেমন, জাভাস্ক্রিপ্টের জন্য js ফাইল)।
আমার এইচটিএমএল ডকুমেন্টে আমি টেক্সট, ফরম্যাটিং এবং জাভাস্ক্রিপ্টকে একটি ফাইলে অন্তর্ভুক্ত করেছি। তাই এটি কিভাবে একটি ওয়েবপৃষ্ঠা তৈরি করতে পারে তার একটি ভাল উদাহরণ নয় কিন্তু এটি উদ্দেশ্যগুলি পূরণ করে। আমি HTML ডকুমেন্টের নাম দিলাম 'Index.htm'।
আমার ডেটাফোল্ডারে একটি দ্বিতীয় ফাইল অন্তর্ভুক্ত করা হয়েছে, যেমন। PicoGraph.js। পিকোগ্রাফ লাইব্রেরি রেইনিং কম্পিউটার থেকে বিষ্ণু শঙ্কর বি দ্বারা সরবরাহ করা হয়েছে এবং একটি ওয়েবপেজে গ্রাফ উপস্থাপনের জন্য একটি খুব সহজ, কিন্তু কার্যকর এবং নমনীয় উপায়ে অনুমতি দেয়। আমি আমার উদ্দেশ্য আরও ভালভাবে সম্পাদনের জন্য কোডটি সামান্য সংশোধন করেছি।
আপনি লক্ষ্য করবেন যে HTML ওয়েবপেজে আমার PCB বোর্ডে ভোল্টেজ সরবরাহ নিয়ন্ত্রণের কোডও অন্তর্ভুক্ত রয়েছে। ভোল্টেজ সাপ্লাই কোড 5 I/O পিনের ভোল্টেজ লেভেল নিয়ন্ত্রণ করে। আপনি এটি বাদ দিতে কোড পরিবর্তন করতে পারেন অথবা কোন প্রভাব না থাকলে আপনি এটি ছেড়ে দিতে পারেন।
এইচটিএমএল কোডটি এই ধাপে একটি txt ফাইল হিসাবে সংযুক্ত করা হয়েছে (যেহেতু নির্দেশাবলী এইচটিএম কোড আপলোড করার অনুমতি দেয় না)।
এইচটিএমএল কোড ব্যবহার করার জন্য আপনি এটি একটি টেক্সট এডিটরে কপি করে পেস্ট করুন (আমি নোটপ্যাড ++ ব্যবহার করি) এবং এটি 'ডাটা' ফোল্ডারের অধীনে 'Index.htm' হিসাবে সংরক্ষণ করুন। আপনি picograph.txt ফাইলের জন্য একই কাজ করেন কিন্তু এটির নাম পরিবর্তন করে picograph.js করুন
HTML ফাইলের ব্যাপারে:
একটি ফাংশন SndUpdate 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;
উপরের কোডটি ESP32 বোর্ড থেকে 6 টি সংখ্যা পড়ে, যেমন। ভোল্টেজ পরিমাপ, প্রথম বোর্ড থেকে বর্তমান পরিমাপ, তারপরে দ্বিতীয় থেকে দুটি পরিমাপ এবং তাই।
গ্রাফগুলি তথাকথিত ফ্লেক্স-পাত্রে এম্বেড করা আছে, যা ওয়েবপেজের নমনীয় আকার পরিবর্তন করার অনুমতি দেয়।
.flex-container {display: flex; পটভূমি রঙ: ক্যাডেটব্লু; flex-wrap: মোড়ানো; }.flex-container> div {background-color: #f1f1f1; মার্জিন: 10px; প্যাডিং: 20px; ফন্ট সাইজ: 20px; font-family: "সেভেন সেগমেন্ট"; ফন্ট-ওজন: সাহসী; }
প্রতিটি ফ্লেক্স কন্টেইনারের বিষয়বস্তু অনুসরণ করা হয়েছে, এমবেডেড গ্রাফ সহ।
(মনে রাখবেন যেখানে সরানো হয়েছে)
div লেবেল = "PG1_scale" স্কেল:/লেবেল ইনপুট নাম = "PG1_scale" মান = "10" brbr!: #ফাফফা; " /ক্যানভাস
!-কিংবদন্তি/লেবেলের জন্য div-
div /div div /div /div
এইচটিএমএল ফাইলের গুরুত্বের শেষ অংশটি পিকোগ্রাফ লাইব্রেরির সাথে সংখ্যা উপস্থাপনের জন্য কাজ করে:
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")। মান)+ parseInt (byID ("PG1_scale")। মান)/10, "#e52b50"); PG2_demograph.update ([PG2_yrand0], parseInt (byID ("PG2_scale")। মান)+ parseInt (byID ("PG2_scale")। মান)/10, "#e52b50"); PG3_demograph.update ([PG3_yrand0], parseInt (byID ("PG3_scale")। মান)+ parseInt (byID ("PG3_scale")। মান)/10, "#008000"); PG4_demograph.update ([PG4_yrand0], parseInt (byID ("PG4_scale")। মান)+ parseInt (byID ("PG4_scale")। মান)/10, "#008000"); // PG5_demograph.update ([PG5_yrand0], parseInt (byID ("PG5_scale")। মান)+ // parseInt (byID ("PG5_scale")। মান)/10, "#0000ff"); PG6_demograph.update ([PG6_yrand0], parseInt (byID ("PG6_scale")। মান)+ parseInt (byID ("PG6_scale")। মান)/10, "#0000ff"); var Watts = Math.round (PG1_yrand0 * PG2_yrand0 * 100)/100; byID ("PG1_wattLabel")। var Watts = Math.round (PG3_yrand0 * PG4_yrand0 * 100)/100; byID ("PG3_wattLabel")। ভিতরের HTML = `WATT: $ {Watts} mW`; // var ওয়াটস = Math.round (PG5_yrand0 * PG6_yrand0 * 100)/100; // byID ("PG5_wattLabel")। ভিতরের HTML = `WATT: $ {Watts} mW`; byID ("PG1_scale")। মান = Math.floor (parseInt (byID ("PG1_scale")। মান)/2+PG1_yrand0); byID ("PG2_scale")। মান = Math.floor (parseInt (byID ("PG2_scale")। মান)/2+PG2_yrand0); byID ("PG3_scale")। মান = Math.floor (parseInt (byID ("PG3_scale")। মান)/2+PG3_yrand0); byID ("PG4_scale")। মান = Math.floor (parseInt (byID ("PG4_scale")। মান)/2+PG4_yrand0); // byID ("PG5_scale")। মান = Math.floor (parseInt (byID ("PG5_scale")। মান)/2+PG5_yrand0); byID ("PG6_scale")। মান = Math.floor (parseInt (byID ("PG6_scale")। মান)/2+PG6_yrand0);
কোডটি অধ্যয়ন করলে আপনি লক্ষ্য করবেন আমি আমার উদ্দেশ্যে 6 এর মাত্র 5 টি গ্রাফ ব্যবহার করছি। সঠিক লাইনগুলি মন্তব্য না করলে 6th ষ্ঠ গ্রাফ সক্ষম হবে।
যারা এইচটিএমএল এর সাথে অভিজ্ঞ নন তাদের জন্য, এই পদক্ষেপটি কঠিন হতে পারে। তবে এটি এইচটিএমএল জগতে একটি চমৎকার ভূমিকা হিসেবে কাজ করতে পারে। আমি জানি কারণ এটি ছিল আমার তৈরি করা প্রথম পৃষ্ঠা। তাই ভয় পাবেন না। যারা আমাদের অধীনে অভিজ্ঞ তাদের জন্য ক্ষমাশীল হোন।
ওয়েবপেজে আপনার কাজের ফলাফল আপনার এইচটিএমএল খোলার মাধ্যমে পর্যালোচনা করা যেতে পারে, এটি আপনার ব্রাউজারে লোড হবে এবং তার চেহারা দেখাবে। আপনি আপনার ব্রাউজারে F12 কী টিপে সম্ভাব্য ত্রুটিগুলি পরীক্ষা করতে পারেন, ডিবাগিং উইন্ডো প্রদর্শিত হবে। কিভাবে ডিবাগ করবেন তার সম্পূর্ণ ব্যাখ্যা এই নির্দেশের আওতার বাইরে, কিন্তু ওয়েবপৃষ্ঠা ওয়েবপৃষ্ঠা / জাভাস্ক্রিপ্ট ডিবাগিংয়ের প্রথম পদক্ষেপ হিসাবে সহায়ক হতে পারে।
পরবর্তী ধাপ হল তৈরি করা ওয়েবপৃষ্ঠাগুলি ESP32 এ লোড করা।
ধাপ 8: ESP32- এ ওয়েবপেজ লোড করুন
সন্তোষজনক ফলাফল পাওয়ার পর, ESP32- এ ওয়েবপেজ আপলোড করার সময় এসেছে।
আপনি আপনার Arduino প্রকল্পের অধীনে 'Index.htm' (আপনার ওয়েবপেজ) এবং 'PicoGraph.js' কে 'ডেটা' ফোল্ডারে সংরক্ষণ করে এটি করেন।
পরবর্তী ধাপ হল কম্পিউটারে ESP32 বোর্ড সংযুক্ত করা। সঠিক বোর্ড এবং COM পোর্ট নির্বাচন করার পর, Arduino IDE- এ টুলস মেনুর অধীনে ESP32 স্কেচ ডেটা আপলোড নির্বাচন করুন।
আপনি দেখতে পাবেন যে IDE তার আপলোড প্রক্রিয়া শুরু করবে, যা একটি সফল লোড হতে পারে।
এই ধাপের পরেরটি হল ESP32 মাইক্রোকন্ট্রোলারকে একটি ওয়েব সার্ভার হিসেবে কনফিগার করা।
ধাপ 9: ওয়েব সার্ভার হিসাবে ESP32 কনফিগার করুন
সংযুক্ত আপনি Arduino Ino স্কেচ খুঁজে পাবেন যা ESP32 কে একটি ওয়েব সার্ভার হিসাবে কনফিগার করবে।
আপনাকে SSID এবং সংশ্লিষ্ট পাসওয়ার্ড আপনার রাউটারের পাসওয়ার্ড দিয়ে প্রতিস্থাপন করতে হবে।
ইতিমধ্যেই উল্লেখ করা হয়েছে যে এই স্কেচে পিসিবি -র পাওয়ার সাপ্লাই সাইডের জন্য ওয়েবপৃষ্ঠাকে একটি নিয়ামক হিসাবে কনফিগার করার কোডও রয়েছে (আসলে, 5 IO পিনকে PWM পিন হিসাবে কনফিগার করা এবং ওয়েবপেজ থেকে বার্তা প্রবাহের মাধ্যমে তাদের নিয়ন্ত্রণ করা)।
স্কেচটি হ্রিস্টো গোচকভের তৈরি স্ট্যান্ডার্ড ওয়েব সার্ভার স্কেচের উপর ভিত্তি করে তৈরি।
কোডের কিছু ব্যাখ্যা।
নিম্নলিখিত ফাংশনগুলি ওয়েব সার্ভার স্থাপনের সাথে সম্পর্কিত।
স্ট্রিং ফরম্যাটবাইটস (সাইজ_টি বাইটস)
এছাড়াও সেটআপ () ফাংশনের প্রথম কোডটি PWM এবং ওয়েব সার্ভার সেটআপের সাথে সম্পর্কিত।
নিচের কোডটি ইন্টারাপ্ট ফাংশন সেট করে যা ওয়েবপেজে বার্তা প্রবাহের জন্য এবং সেগুলি সরবরাহ করে:
(আপনার ওয়েবপৃষ্ঠা সৃষ্টি থেকে শনাক্তকারীদের চিনতে হবে)
server.on ("/SndUpdate", HTTP_GET, () {
স্ট্রিং Msg = "{"; Msg+ = "\" PG1_yrand0 / ":"+ (স্ট্রিং) ভিনা [1]; Msg+ = "," PG2_yrand0 / ":"+ (স্ট্রিং) আইনা [1]; Msg+ = "," PG3_yrand0 / ":"+ (স্ট্রিং) ভিনা [0]; Msg+ = ", \" PG4_yrand0 / ":"+ (স্ট্রিং) আইনা [0]; Msg+ = "," PG5_yrand0 / ":"+ (স্ট্রিং) ভিনা [2]; Msg+ = "," PG6_yrand0 / ":"+ (স্ট্রিং) আইনা [2]; বার্তা+= "}";
server.send (200, "text/json", Msg);
এটি সার্ভারটি শুরু করে:
server.begin ();
কোডের পরবর্তী ব্লক, INA260 বোর্ডগুলি আরম্ভ করে:
// INA260 আরম্ভ যদি (! Ina260_0x40.begin (0x40)) {Serial.println (F ("INA260 0x40 চিপ খুঁজে পাওয়া যায়নি")); // যখন (1); } Serial.println (F ("পাওয়া INA260 চিপ 0x40")); যদি (! ina260_0x41.begin (0x41)) {Serial.println (F ("0x41 INA260 চিপ খুঁজে পাওয়া যায়নি")); // যখন (1); } Serial.println (F ("পাওয়া INA260 0x41 চিপ")); যদি (! ina260_0x44.begin (0x44)) {Serial.println (F ("INA260 0x44 চিপ খুঁজে পাওয়া যায়নি")); // যখন (1); } Serial.println (F ("পাওয়া INA260 চিপ 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 ();
এই বিবৃতিগুলি সার্ভারের মাধ্যমে ওয়েবপেজে স্থানান্তরের জন্য পরিমাপ সংগ্রহ করে এবং সেট করে।
ধাপ 10: আপনি সম্পন্ন
ESP32 বোর্ডে স্কেচ আপলোড করা, সেটআপ চূড়ান্ত করা উচিত এবং আপনার পাওয়ার মনিটর চূড়ান্ত হওয়া উচিত!
আপনি হয়তো লক্ষ্য করেছেন যে ESP32 কে পাওয়ার করা এখন ইউএসবি পোর্টের মাধ্যমে করা হয়, এটি আপনার ভোল্টেজ / কারেন্ট মিটারের সাথে ওয়াইফাই ভিত্তিক সংযোগের সুবিধার একটি বড় অংশকে উন্নত করে। অতএব, আমি ESP32 এর জন্য একটি সহজ LM317 ভিত্তিক ভোল্টেজ নিয়ন্ত্রিত বিদ্যুৎ সরবরাহ করেছি। আমি এটিকে এই নির্দেশের সুযোগের বাইরে রেখেছি কিন্তু যদি আগ্রহ থাকে তবে পরবর্তী নির্দেশযোগ্য হয়ে উঠতে পারে।
পরবর্তী ধাপে আমি ইতিমধ্যে বিদ্যুৎ সরবরাহের জন্য ইলেকট্রনিক সার্কিট প্রদান করেছি যা অনুপ্রেরণা হিসেবে কাজ করতে পারে।
ধাপ 11: ESP32 পাওয়ারিং
আপনার ইএসপি 32 এর জন্য একা একা পাওয়ারসোর্স তৈরির অনুপ্রেরণা সহ, যদি আপনার কাছে কেউ পড়ে না থাকে।
পাওয়ার সার্কিট 19V ল্যাপটপ পাওয়ার সাপ্লাই এর কাজ করে। এটি LM317 এর বিদ্যুৎ অপচয় নিয়ন্ত্রণে রাখার জন্য দুটি ধাপে ভোল্টেজ ধাপ নিচে নামতে বলে। (এমনকি তাপ ডুবেও!)। এছাড়াও VCC_ESP লাইনের সামনে 100uF ক্যাপাসিটরের সংযোজন করতে ভুলবেন না কারণ ওয়াইফাই সংযোগ শুরু করার সময় সেই মাইক্রোকন্ট্রোলারদের অবশ্যই প্রচুর কারেন্ট সুইং থাকে।
একবারে একাধিক পাওয়ার সোর্স দিয়ে ESP32 কে পাওয়ার না করার জন্য নোট করুন!
আরও সাধারণ দায় অস্বীকার, কিন্তু সব থেকে বেশি
আনন্দ কর!
আমার GitHub- এ সব ফাইল পাওয়া যাবে:
প্রস্তাবিত:
USB, ফ্ল্যাশলাইট, কম্পোনেন্ট টেস্টার এবং বিল্ড-ইন চার্জার সহ পোর্টেবল মিনি মাল্টি ভোল্টেজ PSU: 6 টি ধাপ
ইউএসবি, ফ্ল্যাশলাইট, কম্পোনেন্ট টেস্টার এবং বিল্ড-ইন চার্জার সহ পোর্টেবল মিনি মাল্টি ভোল্টেজ পিএসইউ: আমার প্রথম নির্দেশাবলীতে আপনাকে স্বাগতম! এই নির্দেশের সাহায্যে আপনি একটি ডোজি/সস্তা সৌর বিদ্যুৎ ব্যাঙ্ক (কিছু অতিরিক্ত অংশ সহ) উপকারী কিছুতে রূপান্তর করতে সক্ষম। এমন কিছু যা আপনি প্রতিদিন ব্যবহার করতে পারেন, যেমন আমি করি, কারণ এটি ব্যবহার করা সত্যিই দুর্দান্ত! অধিকাংশই
INA219 ভোল্টেজ/বর্তমান সেন্সরের সাথে সিনিলিংক ওয়াইফাই সুইচ পরিবর্তন: 11 ধাপ
INA219 ভোল্টেজ/বর্তমান সেন্সরের সাথে সিনিলিংক ওয়াইফাই স্যুইচ পরিবর্তন: সিনিলিংক XY-WFUSB ওয়াইফাই ইউএসবি সুইচ একটি সংযুক্ত ছোট ডিভাইস যা দূর থেকে সংযুক্ত ইউএসবি ডিভাইস চালু/বন্ধ করতে পারে। দুlyখজনকভাবে এটি সরবরাহের ভোল্টেজ পরিমাপ করার ক্ষমতা বা সংযুক্ত ডিভাইসের বর্তমান ব্যবহার করার অভাব রয়েছে।
মধ্যে পার্থক্য (বিকল্প বর্তমান এবং সরাসরি বর্তমান): 13 টি ধাপ
এর মধ্যে পার্থক্য আপনি কি এসি জানেন? এসি কিসের জন্য দাঁড়ায়? এটা কি ডিসি ব্যবহারযোগ্য? এই গবেষণায় আমরা বিদ্যুতের ধরন, উৎস, প্রয়োগের মধ্যে পার্থক্য জানতে পারব
হাইফাই মাল্টি রুম ওয়াইফাই এবং ব্লুটুথ স্পিকার: 10 টি ধাপ (ছবি সহ)
হাইফাই মাল্টি-রুম ওয়াইফাই এবং ব্লুটুথ স্পিকার: ওয়াই-ফাই-সংযুক্ত স্পিকার ব্লুটুথ অপশনগুলির তুলনায় উল্লেখযোগ্যভাবে ভাল অডিও গুণমান সরবরাহ করতে সক্ষম। তারা অডিও বিষয়বস্তু চালানোর আগে সংকুচিত করে না, যা শব্দের উপর নেতিবাচক প্রভাব ফেলতে পারে, কারণ এটি বিশদ স্তরের মাত্রা কমিয়ে দেয়
পরিবর্তনশীল ভোল্টেজ এবং বর্তমান বিদ্যুৎ সরবরাহ: 5 টি ধাপ
ভেরিয়েবল ভোল্টেজ এবং কারেন্ট পাওয়ার সাপ্লাই: সমস্ত ধাপের জন্য উপরের ভিডিওটি দেখুন। হোমমেড পাওয়ার সাপ্লাই, এলইডি, মোটর এবং অন্যান্য ইলেকট্রনিক্স পরীক্ষার জন্য আদর্শ। ব্যবহৃত সামগ্রীর তালিকা:- ডুয়েল মিটার এখানে বা এখানে- ডিসি মডিউল- 10 কে স্পষ্টতা পটেনশিয়োমিটার এখানে বা এখানে বা- সাধারণ 10k পোটেন্টিওমিটার