Բովանդակություն:
- Պարագաներ
- Քայլ 1. erոդեք INA- ի երեք տախտակները
- Քայլ 2. Կարգավորեք երեք տարբեր I2C հասցեներ
- Քայլ 3. Միացրեք Ina տախտակները ESP32- ին
- Քայլ 4. Տեղադրեք ESP32 խորհուրդը Arduino IDE- ում
- Քայլ 5. Ստուգեք Ina- ն ESP32 կապին `օգտագործելով I2C սկաները
- Քայլ 6: Ստեղծեք HTML վեբ սերվերի պանակ
- Քայլ 7: Ստեղծեք Power Monitor վեբ էջ
- Քայլ 8: Տեղադրեք վեբ էջը ESP32- ում
- Քայլ 9. Կարգավորեք ESP32- ը որպես վեբ սերվեր
- Քայլ 10: Դուք կատարված եք:
- Քայլ 11: ESP32- ի սնուցում
Video: Բազմալիքային Wifi լարման և ընթացիկ հաշվիչ ՝ 11 քայլ (նկարներով)
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:46
Հաց ուտելիս հաճախ անհրաժեշտ է միանգամից վերահսկել շրջանի տարբեր մասերը:
Մուլտիմետր զոնդերը մի տեղից մյուսը կպցնելու ցավից խուսափելու համար ես ուզում էի նախագծել բազմաալիքային լարման և հոսանքի հաշվիչ:
Ադաֆրուտի Ina260 տախտակը դրա համար տալիս է շատ արդյունավետ և արդյունավետ միջոց: Այն պարունակում է շատ ճշգրիտ լարման և հոսանքի հաշվիչ `ինտեգրված I2C կամրջով (խնայելով շատ կապում դրանցից 3 -ը համատեղելիս):
Միակ բանը, որ պակասում էր, ցուցադրումն էր: Հետևաբար, վահանակները ESP32 զարգացման տախտակի վրա միացնելու որոշումը, որը կարող է հեշտությամբ կրել վեբ սերվեր ՝ չափված իրերը համակարգչի/բջջային էկրանին ներկայացնելու համար:
Պարագաներ
3 x Ina260 adafruit տախտակ
3 x վերնագրի կապում երկար կապում
Min 6 jumper լարերը
1 x ESP32 Wrover-B (կամ ցանկացած այլ Wifi տախտակ ՝ I2C աջակցությամբ)
2 x 19 փին քորոց վերնագիր (եթե կիրառելի է)
1 x PCB կամ Perfboard
1 x 3.3 Վ էլեկտրամատակարարում
Քայլ 1. erոդեք INA- ի երեք տախտակները
Առաջին քայլը երեք INA260 տախտակների հավաքումն է:
Շատ լավ ցուցում կարելի է գտնել Adafruit կայքում: Հետևեք Adafruit- ի հավաքման հրահանգներին:
Որպեսզի կարողանաք դրանք միմյանց վրա դնել, օգտագործեք երկար քորոց վերնագրեր, այլ ոչ թե մատուցված կապի շերտեր:
Քայլ 2. Կարգավորեք երեք տարբեր I2C հասցեներ
I2C- ը երկալար ինտերֆեյսի սերիական արձանագրություն է `կարճ տարածությունների վրա ցածր արագությամբ սարքերը միացնելու համար: Կարելի է միացնել մինչև 127 ստրուկ: Մեկ ավտոբուսում յուրաքանչյուր սարք պետք է նույնականացվի եզակի I2C հասցեով: Սարքի I2C հասցեն հաճախ միացված է սարքի չիպին: Նույն ավտոբուսում միևնույն սարքերը միացնելու համար արտադրողը հաճախ թողնում է I2C հասցեն փոխելու հնարավորությունը ՝ միացնելով կապում կոնֆիգուրացիան:
Սա նաև վերաբերում է երեք INA260 տախտակներին: Սարքն ունի հասցեի երկու կապում ՝ A0 և A1, որոնք կարող են միացվել GND, VS, SCL կամ SDA- ին ՝ ցանկալի հասցեն սահմանելու համար: Տեխասի գործիքներից INA260 չիպի տվյալների թերթիկում կարելի է գտնել 16 հնարավոր հասցեներից յուրաքանչյուրի համար նախատեսված կապերի ցանկը:
Adafruit տախտակը դա սահմանափակում է 4 տախտակի վրա ՝ մերկացնելով երկու բարձիկներ, որոնք կարող են օգտագործվել A0 և/կամ A1- ը VS.- ին քաշելու համար: INA260 տախտակի կանխադրված հասցեն 0x40 է:
Դուք ավարտում եք այս քայլը ՝ երկու այլ տախտակներին տարբեր հասցեներ նշանակելով.
Երկրորդ տախտակի A0 պահոցը զոդելով ՝ դուք նրա հասցեն սահմանում եք ՝ 0x41 (կամ 1000001 BIN)
Երրորդ տախտակի A1 պահոցը եռակցելով ՝ հասցեն եք նշանակում ՝ 0x44 (կամ 1000100 BIN)
Քայլ 3. Միացրեք 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- ում
Այժմ, երբ մենք տախտակները միացրել ենք միմյանց, ժամանակն է ստուգել կապը:
Մենք դա կանենք ՝ հավաքելով Ina տախտակների I2C հասցեները:
ESP32 տախտակն անթերի է աշխատում Arduino IDE- ի հետ:
Այսպիսով, եկեք տեղադրենք ESP32 խորհուրդը Arduino- ում `օգտագործելով խորհրդի կառավարիչը:
Քայլ 5. Ստուգեք Ina- ն ESP32 կապին `օգտագործելով I2C սկաները
ESP32- ի և Ina260 տախտակների միջև կապ ապահովելու համար մենք կօգտագործենք պարզ I2C հասցեի սկաներ:
I2C հասցեների սկաների ծածկագիրը կարող է պատճենվել և տեղադրվել դատարկ Arduino նախագծի մեջ:
Կոդը վերցված է Arduino cc կայքից ՝
// -------------------------------------- // i2c_scanner // // Տարբերակ 1/ / Այս ծրագիրը (կամ դրա արտաքին տեսքի կոդը) // կարելի է գտնել շատ տեղերում: // Օրինակ ՝ Arduino.cc ֆորումում: // Սկզբնական հեղինակը հայտնի չէ: // Տարբերակ 2, Հունի 2012, Օգտագործելով Arduino 1.0.1 // Հարմարեցված է Arduino.cc օգտվողի կողմից հնարավորինս պարզ // տարբերակ 3, փետրվարի 26 2013 // V3 ըստ 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 // // // Այս ուրվագիծը ստուգում է ստանդարտ 7-բիթանոց հասցեները // Ավելի բարձր բիթ հասցե ունեցող սարքերը կարող են ճիշտ չտեսնվել: // #include void setup () {Wire.begin (); Serial.begin (9600); իսկ (! Սերիա); // Լեոնարդո. Սպասեք սերիական մոնիտորի Serial.println ("\ nI2C Սկաներ"); } void loop () {բայթ սխալ, հասցե; int n Սարքեր; Serial.println («Սկանավորում …»); n Սարքեր = 0; for (հասցե = 1; հասցե <127; հասցե ++) {// i2c_scanner- ը օգտագործում է // the Write.endTransmisstion- ի վերադարձ արժեքը `տեսնելու, թե արդյոք // սարքը հասցեատեր է եղել: Wire.beginTransmission (հասցե); սխալ = 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 վեբ սերվերի պանակ
ESP32- ը հնարավորություն է տալիս գործարկել վեբ սերվեր: Այն նաև ապահովում է բավականին մեծ RAM հիշողություն ՝ որոշ վեբ էջեր պահելու համար: (Այն ավտոմատ կերպով սեղմում է վեբ էջի ֆայլերը):
Arduino IDE- ն ապահովում է ստեղծված էջերը ESP32- ի RAM- ում ուղղակի տեղադրելու գործառույթը:
Դա անելու համար դուք պետք է ստեղծեք թղթապանակի «տվյալներ» Arduino նախագծի պանակի տակ: Իմ դեպքում սա / Arduino / esp32_Power_supply_v1_implemented / data- ն է:
Կարևոր է թղթապանակը ճշգրիտ անվանել «տվյալներ», քանի որ այն այն պանակի անունն է, որը փնտրելու է Arduino- ն ՝ վեբ էջի ֆայլերը ESP- ում բեռնելիս:
Քայլ 7: Ստեղծեք Power Monitor վեբ էջ
HMTL- ն այն լեզուն է, որը թույլ է տալիս տեքստը ներկայացնել վեբ դիտարկիչում: HTML ֆայլը պահվում է htm (l) ընդլայնման ներքո: Վեբ էջի ձևաչափումը սովորաբար տեղադրվում է առանձին ֆայլի մեջ (օրինակ ՝ css ֆայլ): Functionրագրի ֆունկցիոնալությունը, որը պետք է առաջարկի վեբ էջը, սովորաբար տեղադրվում է մեկ այլ ֆայլի մեջ (օրինակ. Js ֆայլ, javascript- ի համար):
Իմ HTML փաստաթղթում տեքստը, ձևաչափումը և Javascript- ը ներառեցի մեկ ֆայլի մեջ: Հետևաբար, դա վեբ էջ պատրաստելու լավ օրինակ չէ, բայց այն ծառայում է նպատակներին: Ես 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;
Վերոնշյալ կոդը ESP32 տախտակից կարդում է 6 թիվ, այսինքն. լարման չափումը, ընթացիկ չափումը առաջին տախտակից, որին հաջորդում են երկու չափումները երկրորդից և այլն:
Գրաֆիկները ներկառուցված են այսպես կոչված ճկուն բեռնարկղերում, որոնք թույլ են տալիս ճկուն չափափոխել կայքը:
.flex-container {ցուցադրում: flex; ֆոնի գույնը `կադետային կապույտ; flex-wrap: փաթաթել; }.flex-container> div {background-color: #f1f1f1; լուսանցք `10 px; լիցքավորում `20px; տառատեսակի չափը `20px; font-family: "Յոթ հատված"; տառաչափը ՝ համարձակ; }
Theկվող տարաներից յուրաքանչյուրի բովանդակությունը կազմված է հետևյալ կերպ, ներառյալ ներդրված գրաֆիկները:
(նշեք, որ այն հեռացվել է)
div label = "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} մՎտ`; 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"). value = Math.floor (parseInt (byID ("PG1_scale"). արժեքը)/2+PG1_yrand0); byID ("PG2_scale"). value = Math.floor (parseInt (byID ("PG2_scale"). արժեքը)/2+PG2_yrand0); byID ("PG3_scale"). value = Math.floor (parseInt (byID ("PG3_scale"). արժեքը)/2+PG3_yrand0); byID ("PG4_scale"). value = Math.floor (parseInt (byID ("PG4_scale"). արժեքը)/2+PG4_yrand0); // byID ("PG5_scale"). value = Math.floor (parseInt (byID ("PG5_scale"). արժեքը)/2+PG5_yrand0); byID ("PG6_scale"). value = Math.floor (parseInt (byID ("PG6_scale"). արժեքը)/2+PG6_yrand0);
Ուսումնասիրելով ծածկագիրը ՝ կնկատեք, որ ես օգտագործում եմ 6 -ից միայն 5 գրաֆիկ իմ նպատակի համար: Linesիշտ տողերը չմեկնաբանելը թույլ կտա 6-րդ գրաֆիկը:
Նրանց համար, ովքեր html- ով փորձ չունեն, այս քայլը կարող է դժվար լինել: Այնուամենայնիվ, այն կարող է ծառայել որպես գեղեցիկ ներածություն HTML աշխարհում: Ես գիտեմ, քանի որ սա իմ ստեղծած առաջին էջն էր: Այնպես որ, մի վախեցեք: Մեր տակ գտնվող փորձառուների համար ներողամիտ եղեք:
Կայքում ձեր աշխատանքի արդյունքը կարելի է վերանայել ՝ բացելով ձեր html- ը, այն կբեռնվի ձեր դիտարկիչում և ցույց կտա իր տեսքը: Հնարավոր սխալների համար կարող եք ստուգել ՝ դիտարկիչում սեղմելով F12 ստեղնը, կհայտնվի վրիպազերծման պատուհանը: Ամբողջական բացատրությունը, թե ինչպես կարգաբերել սխալները, դուրս են մնում այս հրահանգվողի շրջանակներից, սակայն վեբ էջը կարող է օգտակար լինել որպես վեբ էջի / javascript կարգաբերման առաջին քայլ:
Հաջորդ քայլը ստեղծված վեբ էջերի բեռնումն է ESP32- ում:
Քայլ 8: Տեղադրեք վեբ էջը ESP32- ում
Գոհացուցիչ արդյունք ստանալուց հետո ժամանակն է վերբեռնել կայքը ESP32- ում:
Դուք դա անում եք ՝ պահպանելով «Index.htm» (ձեր վեբ էջը) և «PicoGraph.js» - ը «տվյալների» պանակում ձեր Arduino նախագծի ներքո:
Հաջորդ քայլը ESP32 տախտակը համակարգչին միացնելն է: Boardիշտ տախտակն ու COM նավահանգիստն ընտրելուց հետո Arduino IDE- ի Գործիքների ցանկում ընտրեք ESP32 Sketch Data Upload:
Դուք կտեսնեք, որ IDE- ն կսկսի բեռնման գործընթացը, որը պետք է հանգեցնի հաջող բեռի:
Այս քայլի կողքին պետք է կարգավորել ESP32 միկրոկառավարիչը որպես վեբ սերվեր:
Քայլ 9. Կարգավորեք ESP32- ը որպես վեբ սերվեր
Կից գտնում եք Arduino Ino էսքիզը, որը կկարգավորի ESP32- ը որպես վեբ սերվեր:
Դուք պետք է SSID- ը և դրա հետ կապված գաղտնաբառը փոխարինեք ձեր երթուղիչի գաղտնաբառով:
Ինչպես արդեն նշվեց, այս ուրվագիծը պարունակում է նաև էջը որպես PCB- ի էլեկտրամատակարարման կողմի կարգավորիչ կազմաձևելու ծածկագիր (իրականում ՝ 5 IO կապի կարգավորում որպես PWM կապում և դրանք վերահսկել կայքի հաղորդագրությունների հոսքի միջոցով):
Էսքիզը հիմնված է Վեբ սերվերի ստանդարտ ուրվագծի վրա, որը մշակել է Խրիստո Գոչկովը:
Որոշ բացատրություններ ծածկագրի վերաբերյալ:
Հետևյալ գործառույթները բոլորը կապված են վեբ սերվերի ստեղծման հետ:
Լարային ձևաչափԲայթ (չափս_բայթ) String getContentType (String filename) bool գոյություն ունի (String path) bool handleFileRead (String path) 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);
Loop ծածկագրում հետևյալ հայտարարությունը երաշխավորում է ընդհատման կոդի վարումը.
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 մկմ -ի դեպքում, տեղադրված է վեբ էջի HTML java սցենարում):
Քայլ 10: Դուք կատարված եք:
Էսքիզը ESP32 տախտակին վերբեռնելը պետք է ավարտի կարգավորումը, և ձեր Power մոնիտորը պետք է վերջնական լինի:
Դուք երևի նկատել եք, որ ESP32- ի սնուցումն այժմ կատարվում է USB պորտի միջոցով, ինչը բարձրացնում է ձեր լարման / ընթացիկ հաշվիչների հետ WiFi- ի վրա հիմնված կապի առավելությունների մեծ մասը: Հետևաբար, ես պատրաստել եմ մի պարզ LM317 լարման վրա հիմնված էլեկտրամատակարարում ESP32- ի համար: Ես այն հեռու պահեցի այս ուսանելիի շրջանակներից, բայց եթե կա հետաքրքրություն, այն կարող է դառնալ հաջորդը:
Հաջորդ քայլում ես արդեն տրամադրել եմ էլեկտրամատակարարման էլեկտրոնային սխեման, որը կարող է ոգեշնչման աղբյուր դառնալ:
Քայլ 11: ESP32- ի սնուցում
Ահա ոգեշնչում `ձեր ESP32- ի համար առանձին էներգիայի աղբյուր ստեղծելու համար, եթե մոտակայքում չունեք մեկը:
Էլեկտրաէներգիայի միացումն աշխատում է 19 Վ նոութբուքի սնուցման աղբյուրի միջոցով: Սա պահանջում է երկաստիճան լարման իջեցում `LM317- ի էներգիայի սպառումը վերահսկողության տակ պահելու համար: (Նույնիսկ տաքացուցիչների դեպքում): Նաև մի մոռացեք VCC_ESP գծի դիմաց ներառել 100uF կոնդենսատոր, քանի որ այդ միկրոկոնտրոլերները, անշուշտ, WiFi կապը սկսելիս մեծ ընթացիկ ճոճանակներ ունեն:
Ուշադրություն դարձրեք, որ ESP32- ը միաժամանակ մի քանիից ավելի էներգիայի աղբյուր չունենա:
Հետագայում սովորական պատասխանատվությունից հրաժարվելը, բայց ամենից շատ
Զվարճանալ!
Բոլոր ֆայլերը կարելի է գտնել իմ GitHub- ում ՝
Խորհուրդ ենք տալիս:
Sinilink WiFi անջատիչի փոփոխություն INA219 լարման/ընթացիկ տվիչով `11 քայլ
Sinilink WiFi անջատիչի փոփոխություն INA219 լարման/ընթացիկ սենսորով. Sinilink XY-WFUSB WIFI USB անջատիչը գեղեցիկ փոքրիկ սարք է `կցված USB սարքը հեռակա կարգով միացնելու/անջատելու համար: Lyավոք, այն չունի կցված սարքի մատակարարման լարման կամ օգտագործված հոսանքի չափման ունակություն: Այս հրահանգը ցույց է տալիս, թե ինչպես եմ ես փոփոխում
Ձեռքի լարման և ընթացիկ աղբյուր 4-20 մԱ: 7 քայլ
Ձեռքի լարման և ընթացիկ աղբյուր 4-20 մԱ. Սա ուսանելի է մանրամասնում, թե ինչպես պատրաստել 0-20mA +/- 10V ազդանշանի գեներատոր `օգտագործելով էժան LM324 բացիչ: Այս տեսակի ազդանշանների գեներատորները օգտակար են արդյունաբերության մեջ `սենսորային մուտքերը փորձարկելու կամ արդյունաբերական ուժեղացուցիչներ աշխատեցնելու համար: Մինչդեռ հնարավոր է գնել դրանք
Լարման մոնիտոր բարձր լարման մարտկոցների համար `3 քայլ (նկարներով)
Լարման մոնիտոր բարձր լարման մարտկոցների համար. Այս ուղեցույցում ես ձեզ կբացատրեմ, թե ինչպես եմ կառուցել մարտկոցի լարման մոնիտորը իմ էլեկտրական երկարատախտակի համար: Տեղադրեք այն ինչպես ցանկանում եք և միացրեք ընդամենը երկու լար ձեր մարտկոցին (Gnd և Vcc): Այս ուղեցույցը ենթադրում էր, որ ձեր մարտկոցի լարումը գերազանցում է 30 վոլտ, w
Փոփոխական լարման և ընթացիկ սնուցման աղբյուր `5 քայլ
Փոփոխական լարման և ընթացիկ սնուցման աղբյուր. Ստուգեք վերը նշված տեսանյութը բոլոր քայլերի համար: Տնային էներգիայի մատակարարում, որն իդեալական է լուսադիոդների, շարժիչների և այլ էլեկտրոնիկայի փորձարկման համար: Օգտագործված նյութերի ցանկը. Այստեղ կամ- Սովորական 10k պոտենցիոմետր
USB լարման և ընթացիկ փորձարկիչ !! (տարբերակ 1) ՝ 7 քայլ
USB լարման և ընթացիկ փորձարկիչ !! (տարբերակ 1). ** Նոր տարբերակ Ընթացիկ վիճակահանությունը, որը կարող է քաշել ձեր սարքերը, դա