Სარჩევი:

DHT12 (i2c იაფი ტენიანობის და ტემპერატურის სენსორი), სწრაფი მარტივი გამოყენება: 14 ნაბიჯი
DHT12 (i2c იაფი ტენიანობის და ტემპერატურის სენსორი), სწრაფი მარტივი გამოყენება: 14 ნაბიჯი

ვიდეო: DHT12 (i2c იაფი ტენიანობის და ტემპერატურის სენსორი), სწრაფი მარტივი გამოყენება: 14 ნაბიჯი

ვიდეო: DHT12 (i2c იაფი ტენიანობის და ტემპერატურის სენსორი), სწრაფი მარტივი გამოყენება: 14 ნაბიჯი
ვიდეო: DHT12 I2C Temperature - Relative Humidity Sensor Demo 2024, ივლისი
Anonim
DHT12 (i2c იაფი ტენიანობის და ტემპერატურის სენსორი), სწრაფი მარტივი გამოყენება
DHT12 (i2c იაფი ტენიანობის და ტემპერატურის სენსორი), სწრაფი მარტივი გამოყენება

თქვენ შეგიძლიათ იპოვოთ განახლებები და სხვა ჩემს საიტზე

მე მომწონს სენსორი, რომლის გამოყენებაც შესაძლებელია 2 მავთულით (i2c პროტოკოლით), მაგრამ მე მიყვარს იაფი.

ეს არის Arduino და esp8266 ბიბლიოთეკა DHT12 სერიისთვის ძალიან დაბალი ტემპერატურის/ტენიანობის სენსორებისთვის (1 $ -ზე ნაკლები), რომლებიც მუშაობენ i2c ან ერთი მავთულის შეერთებით.

ძალიან სასარგებლოა თუ გსურთ გამოიყენოთ esp01 (თუ იყენებთ სერიალს თქვენ გაქვთ მხოლოდ 2 პინი) ტენიანობისა და ტემპერატურის წასაკითხად და i2c LCD ეკრანზე ჩვენებისთვის.

AI წავიკითხე, რომ ზოგჯერ ჩანს, რომ საჭიროა კალიბრაცია, მაგრამ მე მაქვს ამის ხე და ვიღებ მნიშვნელობას DHT22– ის მსგავსი. თუ თქვენ გაქვთ ამ პრობლემის დაკალიბრება, გახსენით საკითხი github– ზე და მე დავამატებ განხორციელებას.

ნაბიჯი 1: როგორ მუშაობს I2c

როგორ მუშაობს I2c
როგორ მუშაობს I2c

I2C მუშაობს მის ორ მავთულზე, SDA (მონაცემთა ხაზი) და SCL (საათის ხაზი).

ორივე ეს ხაზი ღიაა, მაგრამ გაყვანილია რეზისტენტებით.

როგორც წესი, ხაზზე არის ერთი ბატონი და ერთი ან მრავალი მონა, თუმცა შეიძლება იყოს მრავალი ბატონი, მაგრამ ამაზე მოგვიანებით ვისაუბრებთ.

ბატონებსა და მონაებს შეუძლიათ მონაცემების გადაცემა ან მიღება, შესაბამისად, მოწყობილობა შეიძლება იყოს ამ ოთხივე მდგომარეობიდან ერთში: სამაგისტრო გადაცემა, სამაგისტრო მიღება, მონა გადაცემა, მონა მიღება.

ნაბიჯი 2: ბიბლიოთეკა

აქ შეგიძლიათ ნახოთ ჩემი ბიბლიოთეკა.

Ჩამოტვირთვა

დააწკაპუნეთ DOWNLOADS ღილაკს ზედა მარჯვენა კუთხეში, დაარქვით სახელი არაკომპრესირებულ საქაღალდეს DHT12.

შეამოწმეთ, რომ DHT საქაღალდე შეიცავს DHT12.cpp და DHT12.h.

განათავსეთ DHT ბიბლიოთეკის საქაღალდე თქვენი / ბიბლიოთეკები / საქაღალდე.

შეიძლება დაგჭირდეთ ბიბლიოთეკების ქვესაქაღალდის შექმნა, თუ ეს თქვენი პირველი ბიბლიოთეკაა.

გადატვირთეთ IDE.

ნაბიჯი 3: ქცევა

ეს ბიბლია ცდილობს მიბაძოს DHT ბიბლიოთეკის სტანდარტული სენსორების ქცევას (და დააკოპიროს ბევრი კოდი), და მე დავამატებ კოდს i2c olso– ს მართვისთვის იმავე გზით.

მეთოდი იგივეა DHT ბიბლიოთეკის სენსორით, ზოგიერთს დამატებული აქვს ნამი წერტილის ფუნქცია.

ნაბიჯი 4: I2c გამოყენება

I2c– ით (ნაგულისხმევი მისამართი და ნაგულისხმევი SDA SCL pin) კონსტრუქტორი არის:

DHT12 dht12;

და მიიღეთ ნაგულისხმევი მნიშვნელობა SDA SCL პინისთვის.

(შესაძლებელია ხელახლა განისაზღვროს მითითებული კონტრაქტორით esp8266– სთვის, საჭიროა ESP-01– ისთვის). ან

DHT12 dht12 (uint8_t addressOrPin)

addressOrPin -> მისამართი

მისამართის შესაცვლელად.

ნაბიჯი 5: ერთი მავთულის გამოყენება

ერთი მავთულის გამოსაყენებლად:

DHT12 dht12 (uint8_t მისამართიOrPin, ჭეშმარიტი)

addressOrPin -> პინი

ლოგიკური მნიშვნელობა არის oneWire ან i2c რეჟიმის შერჩევა.

ნაბიჯი 6: ნაგულისხმევი კითხვა

თქვენ შეგიძლიათ გამოიყენოთ იგი "ნაგულისხმევი", "მარტივი წაკითხვა" ან "სრული წაკითხვა": ნაგულისხმევი, მხოლოდ პირველი წაკითხული აკეთებს სენსორის ნამდვილ კითხვას, მეორე წაკითხული ხდება 2 წამში. ინტერვალი არის პირველი წაკითხვის შენახული მნიშვნელობა.

// სენსორის წაკითხვას აქვს 2 წამი გასული დრო, თუ თქვენ არ გაივლით ძალის პარამეტრს

// წაიკითხეთ ტემპერატურა ცელსიუსით (ნაგულისხმევი) float t12 = dht12.readTemperature (); // წაიკითხეთ ტემპერატურა როგორც ფარენჰეიტი (isFahrenheit = true) float f12 = dht12.readTemperature (true); // სენსორული მაჩვენებლები ასევე შეიძლება იყოს 2 წამამდე "ძველი" (ეს არის ძალიან ნელი სენსორი) float h12 = dht12.readHumidity (); // გამოთვალეთ სითბოს ინდექსი ფარენჰეიტში (ნაგულისხმევი) float hif12 = dht12.computeHeatIndex (f12, h12); // გამოთვალეთ სითბოს ინდექსი ცელსიუსში (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // ფარენჰეიტში გამოთვალეთ dew წერტილი (ნაგულისხმევი) float dpf12 = dht12.dewPoint (f12, h12); // გამოთვალეთ dew წერტილი ცელსიუსში (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

ნაბიჯი 7: მარტივი წაკითხვა

მარტივი წაკითხვა წაკითხულის სტატუსის მისაღებად.

// სენსორის წაკითხვას აქვს 2 წამი გასული დრო, თუ თქვენ არ გაივლით ძალის პარამეტრს

bool chk = dht12.read (); // ჭეშმარიტი კითხვა კარგია, ყალბი წაკითხვის პრობლემა

// ტემპერატურის კითხვა ცელსიუსით (ნაგულისხმევი)

float t12 = dht12.readTemperature (); // წაიკითხეთ ტემპერატურა როგორც ფარენჰეიტი (isFahrenheit = true) float f12 = dht12.readTemperature (true); // სენსორული მაჩვენებლები ასევე შეიძლება იყოს 2 წამამდე "ძველი" (ეს არის ძალიან ნელი სენსორი) float h12 = dht12.readHumidity (); // გამოთვალეთ სითბოს ინდექსი ფარენჰეიტში (ნაგულისხმევი) float hif12 = dht12.computeHeatIndex (f12, h12); // გამოთვალეთ სითბოს ინდექსი ცელსიუსში (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // ფარენჰაიტში გამოთვალეთ dew წერტილი (ნაგულისხმევი) float dpf12 = dht12.dewPoint (f12, h12); // გამოთვალეთ dew წერტილი ცელსიუსში (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

ნაბიჯი 8: სრული წაკითხვა

სრულად წაიკითხეთ, რომ მიიღოთ სტატუსი.

// სენსორის წაკითხვას აქვს 2 წამი გასული დრო, თუ თქვენ არ გაივლით ძალის პარამეტრს

DHT12:: ReadStatus chk = dht12.readStatus (); Serial.print (F ("\ n სენსორის წაკითხვა:")); გადართვა (chk) {საქმე DHT12:: OK: Serial.println (F ("OK")); შესვენება; საქმე DHT12:: ERROR_CHECKSUM: Serial.println (F ("Checksum error")); შესვენება; საქმე DHT12:: ERROR_TIMEOUT: Serial.println (F ("ვადის ამოწურვის შეცდომა")); შესვენება; საქმე DHT12:: ERROR_TIMEOUT_LOW: Serial.println (F ("დროითი შეცდომა დაბალ სიგნალზე, სცადეთ დააყენოთ მაღალი გამტარი წინააღმდეგობა")); შესვენება; საქმე DHT12:: ERROR_TIMEOUT_HIGH: Serial.println (F ("დროითი შეცდომა დაბალ სიგნალზე, სცადეთ დააყენოთ დაბალი გამტარიანობის წინააღმდეგობა")); შესვენება; საქმე DHT12:: ERROR_CONNECT: Serial.println (F ("დაკავშირების შეცდომა")); შესვენება; საქმე DHT12:: ERROR_ACK_L: Serial.println (F ("AckL შეცდომა")); შესვენება; საქმე DHT12:: ERROR_ACK_H: Serial.println (F ("AckH შეცდომა")); შესვენება; საქმე DHT12:: ERROR_UNKNOWN: Serial.println (F ("უცნობი შეცდომა აღმოჩენილია")); შესვენება; საქმე DHT12:: NONE: Serial.println (F ("შედეგი არ არის")); შესვენება; ნაგულისხმევი: Serial.println (F ("უცნობი შეცდომა")); შესვენება; }

// ტემპერატურის კითხვა ცელსიუსით (ნაგულისხმევი)

float t12 = dht12.readTemperature (); // წაიკითხეთ ტემპერატურა როგორც ფარენჰეიტი (isFahrenheit = true) float f12 = dht12.readTemperature (true); // სენსორული მაჩვენებლები შეიძლება იყოს 2 წამამდე "ძველი" (ეს არის ძალიან ნელი სენსორი) float h12 = dht12.readHumidity (); // გამოთვალეთ სითბოს ინდექსი ფარენჰეიტში (ნაგულისხმევი) float hif12 = dht12.computeHeatIndex (f12, h12); // გამოთვალეთ სითბოს ინდექსი ცელსიუსში (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // ფარენჰაიტში გამოთვალეთ dew წერტილი (ნაგულისხმევი) float dpf12 = dht12.dewPoint (f12, h12); // გამოთვალეთ dew წერტილი ცელსიუსში (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

ნაბიჯი 9: კავშირის დიაგრამა

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

მადლობა Bobadas, dplasa და adafruit, რომ გავაზიარო კოდი github– ში (სადაც ვიღებ კოდს და იდეებს).

ნაბიჯი 10: Arduino: OneWire

არდუინო: OneWire
არდუინო: OneWire

ნაბიჯი 11: არდუინო: I2c

არდუინო: I2c
არდუინო: I2c

ნაბიჯი 12: Esp8266 (D1Mini) OneWire

Esp8266 (D1Mini) OneWire
Esp8266 (D1Mini) OneWire

ნაბიჯი 13: Esp8266 (D1Mini) I2c

Esp8266 (D1Mini) I2c
Esp8266 (D1Mini) I2c

ნაბიჯი 14: მადლობა

არდუინოს მოედანი (https://playground.arduino.cc/Main/DHT12SensorLibrary)

i2c პროექტის სერია (კოლექცია):

  • ტემპერატურის ტენიანობის სენსორი
  • ანალოგური გაფართოება
  • ციფრული გაფართოება
  • LCD ეკრანი

გირჩევთ: