Სარჩევი:

მრავალარხიანი Wifi ძაბვა და მიმდინარე მეტრი: 11 ნაბიჯი (სურათებით)
მრავალარხიანი Wifi ძაბვა და მიმდინარე მეტრი: 11 ნაბიჯი (სურათებით)

ვიდეო: მრავალარხიანი Wifi ძაბვა და მიმდინარე მეტრი: 11 ნაბიჯი (სურათებით)

ვიდეო: მრავალარხიანი Wifi ძაბვა და მიმდინარე მეტრი: 11 ნაბიჯი (სურათებით)
ვიდეო: #1 როგორ დავაპროგრამოთ Outseal Arduino PLC (დაწყება) 2024, ივლისი
Anonim
მრავალარხიანი Wifi ძაბვა და მიმდინარე მეტრი
მრავალარხიანი Wifi ძაბვა და მიმდინარე მეტრი

ბორბორდინგის დროს ხშირად საჭიროა ერთდროულად აკონტროლოთ მიკროსქემის სხვადასხვა ნაწილი.

ტკივილის თავიდან აცილების მიზნით, მულტიმეტრის ზონდები ერთი ადგილიდან მეორეზე რომ გამყარდეს, მინდოდა შემექმნა მრავალარხიანი ძაბვისა და დენის მრიცხველი.

Ina260 დაფა ადაფრუტიდან იძლევა ამის ძალიან ეფექტურ და ეფექტურ გზას. ის შეიცავს ძალიან ზუსტ ძაბვას და მიმდინარე მრიცხველს ინტეგრირებული I2C ხიდით (ზოგავს უამრავ ქინძისთავს 3 მათგანის კომბინირებისას!).

ერთადერთი რაც აკლდა იყო ჩვენება. აქედან გამომდინარე გადაწყვეტილება დაფების ESP32 განვითარების დაფაზე გადასატანად, რომელსაც შეუძლია ადვილად ატაროს ვებ სერვერი, რათა წარმოადგინოს გაზომილი ნივთები კომპიუტერზე/მობილურ ეკრანზე.

მარაგები

3 x Ina260 adafruit დაფა

3 x სათაურის ქინძისთავები გრძელი ქინძისთავებით

მინიმუმ 6 ჯუმბერის მავთული

1 x ESP32 Wrover-B (ან ნებისმიერი სხვა Wifi დაფა I2C მხარდაჭერით)

2 x 19 პინიანი სათაური (ასეთის არსებობის შემთხვევაში)

1 x PCB ან Perfboard

1 x 3.3 V კვების ბლოკი

ნაბიჯი 1: შეაერთეთ სამი INA დაფა

შეაერთეთ სამი INA დაფა
შეაერთეთ სამი INA დაფა

პირველი ნაბიჯი არის სამი INA260 დაფის შეკრება.

ძალიან კარგი ინსტრუქცია შეგიძლიათ ნახოთ ადაფრუტის ვებსაიტზე. მიჰყევით ადაფრუტის შეკრების ინსტრუქციას.

იმისათვის, რომ შეძლოთ მათი ერთმანეთზე დადება, გამოიყენეთ გრძელი სათაურები, ვიდრე მიწოდებული ქინძისთავები!

ნაბიჯი 2: სამი განსხვავებული I2C მისამართის კონფიგურაცია

სამი განსხვავებული I2C მისამართის კონფიგურაცია
სამი განსხვავებული I2C მისამართის კონფიგურაცია
სამი განსხვავებული I2C მისამართის კონფიგურაცია
სამი განსხვავებული I2C მისამართის კონფიგურაცია
სამი განსხვავებული I2C მისამართის კონფიგურაცია
სამი განსხვავებული I2C მისამართის კონფიგურაცია
სამი განსხვავებული I2C მისამართის კონფიგურაცია
სამი განსხვავებული 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: დააკავშირეთ Ina დაფები ESP32– თან

შეაერთეთ Ina დაფები ESP32– თან
შეაერთეთ Ina დაფები ESP32– თან

ახლა, როდესაც ჩვენ მივანიჭეთ სხვადასხვა I2C მისამართები თითოეულ INA დაფაზე, დროა შევაერთოთ ისინი ESP32 დაფაზე!

ზემოთ მოცემულ სურათზე დააკავშირეთ

1) VCC პინი 3.3V პინზე

2) GND პინი GND პინზე

3) SDA პინი GPIO პინ 21 -ზე

4) SCL პინი GPIO პინზე 22

მე გამოვიყენე PCB დიზაინი კავშირების დასამყარებლად, რადგან ის უფრო დიდი პროექტის ნაწილია (WiFi რეგულირებადი ძაბვის მიწოდება რეგულირებადი დენის შეზღუდვით - ვიმედოვნებ, რომ ეს ასევე იქნება ინსტრუქციული).

თქვენ შეგიძლიათ გამოიყენოთ ნებისმიერი სხვა გზა დასაკავშირებლად, ეს შეიძლება იყოს პერფორი, რომელიც შეაერთეთ ან გამოიყენეთ დაფა. ორივე კარგად იმუშავებს.

ნაბიჯი 4: დააინსტალირეთ ESP32 დაფა Arduino IDE– ში

დააინსტალირეთ ESP32 დაფა Arduino IDE– ში
დააინსტალირეთ ESP32 დაფა Arduino IDE– ში

ახლა, როდესაც ჩვენ დავამატეთ დაფები ერთმანეთს, დროა შეამოწმოთ კავშირი.

ჩვენ ამას გავაკეთებთ ინას დაფების I2C მისამართების შეგროვებით.

ESP32 დაფა მშვენივრად მუშაობს Arduino IDE– სთან.

მოდით, დავაყენოთ ESP32 დაფა არდუინოში დაფის მენეჯერის გამოყენებით.

ნაბიჯი 5: შეამოწმეთ Ina to ESP32 კავშირი I2C სკანერის გამოყენებით

შეამოწმეთ Ina to ESP32 კავშირი I2C სკანერის გამოყენებით
შეამოწმეთ Ina to ESP32 კავშირი I2C სკანერის გამოყენებით

ჩვენ გამოვიყენებთ მარტივ I2C მისამართის სკანერს, რათა უზრუნველვყოთ კავშირი ESP32- სა და Ina260 დაფებს შორის.

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 1.0.3 // გამოყენებით Arduino.cc მომხმარებლის Krodal. // ცვლილებები ლუარნოლდის მიერ ამოღებულია. // მისამართების სკანირება შეიცვალა 0… 127 – დან 1… 119 – მდე, // i2c სკანერის მიხედვით ნიკ გამონ // https://www.gammon.com.au/forum/?id=10896 // ვერსია 5, მარტი 28, 2013 // როგორც მე –4 ვერსია, მაგრამ მისამართი სკანირდება ახლა 127. // სენსორი, როგორც ჩანს, იყენებს მისამართს 120. // ვერსია 6, 27 ნოემბერი, 2015. // დაემატა ელოდება ლეონარდოს სერიულ კომუნიკაციას. // // // ეს ესკიზი ამოწმებს სტანდარტულ 7-ბიტიან მისამართებს // უფრო მაღალი ბიტის მისამართის მქონე მოწყობილობებმა შეიძლება სათანადოდ არ ნახოთ. // #include void setup () {Wire.begin (); სერიული.დაწყება (9600); ხოლო (! სერიული); // ლეონარდო: დაელოდეთ სერიულ მონიტორს Serial.println ("\ nI2C სკანერი"); } void loop () {ბაიტი შეცდომა, მისამართი; int n მოწყობილობები; Serial.println ("სკანირება …"); n მოწყობილობები = 0; for (მისამართი = 1; მისამართი <127; მისამართი ++) {// i2c_scanner იყენებს // the. Wire.begin გადაცემა (მისამართი); შეცდომა = Wire.endTransmission (); if (შეცდომა == 0) {Serial.print ("I2C მოწყობილობა ნაპოვნია მისამართზე 0x"); if (მისამართი <16) Serial.print ("0"); Serial.print (მისამართი, HEX); Serial.println ("!"); n მოწყობილობები ++; } else if (შეცდომა == 4) {Serial.print ("უცნობი შეცდომა მისამართი 0x"); if (მისამართი <16) Serial.print ("0"); Serial.println (მისამართი, HEX); }} if (nDevices == 0) Serial.println ("I2C მოწყობილობა არ მოიძებნა / n"); სხვაგან Serial.println ("შესრულებულია / n"); დაგვიანება (5000); // დაელოდეთ 5 წამს შემდეგ სკანირებას}

ნაბიჯი 6: შექმენით HTML ვებ სერვერის საქაღალდე

HTML ვებ სერვერის საქაღალდის შექმნა
HTML ვებ სერვერის საქაღალდის შექმნა

ESP32 უზრუნველყოფს ვებ სერვერის გაშვების შესაძლებლობას. ის ასევე უზრუნველყოფს საკმაოდ დიდ RAM მეხსიერებას ზოგიერთი ვებ გვერდის შესანახად. (ის ავტომატურად შეკუმშავს ვებ - გვერდის ფაილებს).

Arduino IDE უზრუნველყოფს ფუნქციონირებას პირდაპირ ვებ – გვერდების ESP32– ის RAM– ზე ატვირთვისთვის.

ამისათვის თქვენ უნდა შექმნათ საქაღალდე "მონაცემები" Arduino პროექტის საქაღალდის ქვეშ. ჩემს შემთხვევაში ეს არის / Arduino / esp32_Power_supply_v1_implemented / data.

მნიშვნელოვანია დაასახელოთ საქაღალდე ზუსტად „მონაცემები“, რადგან ეს არის საქაღალდის სახელი, რომელსაც Arduino ეძებს ვებ – გვერდის ფაილების ESP– ში ატვირთვისას.

ნაბიჯი 7: შექმენით Power მონიტორის ვებ გვერდი

HMTL არის ენა, რომელიც საშუალებას გაძლევთ წარმოადგინოთ ტექსტი ვებ ბრაუზერში. HTML ფაილი ინახება გაფართოების htm (l). ვებ გვერდის ფორმატირება ჩვეულებრივ თავსდება ცალკე ფაილში (მაგ. Css ფაილი). პროგრამის ფუნქციონირება, რომელიც ვებგვერდს უნდა შესთავაზოს, ჩვეულებრივ მოთავსებულია სხვა ფაილში (მაგ. Js ფაილი, javascript- ისთვის).

ჩემს HTML დოკუმენტში შევიტანე ტექსტი, ფორმატირება და Javascript ერთ ფაილში. ამრიგად, ეს არ არის კარგი მაგალითი იმისა, თუ როგორ უნდა შექმნათ ვებ გვერდი, მაგრამ ის ემსახურება მიზნებს. მე დავასახელე HTML დოკუმენტი "Index.htm".

მეორე ფაილი შედის ჩემს მონაცემთა საქაღალდეში, ე.ი. პიკოგრაფი. Js. PicoGraph ბიბლიოთეკა მოწოდებულია ვიშნუ შანკარ 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- კონტეინერებში, რაც იძლევა ვებგვერდის მოქნილი ზომის შეცვლის საშუალებას.

.flex-container {ჩვენება: flex; ფონის ფერი: cadetblue; flex-wrap: გადატანა; }.flex-container> div {background-color: #f1f1f1; ზღვარი: 10 პიქსელი; ბალიში: 20px; შრიფტის ზომა: 20px; font-family: "შვიდი სეგმენტი"; font-weight: bold; }

თითოეული მოქნილი კონტეინერის შინაარსი შედგენილია შემდეგნაირად, ჩადგმული გრაფიკების ჩათვლით.

(გაითვალისწინეთ, რომ ამოღებულია)

div label for = "PG1_scale" Scale:/label input name = "PG1_scale" value = "10" brbr!-canvas for thr graph-canvas style = "height: 100px; border: 2px solid #000000; background-color: #fafafa; " /ტილო

!-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"). მნიშვნელობა)+ 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"). innerHTML = `WATT: $ {Watts} mW`; var Watts = Math.round (PG3_yrand0 * PG4_yrand0 * 100)/100; byID ("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"). მნიშვნელობა = 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 გრაფიკს ვიყენებ ჩემი მიზნისთვის. მარჯვენა ხაზების კომენტარის გაუქმება საშუალებას მისცემს მე -6 გრაფიკს.

მათთვის, ვისაც html არ აქვს გამოცდილება, ეს ნაბიჯი შეიძლება რთული აღმოჩნდეს. თუმცა, ეს შეიძლება იყოს კარგი შესავალი HTML სამყაროში. მე ვიცი, რადგან ეს იყო პირველი გვერდი, რაც მე შევქმენი. ასე რომ ნუ გეშინია. ვინც ჩვენზე გამოცდილია, იყავით მიმტევებელი.

ვებგვერდზე თქვენი მუშაობის შედეგი შეიძლება გადახედოთ თქვენი html გახსნით, ის ჩაიტვირთება თქვენს ბრაუზერში და აჩვენებს მის გარეგნობას. თქვენ შეგიძლიათ შეამოწმოთ შესაძლო შეცდომები თქვენს ბრაუზერში F12 ღილაკის დაჭერით, გამოჩნდება გამართვის ფანჯარა. სრული განმარტება, თუ როგორ უნდა მოხდეს გამართვა, ამ ინსტრუქციის ფარგლებში არ არის, მაგრამ ვებ გვერდი შეიძლება გამოსადეგი იყოს როგორც პირველი ნაბიჯი ვებგვერდის / javascript გამართვისთვის.

შემდეგი ნაბიჯი არის შექმნილი ვებ - გვერდების ჩატვირთვა ESP32– ში.

ნაბიჯი 8: ჩატვირთეთ ვებ გვერდი ESP32– ში

ჩადეთ ვებგვერდი ESP32– ში
ჩადეთ ვებგვერდი ESP32– ში

დამაკმაყოფილებელი შედეგის მიღების შემდეგ, დროა ატვირთოთ ვებ გვერდი ESP32– ში.

თქვენ ამას აკეთებთ 'Index.htm' (თქვენი ვებ გვერდი) და 'PicoGraph.js' თქვენი მონაცემების საქაღალდეში თქვენი Arduino პროექტის ქვეშ.

შემდეგი ნაბიჯი არის ESP32 დაფის კომპიუტერთან დაკავშირება. მას შემდეგ რაც შეარჩიეთ სწორი დაფა და COM პორტი, შეარჩიეთ ESP32 Sketch Data Upload Tools მენიუში Arduino IDE.

თქვენ ნახავთ, რომ IDE დაიწყებს ატვირთვის პროცესს, რამაც უნდა გამოიწვიოს წარმატებული დატვირთვა.

ამ ნაბიჯის შემდეგ არის ESP32 მიკროკონტროლის კონფიგურაცია, როგორც ვებ სერვერი.

ნაბიჯი 9: დააკონფიგურირეთ ESP32 როგორც ვებ სერვერი

მიმაგრებულია Arduino Ino ესკიზი, რომელიც დააკონფიგურირებს ESP32 როგორც ვებ სერვერს.

თქვენ უნდა შეცვალოთ SSID და შესაბამისი პაროლი თქვენი როუტერის პაროლით.

როგორც უკვე აღვნიშნეთ, ეს ესკიზი ასევე შეიცავს კოდს ვებ – გვერდის კონფიგურაციისთვის, როგორც PCB– ს დენის წყაროს კონტროლერი (ფაქტობრივად, 5 IO ქინძის კონფიგურაცია როგორც PWM ქინძისთავები და მათი გაკონტროლება ვებ გვერდიდან შეტყობინებების ნაკადის საშუალებით).

ესკიზი დაფუძნებულია ვებ სერვერის სტანდარტულ ესკიზზე, რომელიც შემუშავებულია ჰრისტო გოჩკოვის მიერ.

რაღაც ახსნა კოდზე.

შემდეგი ფუნქციები დაკავშირებულია ვებ სერვერის დაყენებასთან.

სიმებიანი ფორმატიბაიტი (ზომა_ტი ბაიტი) სტრიქონი getContentType (სიმებიანი ფაილის სახელი) bool არსებობს (სიმებიანი გზა) bool სახელური ფაილი წაკითხვა (სიმებიანი ბილიკი) void handleFileUpload () void handleFileDelete () void handleFileCreate () void handleFileList ()

ასევე setup () ფუნქციის პირველი კოდი დაკავშირებულია PWM და Webserver დაყენებასთან.

შემდეგი კოდი ადგენს შეწყვეტის ფუნქციას, რომელიც ემსახურება შეტყობინებების ნაკადებს ვებ გვერდიდან და მისგან:

(თქვენ უნდა ამოიცნოთ იდენტიფიკატორი ვებგვერდის შექმნიდან)

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]; 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 ("ნაპოვნია INA260 ჩიპი 0x40")); if (! ina260_0x41.begin (0x41)) {Serial.println (F ("0x41 INA260 ჩიპი ვერ ვიპოვე")); // ხოლო (1); } Serial.println (F ("ნაპოვნია INA260 0x41 ჩიპი"); if (! 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 ();

ეს განცხადებები აგროვებს და ადგენს მზად ზომებს ვებგვერდზე სერვერის საშუალებით გადასაცემად. ზარების შეწყვეტისას (ხდება ყოველ 1000 msms, დაყენებულია ვებგვერდზე html java სკრიპტში).

ნაბიჯი 10: თქვენ დასრულებული ხართ

თქვენ დასრულებული ხართ!
თქვენ დასრულებული ხართ!

ესკიზის ატვირთვა ESP32 დაფაზე უნდა დასრულდეს კონფიგურაცია და თქვენი Power მონიტორი უნდა იყოს საბოლოო!

თქვენ ალბათ შენიშნეთ, რომ ESP32– ის ჩართვა ხდება USB პორტის საშუალებით, რაც აძლიერებს WiFi– ზე დაფუძნებული კავშირის უპირატესობების დიდ ნაწილს თქვენს ძაბვას / მიმდინარე მრიცხველებს. აქედან გამომდინარე, მე გავაკეთე მარტივი LM317 ძაბვის რეგულირებადი კვების წყარო ESP32– ისთვის. მე შევინახე ის ამ სასწავლო ინსტრუქციის ფარგლებს გარეთ, მაგრამ თუ არსებობს ინტერესი, ის შეიძლება გახდეს შემდეგი ინსტრუქტორი.

მომდევნო ეტაპზე მე უკვე უზრუნველვყო ელექტროენერგიის მიწოდება ელექტროენერგიის მიწოდებისთვის, რომელიც შეიძლება შთაგონების წყარო იყოს.

ნაბიჯი 11: ESP32- ის ჩართვა

იკვებება ESP32
იკვებება ESP32

ეს არის შთაგონება, რომ ავაშენოთ დამოუკიდებელი ენერგიის წყარო თქვენი ESP32– ისთვის, თუკი ის არ გაქვთ გარშემო.

დენის წრე მუშაობს 19 ვ ლეპტოპის კვების ბლოკზე. ეს ითხოვს ორეტაპიანი ძაბვის შემცირებას იმისათვის, რომ LM317– ის ენერგიის გაფრქვევა კონტროლის ქვეშ იყოს. (თუნდაც სითბოს ჩაძირვით!). ასევე არ უნდა დაგვავიწყდეს, რომ ჩავრთოთ 100uF კონდენსატორი VCC_ESP ხაზის წინ, რადგან ამ მიკროკონტროლერებს აქვთ უზარმაზარი მიმდინარე ცვლილებები, რა თქმა უნდა WiFi კავშირის დაწყებისას.

გაითვალისწინეთ, რომ ESP32 არ მუშაობს ერთზე მეტ ენერგიაზე ერთდროულად!

შემდგომში ჩვეულებრივი პასუხისმგებლობის უარყოფა, მაგრამ ყველაზე მეტად

Გაერთე!

ყველა ფაილი შეგიძლიათ იხილოთ ჩემს GitHub– ზე:

გირჩევთ: