Агуулгын хүснэгт:

ESP8266-01: 3 алхамуудын 4 зүүг ашиглах
ESP8266-01: 3 алхамуудын 4 зүүг ашиглах

Видео: ESP8266-01: 3 алхамуудын 4 зүүг ашиглах

Видео: ESP8266-01: 3 алхамуудын 4 зүүг ашиглах
Видео: DS18B20 Температура ESP8266 ESP 01 WIFI-модуль | ESP-01 Домашняя автоматизация | УдаленныйXY |ФЛПрог 2024, Арваннэгдүгээр
Anonim
ESP8266-01-ийн 4 зүү ашиглан
ESP8266-01-ийн 4 зүү ашиглан
ESP8266-01-ийн 4 зүү ашиглан
ESP8266-01-ийн 4 зүү ашиглан
ESP8266-01-ийн 4 зүү ашиглан
ESP8266-01-ийн 4 зүү ашиглан

Тэмдэглэл: Энэхүү төсөл нь үндсэндээ зөвхөн 2 зүү ашигладаг зааварчилгааны өргөтгөл юм. ESP8266-01 дээрх GPIO тээглүүрийн хязгаарлагдмал тоо (4) нь аливаа ноцтой хэрэглээний хувьд саад болж магадгүй юм. Зөвхөн 4 зүүгээр маш их зүйлийг хийх ухаалаг арга бол миний саяхан өгсөн зарим зааварчилгаанд би DHT11, DS18B20, OLED, RTC, BMP180-ийг ESP8266-01 ашиглан харуулсан. Энэхүү зааварчилгаанд би 4 мэдрэгч, дэлгэц ашиглахаар төлөвлөж, олж авсан өгөгдлөө Thingspeak -д байршуулахаар шийдлээ. Энэ нь миний тахианы махны эргэн тойрон дахь уур амьсгалыг хянах төслийг өргөжүүлж байна. Тийм ээ, та үүнийг цаг уурын станц гэж нэрлэж болно, гэхдээ энэ нь зөвхөн 4 тээглүүрийг ашиглахыг харуулахын тулд өөр аргаар хялбархан хийж болно I2C (BMP180 ба OLED) 2 зүүг 2 DS18B20 мэдрэгчийн тусламжтайгаар 1 зүүгээр ашиглах болно. DHW11-д зориулсан OneWire протокол1 зүү ESP8266-01 одоо бүх тээглүүрээ ашиглаж байгаа ч гэсэн би OneWire протокол болон/эсвэл I2C протоколоор дамжуулан илүү олон мэдрэгч (эсвэл идэвхжүүлэгч) нэмж оруулах боломжтой хэвээр байна.

  • ESP8266-01
  • 2х DS18B20
  • 1х DHT11
  • 1х BMP180
  • OLED (заавал биш)

Мэдээжийн хэрэг, талх, 3.3 В -ийн PSU ба талхны зарим утас, Thingspeak данс

Монголбанктай холбоотой хэдхэн тайлбар:

  • Мэдээжийн хэрэг, төсөл нь ESP8266-01-ийн хязгаарлагдмал тээглүүрийг ашиглах тухай юм, гэхдээ хэрэв та одоо ч гэсэн худалдаж авах шаардлагатай бол илүү олон голтой ESP8266-12-ийг авч үзэх боломжтой.
  • DHT11A бүх төрлийн чийгшил, температур мэдрэгч хямд. Энэ нь тийм ч нарийвчлалтай биш боловч хийх болно. Хэрэв та үүнийг худалдаж авах шаардлагатай хэвээр байгаа бол илүү нарийвчлалтай DHT22 -ийг сонгож болох боловч AMS2321 -ийг сонгож болно. Энэ бол I2C -д тохирох DHT22 хэлбэр бөгөөд өөр зүү суллах болно
  • BMP180 нь температур ба агаарын даралтыг хэмждэг. Энэ бол BMP085 -ийн залгамжлагч боловч одоо өөрөө бас зарим дэмжигчтэй болсон. (Хямд) BMP280 байдаг, гэхдээ та бас температур, агаарын байдал, чийгшлийг хэмждэг BME280 -ийг сонгож болно. Ингэснээр та DHT/AMS мэдрэгчийг хэмнэх боломжтой болно
  • OLEDI үүнийг ашигласан тул би мэдрэгчийг уншсан эсэхийг хурдан харж чадна, гэхдээ та Thingspeak дээрээс үүнийг шалгаж болно. OLED нь уншсан бүх утгыг хэвлэхэд хэтэрхий жижиг юм

Алхам 1: Хэлхээ

Хэлхээ
Хэлхээ

ESP8266-ийн 4 зүү нь ПХБ-д байдаггүй бөгөөд ихэнх зургууд нь зөвхөн GPIO0 ба GPIO2-ийг тодорхой харуулдаг боловч ESP826-01 нь GPIO1 зүү (Tx зүү), GPIO3 зүү (Rx зүү) -тэй байдаг эдгээр тээглүүрийг дараах байдлаар ашиглах болно

  • GPIO0 -> I2C портын SDA зүү
  • GPIO1 -> DHT11
  • I2C портын GPIO2-> SCL зүү
  • GPIO3-> OneWire автобус

Миний I2C модулиуд аль хэдийн татах эсэргүүцэлтэй тул би тэнд ямар ч I2C татах эсэргүүцэл оруулахгүй. DS18B20 -д 4k7 -ийг ашигласан татах эсэргүүцэл хэрэгтэй хэвээр байгаа боловч энэ нь тийм ч чухал биш, 10k нь бас сайн. DHT11-д татах эсэргүүцэл хэрэгтэй гэж үзэж байгаа боловч энэ нь огт ажиллахгүй болохыг олж мэдэв. 4k7 резистор нэмсэн нь уншилтыг өөрчилөөгүй тул би үүнийг орхисон. 3 зүү DHT11 модулиудын ихэнх нь модульд 10 к гагнасан байдаг бөгөөд би OLED холболтыг зураагүй гэдгээ сая л ойлголоо. Учир нь би үүнийг хурдан шалгахын тулд л холбосон, гэхдээ хэрэв та үүнийг нэмэхийг хүсч байвал энэ нь SDA -ийг SDA -д, SCL -т SCL -тэй холбох асуудал юм.

Алхам 2: Хөтөлбөр

Хөтөлбөр нь маш энгийн. Эхлээд номын сан болон мэдрэгчийг тохируулдаг бөгөөд DHT11 -ийг 1 (Tx) зүү, DS18B20 -ийн OnWire автобусыг 3 -р зүү (Rx) -д холбодог. OneWire автобусанд 1 -ээс дээш DS18B20 мэдрэгч ашиглахын тулд та тэдний "өвөрмөц хаягийг" мэдэх хэрэгтэй. Хэрэв танд байхгүй бол эдгээр хаягийг унших програм хэрэгтэй болно. Хөтөлбөрт та өөрийн WiFi мэдээллийг мөн Thingspeak суваг бичих API -г өгөх шаардлагатай хэвээр байх болно.

/*

1 -р талбайн түр зогсоол (DHT11) 2 -р талбайн чийгшил (DHT11) талбар 3 Купын температур (DS18B20) талбар 4 хөрсний температур (DS18B20) талбар 5 Агаарын даралт (bmp180) талбар 6 Гадна температур (bmp180) * */ #include #include // https://www.pjrc.com/teensy/td_libs_OneWire.html #include // https://milesburton.com/Main_Page?title=Dallas_Tem… #include #include #include "SSD1306.h" SSD1306 дэлгэц (0x3c, 0, 2); #тодорхойлох DHTPIN 1 // GPIO1 (Tx) #тодорхойлох DHTTYPE DHT11 #ONE_WIRE_BUS 3 -ийг тодорхойлох // GPIO3 = Rx const char* ssid = "YourSSID"; const char* password = "YourPassword"; const char* хост = "api.thingspeak.com"; const char* writeAPIKey = "W367812985"; // use your YOUR writeApi // DHT11 stuff float temperature_buiten; хөвөх температур_buiten2; DHT dht (DHTPIN, DHTTYPE, 15); // DS18b20 зүйлс OneWire oneWire (ONE_WIRE_BUS); // OneWire жишээ нь OneWire -ийн ямар ч төхөөрөмжтэй харьцах боломжтой DallasTemperature мэдрэгч (& oneWire); // Манай oneWire жишээний хаягийг Далласын температурт дамжуулна уу. DeviceAddress Probe01 = {0x28, 0x0F, 0x2A, 0x28, 0x00, 0x00, 0x80, 0x9F}; DeviceAddress Probe02 = {0x28, 0x10, 0xA4, 0x57, 0x04, 0x00, 0x00, 0xA9}; // bmp180 эд зүйлс Adafruit_BMP085 bmp; void setup () {// I2C stuff Wire.pins (0, 2); Wire.begin (0, 2); // Мэдрэгчийг эхлүүлэх // dht 11 зүйл dht.begin (); // ds18b20 stuff sensors.begin (); // ds18b20 // нарийвчлалыг 10 бит болгож тохируулна уу (9-12 бит байж болно.. доод тал нь илүү хурдан) sensors.setResolution (Probe01, 10); sensors.setResolution (Probe02, 10); // bmp180 зүйлс if (! bmp.begin ()) {// Serial.println ("BMP180 /BMP085 байхгүй"); // while (1) {}} // OLED stuff display.init (); display.flipScreenVertically (); display.setFont (ArialMT_Plain_10); саатал (1000); // WiFi сүлжээнд холбогдох WiFi.begin (ssid, нууц үг); while (WiFi.status ()! = WL_CONNECTED) {саатал (500); }} void loop () {// ds18b20stuff ------------------- sensors.requestTemperatures (); // Температурыг авахын тулд тушаалыг илгээнэ үү temperature_buiten = sensors.getTempC (Probe01); // temperature_buiten2 = sensors.getTempC (Probe02); // // dht11 зүйлс ---------------- ---- хөвөх чийгшил = dht.readHumidity (); хөвөх температур = dht.readTemperature (); if (isnan (чийгшил) || isnan (температур)) {буцах; } // bmp зүйлс ------------------------- String t = String (bmp.readTemperature ()); String p = String (bmp.readPressure ()); // OLED зүйлс -------------------------- display.clear (); display.drawString (0, 10, p); // bmp даралтын дэлгэц.drawString (0, 24, String (temperatur_buiten)); дэлгэц (); // WiFiClient клиент TCP холболт хийх; const int httpPort = 80; if (! client.connect (host, httpPort)) {return; } String url = "/update? Key ="; url += бичихAPIKey; url += "& field1 ="; url += String (температур); // roost (DHT1) url += "& field2 ="; url += мөр (чийгшил); // roost (DHT11) url += "& field3 ="; url += String (temperature_buiten); // хамтын температур (DS18B20 nr 1) url += "& field4 ="; url += String (temperature_buiten2); // хөрсний температур (DS18B29 nr 2) url += "& field5 ="; url += String (bmp.readTemperature ()); Гаднах температур (BMP180) url += "& field6 ="; url += String (bmp.readPressure ()); // Агаарын даралт (BMP180) url += "\ r / n"; // Хүсэлтийг серверийн клиент рүү илгээх.print (String ("GET") + url + "HTTP/1.1 / r / n" + "Host:" + host + "\ r / n" + "Connection: close / r / n / r / n "); саатал (1000); }

……..

Алхам 3: Илүү их

Одоогийн байдлаар энэ програм нь зөвхөн хяналт тавьдаг боловч BH1750 I2C гэрлийн мэдрэгчийг оройн эсвэл өглөө эсэхийг хэмжих, өдрийн цагийг мэдэх, үүрний хаалгыг автоматаар онгойлгох, хаахад юу саад болж байна вэ? PCF8574 I2C I/O өргөтгөлийн карт, эсвэл аль хэдийн цэцэрлэгт байгаа тул хөрсний чийгийг хэмжих, шаардлагатай үед насосыг идэвхжүүлэхийн тулд PCF8591 эсвэл ADS1115 AD хөрвүүлэгчийг нэмнэ үү. Хэрэв температур нь тэгээс доош буувал усны сав халаагчийг асааж магадгүй, хэрэв I2 C чиптэй бол ESP8266 үүнийг ашиглаж магадгүй юм.

Чухал тэмдэглэл: Энэ програм нь сайн ажилладаг, гэхдээ хэрэв та Rx эсвэл Tx -д бусад мэдрэгчийг нэмж оруулбал, ялангуяа тэдгээрийг гаралт болговол тээглүүр нь үнэхээр GPIO зүү биш гэдгийг санаж магадгүй юм. Зүүг GPIO зүү гэдгийг эхнээс нь хэлэх нь илүү дээр юм.

pinMode (1, FUNCTION_3);

pinMode (3, FUNCTION_3);

Зөвлөмж болгож буй: