Turinys:

Naudojant 4 ESP8266-01 kaiščius: 3 žingsniai
Naudojant 4 ESP8266-01 kaiščius: 3 žingsniai

Video: Naudojant 4 ESP8266-01 kaiščius: 3 žingsniai

Video: Naudojant 4 ESP8266-01 kaiščius: 3 žingsniai
Video: Введение в ESP8266 Лестничная логика FLProg 2024, Lapkritis
Anonim
Naudojant 4 ESP8266-01 kaiščius
Naudojant 4 ESP8266-01 kaiščius
Naudojant 4 ESP8266-01 kaiščius
Naudojant 4 ESP8266-01 kaiščius
Naudojant 4 ESP8266-01 kaiščius
Naudojant 4 ESP8266-01 kaiščius

Pastaba: Šis projektas iš esmės yra ankstesnio nurodymo, kuriame buvo naudojami tik 2 kaiščiai, pratęsimas. Ribotas skaičius (4) GPIO kaiščių ESP8266-01 gali atrodyti kaip kliūtis bet kokiai rimtai programai. Tačiau, jei naudojate kaiščius protingas būdas yra labai daug įmanoma nuveikti tik su šiais 4 kaiščiais. Kai kuriose naujausiose instrukcijose aš parodžiau, kaip naudoti DHT11, DS18B20, OLED, RTC ir BMP180 su ESP8266-01. Šioje instrukcijoje aš nusprendžiau naudoti 4 jutiklius ir ekraną, taip pat įkeldamas gautus duomenis į „Thingspeak“. Tiesą sakant, jis plečia projektą, skirtą stebėti atmosferą mano vištidėje ir aplink ją. Taip, tai galite pavadinti oro stotimi, bet tai tik iliustracija, kaip naudoti 4 kaiščius, tokiu būdu galite lengvai padaryti ką nors kita. Aš naudoju 2 kaiščius I2C (BMP180 ir OLED) 1 kaiščiui 2 DS18B20 jutikliams per Nors ESP8266-01 dabar naudojami visi kaiščiai, vis tiek galiu pridėti daugiau jutiklių (arba pavarų) per „OneWire“protokolą ir (arba) per I2C protokolą. Taigi, ko mums reikia: BOM

  • ESP8266-01
  • 2x DS18B20
  • 1x DHT11
  • 1x BMP180
  • OLED (neprivaloma)

ir, žinoma, duonos lenta, 3,3 V maitinimo blokas ir kai kurie lentos laidai bei „Thingspeak“paskyra

Tik keletas pastabų apie BOM:

  • Akivaizdu, kad projektas yra susijęs su ribotų ESP8266-01 kaiščių naudojimu, tačiau jei vis tiek reikia nusipirkti, galite apsvarstyti ESP8266-12, kuriame yra daugiau kaiščių
  • DHT11A pigus universalus drėgmės ir temperatūros jutiklis. Tai nėra labai tikslu, bet tai padarys. Jei vis tiek turite jį nusipirkti, galite pasirinkti DHT22, kuris yra tariamai tikslesnis, bet taip pat galite pasirinkti AMS2321. Tai yra DHT22 rūšis, tinkanti I2C, taip atlaisvinant kitą kaištį
  • BMP180 matuoja temperatūrą ir oro slėgį. Jis yra BMP085 įpėdinis, tačiau dabar taip pat turi keletą suvessorų. Yra (pigesnis) BMP280, tačiau taip pat galite pasirinkti BME280, kuris matuoja temperatūrą, oro slėgį ir drėgmę. Tokiu būdu galite sutaupyti DHT/AMS jutiklio
  • „OLEDI“tai tiesiog naudojo, kad galėčiau greitai pamatyti, ar jutikliai buvo nuskaityti, bet taip pat galite tai patikrinti „Thingspeak“. OLED yra per mažas, kad būtų galima atspausdinti visas nuskaitytas reikšmes

1 žingsnis: grandinė

Circuit
Circuit

4 ESP8266 kaiščiai nėra nurodyti PCB, o daugumoje vaizdų aiškiai nurodomi tik GPIO0 ir GPIO2. Tačiau ESP826-01 turi GPIO1 kaištį (Tx kaištį) ir GPIO3 kaištį (Rx kaištis). I tuos kaiščius naudos taip

  • GPIO0 -> I2C prievado SDA kaištis
  • GPIO1 -> DHT11
  • GPIO2-> SCL I2C prievado kaištis
  • GPIO3-> „OneWire“magistralė

Kadangi mano I2C moduliai jau turi traukiamus rezistorius, aš ten nepridėsiu jokių I2C traukimo rezistorių. DS18B20 vis dar reikia traukimo rezistoriaus, kuriam naudojau 4k7, bet jis tikrai nėra toks kritiškas, 10k taip pat yra gerai. DHT11 tariamai taip pat reikia ištraukiamojo rezistoriaus, tačiau pastebėjau, kad jis veikia ir be jo. pridedant 4k7 rezistorių, niekas nepakeitė rodmenų, todėl jį palikau. Daugelyje 3 kontaktų DHT11 modulių jau yra 10 k. Litavimas ant modulio. Aš ką tik supratau, kad aš nenusitraukiau OLED jungčių. Taip yra todėl, kad aš jį prijungiau tik greitam patikrinimui, bet jei norite jį pridėti, tai tiesiog reikia prijungti SDA prie SDA, o SCL prie SCL… ir, žinoma, antžeminius ir Vcc kaiščius prie jų kolegų

2 žingsnis: programa

Programa yra gana paprasta. Pirmiausia jis nustato bibliotekas ir jutiklius. Jis prijungia DHT11 prie 1 kaiščio (Tx) ir „OnWire“magistralės, skirtos DS18B20, prie 3 kaiščio (Rx). Norėdami naudoti daugiau nei 1 DS18B20 jutiklį „OneWire“magistralėje, turite žinoti jų „unikalų adresą“. Jei to neturite, jums reikia programos tiems adresams skaityti. Padarykite tai naudodami „arduino“, kad būtų lengviau. Programoje vis tiek turite pateikti „WiFi“prisijungimo duomenis ir „Thingspeak“kanalo rašymo API

/*

1 lauko temp roost (DHT11) 2 lauko drėgnumas (DHT11) 3 laukas Coop temperatūra (DS18B20) 4 laukas dirvožemio temperatūra (DS18B20) 5 laukas Oro slėgis (bmp180) 6 laukas Išorinė temperatūra (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 ekranas (0x3c, 0, 2); #define DHTPIN 1 // GPIO1 (Tx) #define DHTTYPE DHT11 #define ONE_WIRE_BUS 3 // GPIO3 = Rx const char* ssid = "YourSSID"; const char* password = "YourPassword"; const char* host = "api.thingspeak.com"; const char* writeAPIKey = "W367812985"; // naudoti JŪSŲ writeApi // DHT11 medžiaga float temperature_buiten; plūdės temperatūra_buiten2; DHT dht (DHTPIN, DHTTYPE, 15); // DS18b20 medžiaga OneWire oneWire (ONE_WIRE_BUS); // „oneWire“egzempliorius, skirtas bendrauti su bet kokiais „OneWire“įrenginiais „DallasTemperatūros jutikliai“(& oneWire); // Perduokite „OneWire“egzemplioriaus adresą Dalaso temperatūrai. „DeviceAddress Probe01“= {0x28, 0x0F, 0x2A, 0x28, 0x00, 0x00, 0x80, 0x9F}; „DeviceAddress Probe02“= {0x28, 0x10, 0xA4, 0x57, 0x04, 0x00, 0x00, 0xA9}; // bmp180 stuff Adafruit_BMP085 bmp; void setup () {// I2C stuff Wire.pins (0, 2); Viela.pradėti (0, 2); // Inicijuoti jutiklius // dht 11 stuff dht.begin (); // ds18b20 stuff sensors.begin (); // ds18b20 // nustatykite skiriamąją gebą į 10 bitų (gali būti nuo 9 iki 12 bitų.. mažesnis yra greitesnis) sensor.setResolution (Probe01, 10); sensor.setResolution (zondas02, 10); // bmp180 stuff if (! bmp.begin ()) {// Serial.println ("Nr BMP180 /BMP085"); // while (1) {}} // OLED medžiaga display.init (); display.flipScreenVertically (); display.setFont („ArialMT_Plain_10“); vėlavimas (1000); // Prisijungimas prie WiFi tinklo WiFi.begin (ssid, slaptažodis); while (WiFi.status ()! = WL_CONNECTED) {delay (500); }} void loop () {// ds18b20stuff ------------------- sensors.requestTemperatures (); // Siųskite komandą, kad gautumėte temperatūras ---- plūdės drėgmė = dht.readHumidity (); plūdės temperatūra = dht.readTemperature (); if (isnan (drėgmė) || isnan (temperatūra)) {return; } // bmp stuff ------------------------- String t = String (bmp.readTemperature ()); Eilutė p = eilutė (bmp.readPressure ()); // OLED stuff -------------------------- display.clear (); display.drawString (0, 10, p); // bmp slėgio rodymas.drawString (0, 24, String (temperature_buiten)); // ds18b20 display.drawString (0, 38, String (drėgmė)); // dht11 display.display (); // padaryti TCP ryšius WiFiClient klientas; const int httpPort = 80; if (! client.connect (host, httpPort)) {return; } String url = "/update? Key ="; url += writeAPIKey; url += "& laukas1 ="; url += Styga (temperatūra); // roost (DHT1) url += "& field2 ="; url += Styga (drėgmė); // roost (DHT11) url += "& field3 ="; url += Styga (temperatūra_buiten); // bendradarbiavimo temperatūra (DS18B20 nr 1) url += "& field4 ="; url += Styga (temperatūra_buiten2); // dirvos temperatūra (DS18B29 nr 2) url += "& field5 ="; url += Styga (bmp.readTemperature ()); Išorinė temperatūra (BMP180) url += "& field6 ="; url += Styga (bmp.readPressure ()); // Oro slėgis (BMP180) url += "\ r / n"; // Siųsti užklausą serverio klientui.print (String ("GET") + url + "HTTP/1.1 / r / n" + "Host:" + host + "\ r / n" + "Ryšys: uždaryti / r / n / r / n "); vėlavimas (1000); }

……..

3 žingsnis: daugiau

Šiuo metu ši programa tik stebi, bet kas neleis jums pridėti BH1750 I2C šviesos jutiklio, kad išmatuotumėte, ar yra vakaras ar rytas, ar RTC, kad sužinotumėte paros laiką ir automatiškai atidarytumėte bei uždarytumėte kuopos duris. PCF8574 I2C I/O išplėtimo kortelę arba, kaip jau yra sode, pridėkite PCF8591 arba ADS1115 AD keitiklį, kad išmatuotumėte dirvožemio drėgmę ir prireikus įjungtumėte siurblį. O gal vandens baseino šildytuvo įjungimas, kai temperatūra nukrenta žemiau nulio, jei tam yra I2 C lustas, ESP8266 tikriausiai gali jį naudoti.

Tačiau svarbi pastaba: programa gerai veikia, tačiau jei prie „Rx“ar „Tx“pridėsite kitų jutiklių, ypač jei padarysite juos išvestimis, kaiščiai gali staiga prisiminti, kad jie tikrai nėra GPIO kaiščiai. Geriau iš pradžių pasakyti kaiščiams, kad jie dabar yra GPIO kaiščiai. Tai galima padaryti įdėjus šiuos teiginius į sąranką:

pinMode (1, FUNCTION_3);

pinMode (3, FUNCTION_3);

Rekomenduojamas: