ዝርዝር ሁኔታ:
- አቅርቦቶች
- ደረጃ 1: ክፍሎችን ማገናኘት
- ደረጃ 2 ቤተ -መጽሐፍት እና አርዱዲኖ ፕሮግራም
- ደረጃ 3: የ MIT መተግበሪያ ፈላጊ 2 ፕሮግራም
- ደረጃ 4 ፦ ውጤቱ
ቪዲዮ: የአየር ብክለትን ለክትትል የሚቆጣጠር ስርዓት ብክለት -4 ደረጃዎች
2024 ደራሲ ደራሲ: John Day | [email protected]. ለመጨረሻ ጊዜ የተሻሻለው: 2024-01-30 07:31
መግቢያ ፦
1 በዚህ ፕሮጀክት ውስጥ የውሂብ ማሳያ ፣ በ SD ካርድ እና በ IOT ላይ የውሂብ ምትኬን እንዴት ቅንጣት መመርመሪያን እንደሚገነቡ አሳያለሁ። በእይታ አንድ የኒዮፒክሰል ቀለበት ማሳያ የአየር ጥራቱን ያሳያል።
2 የአየር ጥራት ዛሬ እየጨመረ የሚሄድ አሳሳቢ ጉዳይ ነው። የአቧራውን መጠን ለመለካት ስርዓቶች አሉ ግን እነሱ በጣም ውድ ናቸው። በአንዳንድ ጥናቶች እንደሚታየው በዝቅተኛ ዋጋ ፣ ከፍተኛ ጥራት ያላቸው ጥቃቅን ቅንጣቶች በገበያ ላይ አሉ።
ለምሳሌ:
www.atmos-meas-tech.net/11/4823/2018/amt-1…
3 ስለዚህ የቅንጣቶችን ብዛት በመጠን ክፍሎች (ከ 0.5µm እስከ 10 µm) የመለኪያ ችሎታ ያለው መሣሪያ ፣ በውጤቱ ቀላል ማሳያ (ኒዮ ፒክስል ቀለበት) ፣ በ TFT ማያ ገጽ ላይ የበለጠ ዝርዝር ማሳያ እና በኤስዲ ካርድ ላይ ጊዜ-የታተመ ምትኬ።
4 በተጨማሪም ከ android መተግበሪያ ጋር መገናኘት እና ውጤቱን በ IOT አገልጋይ ላይ ማተም እንዲችል የብሉቱዝ የግንኙነት ሞዱሉን አክዬአለሁ።
5 የጠቅላላው አጠቃላይ ዋጋ ከ 60 exceed አይበልጥም
አቅርቦቶች
-Arduino uno R3
-አርዱዲኖ ፕሮቶ ጋሻ
-TFT ማያ ገጽ ST7735
-የኒዮፒክስል ቀለበት 24 መሪ
-የእፅዋት ኃይል PMS5003
-HC-06 የብሉቱዝ ሞዱል
ደረጃ 1: ክፍሎችን ማገናኘት
ከላይ ባለው ሥዕላዊ መግለጫ መሠረት የተለያዩ አካላት ተገናኝተዋል
ደረጃ 2 ቤተ -መጽሐፍት እና አርዱዲኖ ፕሮግራም
1 ቤተ -መጽሐፍት
ለ TFT ማያ ገጽ
github.com/adafruit/Afadfruit-GFX- Library
ለኒዮ ፒክስል ቀለበት
github.com/adafruit/Adafruit_NeoPixel
ለ sd ካርድ
github.com/arduino-libraries/SD
2 የአርዱዲኖ ንድፍ
#ያካትቱ #ያካትቱ // Bibliothèque pour l'I2C #"RTClib.h" ን ያካትቱ // Bibliothèque pour le module RTC RTC_DS1307 RTC; #ያካትቱ
// በ Arduino ላይ የትኛው ፒን ከ NeoPixels ጋር ተገናኝቷል?
#ጥራት ፒን 6 // በትሪኔት ወይም ገማ ላይ ፣ ይህንን ወደ 1 ለመቀየር ይጠቁሙ
// ከአርዱinoኖ ጋር ስንት ኒኦፒክስሎች ተያይዘዋል?
#ጥራት NUMPIXELS 24 // ታዋቂው የኒኦፒክስል ቀለበት መጠን Adafruit_NeoPixel pixels (NUMPIXELS ፣ PIN ፣ NEO_GRB + NEO_KHZ800); uint32_t vert = ፒክስሎች ቀለም (0, 250, 0); uint32_t ብርቱካናማ = ፒክስሎች ቀለም (250 ፣ 250 ፣ 0); uint32_t rouge = ፒክስሎች ቀለም (255 ፣ 0 ፣ 0);
SoftwareSerial pmsSerial (2, 3);
#ጥራት cs 10 #define dc 9 #መግለፅ የመጀመሪያ 8 // እንዲሁም ይህንን ከአርዲኖ ዳግም ማስጀመር ጋር ማገናኘት ይችላሉ
#ያካትቱ // ዋና ግራፊክስ ቤተ -መጽሐፍት
#ያካትቱ // በሃርድዌር-ተኮር ቤተ-መጽሐፍት #ጨምሮ #inc inc const cs_sd = 4; int temps; // temps d'acquisition double tempsInit; // የመጀመሪያ ደረጃ አሰጣጥ ዱ ሰዓት ቆጣሪ አው ዲማሬጅ ዱፕ loop ()
#ከተገለጸ (_ SAM3X8E_)
#undef _FlashStringHelper:: F (string_literal) #define F (string_literal) string_literal #endif
// አማራጭ 1 - ማንኛውንም ፒን ይጠቀሙ ግን ትንሽ ቀርፋፋ
// Adafruit_ST7735 tft = Adafruit_ST7735 (cs ፣ dc ፣ mosi ፣ sclk ፣ የመጀመሪያ);
// አማራጭ 2 - የሃርድዌር SPI ፒኖችን መጠቀም አለበት
// (ለ UNO thats sclk = 13 እና sid = 11) እና ፒን 10 // ውፅዓት መሆን አለበት። ይህ በጣም ፈጣን ነው - እንዲሁም / የማይክሮ ኤስዲ ካርድን ለመጠቀም ከፈለጉ (የምስሉን ስዕል ምሳሌ ይመልከቱ) Adafruit_ST7735 tft = Adafruit_ST7735 (cs ፣ dc ፣ first); ተንሳፋፊ nombre_leds = 0; ባዶነት ማዋቀር () {Serial.begin (9600); // የመጀመሪያ ስም ላ አገናኝ I2C Wire.begin (); // ሞጁል RTC RTC.begin (); Serial.print ("init SD"); መዘግየት (1000); ከሆነ (! መመለስ; } Serial.print ("Carte SD እሺ");
የፋይል ውሂብ = SD.open ("donnees.txt", FILE_WRITE); // ኦውቭሬ ፊኪየር "donnees.txt"
data.println (""); data.println ("የዴማሬጅ ማግኛ"); // Ecrit dans ce fichier data.close (); tft.initR (INITR_GREENTAB); // የ ST7735S ቺፕ ፣ ጥቁር ትር Serial.println (“init”) ያስጀምሩ። // የእኛን የማረም ውጤት tft.fillScreen (ST7735_BLACK); // የአነፍናፊ ባውድ መጠን 9600 pmsSerial.begin (9600) ነው።
pixels.begin (); // መጀመሪያ ኒኦፒክስል ስትሪፕ ነገር (ተፈላጊ)
ፒክስሎች። ቅንብር ብሩህነት (2);
}
መዋቅር pms5003data {
uint16_t framelen; uint16_t pm10_standard ፣ pm25_standard ፣ pm100_standard; uint16_t pm10_env ፣ pm25_env ፣ pm100_env; uint16_t particles_03um ፣ particles_05um ፣ particles_10um ፣ particles_25um ፣ particles_50um ፣ particles_100um ፤ uint16_t ጥቅም ላይ አልዋለም; uint16_t checksum; };
የተዋቀረ pms5003data ውሂብ; ባዶነት loop () {pixels.clear (); // ሁሉንም የፒክሰል ቀለሞች ወደ “ጠፍቷል” DateTime now = RTC.now (); // Récupère l'heure et le date courante // affiche_date_heure (አሁን);
temps = ((ሚሊስ () - tempsInit))/1000; // Démarrage du chrono
ከሆነ (ያንብቡ PMSdata (& pmsSerial)) {// tft.fillScreen (ST7735_BLACK); tft.setCursor (10, 5); tft.setTextColor (ST7735_WHITE); tft.println ("nbre ክፍሎች/ 0.1 ሊ");
tft.setCursor (10, 17); tft.setTextColor (ST7735_GREEN ፣ ST7735_BLACK); tft.setTextSize (1); tft.setCursor (10, 17); tft.print ("0.3 um"); tft.print (data.particles_03um); tft.print ("");
tft.setCursor (10, 29);
tft.setTextColor (ST7735_GREEN ፣ ST7735_BLACK); tft.setTextSize (1); tft.print ("0.5 um"); tft.print (data.particles_05um); tft.print ("");
tft.setCursor (10, 41);
tft.setTextColor (ST7735_GREEN ፣ ST7735_BLACK); tft.setTextSize (1); tft.print ("1.0 um"); tft.print (data.particles_10um); tft.print ("");
tft.setCursor (10, 53);
tft.setTextColor (ST7735_GREEN ፣ ST7735_BLACK); tft.setTextSize (1); tft.print ("2.5 um"); tft.print (data.particles_25um); tft.print ("");
tft.setCursor (10, 65);
tft.setTextColor (ST7735_GREEN ፣ ST7735_BLACK); tft.setTextSize (1); tft.print ("5.0 um"); tft.print (data.particles_50um); tft.print ("");
tft.setCursor (10, 77);
tft.setTextColor (ST7735_GREEN ፣ ST7735_BLACK); tft.setTextSize (1); tft.print ("10 um"); tft.print (data.particles_100um); tft.print ("");
tft.setCursor (2, 89);
tft.setTextColor (ST7735_GREEN ፣ ST7735_BLACK); tft.setTextSize (1); tft.print ("PM 1.0"); tft.setTextColor (ST7735_YELLOW, ST7735_BLACK); tft.print (data.pm10_standard); tft.print (""); microg/m3 ");
tft.setCursor (2, 100); tft.setTextColor (ST7735_GREEN ፣ ST7735_BLACK); tft.setTextSize (1); tft.print ("PM 2.5"); tft.setTextColor (ST7735_YELLOW, ST7735_BLACK); tft.print (data.pm25_standard);
tft.setCursor (2, 110);
tft.setTextColor (ST7735_GREEN ፣ ST7735_BLACK); tft.setTextSize (1); tft.print ("PM 10"); tft.setTextColor (ST7735_YELLOW, ST7735_BLACK); tft.print (data.pm100_standard);
tft.setCursor (10, 5);
tft.setTextColor (ST7735_WHITE ፣ ST7735_BLACK); tft.setTextSize (1); tft.println ("nbre ክፍሎች/ 0.1 ሊ");
// Serial.print (temps);
// Serial.print (""); Serial.print ("#"); Serial.print ("03µm"); Serial.print (data.particles_03um); Serial.print (""); Serial.print ("05µm"); Serial.print (data.particles_05um); Serial.print (""); Serial.print ("1µm"); Serial.print (data.particles_10um); Serial.print (""); Serial.print ("25µm"); Serial.print (data.particles_25um); Serial.print (""); Serial.print ("50µm"); Serial.print (data.particles_50um); Serial.print (""); Serial.print ("100µm"); Serial.print (data.particles_100um); Serial.println (""); nombre_leds = int (((ተንሳፋፊ (data.particles_03um)/65535)*24)); // nombre_leds = (8); Serial.println (nombre_leds);
ከሆነ ((nombre_leds = 1)) {
pixels.fill (vert, 0, nombre_leds); } ሌላ ከሆነ ((nombre_leds = 8)) {pixels.fill (vert, 0, 8); pixels.fill (ብርቱካንማ ፣ 8 ፣ ((nombre_leds) -8))); } ሌላ ከሆነ (nombre_leds> 16) {
pixels.fill (vert, 0, 8); pixels.fill (ብርቱካንማ ፣ 8 ፣ 8); pixels.fill (ሩዥ ፣ 16 ፣ ((nombre_leds) -16))); } ሌላ ከሆነ (nombre_leds <= 1) {pixels.fill (vert, 0, 1); } pixels.show (); // የዘመኑ የፒክሰል ቀለሞችን ወደ ሃርድዌር ይላኩ።
// ትርጓሜ données String PM03 = String (data.particles_03um); ሕብረቁምፊ PM05 = ሕብረቁምፊ (data.particles_05um); ሕብረቁምፊ PM10 = ሕብረቁምፊ (data.particles_10um); ሕብረቁምፊ PM25 = ሕብረቁምፊ (data.particles_25um); ሕብረቁምፊ PM50 = ሕብረቁምፊ (data.particles_50um); ሕብረቁምፊ PM100 = ሕብረቁምፊ (data.particles_100um); ሕብረቁምፊ PMS10 = ሕብረቁምፊ (data.pm10_standard); ሕብረቁምፊ PMS25 = ሕብረቁምፊ (data.pm25_standard); ሕብረቁምፊ PMS100 = ሕብረቁምፊ (data.pm100_standard); String Temps = String (temps);
// Ecriture des données dans le fichier texte
የፋይል ውሂብ = SD.open ("donnees.txt", FILE_WRITE); data.println (Temps+""+PM03+""+PM05+""+PM10+""+PM25+""+PM50+""+PM100+""+PMS10+""+PMS25+""+PMS100+""); data.close (); }
}
ቡሊያን ማንበብ PMSdata (ዥረት *ዎች) {
ከሆነ (! s-> የሚገኝ ()) {ሐሰት መመለስ ፤ } // ልዩ (0- 42) መጀመሪያ-ባይ (s-> peek ()! = 0x42) {s-> ን አንብብ () ን እስክንደርስ ድረስ ባይት አንብብ። ሐሰትን መመለስ; }
// አሁን ሁሉንም 32 ባይቶች ያንብቡ
ከሆነ (s-> የሚገኝ () readBytes (ቋት ፣ 32);
// Checksum ን ያዘጋጁ
ለ (uint8_t i = 0; i <30; i ++) {sum+= ቋት ; }
/* ማረም
ለ (uint8_t i = 2; i <32; i ++) {Serial.print ("0x"); Serial.print (ቋት ፣ HEX) ፤ Serial.print (","); } Serial.println (); */ // ውሂቡ endian'd ውስጥ ይመጣል ፣ ይህ ይፈታል ስለዚህ በሁሉም የመሣሪያ ስርዓቶች ላይ ይሰራል uint16_t buffer_u16 [15]; ለ (uint8_t i = 0; i <15; i ++) {buffer_u16 = ቋት [2 + i*2 + 1]; buffer_u16 + = (ቋት [2 + i*2] << 8); }
// በጥሩ አወቃቀር ውስጥ ያስገቡ:)
memcpy ((ባዶነት *) & ውሂብ ፣ (ባዶ *) buffer_u16, 30);
ከሆነ (ድምር! = data.checksum) {
Serial.println ("Checksum failure"); ሐሰትን መመለስ; } // ስኬት! እውነት ተመለስ; }
// Converti le numéro de jour en jour /! / La semaine commence un dimanche
ሕብረቁምፊ donne_jour_semaine (uint8_t j) {switch (j) {case 0: "DIM" ን ይመልሱ ፤ ጉዳይ 1: "LUN" ን መመለስ; ጉዳይ 2 - ‹MAR› ን መመለስ ፤ ጉዳይ 3: "MER" ን መመለስ; ጉዳይ 4: "JEU" ን መመለስ; ጉዳይ 5: "VEN" ን መመለስ; ጉዳይ 6 - “SAM” ይመለሱ ፤ ነባሪ: ተመለስ ""; }}
// affiche la date et l'heure sur l'écran
ባዶ affiche_date_heure (DateTime datetime) {// ቀን ሕብረቁምፊ jour = donne_jour_semaine (datetime.dayOfTheWeek ()) + "" " + Vers2Chiffres (datetime.day ()) +"/" + Vers2Chiffres (datetime.month ()) +"/" + ሕብረቁምፊ (datetime.year () ፣ DEC); // heure String heure = ""; heure = Vers2Chiffres (datetime.hour ()) + ":" + Vers2Chiffres (datetime.minute ()) + ":" + Vers2Chiffres (datetime.second ());
Serial.print (jour); Serial.print (""); Serial.print (heure); //Serial.print (""); የፋይል ውሂብ = SD.open ("donnees.txt", FILE_WRITE); data.print (jour + "" + heure + ""); data.close ();
tft.setCursor (2, 120);
tft.setTextColor (ST7735_GREEN); tft.setTextSize (1); tft.print ("ቀን"); tft.setTextColor (ST7735_YELLOW); tft.print (jour); tft.setTextColor (ST7735_GREEN); tft.setCursor (2, 130); setTextColor (ST7735_YELLOW); tft.print (heure);
መዘግየት (500);
}
// permet d'afficher les nombres sur deux chiffres
ሕብረቁምፊ Vers2Chiffres (byte nombre) {String resultat = ""; ከሆነ (nombre <10) resultat = "0"; የመመለሻ ውጤት += ሕብረቁምፊ (nombre ፣ DEC); }
ደረጃ 3: የ MIT መተግበሪያ ፈላጊ 2 ፕሮግራም
ይህ የ MIT መተግበሪያ የፈጠራ ኮድ ማገጃ ነው
ደረጃ 4 ፦ ውጤቱ
የውጤቱ ቪዲዮ እዚህ አለ
የሚመከር:
የአኩሪየም መብራትዎን እና ማሞቂያዎን የሚቆጣጠር የ Wifi ስርዓት እንዴት እንደሚደረግ -5 ደረጃዎች
የአኩሪየም መብራትዎን እና ማሞቂያዎን የሚቆጣጠር የ Wifi ስርዓት እንዴት እንደሚሠራ: ምን እያደረገ ነው? መርሃግብር መሠረት በራስ -ሰር የውሃ ማብሪያ / ማጥፊያ / ማብሪያ / ማጥፊያ / ወይም የግፊት ቁልፍ ወይም የበይነመረብ ጥያቄ። የውሃውን የሙቀት መጠን የሚቆጣጠር እና ኢሜል እና ማንቂያዎችን የሚልክ ስርዓት ከ
ፒዮንአየር - ክፍት ምንጭ የአየር ብክለት መቆጣጠሪያ - 10 ደረጃዎች (ከስዕሎች ጋር)
ፒዮንአየር - ክፍት ምንጭ የአየር ብክለት መቆጣጠሪያ - ፒዮንአየር የአከባቢውን የአየር ብክለት ደረጃዎችን ለመከታተል ዝቅተኛ ዋጋ ያለው ስርዓት ነው - በተለይ ፣ ጥቃቅን ነገሮች። በ Pycom LoPy4 ሰሌዳ እና በግሮቭ ተኳሃኝ ሃርድዌር ዙሪያ የተመሠረተ ፣ ስርዓቱ በሎራ እና በ WiFi ላይ መረጃን ሊያስተላልፍ ይችላል። እኔ ይህንን p ወስጃለሁ
የ CEL የአየር ብክለት ማፕ (የተቀየረ) - 7 ደረጃዎች
የ CEL የአየር ብክለት ማፕ (የተቀየረ) - የአየር ብክለት በዘመናዊው ህብረተሰብ ውስጥ ዓለም አቀፍ ጉዳይ ነው ፣ ለብዙ ሕመሞች መንስኤ እና ምቾት ያስከትላል። የጂፒኤስዎን አካባቢ እና የአየር ብክለትን በዚያ ትክክለኛ ቦታ ላይ ለመከታተል የሚያስችል ስርዓት ለመገንባት የሞከርነው ለዚህ ነው ፣ ከዚያ
የአየር ብክለት መለየት + የአየር ማጣሪያ -4 ደረጃዎች
የአየር ብክለት ማወቂያ + የአየር ማጣሪያ - የጀርመን የስዊስ ዓለም አቀፍ ትምህርት ቤት ተማሪዎች (አሪስቶቡለስ ላም ፣ ቪክቶር ሲም ፣ ናታን ሮዘንዝዌግ እና ዲክላን ሎግስ) የተቀናጀ የአየር ብክለት መለኪያ እና የአየር ማጣሪያ ውጤታማነት ስርዓትን ለማምረት ከሜከር ባይ ሠራተኞች ጋር ሰርተዋል። ይህ
የአየር ብክለት ክትትል - IoT-Data Viz-ML: 3 ደረጃዎች (ከስዕሎች ጋር)
የአየር ብክለት ክትትል | IoT-Data Viz-ML: ስለዚህ ይህ በመሠረቱ የሃርድዌር ክፍልን እንዲሁም የሶፍትዌር ክፍልን የሚያካትት የተሟላ የ IoT መተግበሪያ ነው። በዚህ መማሪያ ውስጥ የ IoT መሣሪያን እንዴት እንደሚያዋቅሩ እና በአየር ውስጥ ያሉትን የተለያዩ የብክለት ጋዞችን ዓይነቶች ለመከታተል ለእኛ እንዴት እንደምናደርግ ያያሉ።