Talaan ng mga Nilalaman:

Multi-channel Wifi Voltage at Kasalukuyang Meter: 11 Mga Hakbang (na may Mga Larawan)
Multi-channel Wifi Voltage at Kasalukuyang Meter: 11 Mga Hakbang (na may Mga Larawan)

Video: Multi-channel Wifi Voltage at Kasalukuyang Meter: 11 Mga Hakbang (na may Mga Larawan)

Video: Multi-channel Wifi Voltage at Kasalukuyang Meter: 11 Mga Hakbang (na may Mga Larawan)
Video: Hacking tool exposed by master hacker OccupyTheWeb #hackingtools #cybersecurity 2024, Nobyembre
Anonim
Multi-channel na Wifi Voltage at Kasalukuyang Meter
Multi-channel na Wifi Voltage at Kasalukuyang Meter

Kapag ang breadboarding, madalas na kailangang subaybayan ng isa ang iba't ibang bahagi ng circuit nang sabay-sabay.

Upang maiwasan ang sakit na kailangang idikit ang mga probe ng multimeter mula sa isang lugar patungo sa isa pa, nais kong mag-disenyo ng isang boltahe ng multi-channel at kasalukuyang metro.

Ang board ng Ina260 mula sa Adafruit ay nagbibigay ng isang napaka-epektibo at mahusay na paraan para sa paggawa nito. Naglalaman ito ng isang napaka-tumpak na boltahe at kasalukuyang metro na may isang integrated I2C tulay (pag-save ng maraming mga pin kapag pinagsasama ang 3 sa kanila!).

Ang nawawala lamang ay isang display. Samakatuwid ang desisyon na i-hook ang mga board papunta sa isang board ng pag-unlad ng ESP32, na madaling magdala ng isang webserver upang ipakita ang mga sinusukat na item sa isang PC / mobile screen.

Mga gamit

3 x Ina260 adafruit board

3 x mga header pin na may mahabang mga pin

Min 6 na jumper wires

1 x ESP32 Wrover-B (o anumang iba pang board ng Wifi na may suporta sa I2C)

2 x 19 pin pin header (kung naaangkop)

1 x PCB o Perfboard

1 x 3.3 V supply ng kuryente

Hakbang 1: Paghinang ng Tatlong INA Boards

Solder ang Tatlong INA Board
Solder ang Tatlong INA Board

Ang unang hakbang ay upang tipunin ang tatlong mga board ng INA260.

Ang isang napakahusay na tagubilin ay matatagpuan sa website ng Adafruit. Sundin ang mga tagubilin sa pagpupulong ng Adafruit.

Upang mai-stack ang mga ito sa tuktok ng bawat isa gamitin ang mahabang mga header ng pin kaysa sa naihatid na mga strip ng pin!

Hakbang 2: I-configure ang Tatlong Iba't ibang I2C Address

I-configure ang Tatlong Iba't ibang I2C Address
I-configure ang Tatlong Iba't ibang I2C Address
I-configure ang Tatlong Iba't ibang I2C Address
I-configure ang Tatlong Iba't ibang I2C Address
I-configure ang Tatlong Iba't ibang I2C Address
I-configure ang Tatlong Iba't ibang I2C Address
I-configure ang Tatlong Iba't ibang I2C Address
I-configure ang Tatlong Iba't ibang I2C Address

Ang I2C ay isang serial protocol para sa isang two-wire interface upang ikonekta ang mga aparatong mababa ang bilis sa maikling distansya. Ang isa ay maaaring kumonekta hanggang sa 127 mga alipin. Sa isang bus ang bawat aparato ay kailangang makilala sa pamamagitan ng isang natatanging I2C address. Ang I2C address ng isang aparato ay madalas na mahirap na naka-wire sa maliit na tilad ng isang aparato. Upang ikonekta ang parehong mga aparato sa isang bus, madalas na iniiwan ng gumagawa ang posibilidad para sa pagbabago ng I2C address sa pamamagitan ng paghihinang ng isang pagsasaayos ng mga pin nang magkasama.

Ito rin ang kaso para sa tatlong mga board ng INA260. Ang aparato ay may dalawang mga pin ng address, A0 at A1 na maaaring maiugnay sa GND, VS, SCL o SDA upang maitakda ang nais na address. Sa datasheet ng chip ng INA260 mula sa mga instrumento ng texas, mahahanap ng isa ang listahan ng mga koneksyon sa pin para sa bawat isa sa 16 na posibleng mga address.

Nililimitahan ito ng board ng adafruit sa 4 na board sa pamamagitan ng paglalantad ng dalawang pad na maaaring magamit upang hilahin ang A0 at / o A1 sa VS. Ang default na address ng INA260 board ay 0x40.

Nakumpleto mo ang hakbang na ito sa pamamagitan ng pagtatalaga ng iba't ibang mga address sa dalawang iba pang mga board:

Sa pamamagitan ng paghihinang sa A0 pad ng pangalawang board itinakda mo ang kanyang address sa: 0x41 (o 1000001 BIN)

Sa pamamagitan ng paghihinang ng A1 pad ng pangatlong board ay itatalaga mo ang address sa: 0x44 (o 1000100 BIN)

Hakbang 3: Ikonekta ang Ina Boards sa ESP32

Ikonekta ang Ina Boards sa ESP32
Ikonekta ang Ina Boards sa ESP32

Ngayon na nakatalaga kami ng iba't ibang mga address ng I2C sa bawat isa sa mga INA board, oras na upang ikonekta ang mga ito sa board ng ESP32!

Alinsunod sa larawan sa itaas, kumonekta

1) ang VCC pin sa 3.3V pin

2) ang GND pin sa GND pin

3) ang SDA pin sa GPIO pin 21

4) ang SCL pin sa GPIO pin 22

Gumamit ako ng isang disenyo ng PCB upang gawin ang mga koneksyon dahil bahagi ito ng isang mas malaking proyekto (isang madaling iakma na supply ng boltahe na madaling iakma na may naaayos na kasalukuyang nililimitahan - inaasahan na makagawa din ng isang maituturo para sa isang ito).

Maaari kang gumamit ng anumang iba pang paraan para sa pagkonekta, maaaring ito ay isang perfboard na iyong solder o gumagamit ng isang breadboard. Parehong gagana ang mga iyon nang maayos.

Hakbang 4: I-install ang Linya ng ESP32 sa Arduino IDE

I-install ang Lupon ng ESP32 sa Arduino IDE
I-install ang Lupon ng ESP32 sa Arduino IDE

Ngayon na nakakonekta namin ang mga board sa bawat isa, oras na upang suriin ang koneksyon.

Gagawin namin iyon sa pamamagitan ng pagkolekta ng mga I2C address ng mga Ina board.

Ang board ng ESP32 ay gumagana nang perpekto sa Arduino IDE.

Kaya't i-install natin ang board ng ESP32 sa Arduino gamit ang tagapamahala ng Lupon.

Hakbang 5: Suriin ang Koneksyon sa Ina hanggang sa ESP32 Gamit ang I2C Scanner

Suriin ang Ina sa ESP32 Connection Gamit ang I2C Scanner
Suriin ang Ina sa ESP32 Connection Gamit ang I2C Scanner

Gumagamit kami ng isang simpleng scanner ng address ng I2C upang matiyak ang pagkakakonekta sa pagitan ng ESP32 at ng mga board ng Ina260.

Ang I2C address scanner code ay maaaring makopya na naka-paste sa isang walang laman na proyekto ng Arduino.

Ang code ay nakuha mula sa website ng Arduino cc:

// ------------------------------------ // i2c_scanner // // Version 1 / / Ang program na ito (o code na mukhang ito) // ay matatagpuan sa maraming mga lugar. // Halimbawa sa forum ng Arduino.cc. // Ang orihinal na may-akda ay hindi alam. // Version 2, Juni 2012, Paggamit ng Arduino 1.0.1 // Inangkop upang maging kasing simple hangga't maaari ng gumagamit ng Arduino.cc Krodal // Bersyon 3, Peb 26 2013 // V3 ni louarnold // Bersyon 4, Marso 3, 2013, Paggamit ng Arduino 1.0.3 // ng gumagamit ng Arduino.cc na si Krodal. // Inalis ang mga pagbabago ni louarnold. // Ang mga address sa pag-scan ay nabago mula 0… 127 hanggang 1… 119, // ayon sa i2c scanner ni Nick Gammon // https://www.gammon.com.au/forum/?id=10896 // Bersyon 5, Marso 28, 2013 // Tulad ng bersyon 4, ngunit ang mga pag-scan sa address ngayon sa 127. // Isang sensor ang tila gumagamit ng address 120. // Bersyon 6, Nobyembre 27, 2015. // Idinagdag ang paghihintay para sa serial komunikasyon ni Leonardo. // // // Sinusubukan ng sketch na ito ang karaniwang 7-bit na mga address // Ang mga aparato na may mas mataas na bit address ay maaaring hindi makita nang maayos. // #include void setup () {Wire.begin (); Serial.begin (9600); habang (! Serial); // Leonardo: hintayin ang serial monitor Serial.println ("\ nI2C Scanner"); } void loop () {byte error, address; int nDevices; Serial.println ("Pag-scan …"); nDevices = 0; para sa (address = 1; address <127; address ++) {// Ang i2c_scanner ay gumagamit ng halaga ng pagbabalik ng // the Writing.endTransmisstion upang makita kung // kinilala ng isang aparato ang address. Wire.beginTransmission (address); error = Wire.endTransmission (); kung (error == 0) {Serial.print ("Natagpuan ang I2C aparato sa address na 0x"); kung (address <16) Serial.print ("0"); Serial.print (address, HEX); Serial.println ("!"); nDevices ++; } iba pa kung (error == 4) {Serial.print ("Hindi kilalang error sa address 0x"); kung (address <16) Serial.print ("0"); Serial.println (address, HEX); }} kung (nDevices == 0) Serial.println ("Walang nahanap na mga I2C device / n"); kung hindi man Serial.println ("tapos / n"); pagkaantala (5000); // maghintay ng 5 segundo para sa susunod na pag-scan}

Hakbang 6: Paglikha ng HTML Webserver Folder

Lumilikha ng HTML Webserver Folder
Lumilikha ng HTML Webserver Folder

Nagbibigay ang ESP32 ng posibilidad para sa pagpapatakbo ng isang webserver. Nagbibigay din ito ng isang medyo malaking memorya ng RAM upang makapaghawak ng ilang mga webpage. (Awtomatiko nitong pinipiga ang mga file ng webpage).

Nagbibigay ang Arduino IDE ng pag-andar para sa pag-upload ng direktang mga webpage sa RAM ng ESP32.

Upang magawa ito, kailangan mong lumikha ng isang 'data' na folder sa ilalim ng folder ng proyekto ng Arduino. Sa aking kaso ito ang / Arduino / esp32_Power_supply_v1_implemented / data.

Mahalagang pangalanan ang folder ng eksaktong 'data' dahil ito ang pangalan ng folder na hahanapin ng Arduino kapag ina-upload ang mga webpage file sa ESP.

Hakbang 7: Lumikha ng Power Monitor Webpage

Ang HMTL ay isang wika na nagbibigay-daan upang magpakita ng isang teksto sa isang webbrowser. Ang isang HTML file ay nai-save sa ilalim ng extension htm (l). Ang pag-format ng isang webpage ay karaniwang inilalagay sa isang hiwalay na file (hal. Css file). Ang pagpapaandar ng programa na kailangang mag-alok ng isang webpage ay karaniwang inilalagay sa ibang file (hal. Js file, para sa javascript).

Sa aking dokumentong HTML isinama ko ang teksto, pag-format at Javascript sa isang file. Samakatuwid ito ay hindi isang magandang halimbawa ng kung paano gumawa ng isang webpage ngunit nagsisilbi ito sa mga layunin. Pinangalanan ko ang dokumentong HTML na 'Index.htm'.

Ang isang pangalawang file ay kasama sa aking datafolder, ibig sabihin. PicoGraph.js Ang PicoGraph library ay ibinigay ng Vishnu Shankar B mula sa RainingComputers at pinapayagan para sa isang napaka-simple, ngunit epektibo at may kakayahang umangkop na paraan para sa pagpapakita ng mga graph sa isang webpage. Medyo binago ko ang code upang mas mahusay na maihatid ang aking layunin.

Mapapansin mo na ang HTML webpage ay nagsasama rin ng code para sa pagkontrol sa mga supply ng boltahe sa aking PCB board. Kinokontrol ng code ng supply ng boltahe ang antas ng boltahe ng 5 I / O na mga pin. Maaari mong baguhin ang code upang maibukod ito o maaari mo itong iwan kung walang epekto.

Ang html code ay naka-attach sa hakbang na ito bilang isang txt file (dahil hindi pinapayagan ng mga nagtuturo na mag-upload ng htm code).

Upang magamit ang HTML code kopyahin mo at i-paste ito sa isang text editor (Gumagamit ako ng Notepad ++) at i-save ito bilang 'Index.htm' sa ilalim ng folder na 'Data'. Ginagawa mo ang pareho para sa file ng picograph.txt ngunit palitan ang pangalan nito sa picograph.js

Na patungkol sa HTML file:

Ang isang pagpapaandar na SndUpdate ay ginagamit upang magpadala ng mga mensahe pabalik at pasulong mula sa ESP patungo sa webpage.

Ang mga mensaheng ipadala mula sa ESP ay nagsisilbi sa pagpapaandar ng power supply at wala sa saklaw para sa itinuro na ito. ang mga mensahe sa ESP ay naghahatid ng mga pagsukat sa board ng 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;

Ang code sa itaas ay nagbabasa ng 6 na numero mula sa board ng ESP32, ibig sabihin. ang pagsukat ng boltahe, ang kasalukuyang pagsukat mula sa unang board, na sinusundan ng dalawang sukat mula sa pangalawa at iba pa.

Ang mga grap ay naka-embed sa tinatawag na mga flex-container, na nagbibigay-daan para sa kakayahang umangkop na pagbabago ng laki ng webpage.

.flex-container {display: flex; background-color: cadetblue; baluktot-balot: balot; }.flex-container> div {background-color: # f1f1f1; margin: 10px; padding: 20px; laki ng font: 20px; font-family: "Pitong Segment"; font-weight: naka-bold; }

Ang nilalaman ng bawat isa sa mga lalagyan ng pagbaluktot ay binubuo bilang sinusundan, kasama ang mga naka-embed na mga graphic.

(tandaan na kung saan inalis)

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

! - div para sa mga alamat / label -

div / div div / div / div

Ang huling seksyon ng kahalagahan sa HTML file ay gumagana sa library ng PicoGraph upang maipakita ang mga numero:

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"); / * I-update ang mga halaga bawat segundo * / setInterval (updateEverySecond, 1000); pagpapa-update ng functionEverySecond () {/ * Kumuha ng mga bagong halaga * / SndUpdate ();

/ * Update graph * / PG1_demograph.update ([PG1_yrand0], parseInt (byID ("PG1_scale"). Halaga) + parseInt (byID ("PG1_scale"). Halaga) / 10, "# e52b50"); PG2_demograph.update ([PG2_yrand0], parseInt (byID ("PG2_scale"). Halaga) + parseInt (byID ("PG2_scale"). Halaga) / 10, "# e52b50"); PG3_demograph.update ([PG3_yrand0], parseInt (byID ("PG3_scale"). Halaga) + parseInt (byID ("PG3_scale"). Halaga) / 10, "# 008000"); PG4_demograph.update ([PG4_yrand0], parseInt (byID ("PG4_scale"). Halaga) + parseInt (byID ("PG4_scale"). Halaga) / 10, "# 008000"); // PG5_demograph.update ([PG5_yrand0], parseInt (byID ("PG5_scale"). Halaga) + // parseInt (byID ("PG5_scale"). Halaga) / 10, "# 0000ff"); PG6_demograph.update ([PG6_yrand0], parseInt (byID ("PG6_scale"). Halaga) + parseInt (byID ("PG6_scale"). Halaga) / 10, "# 0000ff"); var Watts = Math.round (PG1_yrand0 * PG2_yrand0 * 100) / 100; byID ("PG1_wattLabel"). panloobHTML = `WATT: $ {Watts} mW`; var Watts = Math.round (PG3_yrand0 * PG4_yrand0 * 100) / 100; byID ("PG3_wattLabel"). panloobHTML = `WATT: $ {Watts} mW`; // var Watts = Math.round (PG5_yrand0 * PG6_yrand0 * 100) / 100; // byID ("PG5_wattLabel"). insideHTML = `WATT: $ {Watts} mW`; byID ("PG1_scale"). halaga = Math.floor (parseInt (byID ("PG1_scale"). halaga) / 2 + PG1_yrand0); byID ("PG2_scale"). halaga = Math.floor (parseInt (byID ("PG2_scale"). halaga) / 2 + PG2_yrand0); byID ("PG3_scale"). halaga = Math.floor (parseInt (byID ("PG3_scale"). halaga) / 2 + PG3_yrand0); byID ("PG4_scale"). halaga = Math.floor (parseInt (byID ("PG4_scale"). halaga) / 2 + PG4_yrand0); // byID ("PG5_scale"). halaga = Math.floor (parseInt (byID ("PG5_scale"). halaga) / 2 + PG5_yrand0); byID ("PG6_scale"). halaga = Math.floor (parseInt (byID ("PG6_scale"). halaga) / 2 + PG6_yrand0);

Ang pag-aaral ng code na mapapansin mo ay gumagamit lamang ako ng 5 mga graphic ng 6 para sa aking hangarin. Ang pag-un ng puna sa mga tamang linya ay magpapagana sa ika-6 na graph.

Para sa mga hindi nakaranas ng html, ang hakbang na ito ay maaaring dumating sa isang mahirap. Gayunpaman maaari itong magsilbing isang magandang pagpapakilala sa mundo ng HTML. Alam ko dahil ito ang unang pahina na nilikha ko. Kaya huwag kang matakot. Para sa mga nakaranas sa ilalim namin, maging mapagpatawad.

Ang resulta ng iyong trabaho sa webpage ay maaaring masuri sa pamamagitan ng pagbubukas ng iyong html, mai-load ito sa iyong browser at ipapakita ang hitsura nito. Maaari mong suriin ang mga posibleng pagkakamali sa pamamagitan ng pagpindot sa F12 key sa iyong browser, lalabas ang window ng pag-debug. Ang buong paliwanag kung paano mag-debug ay wala sa saklaw ng itinuturo na ito, ngunit ang webpage ay maaaring maging kapaki-pakinabang bilang unang hakbang sa pag-debug sa webpage / javascript.

Susunod na hakbang ay upang mai-load ang mga nilikha na mga webpage sa ESP32.

Hakbang 8: I-load ang Webpage Sa ESP32

I-load ang Webpage Sa ESP32
I-load ang Webpage Sa ESP32

Matapos makakuha ng isang kasiya-siyang resulta, oras na upang i-upload ang webpage sa ESP32.

Ginagawa mo ito sa pamamagitan ng pag-save ng 'Index.htm' (iyong webpage) at ang 'PicoGraph.js' sa folder na 'data' sa ilalim ng iyong proyekto ng Arduino.

Susunod na hakbang ay upang ikonekta ang board ng ESP32 sa computer. Matapos mapili ang tamang board at ang COM port, piliin ang ESP32 Sketch Data Upload sa ilalim ng menu ng Mga Tool sa Arduino IDE.

Makikita mo na sisimulan ng IDE ang proseso ng pag-upload, na dapat humantong sa isang matagumpay na pagkarga.

Susunod sa hakbang na ito ay upang mai-configure ang ESP32 microcontroller bilang isang webserver.

Hakbang 9: I-configure ang ESP32 Bilang Webserver

Nakalakip na makita mo ang Arduino Ino sketch na mag-configure ng ESP32 bilang isang webserver.

Kakailanganin mong palitan ang SSID at kaugnay na Password ng password ng iyong router.

Tulad ng nabanggit na ang sketch na ito ay naglalaman din ng code upang mai-configure ang webpage bilang isang controller para sa bahagi ng supply ng kuryente ng PCB (sa katunayan, pag-configure ng 5 mga pin ng IO bilang mga PWM na pin at pagkontrol sa kanila sa pamamagitan ng stream ng mensahe mula sa webpage).

Ang sketch ay batay sa karaniwang sketch ng Webserver na binuo ni Hristo Gochkov.

Ang ilang mga paliwanag sa code.

Ang mga sumusunod na pagpapaandar ay nauugnay sa pagse-set up ng webserver.

String formatBytes (size_t bytes) String getContentType (String filename) bool (String path) bool handleFileRead (String path) void handleFileUpload () void handleFileDelete () void handleFileCreate () void handleFileList ()

Gayundin ang unang code sa pag-setup () na pagpapaandar ay nauugnay sa pag-setup ng PWM at Webserver.

Itinatakda ng sumusunod na code ang Pag-andar ng pag-andar na naghahatid ng mga daloy ng mensahe papunta at mula sa webpage:

(dapat mong kilalanin ang mga identifier mula sa paglikha ng webpage)

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

String Msg = "{"; Msg + = "\" PG1_yrand0 / ":" + (String) Vina [1]; Msg + = ", \" PG2_yrand0 / ":" + (String) Iina [1]; Msg + = ", \" PG3_yrand0 / ":" + (String) Vina [0]; Msg + = ", \" PG4_yrand0 / ":" + (String) Iina [0]; Msg + = ", \" PG5_yrand0 / ":" + (String) Vina [2]; Msg + = ", \" PG6_yrand0 / ":" + (String) Iina [2]; Msg + = "}";

server.send (200, "text / json", Msg);

Sinisimulan nito ang server:

server.begin ();

Ang susunod na bloke ng code, pinasimulan ang INA260 boards:

// INA260 initialization if (! Ina260_0x40.begin (0x40)) {Serial.println (F ("Hindi mahanap ang INA260 0x40 chip")); // habang (1); } Serial.println (F ("Natagpuan INA260 chip 0x40")); kung (! ina260_0x41.begin (0x41)) {Serial.println (F ("Hindi mahanap ang 0x41 INA260 chip"); // habang (1); } Serial.println (F ("Natagpuan INA260 0x41 chip")); kung (! ina260_0x44.begin (0x44)) {Serial.println (F ("Hindi mahanap ang INA260 0x44 chip"); // habang (1); } Serial.println (F ("Natagpuan 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);

Sa Loop code, tinitiyak ng sumusunod na pahayag ang paghawak ng makagambala na code:

server.handleClient ();

Ang sumusunod na code sa pahayag ng loop ay nauugnay sa pagpapaandar ng supply ng Power.

Ang sumusunod na code sa loop () ay kagiliw-giliw na muli:

Vina [0] = ina260_0x40.readBusVoltage () / 1000.0f; Iina [0] = ina260_0x40.readCurrent (); Vina [1] = ina260_0x41.readBusVoltage () / 1000.0f; Iina [1] = ina260_0x41.readCurrent (); Vina [2] = ina260_0x44.readBusVoltage () / 1000.0f; Iina [2] = ina260_0x44.readCurrent ();

Kinokolekta at itinatakda ng mga pahayag na ito ang mga sukat para sa paglipat sa webpage sa pamamagitan ng Server.on makagambala ang mga tawag (nangyayari bawat 1000ms, na nakatakda sa webpage html java script).

Hakbang 10: Tapos Na

Tapos ka na!
Tapos ka na!

Ang pag-upload ng sketch sa board ng ESP32, dapat na tapusin ang pag-set up at dapat na panghuli ang iyong Power monitor!

Maaaring napansin mo na ang pag-power ng ESP32 ay tapos na ngayon sa pamamagitan ng USB port, tinaas nito ang isang malaking bahagi ng mga pakinabang ng koneksyon batay sa WiFi sa iyong boltahe / kasalukuyang metro. Samakatuwid, gumawa ako ng isang simpleng LM317 batay boltahe na kinokontrol na supply ng kuryente para sa ESP32. Iningatan ko ito sa labas ng saklaw ng itinuturo na ito ngunit kung mayroong interes ay maaaring maging isang susunod na itinuturo.

Sa susunod na hakbang naibigay ko na ang electronic circuit para sa power supply na maaaring magsilbing inspirasyon.

Hakbang 11: Pagpapatakbo ng ESP32

Pinapagana ang ESP32
Pinapagana ang ESP32

Sa pamamagitan nito ng isang inspirasyon upang bumuo ng isang stand alone na mapagkukunan para sa iyong ESP32, kung wala kang isang nakahiga.

Gumagana ang power circuit ng isang 19V laptop power supply. Humihiling ito para sa isang dalawang phased boltahe na bumaba pababa upang mapanatili ang kontrol ng Lakas ng LM317 sa ilalim ng kontrol. (Kahit na may heat sinks!). Huwag ding kalimutan na magsama ng isang 100uF capacitor sa harap ng linya ng VCC_ESP dahil ang mga microcontroller na iyon ay may malaking kasalukuyang swings na tiyak kapag sinisimulan ang koneksyon sa WiFi.

Tandaan na huwag paganahin ang ESP32 na may higit sa isang mapagkukunan ng lakas nang sabay-sabay!

Dagdag dito ang karaniwang mga pagtanggi sa pananagutan, ngunit higit sa lahat

Magsaya ka!

Ang lahat ng mga file ay matatagpuan sa aking GitHub:

Inirerekumendang: