Tartalomjegyzék:

Az ESP8266-01 4 csapjának használata: 3 lépés
Az ESP8266-01 4 csapjának használata: 3 lépés

Videó: Az ESP8266-01 4 csapjának használata: 3 lépés

Videó: Az ESP8266-01 4 csapjának használata: 3 lépés
Videó: Использование драйвера шагового двигателя L298N Для управления 4-проводным шаговым двигателем 2024, Július
Anonim
Az ESP8266-01 4 csapjának használatával
Az ESP8266-01 4 csapjának használatával
Az ESP8266-01 4 csapjának használatával
Az ESP8266-01 4 csapjának használatával
Az ESP8266-01 4 csapjának használatával
Az ESP8266-01 4 csapjának használatával

Megjegyzés: Ez a projekt alapvetően egy korábbi utasításnak a kiterjesztése, amely csak 2 tűt használt. Az ESP8266-01 GPIO csapok korlátozott száma (4) akadálynak tűnhet minden komoly alkalmazás esetén. Mégis, ha valaki használja a csapokat egy okos módszerrel nagyon sok mindent lehet csinálni csak ezzel a 4 érintkezővel. A legutóbbi utasítások közül néhányban bemutattam a DHT11, a DS18B20, az OLED, az RTC és a BMP180 használatát az ESP8266-01 segítségével. Ebben az utasításban 4 érzékelő és egy kijelző használatát tűztem ki célul, miközben a megszerzett adatokat is feltöltöttem a Thingspeak -be. Valójában egy olyan projektre terjed ki, amely figyelemmel kíséri a légkört a csirkeszekrényemben és környékén. Igen, ezt nevezhetjük időjárás -állomásnak, de ez csak a 4 tű használatának szemléltetésére szolgál, így könnyen készíthet mást is. 2 tűt fogok használni az I2C (BMP180 és OLED) 1 tűhöz 2 DS18B20 érzékelőhöz a Bár az ESP8266-01 összes csapját már használta, a OneWire protokollon és/vagy az I2C protokollon keresztül további érzékelőket (vagy működtetőket) tudok hozzáadni. Tehát mire van szükségünk: BOM

  • ESP8266-01
  • 2x DS18B20
  • 1x DHT11
  • 1x BMP180
  • OLED (opcionális)

és természetesen egy kenyérsütő deszkát, egy 3,3 V -os tápegységet és néhány kenyeretábla -vezetéket és egy Thingspeak -fiókot

Csak néhány megjegyzés a BOM -ról:

  • Nyilvánvaló, hogy a projekt az ESP8266-01 korlátozott csapjainak felhasználásáról szól, de ha mégis meg kell vásárolnia egyet, akkor fontolja meg az ESP8266-12 több tüskét
  • DHT11A olcsó univerzális páratartalom- és hőmérséklet -érzékelő. Nem túl pontos, de megteszi. Ha mégis meg kell vásárolnia egyet, akkor az állítólag pontosabb DHT22 mellett dönthet, de az AMS2321 mellett is. Ez egyfajta DHT22, amely alkalmas az I2C -re, és így felszabadít egy másik tűt
  • A BMP180 méri a hőmérsékletet és a légnyomást. A BMP085 utódja, de most már maga is rendelkezik néhány suvessorral. Van az (olcsóbb) BMP280, de választhatja a BME280 -at is, amely méri a hőmérsékletet, a légnyomást ÉS a páratartalmat. Így spórolhat a DHT/AMS érzékelőn
  • Az OLEDI csak ezt használta, így gyorsan láthattam, hogy az érzékelők le vannak -e olvasva, de ugyanezt ellenőrizheti a Thingspeak -en is. Az OLED egyébként túl kicsi az összes olvasott érték kinyomtatásához

1. lépés: Az áramkör

Az áramkör
Az áramkör

Az ESP8266 4 érintkezője nincs feltüntetve a NYÁK-on, és a legtöbb képen csak a GPIO0 és a GPIO2 látható. Az ESP826-01 azonban rendelkezik aa GPIO1 tűvel (a Tx érintkezővel) és a GPIO3 tűvel (az Rx tű). I ezeket a csapokat az alábbiak szerint fogja használni

  • GPIO0 -> SD2 tű az I2C porton
  • GPIO1 -> DHT11
  • GPIO2-> SCL tű az I2C porton
  • GPIO3-> OneWire busz

Mivel az I2C moduljaim már rendelkeznek felhúzó ellenállásokkal, nem adok hozzá I2C felhúzó ellenállásokat. A DS18B20 -nak még szüksége van egy felhúzó ellenállásra, amihez 4k7 -et használtam, de tényleg nem annyira kritikus, a 10k is jó. A DHT11-nek állítólag szüksége van egy felhúzó ellenállásra is, de azt találtam, hogy működik anélkül is. 4k7 ellenállás hozzáadása nem változtatott az értékeken, így kihagytam. A 3 tűs DHT11 modulok közül sok már 10 k -es forrasztással van a modulra. Most jöttem rá, hogy nem az OLED -hez csatlakoztam. Ennek az az oka, hogy csak egy gyors ellenőrzéshez kötöttem össze, de ha hozzá szeretné adni, akkor csak az SDA -t kell csatlakoztatni az SDA -hoz, és az SCL -t az SCL -hez… és természetesen a földet és a Vcc -csapokat a társaikhoz

2. lépés: A program

A program meglehetősen egyszerű. Először a könyvtárakat és az érzékelőket állítja be. A DHT11 -et az 1. tűhöz (Tx), a DS18B20 OnWire buszát pedig a 3. tűhöz (Rx) rögzíti. Ha egynél több DS18B20 érzékelőt szeretne használni a OneWire buszon, ismernie kell az egyedi címüket. Ha nem rendelkezik ilyennel, akkor szüksége van egy programra, amely elolvassa ezeket a címeket. Tegye ezt egy arduino -n az egyszerűség érdekében. A programban továbbra is meg kell adnia a WiFi hitelesítő adatait, valamint az írási API -t a Thingspeak Channel számára

/*

1. mező: temp roost (DHT11). https://www.pjrc.com/teensy/td_libs_OneWire.html #include // https://milesburton.com/Main_Page?title=Dallas_Tem… #include #include #include "SSD1306.h" SSD1306 kijelző (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 = "Saját jelszó"; const char* host = "api.thingspeak.com"; const char* writeAPIKey = "W367812985"; // az YOUR writeApi használata // DHT11 cucc float temperature_buiten; lebegési hőmérséklet_buiten2; DHT dht (DHTPIN, DHTTYPE, 15); // DS18b20 cucc OneWire oneWire (ONE_WIRE_BUS); // oneWire példány bármelyik OneWire eszközzel való kommunikációhoz DallasTemperature szenzorok (& oneWire); // továbbítsa oneWire példányunk címét a Dallas Temperature -nek. DeviceAddress Probe01 = {0x28, 0x0F, 0x2A, 0x28, 0x00, 0x00, 0x80, 0x9F}; DeviceAddress Probe02 = {0x28, 0x10, 0xA4, 0x57, 0x04, 0x00, 0x00, 0xA9}; // bmp180 cucc Adafruit_BMP085 bmp; void setup () {// I2C cucc Wire.pins (0, 2); Vezeték.kezdet (0, 2); // Szenzorok inicializálása // dht 11 cucc dht.begin (); // ds18b20 cucc sensors.begin (); // ds18b20 // állítsa a felbontást 10 bitre (9-12 bit lehet.. alacsonyabb gyorsabb) sensors.setResolution (Probe01, 10); sensors.setResolution (Probe02, 10); // bmp180 cucc if (! bmp.begin ()) {// Serial.println ("No BMP180 /BMP085"); // while (1) {}} // OLED cucc display.init (); display.flipScreenVertically (); display.setFont (ArialMT_Plain_10); késleltetés (1000); // Csatlakozás WiFi hálózathoz WiFi.begin (ssid, jelszó); while (WiFi.status ()! = WL_CONNECTED) {delay (500); }} void loop () {// ds18b20stuff ------------------- sensors.requestTemperatures (); // Küldje el a parancsot, hogy lekérje a hőmérsékleteket. ---- úszó páratartalom = dht.readHumidity (); úszó hőmérséklet = dht.readTemperature (); if (isnan (páratartalom) || isnan (hőmérséklet)) {return; } // bmp cucc ------------------------- String t = String (bmp.readTemperature ()); Karakterlánc p = Karakterlánc (bmp.readPressure ()); // OLED cucc -------------------------- display.clear (); display.drawString (0, 10, p); // bmp nyomás display.drawString (0, 24, karakterlánc (hőmérséklet_buiten)); // ds18b20 display.drawString (0, 38, String (páratartalom)); // dht11 display.kijelző(); // TCP kapcsolatok létrehozása WiFiClient kliens; const int httpPort = 80; if (! client.connect (host, httpPort)) {return; } String url = "/update? Key ="; url += writeAPIKey; url += "& mező1 ="; url += Karakterlánc (hőmérséklet); // roost (DHT1) url += "& field2 ="; url += String (páratartalom); // roost (DHT11) url += "& field3 ="; url += Karakterlánc (hőmérséklet_buiten); // coop hőmérséklet (DS18B20 nr 1) url += "& field4 ="; url += Karakterlánc (hőmérséklet_buiten2); // talajhőmérséklet (DS18B29 nr 2) url += "& field5 ="; url += String (bmp.readTemperature ()); Külső hőmérséklet (BMP180) url += "& field6 ="; url += Karakterlánc (bmp.readPressure ()); // Légnyomás (BMP180) url += "\ r / n"; // Kérés küldése a szerver kliensnek.print (String ("GET") + url + "HTTP/1.1 / r / n" + "Host:" + host + "\ r / n" + "Kapcsolat: bezár / r / n / r / n "); késleltetés (1000); }

……..

3. lépés: Továbbiak

Jelenleg ez a program csak figyel, de mi akadályoz meg abban, hogy BH1750 I2C fényérzékelőt adjon hozzá annak méréséhez, hogy este vagy reggel van -e, vagy RTC, hogy megtudja a napszakot, és automatikusan kinyissa és bezárja a fedél ajtaját. PCF8574 I2C I/O bővítő kártya, vagy ahogy már a kertben van, adjon hozzá egy PCF8591 vagy ADS1115 AD átalakítót a talaj páratartalmának méréséhez, és szükség esetén aktiválja a szivattyút. Vagy ha bekapcsolja a vízmelegítőt, ha a hőmérséklet nulla alá csökken, ha van I2 C chip, az ESP8266 valószínűleg használni tudja.

Egy fontos megjegyzés azonban: A program úgy működik, ahogy van, de ha más érzékelőket ad hozzá az Rx -hez vagy a Tx -hez, különösen, ha kimenetekké alakítja őket, a csapok hirtelen emlékezhetnek arra, hogy valójában nem GPIO -tűk. Jobb, ha a kezdetektől fogva megmondja a csapokat, hogy most GPIO -csapok. Az egyik ezt úgy teszi meg, hogy a következő utasításokat helyezi a beállításba:

pinMode (1, FUNCTION_3);

pinMode (3, FUNCTION_3);

Ajánlott: