Obsah:

Použitie 4 pinov ESP8266-01: 3 kroky
Použitie 4 pinov ESP8266-01: 3 kroky

Video: Použitie 4 pinov ESP8266-01: 3 kroky

Video: Použitie 4 pinov ESP8266-01: 3 kroky
Video: Как сделать 4-канальное реле Wi-Fi ESP8266 ESP01 | ESP01 Домашняя автоматизация | УдаленныйXY 2024, November
Anonim
Použitie 4 pinov ESP8266-01
Použitie 4 pinov ESP8266-01
Použitie 4 pinov ESP8266-01
Použitie 4 pinov ESP8266-01
Použitie 4 pinov ESP8266-01
Použitie 4 pinov ESP8266-01

Poznámka: Tento projekt je v podstate rozšírením predchádzajúceho návodu, ktorý používal iba 2 piny. Obmedzený počet (4) pinov GPIO na ESP8266-01 sa môže javiť ako prekážka pre každú serióznu aplikáciu. Napriek tomu, ak niekto používa kolíky v inteligentným spôsobom je veľmi možné urobiť veľa iba s týmito 4 kolíkmi. V niektorých mojich nedávnych pokynoch som ukázal použitie DHT11 a DS18B20, OLED, RTC a BMP180 s ESP8266-01. V tomto návode som sa rozhodol použiť 4 senzory a displej a zároveň nahrať získané údaje do Thingspeak. V skutočnosti sa rozširuje o projekt monitorovania atmosféry v mojom kurníku a okolo neho. Áno, dá sa to nazvať meteorologická stanica, ale slúži to len na ilustráciu použitia 4 pinov, takže môžete ľahko vytvoriť niečo iné. Budem používať 2 piny pre I2C (BMP180 a OLED) 1 pin pre 2 senzory DS18B20 cez Protokol OneWire 1 pin pre DHT11 Napriek tomu, že ESP8266-01 má teraz všetky použité kolíky, stále môžem pridať ďalšie senzory (alebo akčné členy) prostredníctvom protokolu OneWire a/alebo prostredníctvom protokolu I2C. Čo teda potrebujeme: kusovník

  • ESP8266-01
  • 2x DS18B20
  • 1x DHT11
  • 1x BMP180
  • OLED (voliteľné)

a samozrejme nepájivú dosku, 3,3 V zdroj a niekoľko drôtov na nepájivom poli a účet Thingspeak

Len niekoľko poznámok k kusovníku:

  • Je zrejmé, že projekt je o využití obmedzených pinov ESP8266-01, ale ak si ich stále potrebujete kúpiť, mohli by ste zvážiť ESP8266-12, ktorý má viac pinov
  • DHT11A lacný viacúčelový snímač vlhkosti a teploty. Nie je to veľmi presné, ale bude to fungovať. Ak si stále potrebujete kúpiť, môžete sa rozhodnúť pre DHT22, ktorý je údajne presnejší, ale môžete sa rozhodnúť aj pre AMS2321. Je to druh DHT22, ktorý je vhodný pre I2C, čím uvoľňuje ďalší pin
  • BMP180 meria teplotu a tlak vzduchu. Je to nástupca modelu BMP085, ale v súčasnosti má aj niektorých vlastných nástupcov. Existuje (lacnejší) BMP280, ale môžete sa tiež rozhodnúť pre BME280, ktorý meria teplotu, tlak vzduchu A vlhkosť. Tak môžete ušetriť na senzore DHT/AMS
  • OLEDI to práve použil, takže som rýchlo videl, či sú senzory načítané, ale rovnako dobre to môžete skontrolovať na Thingspeak. OLED je aj tak príliš malý na vytlačenie všetkých načítaných hodnôt

Krok 1: Okruh

Okruh
Okruh

4 kolíky ESP8266 nie sú na plošnom spoji uvedené a väčšina obrázkov iba jasne uvádza GPIO0 a GPIO2. ESP826-01 však má kolík GPIO1 (kolík Tx) a kolík GPIO3 (kolík Rx). I bude tieto kolíky používať nasledovne

  • Kolík GPIO0 -> SDA portu I2C
  • GPIO1 -> DHT11
  • Pin GPIO2-> SCL portu I2C
  • GPIO3-> OneWire Bus

Pretože moje moduly I2C už majú výsuvné odpory, nebudem tam pridávať žiadne výsuvné odpory I2C. DS18B20 stále potrebuje pull up odpor, na ktorý som použil 4k7, ale nie je to také kritické, 10k je tiež dobré. DHT11 údajne tiež potrebuje vyťahovací odpor, ale zistil som, že funguje aj bez neho. pridanie odporu 4k7 nezmenilo žiadne z hodnôt, takže som to vynechal. Mnoho z 3 -kolíkových modulov DHT11 už bolo na modul spájkovaných 10 k. Práve som si uvedomil, že som nevykreslil spojenia pre OLED. Je to preto, že som to pripojil len pre rýchlu kontrolu, ale ak by ste to chceli pridať, je to len otázka pripojenia SDA k SDA a SCL k SCL … a samozrejme uzemnenia a kolíkov VCC k ich náprotivkom.

Krok 2: Program

Program je celkom jednoduchý. Najprv nastaví knižnice a senzory. Pripojí DHT11 na pin 1 (Tx) a zbernicu OnWire pre DS18B20 na pin 3 (Rx). Aby ste na zbernici OneWire mohli použiť viac ako 1 snímač DS18B20, musíte poznať ich „jedinečnú adresu“. Ak to nemáte, potrebujete program na čítanie týchto adries. Urobte to na arduino pre jednoduchosť. V programe stále musíte poskytnúť svoje poverenia WiFi a API na zápis pre váš kanál Thingspeak.

/*

Teplota 1 Teplota miestnosti (DHT11) Pole 2 Teplota vlhkosti (DHT11) Pole 3 Teplota coopu (DS18B20) pole 4 Teplota pôdy (DS18B20) pole 5 Tlak vzduchu (bmp180) pole 6 Vonkajšia teplota (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" displej SSD1306 (0x3c, 0, 2); #define DHTPIN 1 // GPIO1 (Tx) #define DHTTYPE DHT11 #define ONE_WIRE_BUS 3 // GPIO3 = Rx const char* ssid = "YourSSID"; const char* heslo = "Vaše heslo"; const char* host = "api.thingspeak.com"; const char* writeAPIKey = "W367812985"; // použite SVOJE writeApi // veci DHT11 float temperature_buiten; teplota plaváka_buiten2; DHT dht (DHTPIN, DHTTYPE, 15); // veci DS18b20 OneWire oneWire (ONE_WIRE_BUS); // Inštancia oneWire na komunikáciu s akýmikoľvek zariadeniami OneWire Senzory DallasTemperature (& oneWire); // Odošlite adresu našej inštancie oneWire do Dallas Temperature. Sonda DeviceAddress01 = {0x28, 0x0F, 0x2A, 0x28, 0x00, 0x00, 0x80, 0x9F}; Sonda DeviceAddress02 = {0x28, 0x10, 0xA4, 0x57, 0x04, 0x00, 0x00, 0xA9}; // bmp180 veci Adafruit_BMP085 bmp; void setup () {// I2C veci Wire.pins (0, 2); Wire.begin (0, 2); // Inicializácia senzorov // dht 11 vecí dht.begin (); // ds18b20 stuff sensor.begin (); // ds18b20 // nastavenie rozlíšenia na 10 bitov (Môže byť 9 až 12 bitov.. nižšie je rýchlejšie) sensor.setResolution (Probe01, 10); sensor.setResolution (Probe02, 10); // veci bmp180 if (! bmp.begin ()) {// Serial.println ("No BMP180 /BMP085"); // while (1) {}} // OLED veci display.init (); display.flipScreenVertically (); display.setFont (ArialMT_Plain_10); oneskorenie (1000); // Pripojenie k sieti WiFi WiFi.begin (ssid, heslo); while (WiFi.status ()! = WL_CONNECTED) {oneskorenie (500); }} void loop () {// ds18b20stuff ------------------- sensor.requestTemperatures (); // Pošlite príkaz na získanie teplôt teplota_buiten = sensor.getTempC (Probe01); // teplota_buiten2 = sensor.getTempC (Probe02); // // veci dht11 ---------------- ---- vlhkosť v plaváku = dht.readHumidity (); plávajúca teplota = dht.readTemperature (); if (isnan (vlhkosť) || isnan (teplota)) {návrat; } // veci bmp ------------------------- String t = String (bmp.readTemperature ()); Reťazec p = Reťazec (bmp.readPressure ()); // veci OLED -------------------------- display.clear (); display.drawString (0, 10, p); // zobrazenie tlaku bmp.drawString (0, 24, String (teplota_buiten)); // ds18b20 display.drawString (0, 38, String (vlhkosť)); // zobrazenie dht11.display (); // vytvorenie TCP spojení WiFiClient klient; const int httpPort = 80; if (! client.connect (host, httpPort)) {return; } Adresa URL reťazca = "/aktualizovať? Kľúč ="; url += writeAPIKey; url += "& field1 ="; url += String (teplota); // roost (DHT1) url += "& field2 ="; url += String (vlhkosť); // roost (DHT11) url += "& field3 ="; url += String (teplota_buiten); // teplota coopu (DS18B20 č. 1) url += "& field4 ="; url += reťazec (teplota_buiten2); // teplota pôdy (DS18B29 č. 2) url += "& field5 ="; url += String (bmp.readTemperature ()); Vonkajšia teplota (BMP180) url += "& field6 ="; url += String (bmp.readPressure ()); // tlak vzduchu (BMP180) url += "\ r / n"; // Odoslať požiadavku na server client.print (String ("GET") + url + "HTTP/1.1 / r / n" + "Host:" + host + "\ r / n" + "Pripojenie: zavrieť / r / n / r / n "); oneskorenie (1000); }

……..

Krok 3: Viac

V súčasnej dobe tento program iba monitoruje, čo vám však bráni v tom, aby ste pridali svetelný senzor BH1750 I2C na meranie, či je večer alebo ráno alebo RTC, aby ste poznali dennú dobu a automaticky otvárali a zatvárali dvere coopu pomocou rozširujúcu kartu I/O PCF8574 I2C, alebo pretože je už v záhrade, pridajte prevodník PCF8591 alebo ADS1115 AD na meranie vlhkosti pôdy a v prípade potreby aktivujte čerpadlo. Alebo možno zapnúť ohrievač vodnej nádrže, keď teplota klesne pod nulu, ak je na to čip I2 C, to pravdepodobne dokáže použiť ESP8266.

Dôležitá poznámka: Program ako taký funguje dobre, ale ak do Rx alebo Tx pridáte ďalšie senzory, najmä ak ich zaradíte do výstupov, piny si môžu zrazu spomenúť, že v skutočnosti nie sú pinmi GPIO. Je lepšie od začiatku povedať, že piny sú teraz piny GPIO. Urobíte to tak, že do nastavenia vložíte nasledujúce vyhlásenia:

pinMode (1, FUNCTION_3);

pinMode (3, FUNCTION_3);

Odporúča: