ዝርዝር ሁኔታ:

ባለብዙ ቻናል Wifi ቮልቴጅ እና የአሁኑ መለኪያ 11 ደረጃዎች (ከስዕሎች ጋር)
ባለብዙ ቻናል Wifi ቮልቴጅ እና የአሁኑ መለኪያ 11 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: ባለብዙ ቻናል Wifi ቮልቴጅ እና የአሁኑ መለኪያ 11 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: ባለብዙ ቻናል Wifi ቮልቴጅ እና የአሁኑ መለኪያ 11 ደረጃዎች (ከስዕሎች ጋር)
ቪዲዮ: How to connect single switch ባለ አንድ ማብሪያ ማጥፊያ እንዴት እንደምን ግጥም .... 2024, ሀምሌ
Anonim
ባለብዙ ቻናል Wifi ቮልቴጅ እና የአሁኑ መለኪያ
ባለብዙ ቻናል Wifi ቮልቴጅ እና የአሁኑ መለኪያ

ዳቦ መጋገሪያ በሚሆንበት ጊዜ አንድ ሰው ብዙውን ጊዜ የወረዳውን የተለያዩ ክፍሎች በአንድ ጊዜ መከታተል አለበት።

የብዙ መልቲሜትር መመርመሪያዎችን ከአንድ ቦታ ወደ ሌላ ቦታ መጣበቅ ሕመሙን ለማስቀረት ፣ ባለብዙ ሰርጥ ቮልቴጅን እና የአሁኑን መለኪያ ዲዛይን ማድረግ ፈልጌ ነበር።

ከአዳፍ ፍሬው የሚገኘው የ Ina260 ቦርድ ይህንን ለማድረግ በጣም ውጤታማ እና ቀልጣፋ መንገድን ይሰጣል። ከተዋሃደ I2C ድልድይ ጋር በጣም ትክክለኛ voltage ልቴጅ እና የአሁኑን ቆጣሪ (3 ቱን ሲያዋህዱ ብዙ ፒኖችን ይቆጥባል!)

የጠፋው ብቸኛው ነገር ማሳያ ነበር። ስለሆነም የሚለካባቸውን ዕቃዎች በፒሲ/ሞባይል ማያ ገጽ ላይ ለማቅረብ በቀላሉ የድር አገልጋይ ተሸካሚ በሆነው በ ESP32 የልማት ሰሌዳ ላይ ሰሌዳዎችን ለማያያዝ ውሳኔው።

አቅርቦቶች

3 x Ina260 adafruit ሰሌዳ

3 x የራስጌ ፒኖች ከረዥም ካስማዎች ጋር

አነስተኛ 6 ዝላይ ሽቦዎች

1 x ESP32 Wrover-B (ወይም I2C ድጋፍ ያለው ማንኛውም የ Wifi ሌላ ሰሌዳ)

2 x 19 ፒን ፒን ራስጌ (የሚመለከተው ከሆነ)

1 x PCB ወይም Perfboard

1 x 3.3 ቪ የኃይል አቅርቦት

ደረጃ 1 ሶስቱን የ INA ቦርዶች ይሸጡ

ሶስቱ የ INA ቦርዶች
ሶስቱ የ INA ቦርዶች

የመጀመሪያው እርምጃ ሶስቱን INA260 ቦርዶች መሰብሰብ ነው።

በጣም ጥሩ ትምህርት በአዳፍሬቱ ድርጣቢያ ላይ ይገኛል። የ Adafruit ስብሰባ መመሪያዎችን ይከተሉ።

እርስ በእርስ በላያቸው ላይ ለመደርደር ከተረከቡ የፒን ቁርጥራጮች ይልቅ ረዣዥም የፒን ራስጌዎችን ይጠቀሙ!

ደረጃ 2 - ሶስት የተለያዩ I2C አድራሻዎችን ያዋቅሩ

ሶስት የተለያዩ I2C አድራሻዎችን ያዋቅሩ
ሶስት የተለያዩ I2C አድራሻዎችን ያዋቅሩ
ሶስት የተለያዩ I2C አድራሻዎችን ያዋቅሩ
ሶስት የተለያዩ I2C አድራሻዎችን ያዋቅሩ
ሶስት የተለያዩ I2C አድራሻዎችን ያዋቅሩ
ሶስት የተለያዩ I2C አድራሻዎችን ያዋቅሩ
ሶስት የተለያዩ I2C አድራሻዎችን ያዋቅሩ
ሶስት የተለያዩ I2C አድራሻዎችን ያዋቅሩ

I2C በአጭር ርቀት ላይ ዝቅተኛ ፍጥነት ያላቸው መሣሪያዎችን ለማገናኘት ለሁለት-ሽቦ በይነገጽ ተከታታይ ፕሮቶኮል ነው። አንድ ሰው እስከ 127 ባሪያዎችን ማገናኘት ይችላል። በአንድ አውቶቡስ ላይ እያንዳንዱ መሣሪያ በልዩ I2C አድራሻ መለየት አለበት። የመሣሪያው I2C አድራሻ ብዙውን ጊዜ በመሣሪያው ቺፕ ውስጥ ጠንካራ ነው። በአንድ አውቶቡስ ላይ ተመሳሳይ መሳሪያዎችን ለማገናኘት አምራቹ ብዙውን ጊዜ የፒን ውቅረትን በአንድ ላይ በመሸከም የ I2C አድራሻውን የመቀየር እድሉን ይተዋል።

ይህ ለሶስቱ የ INA260 ሰሌዳዎችም ሁኔታ ነው። መሣሪያው ተፈላጊውን አድራሻ ለማዘጋጀት ከ GND ፣ VS ፣ SCL ወይም SDA ጋር ሊገናኝ የሚችል ሁለት የአድራሻ ፒን ፣ A0 እና A1 አለው። ከቴክሳስ መሣሪያዎች በ INA260 ቺፕ የውሂብ ሉህ ውስጥ ፣ ለእያንዳንዱ ለ 16 ሊሆኑ የሚችሉ አድራሻዎች የፒን ግንኙነቶችን ዝርዝር ማግኘት ይችላል።

የ adafruit ቦርድ A0 ን እና/ወይም A1 ን ወደ VS ለመሳብ ሊያገለግሉ የሚችሉ ሁለት ንጣፎችን በማጋለጥ ይህንን በ 4 ሰሌዳዎች ላይ ይገድባል። የ INA260 ቦርድ ነባሪ አድራሻ 0x40 ነው።

ለሁለቱም ሌሎች ሰሌዳዎች የተለያዩ አድራሻዎችን በመመደብ ይህንን ደረጃ ያጠናቅቃሉ

የሁለተኛውን ቦርድ A0 ፓድ በመሸጥ አድራሻውን ወደ 0x41 (ወይም 1000001 BIN) አስቀምጠዋል

የሶስተኛውን ቦርድ A1 ንጣፍ በመሸጥ አድራሻውን ለ 0x44 (ወይም 1000100 BIN) ይመድባሉ

ደረጃ 3: Ina Boards ን ወደ ESP32 ያገናኙ

የ Ina Boards ን ከ ESP32 ጋር ያገናኙ
የ Ina Boards ን ከ ESP32 ጋር ያገናኙ

አሁን ለእያንዳንዱ የ INA ቦርዶች የተለያዩ የ I2C አድራሻዎችን መድበናል ፣ ከ ESP32 ቦርድ ጋር ለማገናኘት ጊዜው አሁን ነው!

ከላይ ባለው ስዕል መሠረት ይገናኙ

1) የ VCC ፒን ወደ 3.3 ቪ ፒን

2) የ GND ፒን ወደ GND ፒን

3) የ SDA ፒን ወደ ጂፒኦ ፒን 21

4) የ SCL ፒን ወደ ጂፒዮ ፒን 22

የአንድ ትልቅ ፕሮጀክት አካል እንደመሆኑ ግንኙነቶችን ለማድረግ የፒ.ሲ.ቢ.ን ንድፍ ተጠቅሜያለሁ (ከተስተካከለ የአሁኑ ወሰን ጋር የ WiFi ተስተካካይ የቮልቴጅ አቅርቦት - ለዚህ እንዲሁ አስተማሪ ለማድረግ ተስፋ ያድርጉ)።

ለማገናኘት ሌላ ማንኛውንም መንገድ ሊጠቀሙ ይችላሉ ፣ ይህ እርስዎ የተሸጡበት የሽቶ ሰሌዳ ወይም የዳቦ ሰሌዳ ሊሆን ይችላል። ሁለቱም በጥሩ ሁኔታ ይሰራሉ።

ደረጃ 4: በአርዲኖ አይዲኢ ውስጥ የ ESP32 ሰሌዳውን ይጫኑ

በአርዲኖ አይዲኢ ውስጥ የ ESP32 ሰሌዳውን ይጫኑ
በአርዲኖ አይዲኢ ውስጥ የ ESP32 ሰሌዳውን ይጫኑ

አሁን ሰሌዳዎቹን እርስ በእርስ በማገናኘታችን ግንኙነቱን ለመፈተሽ ጊዜው አሁን ነው።

የ Ina ቦርዶችን I2C አድራሻዎች በመሰብሰብ ያንን እናደርጋለን።

የ ESP32 ቦርድ ከ Arduino IDE ጋር በትክክል ይሠራል።

ስለዚህ የቦርድ ሥራ አስኪያጁን በመጠቀም የ ESP32 ቦርድ በአርዱዲኖ ውስጥ እንጫን።

ደረጃ 5 I2C ቃanን በመጠቀም ከ Ina እስከ ESP32 ግንኙነትን ይፈትሹ

I2C ስካነር በመጠቀም የ Ina ወደ ESP32 ግንኙነትን ይፈትሹ
I2C ስካነር በመጠቀም የ Ina ወደ ESP32 ግንኙነትን ይፈትሹ

በ ESP32 እና በ Ina260 ሰሌዳዎች መካከል ያለውን ግንኙነት ለማረጋገጥ ቀለል ያለ I2C አድራሻ ስካነር እንጠቀማለን።

የ I2C አድራሻ ስካነር ኮድ ወደ ባዶ አርዱዲኖ ፕሮጀክት ሊገለበጥ ይችላል።

ኮዱ ከ Arduino cc ድር ጣቢያ ተወስዷል-

// -------------------------------------- // i2c_scanner // // ስሪት 1/ / ይህ ፕሮግራም (ወይም የሚመስለው ኮድ) // በብዙ ቦታዎች ሊገኝ ይችላል። // ለምሳሌ በ Arduino.cc መድረክ ላይ። // የመጀመሪያው ደራሲ አያውቅም። // ስሪት 2 ፣ ጁን 2012 ፣ አርዱዲኖን 1.0.1 በመጠቀም/ በተቻለ መጠን በአርዱዲኖ.cc ተጠቃሚ ክሮዳል // ስሪት 3 ፣ ፌብሩዋሪ 26 2013 // V3 በ louarnold // ስሪት 4 ፣ መጋቢት 3 ፣ 2013 ፣ አርዱዲኖን በመጠቀም 1.0.3 // በ Arduino.cc ተጠቃሚ ክሮዳል። // በ louarnold የተደረጉ ለውጦች ተወግደዋል። // የመቃኘት አድራሻዎች ከ 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 ("\ nI2C Scanner"); } ባዶነት loop () {ባይት ስህተት ፣ አድራሻ ፤ int nDevices; Serial.println (“መቃኘት…”); nDevices = 0; ለ (አድራሻ = 1 ፤ አድራሻ <127 ፤ አድራሻ ++) {// i2c_scanner // አንድ መሣሪያ ለአድራሻው እውቅና መስጠቱን ለማየት የ // የ Write.endTransmisstion ን የመመለሻ እሴት ይጠቀማል። Wire.begin ማስተላለፊያ (አድራሻ); ስህተት = Wire.endTransmission (); ከሆነ (ስህተት == 0) {Serial.print («I2C መሣሪያ በአድራሻ 0x ተገኝቷል») ፤ ከሆነ (አድራሻ <16) Serial.print ("0"); Serial.print (አድራሻ ፣ HEX); Serial.println ("!"); nDevices ++; } ሌላ ከሆነ (ስህተት == 4) {Serial.print ("በአድራሻ 0x ላይ ያልታወቀ ስህተት"); ከሆነ (አድራሻ <16) Serial.print ("0"); Serial.println (አድራሻ ፣ HEX); }} ከሆነ (nDevices == 0) Serial.println ("I2C መሣሪያዎች አልተገኙም / n"); ሌላ Serial.println ("ተከናውኗል / n"); መዘግየት (5000); // ለሚቀጥለው ቅኝት 5 ሰከንዶች ይጠብቁ}

ደረጃ 6 የኤችቲኤምኤል ዌብሳይቨር አቃፊን መፍጠር

የኤችቲኤምኤል ዌብሳይቨር አቃፊን መፍጠር
የኤችቲኤምኤል ዌብሳይቨር አቃፊን መፍጠር

ESP32 የድር አገልጋይ ለማሄድ እድሉን ይሰጣል። እንዲሁም አንዳንድ ድረ -ገጾችን ለመያዝ በጣም ትልቅ የ RAM ማህደረ ትውስታን ይሰጣል። (እሱ በራስ -ሰር የድረ -ገጽ ፋይሎችን ይጭናል)።

አርዱዲኖ አይዲኢ የተፈጠሩትን ድረ -ገጾች በቀጥታ ወደ ESP32 ራም ለመስቀል ተግባራዊነትን ይሰጣል።

ይህንን ለማድረግ በአርዱዲኖ ፕሮጀክት አቃፊ ስር አቃፊ ‹ውሂብ› መፍጠር ያስፈልግዎታል። በእኔ ሁኔታ ይህ / Arduino / esp32_Power_supply_v1_implemented / data ነው።

የድረ -ገጽ ፋይሎችን ወደ ESP በሚሰቅሉበት ጊዜ አርዱኢኖ የሚፈልገው የአቃፊ ስም ስለሆነ አቃፊውን በትክክል ‹ውሂብ› መሰየሙ አስፈላጊ ነው።

ደረጃ 7 - የኃይል መቆጣጠሪያውን ድረ -ገጽ ይፍጠሩ

ኤችኤምቲኤል ጽሑፍን በድር አሳሽ ውስጥ ለማቅረብ የሚያስችል ቋንቋ ነው። የኤችቲኤምኤል ፋይል በቅጥያው htm (l) ስር ይቀመጣል። የድረ -ገጽ ቅርጸት ብዙውን ጊዜ በተለየ ፋይል ውስጥ (ለምሳሌ ፣ css ፋይል) ውስጥ ይቀመጣል። አንድ ድረ -ገጽ ሊያቀርበው የሚፈልገው የፕሮግራሙ ተግባር በመደበኛነት ወደ ሌላ ፋይል (ለምሳሌ። js ፋይል ፣ ለጃቫስክሪፕት) ይቀመጣል።

በእኔ የኤችቲኤምኤል ሰነድ ውስጥ ጽሑፉን ፣ ቅርጸቱን እና ጃቫስክሪፕትን ወደ አንድ ፋይል አካትቻለሁ። ስለዚህ አንድ ድረ -ገጽ እንዴት እንደሚሠራ ጥሩ ምሳሌ አይደለም ፣ ግን ዓላማዎቹን ያገለግላል። የኤችቲኤምኤል ሰነዱን 'Index.htm' ብዬ ሰይሜዋለሁ።

ሁለተኛው ፋይል በእኔ የውሂብ አቃፊ ውስጥ ተካትቷል ፣ ማለትም። PicoGraph.js። የፒኮግራፍ ቤተ -መጽሐፍት በቪንሹ ሻንከር ቢ ከዝናብ ኮምፒተሮች የቀረበ ሲሆን በድረ -ገጽ ላይ ግራፎችን ለማቅረብ በጣም ቀላል ፣ ግን ውጤታማ እና ተለዋዋጭ መንገድን ይፈቅዳል። ዓላማዬን በተሻለ ሁኔታ ለማገልገል ኮዱን በትንሹ አሻሽያለሁ።

የኤችቲኤምኤል ድረ -ገጽ እንዲሁ በእኔ ፒሲቢ ቦርድ ላይ የቮልቴጅ አቅርቦቶችን ለመቆጣጠር ኮዱን ያካተተ መሆኑን ያስተውላሉ። የቮልቴጅ አቅርቦት ኮድ የ 5 I/O ፒን የቮልቴጅ ደረጃን ይቆጣጠራል። ይህንን ለማግለል ኮዱን መለወጥ ይችላሉ ወይም ምንም ተጽዕኖ ከሌለ እርስዎ ሊተዉት ይችላሉ።

የኤችቲኤምኤል ኮድ ከዚህ ደረጃ ጋር እንደ txt ፋይል ተያይ isል (አስተማሪዎቹ የኤችቲኤም ኮድ መስቀል ስለማይፈቅዱ)።

የኤችቲኤምኤል ኮድ ለመጠቀም እርስዎ ይቅዱ እና በጽሑፍ አርታኢ ውስጥ ይለጥፉት (ማስታወሻ ደብተር ++ ን እጠቀማለሁ) እና በ ‹ውሂብ› አቃፊ ስር እንደ ‹Index.htm› አድርገው ያስቀምጡት። ለ picograph.txt ፋይል ተመሳሳይ ነገር ያደርጋሉ ነገር ግን ወደ picograph.js እንደገና ይሰይሙት

የኤችቲኤምኤል ፋይልን በተመለከተ

አንድ ተግባር SndUpdate መልዕክቶችን ከ 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 ቁጥሮችን ያነባል ፣ ማለትም። የ voltage ልቴጅ መለኪያው ፣ የአሁኑ ቦርድ ከመጀመሪያው ቦርድ ፣ ከዚያ ከሁለተኛው እና ከዚያ በኋላ ሁለቱ መለኪያዎች።

ግራፎቹ ተጣጣፊ-ኮንቴይነሮች በሚባሉት ውስጥ ተካትተዋል ፣ ይህም የድረ-ገፁን ተለዋዋጭ መጠን ለመለወጥ ያስችላል።

.flex- ኮንቴይነር {ማሳያ: ተጣጣፊ; ዳራ-ቀለም: cadetblue; ተጣጣፊ-ጥቅል: መጠቅለያ; }. ኅዳግ: 10 ፒክሰል; መለጠፍ: 20 ፒክስል; የቅርጸ-ቁምፊ መጠን-20 ፒክስል; ቅርጸ-ቁምፊ-ቤተሰብ “ሰባት ክፍል”; የቅርጸ ቁምፊ-ክብደት: ደፋር; }

የእያንዳንዱ ተጣጣፊ ኮንቴይነሮች ይዘት የተከተተውን ግራፎች ጨምሮ እንደሚከተለው ተሠርቷል።

(ልብ ይበሉ የተወገደበት ቦታ)

የ div መለያ ለ = "PG1_scale" ልኬት//የመለያ ግቤት ስም = "PG1_scale" እሴት = "10" brbr!-ሸራ ለ thr ግራፍ-የሸራ ዘይቤ = "ቁመት: 100 ፒክስል ፤ ድንበር-2 ፒክሰል ጠንካራ #000000 ፤ የጀርባ ቀለም: #ፋፋፋ; " /ሸራ

!-አፈ ታሪክ/መለያዎች-

div /div div /div /div

በኤችቲኤምኤል ፋይል ውስጥ የመጨረሻው አስፈላጊነት ክፍል ቁጥሮቹን ለማቅረብ ከፒኮግራፍ ቤተ -መጽሐፍት ጋር ይሠራል-

var PG1_demograph = createGraph ("PG1_graphDemo" ፣ ["Ch1"] ፣ "V" ፣ "PG1_graphLabels" ፣ 20 ፣ 11 ፣ ሐሰት ፣ ሐሰት ፣ 11 ፣ "#e52b50") ፤ var PG2_demograph = createGraph ("PG2_graphDemo" ፣ ["Ch1"] ፣ "mA" ፣ "PG2_graphLabels" ፣ 20 ፣ 11 ፣ ሐሰት ፣ ሐሰት ፣ 11 ፣ "#e52b50") ፤ var PG3_demograph = createGraph ("PG3_graphDemo" ፣ ["Ch2"] ፣ "V" ፣ "PG3_graphLabels" ፣ 20 ፣ 11 ፣ ሐሰት ፣ ሐሰት ፣ 11 ፣ "#008000") ፤ var PG4_demograph = createGraph (“PG4_graphDemo” ፣ [“Ch2”] ፣ “mA” ፣ “PG4_graphLabels” ፣ 20 ፣ 11 ፣ ሐሰት ፣ ሐሰት ፣ 11 ፣ “#008000”); // var PG5_demograph = createGraph ("PG5_graphDemo" ፣ ["Ch3"] ፣ "V" ፣ "PG5_graphLabels" ፣ 20 ፣ 11 ፣ ሐሰት ፣ ሐሰት ፣ 11 ፣ “#0000ff”) ፤ var PG6_demograph = createGraph ("PG6_graphDemo" ፣ ["Ch3"] ፣ "mA" ፣ "PG6_graphLabels" ፣ 20 ፣ 11 ፣ ሐሰት ፣ ሐሰት ፣ 11 ፣ “#0000ff”) ፤ / * እሴቶችን በየሴኮንድ ያዘምኑ */ setInterval (updateEverySecond ፣ 1000) ፤ የተግባር ዝማኔ እያንዳንዱ ሰከንድ () { / * አዲስ እሴቶችን ያግኙ * / 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 በመክፈት ሊገመገም ይችላል ፣ ወደ አሳሽዎ ይጫናል እና መልክውን ያሳያል። በአሳሽዎ ውስጥ የ F12 ቁልፍን በመጫን ሊሆኑ የሚችሉ ስህተቶችን ማረጋገጥ ይችላሉ ፣ የማረም መስኮቱ ይታያል። እንዴት ማረም እንደሚቻል ሙሉ ማብራሪያ ከዚህ አስተማሪ ወሰን ውጭ ነው ፣ ግን ድረ -ገጹ ለድር / ጃቫስክሪፕት ማረም እንደ መጀመሪያ እርምጃ ሊረዳ ይችላል።

ቀጣዩ ደረጃ የተፈጠሩትን ድረ -ገጾች ወደ ESP32 መጫን ነው።

ደረጃ 8 - በ ESP32 ውስጥ የድር ገጽ ጫን

በ ESP32 ውስጥ የድር ገጽ ጫን
በ ESP32 ውስጥ የድር ገጽ ጫን

አጥጋቢ ውጤት ካገኘ በኋላ ድረ -ገጹን ወደ ESP32 ለመስቀል ጊዜው አሁን ነው።

እርስዎ በአርዱዲኖ ፕሮጀክትዎ ስር ‹Index.htm ›ን (የድር ገጽዎ) እና‹ PicoGraph.js ›ን ወደ‹ ውሂብ ›አቃፊ በማስቀመጥ ይህንን ያደርጋሉ።

ቀጣዩ ደረጃ የ ESP32 ሰሌዳውን በኮምፒተር ላይ ማገናኘት ነው። ትክክለኛውን ሰሌዳ እና የ COM ወደብ ከመረጡ በኋላ በአርዲኖ አይዲኢ ውስጥ ባለው የመሣሪያዎች ምናሌ ስር የ ESP32 Sketch Data Upload ን ይምረጡ።

አይዲኢ የመጫን ሂደቱን እንደሚጀምር ያያሉ ፣ ይህም ወደ ስኬታማ ጭነት ሊመራ ይገባል።

ከዚህ እርምጃ ቀጥሎ የ ESP32 ማይክሮ መቆጣጠሪያውን እንደ ድር አገልጋይ ማዋቀር ነው።

ደረጃ 9 ESP32 ን እንደ ዌብሳይቨር ያዋቅሩት

ተያይ ESል ESP32 ን እንደ የድር አገልጋይ የሚያዋቅረው አርዱዲኖ ኢኖ ንድፍን ያገኛሉ።

SSID ን እና ተዛማጅ የይለፍ ቃልዎን በራውተርዎ የይለፍ ቃል መተካት ያስፈልግዎታል።

ቀደም ሲል እንደተገለፀው ይህ ንድፍ የድር ገጹን ለፒሲቢ የኃይል አቅርቦት ጎን እንደ መቆጣጠሪያ ለማዋቀር ኮዱን ይ containsል (በእውነቱ 5 አይኦ ፒኖችን እንደ PWM ፒኖች ማዋቀር እና ከድረ -ገጹ የመልዕክት ዥረት በኩል መቆጣጠር)።

ንድፉ የተመሠረተው በክሪስቶ ጎችኮቭ በተዘጋጀው የዌብዘርቨር ንድፍ ላይ ነው።

በኮዱ ላይ አንዳንድ ማብራሪያ።

የሚከተሉት ተግባራት ሁሉም የድር አገልጋዩን ከማዋቀር ጋር የተዛመዱ ናቸው።

ሕብረቁምፊ ቅርጸት ባይቶች (መጠን_t ባይት) ሕብረቁምፊ getContentType (ሕብረቁምፊ የፋይል ስም) ቡል አለ (የገመድ መንገድ) bool handleFileRead (String path) ባዶ መያዣ ፋይል ፋይል ጫን () ባዶ እጀታ ፋይልዴል () ባዶ እጀታ ፋይል ፍጠር () ባዶ መያዣ ፋይል ፋይል ()

እንዲሁም በማዋቀር () ተግባር ውስጥ ያለው የመጀመሪያው ኮድ ከ PWM እና Webserver ማዋቀር ጋር ይዛመዳል።

የሚከተለው ኮድ የመልእክት ዥረቶችን ወደ እና ከድረ -ገፁ የሚያገለግል የመቋረጫ ተግባርን ያዘጋጃል-

(ከድረ -ገጹ ፈጠራ ውስጥ ለ identዎችን መለየት አለብዎት)

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 ፣ “ጽሑፍ/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 ();

እነዚህ መግለጫዎች በአገልጋዩ በኩል ወደ ድረ -ገጹ ለማስተላለፍ ልኬቶችን ይሰበስባሉ እና ያዘጋጃሉ (በየ 1000ms ይከሰታል ፣ በድረ -ገጹ html ጃቫ ስክሪፕት ውስጥ ተዘጋጅቷል)።

ደረጃ 10: ጨርሰዋል

ጨርሰዋል!
ጨርሰዋል!

ንድፉን ወደ ESP32 ቦርድ መስቀል ፣ ማዋቀሩን ማጠናቀቅ እና የኃይል መቆጣጠሪያዎ የመጨረሻ መሆን አለበት!

ESP32 ን ማብራት አሁን በዩኤስቢ ወደብ በኩል መከናወኑን አስተውለው ይሆናል ፣ ይህ ከቪክቶሪያዎ / የአሁኑ ሜትሮችዎ ጋር በ WiFi ላይ የተመሠረተ የግንኙነት ጥቅሞችን ትልቅ ክፍል ከፍ ያደርገዋል። ስለዚህ ፣ ለኤኤስፒ 32 ቀለል ያለ LM317 የተመሠረተ የቮልቴጅ ቁጥጥር ያለው የኃይል አቅርቦት አዘጋጅቻለሁ። ከዚህ አስተማሪነት ወሰን አቆየሁት ነገር ግን ፍላጎት ካለ ቀጣዩ ትምህርት ሊሆን ይችላል።

በሚቀጥለው ደረጃ እኔ እንደ መነሳሻ ሆኖ ሊያገለግል ለሚችል የኃይል አቅርቦት የኤሌክትሮኒክ ወረዳውን ቀድሞውኑ ሰጥቻለሁ።

ደረጃ 11 - ESP32 ን ማብራት

ESP32 ን በማብራት ላይ
ESP32 ን በማብራት ላይ

በዙሪያዎ ተኝተው ከሌለዎት ለርስዎ ESP32 ብቸኛ የኃይል ምንጭ ለመገንባት በተነሳሽነት።

የኤሌክትሪክ ዑደት የ 19 ቪ ላፕቶፕ የኃይል አቅርቦት ሥራዎች። የ LM317 ን የኃይል መበታተን በቁጥጥር ስር ለማቆየት ይህ ሁለት ደረጃ የቮልቴጅ ደረጃን ወደ ታች ይጠይቃል። (በሙቀት መስጠም እንኳን!)። እንዲሁም እነዚያ የማይክሮ መቆጣጠሪያዎች የ WiFi ግንኙነት ሲጀምሩ በእርግጥ ትልቅ የአሁኑ መለዋወጥ ስላላቸው የ 100uF capacitor ን በ VCC_ESP መስመር ፊት ማስገባትዎን አይርሱ።

ማሳሰቢያ ESP32 ን በአንድ ጊዜ ከአንድ በላይ የኃይል ምንጭ ላለማድረግ!

ተጨማሪ የተለመደው የኃላፊነት ማስተባበያዎች ፣ ግን ከሁሉም በላይ

ይዝናኑ!

ሁሉም ፋይሎች በእኔ GitHub ላይ ይገኛሉ

የሚመከር: