Სარჩევი:

IoT გამარტივდა: დისტანციური ამინდის მონაცემების გადაღება: ულტრაიისფერი და ჰაერის ტემპერატურა და ტენიანობა: 7 ნაბიჯი
IoT გამარტივდა: დისტანციური ამინდის მონაცემების გადაღება: ულტრაიისფერი და ჰაერის ტემპერატურა და ტენიანობა: 7 ნაბიჯი

ვიდეო: IoT გამარტივდა: დისტანციური ამინდის მონაცემების გადაღება: ულტრაიისფერი და ჰაერის ტემპერატურა და ტენიანობა: 7 ნაბიჯი

ვიდეო: IoT გამარტივდა: დისტანციური ამინდის მონაცემების გადაღება: ულტრაიისფერი და ჰაერის ტემპერატურა და ტენიანობა: 7 ნაბიჯი
ვიდეო: უძრავი ქონების რეგისტრაცია გამარტივდა 2024, ივლისი
Anonim
IoT გაადვილდა: ამინდის დისტანციური მონაცემების გადაღება: ულტრაიისფერი და ჰაერის ტემპერატურა და ტენიანობა
IoT გაადვილდა: ამინდის დისტანციური მონაცემების გადაღება: ულტრაიისფერი და ჰაერის ტემპერატურა და ტენიანობა

ამ გაკვეთილზე ჩვენ ვიღებთ დისტანციურ მონაცემებს, როგორც ულტრაიისფერი (ულტრაიისფერი გამოსხივება), ჰაერის ტემპერატურასა და ტენიანობას. ეს მონაცემები იქნება ძალიან მნიშვნელოვანი და გამოყენებული იქნება მომავალში სრული ამინდის სადგურში.

ბლოკის დიაგრამა გვიჩვენებს რას მივიღებთ ბოლოს.

გამოსახულება
გამოსახულება

ნაბიჯი 1: BoM - Bill of Material

NodeMCU (ESP8266-12E) - 9.00 აშშ დოლარი

ტენიანობისა და ტემპერატურის სენსორი (DHT22) - 10,00 აშშ დოლარი

ულტრაიისფერი სენსორი - 4.00 აშშ დოლარი

OLED აშშ დოლარი 12.00

პურის დაფა - 1,00 აშშ დოლარი

ნაბიჯი 2: ანალოგური ულტრაიისფერი სენსორი

ანალოგური ულტრაიისფერი სენსორი
ანალოგური ულტრაიისფერი სენსორი
ანალოგური ულტრაიისფერი სენსორი
ანალოგური ულტრაიისფერი სენსორი
ანალოგური ულტრაიისფერი სენსორი
ანალოგური ულტრაიისფერი სენსორი

ეს ულტრაიისფერი სენსორი ქმნის ანალოგიურ გამოსავალს პროპორციულად ულტრაიისფერი გამოსხივების სინათლის აღქმის სპექტრზე. იგი იყენებს ულტრაიისფერ ფოდიოდს (გალიუმის ნიტრიდის საფუძველზე), რომელსაც შეუძლია 240-370 ნმ სინათლის დიაპაზონის გამოვლენა (რომელიც მოიცავს UVB და UVA სპექტრის უმეტესობას). ფოტოდიოდიდან სიგნალის დონე ძალიან მცირეა, ნანო-ამპერის დონეზე, ამიტომ მოდულს აქვს ჩამონტაჟებული ოპერატიული გამაძლიერებელი სიგნალის გასაძლიერებლად ვოლტ – დონის (0 – დან 1 ვ – მდე) გასაძლიერებლად.

სენსორი და გამაძლიერებელი შეიძლება იკვებებოდეს VCC– სთან დაკავშირებით 3.3VDC (ან 5VDC) და GND დენის მიწასთან. ანალოგური სიგნალის მიღება შესაძლებელია OUT პინიდან.

მისი გამომავალი იქნება მილივოლტი და წაიკითხავს ჩვენი NodeMCU- ის ანალოგური შეყვანის საშუალებით. წაკითხვის შემდეგ, ჩვენ უნდა "გადავაქციოთ" (ან "რუკა"), რომ ღირებულებები უკეთესად დამუშავდეს კოდით. ჩვენ შეგვიძლია ამის გაკეთება readSensorUV () ფუნქციით:

/ * წაიკითხეთ ულტრაიისფერი სენსორი mV- ში და დარეკეთ UV ინდექსის გამოთვლა */

void readSensorUV () {ბაიტი numOfReadings = 5; dataSensorUV = 0; for (int i = 0; i <numOfReadings; i ++) {dataSensorUV+= analogRead (sensorUVPin); დაგვიანება (200); } dataSensorUV /= numOfReadings; dataSensorUV = (dataSensorUV * (3.3 / 1023.0)) * 1000; Serial.println (dataSensorUV); indexCalculate (); }

მას შემდეგ რაც ჩვენ გვაქვს ულტრაიისფერი მონაცემები, ჩვენ შეგვიძლია მარტივად გამოვთვალოთ ულტრაიისფერი ინდექსი, როგორც ეს მოცემულია ცხრილში. ფუნქცია indexCalculate () ამას გააკეთებს ჩვენთვის:

/ * UV ინდექსის გაანგარიშება */

void indexCalculate () {if (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

სატესტო მიზნებისთვის, ჩვენ ჩავრთავთ OLED- ს ჩვენს ულტრაიისფერ მეტრზე (ეს ნაბიჯი არის სრულიად სურვილისამებრ).

ტესტების დროს სერიული მონიტორის გამოყენება ნორმალურია, მაგრამ რა ხდება, როდესაც თქვენ იყენებთ თქვენს პროტოტიპებს თქვენი კომპიუტერისგან შორს დამოუკიდებელ რეჟიმში? ამისათვის მოდით დავაყენოთ OLED დისპლეი, SSD1306, რომლის ძირითადი მახასიათებლებია:

  • ეკრანის ზომა: 0.96"
  • I2C IIC SPI სერიული
  • 128X64
  • თეთრი OLED LCD LED

მიჰყევით ელექტრული დიაგრამას და შეაერთეთ ჩვენი OLED- ის 4 პინი:

  • VCC მიდის 3.3V– მდე
  • GND მიდის მიწაზე
  • SCL გადადის NodeMCU (GPIO 2) ==> D4
  • SDA გადადის NodeMCU (GPIO 0) ==> D3

ჩვენების დაკავშირების შემდეგ გადმოვიტვირთოთ და დავაინსტალიროთ მისი ბიბლიოთეკა ჩვენს Arduino IDE- ში: დანიელ ეიხჰორნის მიერ შემუშავებული "ESP8266 OLED მძღოლი SSD1306 ჩვენებისთვის" (დარწმუნდით, რომ იყენებთ ვერსიას 3.0.0 ან უფრო დიდი!).

დააინსტალირეთ ბიბლიოთეკა თქვენს Arduino IDE– ზე, რომელიც შეგიძლიათ იხილოთ SSD1306Wire.h– ზე

მას შემდეგ რაც IDE გადატვირთეთ, ბიბლიოთეკა უკვე დაინსტალირებული უნდა იყოს.

ბიბლიოთეკა მხარს უჭერს I2C პროტოკოლს OLED ეკრანზე წვდომისთვის ჩაშენებული Wire.h ბიბლიოთეკის გამოყენებით:

/ * 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);

მოდით ჩამოვთვალოთ რამდენიმე მნიშვნელოვანი API, რომელიც გამოყენებული იქნება ჩვენს OLED ეკრანზე. სრული სია შეგიძლიათ იხილოთ ზემოთ მოცემულ GITHub– ზე.

A. ჩვენების კონტროლი:

void init (); // ჩვენების ინიციალიზაცია

void displayOn (ბათილია); // ეკრანის ჩართვა void displayOff (ბათილი); // ჩვენების გამორთვა void clear (void); // წაშალეთ ადგილობრივი პიქსელის ბუფერი void flipScreenVertically (); // გადააქციე ეკრანი თავდაყირა

ბ. ტექსტური ოპერაციები:

void drawString (int16_t x, int16_t y, სიმებიანი ტექსტი); // (xpos, ypos, "ტექსტი")

void setFont (const char* fontData); // ადგენს მიმდინარე შრიფტს.

ხელმისაწვდომი ნაგულისხმევი შრიფტები:

  • ArialMT_Plain_10,
  • ArialMT_Plain_16,

  • ArialMT_ Plain_24

მას შემდეგ რაც დაინსტალირდება როგორც OLED, ისე მისი ბიბლიოთეკა, დავწეროთ მარტივი პროგრამა მისი შესამოწმებლად. შეიყვანეთ ქვემოთ მითითებული კოდი თქვენს IDE– ზე, შედეგი უნდა იყოს ჩვენება, როგორც ნაჩვენებია ზემოთ ფოტოში:

* 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); void setup () {Serial.begin (115200); displaySetup (); } void loop () {} / * ინიცირება და ჩვენება დაყენების მონაცემები OLED * / void displaySetup () {display.init (); // ჩვენების ინიციალიზება display.clear (); // ჩვენების გასუფთავება display.flipScreenVertically (); // გადაატრიალეთ ეკრანი თავდაყირა display.display (); // მონაცემების ჩვენება 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)); ჩვენება. ჩვენება (); // მონაცემების ჩვენების დაყოვნება (3000); }

ზემოაღნიშნული პროგრამის გადმოწერა შესაძლებელია ჩემი GitHub– დან:

NodeMCU_OLED_Test

ნაბიჯი 4: ადგილობრივი ულტრაიისფერი მეტრი

ადგილობრივი ულტრაიისფერი მეტრი
ადგილობრივი ულტრაიისფერი მეტრი
ადგილობრივი ულტრაიისფერი მეტრი
ადგილობრივი ულტრაიისფერი მეტრი

ახლა, OLED დისპლეით დაყენებული, ჩვენ შეგვიძლია დავუკავშიროთ ბატარეა და გავაკეთოთ დისტანციური ტესტები ჩვენი "UV მეტრის" გამოყენებით

#განსაზღვრეთ SW_VERSION "UV_Sensor_V.1"

/ * UV სენსორი */ #განსაზღვრეთ სენსორი UVPin 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); void setup () {Serial.begin (115200); displaySetup (); } void loop () {readSensorUV (); displayUV (); დაგვიანება (1000); } / * ინიცირება და ჩვენება setup მონაცემები OLED * / void displaySetup () {display.init (); // ჩვენების ინიციალიზება display.clear (); // ჩვენების გასუფთავება display.flipScreenVertically (); // გადაატრიალეთ ეკრანი თავდაყირა display.display (); // მონაცემების ჩვენება Serial.println ("ულტრაიისფერი სენსორის ტესტის ინიცირება"); display.setFont (ArialMT_Plain_24); display.drawString (10, 0, "MJRoBot"); display.setFont (ArialMT_Plain_16); display.drawString (0, 29, "ულტრაიისფერი სენსორის ტესტი"); display.setFont (ArialMT_Plain_10); display.drawString (0, 52, "SW Ver.:"); display.drawString (45, 52, SW_VERSION); ჩვენება. ჩვენება (); დაგვიანება (3000); } / * წაიკითხეთ ულტრაიისფერი სენსორი mV- ში და დარეკეთ UV ინდექსის გამოთვლა * / void readSensorUV () {ბაიტი numOfReadings = 5; dataSensorUV = 0; for (int i = 0; i <numOfReadings; i ++) {dataSensorUV+= analogRead (sensorUVPin); დაგვიანება (200); } dataSensorUV /= numOfReadings; dataSensorUV = (dataSensorUV * (3.3 / 1023.0)) * 1000; Serial.println (dataSensorUV); indexCalculate (); } / * UV ინდექსის გაანგარიშება * / void indexCalculate () {if (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; } /* ულტრაიისფერი მნიშვნელობების ჩვენება ადგილობრივ OLED* / void displayUV () {display.clear (); display.setFont (ArialMT_Plain_16); display.drawString (20, 0, "ულტრაიისფერი სენსორი"); display.drawString (0, 23, "UV (mV):"); display.drawString (80, 23, სიმებიანი (dataSensorUV)); display.drawString (0, 48, "UV ინდექსი:"); display.setFont (ArialMT_Plain_24); display.drawString (82, 42, სიმებიანი (indexUV)); ჩვენება. ჩვენება (); }

ზემოთ მოყვანილი კოდის გადმოწერა შესაძლებელია ჩემი GitHun– დან: NodeMCU_UV_Sensor_OLED.ino

ნაბიჯი 5: DHT22- ის დაყენება ჰაერის ტემპერატურისა და ტენიანობის გაზომვებისათვის

DHT22- ის დაყენება ჰაერის ტემპერატურისა და ტენიანობის გაზომვებისათვის
DHT22- ის დაყენება ჰაერის ტემპერატურისა და ტენიანობის გაზომვებისათვის
DHT22- ის დაყენება ჰაერის ტემპერატურისა და ტენიანობის გაზომვებისათვის
DHT22- ის დაყენება ჰაერის ტემპერატურისა და ტენიანობის გაზომვებისათვის

ამინდის მონაცემების გადასაღებად ერთ -ერთი ყველაზე სენსორია DHT22 (ან ძმა DHT11), ციფრული ფარდობითი ტენიანობისა და ტემპერატურის სენსორი. ის იყენებს ტენიანობის ტევადობის სენსორს და თერმისტორს ჰაერის გასაზომად და ციფრულ სიგნალს აფრქვევს მონაცემთა პინზე (არ არის საჭირო ანალოგური შეყვანის ქინძისთავები).

სენსორი უნდა იკვებებოდეს 3.3V– დან 5V– მდე და იმუშავებს –40oC– დან +80oC– მდე სიზუსტით +/- 0.5oC ტემპერატურისთვის და +/- 2% შედარებით ტენიანობისთვის. ასევე მნიშვნელოვანია გავითვალისწინოთ, რომ მისი შეგრძნების პერიოდი საშუალოდ 2 წამია (კითხვას შორის მინიმალური დრო). ადაფრუტის საიტი იძლევა უამრავ ინფორმაციას ორივე, DHT22 და მისი ძმის DHT11 შესახებ. დამატებითი ინფორმაციისთვის ეწვიეთ DHT22/11 სამეურვეო გვერდს.

DHT22– ს აქვს 4 პინი (სენსორის პირისპირ, პინ 1 არის ყველაზე მარცხენა):

  1. VCC (ჩვენ დავუკავშირდებით 3.3V NodeMCU– დან);
  2. მონაცემები გარეთ;
  3. არ არის დაკავშირებული და
  4. გრუნტი.

როგორც წესი, თქვენ გამოიყენებთ სენსორს 20 მ -ზე ნაკლებ მანძილზე, 10K რეზისტორი უნდა იყოს დაკავშირებული მონაცემთა და VCC ქინძისთავებს შორის. გამომავალი პინი დაუკავშირდება NodeMCU პინ D3- ს (იხ. დიაგრამა ზემოთ). მას შემდეგ რაც სენსორი დაინსტალირდება ჩვენს მოდულში, გადმოწერეთ DHT ბიბლიოთეკა Adafruit GitHub საცავიდან და დააინსტალირეთ თქვენს Arduino ბიბლიოთეკის ფაილში. მას შემდეგ რაც განაახლეთ თქვენი Arduino IDE, უნდა იყოს დაინსტალირებული "DHT სენსორების ბიბლიოთეკა".

კოდის დასაწყისში ჩვენ უნდა შევიტანოთ ხაზები:

/* DHT22*/

#მოიცავს "DHT.h" #განსაზღვრეთ DHTPIN D2 #განსაზღვრეთ DHTTYPE DHT22 DHT dht (DHTPIN, DHTTYPE); float hum = 0; float temp = 0;

შეიქმნება ახალი ფუნქცია სენსორის წასაკითხად:

/ * მიიღეთ DHT მონაცემები */

void getDhtData (void) {float tempIni = temp; float humIni = ზუზუნი; temp = dht.readTemperature (); hum = dht.readHumidity (); if (isnan (hum) || isnan (temp)) // შეამოწმეთ წაკითხული ვერ მოხერხდა და გამოდით ადრე (ხელახლა საცდელად). {Serial.println ("DHT სენსორიდან წაკითხვა ვერ მოხერხდა!"); temp = tempIni; hum = humIni; დაბრუნების; }}

სრული კოდი UV და DHT სენსორების ჩათვლით შეგიძლიათ გადმოწეროთ ჩემი GitHub– დან: NodeMCU_UV_DHT_Sensor_OLED

ნაბიჯი 6: მონაცემების გაგზავნა ThingSpeak.com– ზე

მონაცემების გაგზავნა ThingSpeak.com– ზე
მონაცემების გაგზავნა ThingSpeak.com– ზე
მონაცემების გაგზავნა ThingSpeak.com– ზე
მონაცემების გაგზავნა ThingSpeak.com– ზე
მონაცემების გაგზავნა ThingSpeak.com– ზე
მონაცემების გაგზავნა ThingSpeak.com– ზე

ჯერჯერობით, ჩვენ მხოლოდ NodeMCU ESP12-E გამოვიყენეთ, როგორც ჩვეულებრივი და ჩვეულებრივი Arduino დაფა. რასაკვირველია, ჩვენ მხოლოდ "გავხეხეთ" ამ სანახაობრივი პატარა ჩიპის რეალური პოტენციალი და ახლა დროა სამოთხეში ასვლისა! ან სჯობს ვარსკვლავებს! ეჰ … ღრუბლამდე!;-)

Მოდით დავიწყოთ!

  1. პირველ რიგში, თქვენ უნდა გქონდეთ ანგარიში ThinkSpeak.com– ზე
  2. მიჰყევით ინსტრუქციას არხის შესაქმნელად და გაითვალისწინეთ თქვენი არხის ID და ჩაწერეთ API გასაღები
  3. განაახლოთ ქვემოთ მოყვანილი კოდი თქვენი WiFi ქსელით და Thinkspeak სერთიფიკატებით
  4. გაუშვით პროგრამა IDE– ზე

მოდით გავაკეთოთ კომენტარი კოდის ყველაზე მნიშვნელოვან ნაწილებზე:

პირველ რიგში, მოდით დავრეკოთ ESP8266 ბიბლიოთეკაში, განვსაზღვროთ WiFi კლიენტი და განვსაზღვროთ თქვენი ადგილობრივი როუტერი და Thinkspeak სერთიფიკატები:

/* ESP12-E & Thinkspeak*/

#მოიცავს WiFiClient კლიენტს; const char* MY_SSID = "შენი SSD ID აქ"; const char* MY_PWD = "შენი პაროლი აქ"; const char* TS_SERVER = "api.thingspeak.com"; სიმებიანი TS_API_KEY = "თქვენი არხი დაწერეთ API გასაღები";

მეორე, მოდით ჩავრთოთ ძალიან მნიშვნელოვანი ბიბლიოთეკა IoT პროექტებისთვის: SimpleTimer.h:

/ * ტაიმერი */

#მოიცავს SimpleTimer ტაიმერს;

მესამე, დაყენების დროს (), ჩვენ დავიწყებთ სერიულ კომუნიკაციას, მოვუწოდებთ ფუნქციას connectWiFi () და ვადგენთ ქრონომეტრებს. გაითვალისწინეთ, რომ კოდის ხაზი: timer.setInterval (60000L, sendDataTS); დარეკავს ფუნქციას sendDataTS () ყოველ 60 წამში ერთხელ, რათა ატვირთოს მონაცემები ThinkSpeak არხზე.

ბათილად დაყენება ()

{… Serial.begin (115200); დაგვიანება (10); … ConnectWifi (); timer.setInterval (60000L, sendDataTS); …}

ბოლოს და ბოლოს, მარყუჟის დროს (), ერთადერთი ბრძანება საჭიროა ტაიმერის ინიცირება და ეს არის!

ბათილი მარყუჟი ()

{… Timer.run (); // იწყებს SimpleTimer} - ს

ქვემოთ შეგიძლიათ ნახოთ ორი მნიშვნელოვანი ფუნქცია, რომლებიც გამოიყენება Thinkspeak კომუნიკაციის დასამუშავებლად:

ESP12-E კავშირი თქვენს WiFi ქსელთან:

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

*WiFi დაკავშირება ******************************************** ***/ void connectWifi () {Serial.print ("დაკავშირება"+*MY_SSID); WiFi. დასაწყისი (MY_SSID, MY_PWD); while (WiFi.status ()! = WL_CONNECTED) {დაგვიანებით (1000); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi დაკავშირებულია"); Serial.println (""); }

ESP12-E აგზავნის მონაცემებს ThinkSpeak– ში:

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

*მონაცემების გაგზავნა Thinkspeak არხზე **************************************** ******/ void sendDataTS (void) {if (client.connect (TS_SERVER, 80)) {String postStr = TS_API_KEY; postStr += "& field1 ="; postStr += სიმებიანი (dataSensorUV); postStr += "& field2 ="; postStr += სიმებიანი (indexUV); postStr += "& field3 ="; postStr += სიმებიანი (ტემპი); postStr += "& field4 ="; postStr += სიმებიანი (hum); postStr += "\ r / n / r / n"; client.print ("POST /განახლება HTTP /1.1 / n"); client.print ("მასპინძელი: api.thingspeak.com / n"); client.print ("კავშირი: დახურვა / 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

მას შემდეგ რაც კოდი აიტვირთება თქვენს NodeMCU- ში. მოდით დავუკავშიროთ გარე ბატარეა და გავაკეთოთ გაზომვები მზის ქვეშ. დისტანციური სადგური სახურავზე დავაყენე და ვიწყებ მონაცემების გადაღებას ThingSpeak.com– ზე, როგორც ეს მოცემულია ზემოთ მოცემულ ფოტოებში.

ნაბიჯი 7: დასკვნა

დასკვნა
დასკვნა

როგორც ყოველთვის, ვიმედოვნებ, რომ ეს პროექტი სხვებს დაეხმარება იპოვონ გზა ელექტრონიკის ამაღელვებელ სამყაროში!

დეტალებისა და საბოლოო კოდისათვის ეწვიეთ ჩემს GitHub საცავს: RPi-NodeMCU- ამინდის სადგური

მეტი პროექტისთვის ეწვიეთ ჩემს ბლოგს: MJRoBot.org

Ადევნეთ თვალყური! შემდეგი გაკვეთილი ჩვენ გავაგზავნით მონაცემებს დისტანციური ამინდის სადგურიდან ცენტრალურზე, Raspberry Pi ვებ სერვერზე დაყრდნობით:

გამოსახულება
გამოსახულება

სალუდო მსოფლიოს სამხრეთიდან!

შევხვდებით ჩემს შემდეგ ინსტრუქტაჟში!

Გმადლობთ, მარსელო

გირჩევთ: