ዝርዝር ሁኔታ:

IoT ቀላል ሆኗል - የርቀት የአየር ሁኔታ መረጃን መያዝ - UV እና የአየር ሙቀት እና እርጥበት - 7 ደረጃዎች
IoT ቀላል ሆኗል - የርቀት የአየር ሁኔታ መረጃን መያዝ - UV እና የአየር ሙቀት እና እርጥበት - 7 ደረጃዎች

ቪዲዮ: IoT ቀላል ሆኗል - የርቀት የአየር ሁኔታ መረጃን መያዝ - UV እና የአየር ሙቀት እና እርጥበት - 7 ደረጃዎች

ቪዲዮ: IoT ቀላል ሆኗል - የርቀት የአየር ሁኔታ መረጃን መያዝ - UV እና የአየር ሙቀት እና እርጥበት - 7 ደረጃዎች
ቪዲዮ: ጥሩ ነገሮችን እንዴት መሳብ እንደሚቻል. ኦዲዮ መጽሐፍ 2024, ህዳር
Anonim
IoT ቀላል ሆኗል - የርቀት የአየር ሁኔታ መረጃን መያዝ - UV እና የአየር ሙቀት እና እርጥበት
IoT ቀላል ሆኗል - የርቀት የአየር ሁኔታ መረጃን መያዝ - UV እና የአየር ሙቀት እና እርጥበት

በዚህ መማሪያ ላይ የርቀት መረጃን እንደ UV (አልትራቫዮሌት ጨረር) ፣ የአየር ሙቀት እና እርጥበት እንይዛለን። እነዚያ መረጃዎች በጣም አስፈላጊ ይሆናሉ እናም ለወደፊቱ በተጠናቀቀ የአየር ሁኔታ ጣቢያ ውስጥ ያገለግላሉ።

የማገጃው ዲያግራም መጨረሻ ላይ ምን እንደምናገኝ ያሳያል።

ምስል
ምስል

ደረጃ 1 - ቦኤም - የቁሳቁስ ሂሳብ

NodeMCU (ESP8266-12E) - 9.00 ዶላር

እርጥበት እና የሙቀት ዳሳሽ (DHT22) - USD10.00

UV ዳሳሽ - 4.00 ዶላር

OLED USD 12.00

የዳቦ ሰሌዳ - USD1.00

ደረጃ 2 - የአናሎግ UV ዳሳሽ

የአናሎግ UV ዳሳሽ
የአናሎግ UV ዳሳሽ
የአናሎግ UV ዳሳሽ
የአናሎግ UV ዳሳሽ
የአናሎግ UV ዳሳሽ
የአናሎግ UV ዳሳሽ

ይህ የአልትራቫዮሌት ዳሳሽ በብርሃን ዳሳሽ ህዋስ ላይ ከሚገኘው ከአልትራቫዮሌት ጨረር ጋር ተመጣጣኝ የሆነ የአናሎግ ውፅዓት ያመነጫል። የ 240-370nm የብርሃን ክልል (UVB ን እና አብዛኛዎቹን የ UVA ህብረ ህዋሳትን የሚሸፍን) የ UV photodiode (በ Gallium Nitride ላይ የተመሠረተ) ይጠቀማል። ከፎቶዲዲዮው ያለው የምልክት ደረጃ በናኖ-አምፔር ደረጃ ውስጥ በጣም ትንሽ ነው ፣ ስለሆነም ሞጁሉ ምልክቱን ወደ ተነባቢ የቮልት ደረጃ (ከ 0 እስከ 1 ቪ) ለማጉላት የአሠራር ማጉያውን አካቷል።

ቪሲሲን ወደ 3.3VDC (ወይም 5VDC) እና GND ን ከኃይል መሬት ጋር በማገናኘት ዳሳሽ እና ኦፕ-አምፕ ኃይል ሊሰጥ ይችላል። የአናሎግ ምልክቱ ከ OUT ፒን ሊገኝ ይችላል።

የእሱ ውፅዓት በሚሊቪልት ይሆናል እና በእኛ NodeMCU አናሎግ ግቤት ይነበባል። ከተነበበ በኋላ እሴቶቹ በኮዱ በተሻለ ሁኔታ እንዲስተናገዱ “መለወጥ” (ወይም “ካርታ”) ማድረግ አለብን። በተግባሩ አንብብ SensorUV ():

/ * የ UV ዳሳሽ በ mV ውስጥ ያንብቡ እና የአልትራቫዮሌት መረጃ ጠቋሚ ስሌት */

ባዶነት readSensorUV () {byte numOfReadings = 5; dataSensorUV = 0; ለ (int i = 0; i <numOfReadings; i ++) {dataSensorUV+= analogRead (sensorUVPin); መዘግየት (200); } dataSensorUV /= numOfReadings; dataSensorUV = (dataSensorUV * (3.3 / 1023.0)) * 1000; Serial.println (dataSensorUV); መረጃ ጠቋሚ (); }

የ UV መረጃ ካገኘን በኋላ ከላይ ባለው ሰንጠረዥ እንደተገለፀው የ UV መረጃ ጠቋሚውን በቀላሉ ማስላት እንችላለን። የተግባር መረጃ ጠቋሚ አስል () ያደርግልናል-

/ * UV ማውጫ ስሌት */

ባዶ መረጃ ጠቋሚ አስላ () {ከሆነ (dataSensorUV <227) indexUV = 0; ሌላ ከሆነ (227 <= dataSensorUV && dataSensorUV <318) indexUV = 1; ሌላ ከሆነ (318 <= dataSensorUV && dataSensorUV <408) indexUV = 2; ሌላ ከሆነ (408 <= dataSensorUV && dataSensorUV <503) indexUV = 3; ሌላ ከሆነ (503 <= dataSensorUV && dataSensorUV <606) indexUV = 4; ሌላ ከሆነ (606 <= dataSensorUV && dataSensorUV <696) indexUV = 5; ሌላ ከሆነ (696 <= dataSensorUV && dataSensorUV <795) indexUV = 6; ሌላ ከሆነ (795 <= dataSensorUV && dataSensorUV <881) indexUV = 7; ሌላ ከሆነ (881 <= dataSensorUV && dataSensorUV <976) indexUV = 8; ሌላ ከሆነ (976 <= dataSensorUV && dataSensorUV <1079) indexUV = 9; ሌላ ከሆነ (1079 <= dataSensorUV && dataSensorUV <1170) indexUV = 10; ሌላ መረጃ ጠቋሚ UV = 11; }

ደረጃ 3 - ማሳያ መጫን - OLED

ማሳያ በመጫን ላይ ፦ OLED
ማሳያ በመጫን ላይ ፦ OLED
ማሳያ በመጫን ላይ ፦ OLED
ማሳያ በመጫን ላይ ፦ OLED

ለሙከራ ዓላማዎች ፣ እኛ ኦ.ቪ.ዲ (UV) መለኪያችን ላይ እንጨምረዋለን (ይህ እርምጃ ሙሉ በሙሉ አማራጭ ነው)።

ተከታታይ ሞኒተሮችን ለመጠቀም በፈተናዎች ወቅት ደህና ነው ፣ ግን በተናጥል ሁኔታዎ ከኮምፒዩተርዎ ርቀው የእርስዎን ፕሮቶፖች ሲጠቀሙ ምን እየሆነ ነው? ለዚያ ፣ የ OLED ማሳያ ፣ SSD1306 ን እንጫን ፣ የትኞቹ ዋና ዋና ባህሪዎች ናቸው

  • የማሳያ መጠን 0.96 ኢንች
  • I2C IIC SPI ተከታታይ
  • 128X64
  • ነጭ OLED LCD LED

የኤሌክትሪክ ንድፉን ይከተሉ እና የ OLED ን 4 ፒንዎን ያገናኙ

  • ቪሲሲ ወደ 3.3 ቪ ይሄዳል
  • GND ወደ መሬት ይሄዳል
  • SCL ወደ NodeMCU (GPIO 2) ==> D4 ይሄዳል
  • ኤስዲኤ ወደ NodeMCU (GPIO 0) ==> D3 ይሄዳል

አንዴ ማሳያውን ካገናኘን በኋላ ቤተመጻሕፍቱን በአርዱዲኖ አይዲኢ ላይ አውርደን እንጫነው - በ ‹ዳንኤል ኢችሆርን› የተገነባው ‹ESP8266 OLED Driver for SSD1306 ማሳያ› (ስሪት 3.0.0 ወይም ከዚያ በላይ መጠቀሙን ያረጋግጡ!)።

በ SSD1306Wire.h ላይ ሊገኝ በሚችለው በአርዱዲኖ አይዲኢ ላይ ቤተ -መጽሐፍቱን ይጫኑ

አንዴ IDE ን እንደገና ከጀመሩ ፣ ቤተ -መጽሐፍት ቀድሞውኑ መጫን አለበት።

ቤተ-መጽሐፉ አብሮ የተሰራውን የ Wire.h ቤተ-መጽሐፍት በመጠቀም የ OLED ማሳያውን ለመድረስ የ I2C ፕሮቶኮልን ይደግፋል-

/ * OLED */

#"SSD1306Wire.h" ን ያካትቱ "Wire.h" const int I2C_DISPLAY_ADDRESS = 0x3c; const int SDA_PIN = 0; const int SCL_PIN = 2; SSD1306 ሽቦ ማሳያ (I2C_DISPLAY_ADDRESS ፣ SDA_PIN ፣ SCL_PIN);

በእኛ የ OLED ማሳያ ጥቅም ላይ የሚውል አንዳንድ አስፈላጊ ኤፒአይ እንዘርዝር። ሙሉ ዝርዝሩ ከላይ በተሰጠው GITHub ላይ ይገኛል።

ሀ ማሳያ መቆጣጠሪያ;

ባዶነት init (); // ማሳያውን ያስጀምሩ

ባዶነት ማሳያ ላይ (ባዶ); // ማሳያውን ባዶ በሆነ ማሳያ ላይ ያብሩ (ባዶ); // ማሳያውን ባዶ (ባዶ) ን ያጥፉ ፣ // የአከባቢውን የፒክሰል ቋት ባዶ ባዶ ማንሸራተቻ ማያ ገጽን በአቀባዊ (); // ማሳያውን ወደታች ያዙሩት

ለ. የጽሑፍ ሥራዎች

ባዶ ባዶ ስዕል (int16_t x ፣ int16_t y ፣ ሕብረቁምፊ ጽሑፍ); // (xpos ፣ ypos ፣ “ጽሑፍ”)

ባዶ setFont (const char* fontData); // የአሁኑን ቅርጸ -ቁምፊ ያዘጋጃል።

የሚገኙ ነባሪ ቅርጸ -ቁምፊዎች ፦

  • ArialMT_Plain_10 ፣
  • ArialMT_Plain_16 ፣

  • ArialMT_Plain_24

ሁለቱም OLED እራሱ እና ቤተ -መጽሐፍት አንዴ ከተጫኑ ፣ እሱን ለመፈተሽ ቀለል ያለ ፕሮግራም እንፃፍ። በአይዲኢዎ ላይ የደንብ ኮድ ያስገቡ ፣ ውጤቱ ከላይ ባለው ፎቶ ላይ እንደሚታየው ማሳያ መሆን አለበት።

* ኦልድ */

#"SSD1306Wire.h" ን ያካትቱ "Wire.h" const int I2C_DISPLAY_ADDRESS = 0x3c; const int SDA_PIN = 0; const int SCL_PIN = 2; SSD1306 ሽቦ ማሳያ (I2C_DISPLAY_ADDRESS ፣ SDA_PIN ፣ SCL_PIN); ባዶነት ማዋቀር () {Serial.begin (115200); displaySetup (); } ባዶነት loop () {} / * በ OLED * / ባዶነት ማሳያ ቅንብር () {display.init () ላይ የማዋቀር ውሂብን ያስጀምሩ እና ያሳዩ ፤ // የማሳያ ማሳያውን አስጀምር። // የማሳያ ማሳያ አጥፋ። ማያ ገጹን በአቀባዊ (); // ማሳያውን ወደታች ማሳያ ያሳዩ። አሳይ (); // መረጃን በማሳያው ላይ Serial.println (“የማሳያ ሙከራን ማስጀመር”); display.setFont (ArialMT_Plain_24); display.drawString (30 ፣ 0 ፣ “OLED”); // (xpos, ypos, "Text") display.setFont (ArialMT_Plain_16); display.drawString (18 ፣ 29 ፣ “ሙከራ ተጀምሯል”); display.setFont (ArialMT_Plain_10); display.drawString (10 ፣ 52 ፣ “Serial BaudRate:”); display.drawString (90 ፣ 52 ፣ ሕብረቁምፊ (11500)); display.display (); // መረጃን በማሳያ መዘግየት ላይ ያስቀምጡ (3000); }

ከላይ ያለው ፕሮግራም ከእኔ GitHub ማውረድ ይችላል-

NodeMCU_OLED_Test

ደረጃ 4: የአከባቢ UV መለኪያ

የአከባቢ UV መለኪያ
የአከባቢ UV መለኪያ
የአከባቢ UV መለኪያ
የአከባቢ UV መለኪያ

አሁን ፣ በ OLED ማሳያ ተጭኖ ፣ ባትሪችንን ማገናኘት እና የእኛን “UV Meter” በመጠቀም አንዳንድ የርቀት ሙከራዎችን ማድረግ እንችላለን።

#ጥራት SW_VERSION "UV_Sensor_V.1"

/ * UV Sensor */ #define sensorUVPin A0 int dataSensorUV = 0; int indexUV = 0; / * OLED */ #"SSD1306Wire.h" # #ያካትቱ "Wire.h" const int I2C_DISPLAY_ADDRESS = 0x3c; const int SDA_PIN = 0; const int SCL_PIN = 2; SSD1306 ሽቦ ማሳያ (I2C_DISPLAY_ADDRESS ፣ SDA_PIN ፣ SCL_PIN); ባዶነት ማዋቀር () {Serial.begin (115200); displaySetup (); } ባዶነት loop () {readSensorUV (); displayUV (); መዘግየት (1000); } / * የማዋቀር ውሂብን በ OLED * / ባዶነት ማሳያSetup () {display.init () ላይ ያሳዩ እና ያሳዩ ፤ // የማሳያ ማሳያውን አስጀምር። // የማሳያ ማሳያ አጥፋ። ማያ ገጹን በአቀባዊ (); // ማሳያውን ወደታች ማሳያ ያሳዩ። አሳይ (); // መረጃን በማሳያው ላይ Serial.println ("UV ዳሳሽ ሙከራን ማስጀመር") ፤ display.setFont (ArialMT_Plain_24); display.drawString (10 ፣ 0 ፣ “MJRoBot”); display.setFont (ArialMT_Plain_16); display.drawString (0 ፣ 29 ፣ “UV ዳሳሽ ሙከራ”); display.setFont (ArialMT_Plain_10); display.drawString (0 ፣ 52 ፣ “SW Ver.:”); display.drawString (45 ፣ 52 ፣ SW_VERSION); display.display (); መዘግየት (3000); } / * የ UV ዳሳሽ በ mV ውስጥ ያንብቡ እና የአልትራቫዮሌት መረጃ ጠቋሚ ስሌት * / ባዶ ንባብ SensorUV () {byte numOfReadings = 5; dataSensorUV = 0; ለ (int i = 0; i <numOfReadings; i ++) {dataSensorUV+= analogRead (sensorUVPin); መዘግየት (200); } dataSensorUV /= numOfReadings; dataSensorUV = (dataSensorUV * (3.3 / 1023.0)) * 1000; Serial.println (dataSensorUV); መረጃ ጠቋሚ (); } / * UV ማውጫ ስሌት * / ባዶ መረጃ ጠቋሚ ማስላት () {ከሆነ (dataSensorUV <227) indexUV = 0; ሌላ ከሆነ (227 <= dataSensorUV && dataSensorUV <318) indexUV = 1; ሌላ ከሆነ (318 <= dataSensorUV && dataSensorUV <408) indexUV = 2; ሌላ ከሆነ (408 <= dataSensorUV && dataSensorUV <503) indexUV = 3; ሌላ ከሆነ (503 <= dataSensorUV && dataSensorUV <606) indexUV = 4; ሌላ ከሆነ (606 <= dataSensorUV && dataSensorUV <696) indexUV = 5; ሌላ ከሆነ (696 <= dataSensorUV && dataSensorUV <795) indexUV = 6; ሌላ ከሆነ (795 <= dataSensorUV && dataSensorUV <881) indexUV = 7; ሌላ ከሆነ (881 <= dataSensorUV && dataSensorUV <976) indexUV = 8; ሌላ ከሆነ (976 <= dataSensorUV && dataSensorUV <1079) indexUV = 9; ሌላ ከሆነ (1079 <= dataSensorUV && dataSensorUV <1170) indexUV = 10; ሌላ መረጃ ጠቋሚ UV = 11; } /* የ UV እሴቶችን በአካባቢያዊ OLED* / ባዶነት ማሳያUV () {display.clear (); display.setFont (ArialMT_Plain_16); display.drawString (20 ፣ 0 ፣ “UV Sensor”); display.drawString (0, 23, "UV (mV):"); display.drawString (80 ፣ 23 ፣ ሕብረቁምፊ (dataSensorUV)); display.drawString (0 ፣ 48 ፣ “UV Index:”); display.setFont (ArialMT_Plain_24); display.drawString (82 ፣ 42 ፣ String (indexUV)); display.display (); }

ከላይ ያለው ኮድ ከእኔ GitHun: NodeMCU_UV_Sensor_OLED.ino ማውረድ ይችላል

ደረጃ 5 - ለአየር ሙቀት እና እርጥበት መለኪያዎች DHT22 ን መጫን

ለአየር ሙቀት እና እርጥበት መለኪያዎች DHT22 ን መጫን
ለአየር ሙቀት እና እርጥበት መለኪያዎች DHT22 ን መጫን
ለአየር ሙቀት እና እርጥበት መለኪያዎች DHT22 ን መጫን
ለአየር ሙቀት እና እርጥበት መለኪያዎች DHT22 ን መጫን

የአየር ሁኔታ መረጃን ለመያዝ በጣም ከሚጠቀሙባቸው ዳሳሾች አንዱ ዲኤችቲ 22 (ወይም ወንድሙ DHT11) ፣ ዲጂታል አንፃራዊ እርጥበት እና የሙቀት ዳሳሽ ነው። በዙሪያው ያለውን አየር ለመለካት አቅም ያለው የእርጥበት ዳሳሽ እና ቴርሞስታተርን ይጠቀማል እና በመረጃ ፒን ላይ ዲጂታል ምልክት ይተፋል (የአናሎግ ግብዓት ካስማዎች አያስፈልጉም)።

አነፍናፊው በ 3.3V እና 5V መካከል ኃይል ሊኖረው እና ከ -40oC እስከ +80oC ከ +/- 0.5oC ትክክለኛነት ጋር ለሙቀት እና ለ +/- 2% አንጻራዊ እርጥበት ይሠራል። እንዲሁም የእሱ የመዳሰሻ ጊዜ በአማካይ 2 ሰከንዶች (በንባብ መካከል ዝቅተኛው ጊዜ) መሆኑን ከግምት ውስጥ ማስገባት አስፈላጊ ነው። የአዳፍሬው ጣቢያ ስለ ሁለቱም ፣ ስለ DHT22 እና ስለ ወንድሙ DHT11 ብዙ መረጃ ይሰጣል። ለተጨማሪ ዝርዝሮች እባክዎን DHT22/11 አጋዥ ገጽን ይጎብኙ።

DHT22 4 ፒኖች አሉት (ዳሳሹን ፊት ለፊት ፣ ፒን 1 በጣም የቀረው)

  1. ቪሲሲ (ከኖድኤምሲዩ ወደ 3.3V እንገናኛለን);
  2. መረጃ ወጥቷል ፤
  3. አልተገናኘም እና
  4. መሬት።

አንዴ አብዛኛውን ጊዜ ዳሳሹን ከ 20 ሜትር ባነሰ ርቀቶች ላይ ይጠቀማሉ ፣ 10 ኬ resistor በመረጃ እና በ VCC ፒኖች መካከል መገናኘት አለበት። የውጤት ፒን ከ NodeMCU ፒን D3 ጋር ይገናኛል (ከላይ ያለውን ስእል ይመልከቱ)። አንዴ አነፍናፊው በእኛ ሞዱል ላይ ከተጫነ የ DHT ቤተ -መጽሐፍቱን ከአዳፍ ፍሬ ጊትሆብ ማከማቻ ያውርዱ እና በአርዱዲኖ ቤተ -መጽሐፍት ፋይል ውስጥ ይጫኑት። አንዴ የእርስዎን አርዱዲኖ አይዲኢ እንደገና ከጫኑ በኋላ የ “DHT ዳሳሽ ቤተ -መጽሐፍት” መጫን አለበት።

በኮዱ መጀመሪያ ላይ መስመሮቹን ማካተት አለብን

/* DHT22*/

#"DHT.h" #ዲፋይን DHTPIN D2 #ዲፊኤን DHTTYPE DHT22 DHT dht (DHTPIN ፣ DHTTYPE) ያካትቱ ፤ ተንሳፋፊ ሁም = 0; ተንሳፋፊ ሙቀት = 0;

ዳሳሹን ለማንበብ አዲስ ተግባር ይፈጠራል

/ * የ DHT ውሂብ ያግኙ */

ባዶ getDhtData (ባዶ) {float tempIni = temp; ተንሳፈፈ humIni = hum; temp = dht.readTemperature (); hum = dht.read እርጥበት (); if (isnan (hum) || isnan (temp)) // ማንኛውም ንባብ ካልተሳካ ያረጋግጡ እና ቀደም ብለው ይውጡ (እንደገና ለመሞከር)። {Serial.println («ከ DHT ዳሳሽ ማንበብ አልተሳካም!»); temp = tempIni; ሁም = humIni; መመለስ; }}

የአልትራቫዮሌት እና የዲኤችቲ ዳሳሾችን ጨምሮ የተሟላ ኮድ ከእኔ GitHub: NodeMCU_UV_DHT_Sensor_OLED ማውረድ ይችላል

ደረጃ 6 - ውሂብን ወደ ThingSpeak.com መላክ

ውሂብ ወደ ThingSpeak.com በመላክ ላይ
ውሂብ ወደ ThingSpeak.com በመላክ ላይ
ውሂብ ወደ ThingSpeak.com በመላክ ላይ
ውሂብ ወደ ThingSpeak.com በመላክ ላይ
ውሂብ ወደ ThingSpeak.com በመላክ ላይ
ውሂብ ወደ ThingSpeak.com በመላክ ላይ

እስካሁን NodeMCU ESP12-E ን እንደ መደበኛ እና ተራ የአርዱዲኖ ቦርድ ብቻ ነው የተጠቀምነው። በእርግጥ ፣ እኛ የዚህን አስደናቂ ትንሽ ቺፕ እውነተኛ አቅም ብቻ “ቧጨርነው” እና ወደ ሰማይ የምንነሳበት ጊዜ አሁን ነው! ወይም ለከዋክብት የተሻለ! ኤር… ወደ ደመናው!;-)

እንጀምር!

  1. በመጀመሪያ ፣ በ ThinkSpeak.com ላይ መለያ ሊኖርዎት ይገባል
  2. ሰርጥ ለመፍጠር መመሪያዎቹን ይከተሉ እና የሰርጥ መታወቂያዎን ያስተውሉ እና የኤፒአይ ቁልፍን ይፃፉ
  3. ከዚህ በታች ያለውን ኮድ በ WiFi አውታረ መረብዎ እና በ Thinkspeak ምስክርነቶች ያዘምኑ
  4. ፕሮግራሙን በ IDE ላይ ያሂዱ

በጣም አስፈላጊዎቹን ክፍሎች ኮዱን አስተያየት እንስጥ-

በመጀመሪያ ፣ ወደ ESP8266 ቤተ -መጽሐፍት እንደውል ፣ የ WiFi ደንበኛውን ይግለጹ እና የአከባቢዎን ራውተር እና የ Thinkspeak ምስክርነቶችን ይግለጹ-

/* ESP12-E & Thinkspeak*/

#የ WiFi ደንበኛ ደንበኛን ያካትቱ ፤ const char* MY_SSID = "የእርስዎ SSD መታወቂያ እዚህ"; const char* MY_PWD = "የእርስዎ የይለፍ ቃል እዚህ"; const char* TS_SERVER = "api.thingspeak.com"; ሕብረቁምፊ TS_API_KEY = "የእርስዎ CHANNEL WRITE API ቁልፍ";

ሁለተኛ ፣ ለ IoT ፕሮጄክቶች በጣም አስፈላጊ ቤተ -መጽሐፍትን እንጨምር- SimpleTimer.h:

/ * ሰዓት ቆጣሪ */

#SimpleTimer ሰዓት ቆጣሪን ያካትቱ ፤

ሦስተኛ ፣ በማዋቀር () ጊዜ ፣ ተከታታይ ግንኙነትን እንጀምራለን ፣ ተግባሩን ConnectWiFi () ይደውሉ እና ሰዓት ቆጣሪዎችን እንገልፃለን። የኮድ መስመሩን ልብ ይበሉ timer.setInterval (60000L ፣ sendDataTS) ፤ ወደ ThinkSpeak ሰርጥ ውሂብ ለመስቀል ተግባሩን በየ 60 ሰከንዶች sendDataTS () ይደውላል።

ባዶነት ማዋቀር ()

{… Serial.begin (115200) ፤ መዘግየት (10); … ConnectWifi (); timer.setInterval (60000L ፣ sendDataTS); …}

በመጨረሻ ግን ቢያንስ በ loop () ወቅት አስፈላጊው ሰዓት ቆጣሪውን ማስጀመር ነው እና ያ ብቻ ነው!

ባዶነት loop ()

{… Timer.run (); // SimpleTimer ን ያስጀምራል}

ከዚህ በታች የ Thinkspeak ግንኙነትን ለማስተናገድ ያገለገሉትን ሁለት አስፈላጊ ተግባራት ማየት ይችላሉ-

የ ESP12-E ግንኙነት ከ WiFi አውታረ መረብዎ ጋር

/***************************************************

*WiFi በማገናኘት ላይ *********************************************** ***/ ባዶነት connectWifi () {Serial.print (“ከ”+*MY_SSID ጋር በመገናኘት ላይ); WiFi.begin (MY_SSID ፣ MY_PWD); ሳለ (WiFi.status ()! = WL_CONNECTED) {መዘግየት (1000); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi ተገናኝቷል"); Serial.println (""); }

ESP12-E ውሂብ ወደ ThinkSpeak በመላክ ላይ

/***************************************************

*ወደ Thinkspeak ሰርጥ መረጃን መላክ ******************************************** ******/ ባዶነት sendDataTS (ባዶ) {ከሆነ (client.connect (TS_SERVER ፣ 80)) {String postStr = TS_API_KEY; postStr += "& field1 ="; postStr += ሕብረቁምፊ (dataSensorUV); postStr += "& field2 ="; postStr += ሕብረቁምፊ (indexUV); postStr += "& field3 ="; postStr += ሕብረቁምፊ (ቴምፕ); postStr += "& field4 ="; postStr += ሕብረቁምፊ (ሃም); postStr += "\ r / n / r / n"; client.print ("POST /update HTTP /1.1 / n"); client.print ("አስተናጋጅ: api.thingspeak.com / n"); client.print ("ግንኙነት ፦ close / n"); client.print ("X-THINGSPEAKAPIKEY:" + TS_API_KEY + "\ n"); client.print ("የይዘት-አይነት: ማመልከቻ/x-www-form-urlencoded / n"); client.print ("የይዘት-ርዝመት:"); client.print (postStr.length ()); client.print ("\ n / n"); client.print (postStr); መዘግየት (1000); } ተልኳል ++; client.stop (); }

የተሟላ ኮድ በእኔ GitHub ላይ ይገኛል - NodeMCU_UV_DHT_Sensor_OLED_TS_EXT

አንዴ ወደ ኖድኤምሲዩ የተሰቀለውን ኮድ ከያዙ በኋላ። ውጫዊ ባትሪ እንገናኝ እና ከፀሐይ በታች የተወሰነ ልኬት እናድርግ። የርቀት ጣቢያውን በጣሪያው ላይ አደርጋለሁ እና ከላይ ባሉት ፎቶዎች ላይ እንደሚታየው በ ThingSpeak.com ላይ መረጃን መያዝ እጀምራለሁ።

ደረጃ 7 መደምደሚያ

መደምደሚያ
መደምደሚያ

እንደተለመደው ፣ ይህ ፕሮጀክት ሌሎች ወደ አስደሳች የኤሌክትሮኒክስ ዓለም እንዲገቡ ይረዳቸዋል ብዬ ተስፋ አደርጋለሁ!

ለዝርዝሮች እና ለመጨረሻ ኮድ ፣ እባክዎን የ GitHub ማስቀመጫዬን ይጎብኙ-RPi-NodeMCU-Weather-Station

ለተጨማሪ ፕሮጄክቶች እባክዎን የእኔን ብሎግ ይጎብኙ - MJRoBot.org

ይከታተሉ! ቀጣዩ ትምህርት በ Raspberry Pi የድር አገልጋይ ላይ በመመርኮዝ ከርቀት የአየር ሁኔታ ጣቢያ ወደ ማዕከላዊ መረጃ እንልካለን።

ምስል
ምስል

ሳሉዶስ ከደቡብ ዓለም!

በሚቀጥለው አስተማሪዬ ውስጥ እንገናኝ!

አመሰግናለሁ, ማርሴሎ

የሚመከር: