Sisällysluettelo:

ESP8266-01: n 4 nastan käyttäminen: 3 vaihetta
ESP8266-01: n 4 nastan käyttäminen: 3 vaihetta

Video: ESP8266-01: n 4 nastan käyttäminen: 3 vaihetta

Video: ESP8266-01: n 4 nastan käyttäminen: 3 vaihetta
Video: Kuinka tehdä 4-kanavainen ESP8266 ESP01 Wi-Fi-rele | ESP01 Kotiautomaatio | RemoteXY | FLProg 2024, Heinäkuu
Anonim
Käyttämällä ESP8266-01: n 4 nastaa
Käyttämällä ESP8266-01: n 4 nastaa
Käyttämällä ESP8266-01: n 4 nastaa
Käyttämällä ESP8266-01: n 4 nastaa
Käyttämällä ESP8266-01: n 4 nastaa
Käyttämällä ESP8266-01: n 4 nastaa

Huomautus: Tämä projekti on pohjimmiltaan jatkoa aikaisemmalle ohjeelle, joka käytti vain 2 nastaa. ESP8266-01: n rajoitettu määrä (4) GPIO-nastoja voi tuntua esteenä vakavalle sovellukselle. Älykäs tapa on hyvin mahdollista tehdä paljon vain näillä 4 nastalla. Tässä ohjeessa päätin käyttää 4 anturia ja näyttöä ja ladata samalla kerättyjä tietoja Thingspeakiin. Se on itse asiassa laajentumassa hankkeeseen, jolla seurataan ilmakehää kanatiloissani ja sen ympäristössä. Kyllä, tätä voisi kutsua sääilmiöksi, mutta se on vain havainnollistamaan 4 nastan käyttöä, voit helposti tehdä jotain muuta tällä tavalla. Käytän 2 nastaa I2C: lle (BMP180 ja OLED) 1 nastaa 2 DS18B20 -anturille OneWire-protokolla 1 nasta DHT11: lle Vaikka ESP8266-01: ssä on nyt kaikki nastat käytössä, voin silti lisätä lisää antureita (tai toimilaitteita) OneWire-protokollan ja/tai I2C-protokollan kautta.

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

ja tietysti leipälauta, 3,3 V: n virtalähde ja jotkut leipälevyn johdot ja Thingspeak -tili

Muutama huomautus BOM: sta:

  • Ilmeisesti projekti koskee ESP8266-01: n rajoitettujen nastojen käyttöä, mutta jos sinun on vielä ostettava sellainen, voit harkita ESP8266-12, jossa on enemmän nastoja
  • DHT11A halpa universaali kosteus- ja lämpötila -anturi. Se ei ole kovin tarkka, mutta se onnistuu. Jos sinun on vielä ostettava sellainen, voit valita DHT22: n, joka on oletettavasti tarkempi, mutta voit myös valita AMS2321: n. Se on eräänlainen DHT22, joka sopii I2C: lle, jolloin toinen tappi vapautuu
  • BMP180 mittaa lämpötilan ja ilmanpaineen. Se on BMP085: n seuraaja, mutta sillä on nyt myös joitakin suvessoreita itse. On (halvempi) BMP280, mutta voit myös valita BME280, joka mittaa lämpötilaa, ilmanpainetta JA kosteutta. Näin voit säästää DHT/AMS -anturissa
  • OLEDI vain käytti sitä, jotta voisin nopeasti nähdä, oliko anturit luettu, mutta voit yhtä hyvin tarkistaa sen Thingspeakista. OLED on joka tapauksessa liian pieni tulostamaan kaikki lukuarvot

Vaihe 1: Piiri

Piiri
Piiri

ESP8266: n neljää nastaa ei ole merkitty sellaisenaan piirilevylle, ja useimmissa kuvissa on vain GPIO0 ja GPIO2. ESP826-01: ssä on kuitenkin GPO1-nasta (Tx-nasta) ja GPIO3-nasta (Rx-nasta). I käyttää näitä nastoja seuraavasti

  • GPIO0 -> I2C -portin SDA -nasta
  • GPIO1 -> DHT11
  • GPIO2-> SCL-nasta I2C-portista
  • GPIO3-> OneWire-väylä

Koska I2C -moduulissani on jo vetovastus, en lisää siihen mitään I2C -vetovoimia. DS18B20 tarvitsee vielä vetovastus, johon käytin 4k7, mutta se ei todellakaan ole niin kriittinen, 10k on myös hyvä. DHT11 väittää myös tarvitsevansa vetovastusta, mutta huomasin sen toimivan myös ilman sitä. 4k7 -vastuksen lisääminen ei muuttanut lukemia, joten jätin sen pois. Monissa 3 -nastaisista DHT11 -moduuleista on jo 10 k juotettu moduuliin. Huomasin juuri, että en piirtänyt OLED -liitännät. Tämä johtuu siitä, että liitin sen vain nopeaa tarkistusta varten, mutta jos haluat lisätä sen, kyse on vain SDA: n liittämisestä SDA: han ja SCL: stä SCL: ään … ja tietysti maahan ja Vcc -nastoihin vastaaviinsa

Vaihe 2: Ohjelma

Ohjelma on varsin suoraviivainen. Ensin se asettaa kirjastot ja anturit ja kiinnittää DHT11: n nastaan 1 (Tx) ja OnWire -väylän DS18B20: n nastaan 3 (Rx). Jotta voit käyttää OneWire -väylässä enemmän kuin yhtä DS18B20 -anturia, sinun on tiedettävä niiden "ainutlaatuinen osoite". Jos sinulla ei ole sitä, tarvitset ohjelman näiden osoitteiden lukemiseen. Tee se arduinolla helpottamiseksi. Ohjelmassa sinun on edelleen annettava WiFi -tunnistetietosi ja kirjoitusliittymä Thingspeak -kanavallesi

/*

Kenttä 1 lämpötila (DHT11) Kenttä 2 kosteuspalautus (DHT11) -kenttä 3 Coop -lämpötila (DS18B20) -kenttä 4 maaperän lämpötila (DS18B20) -kenttä 5 Ilmanpaine (bmp180) -kenttä 6 Ulkolämpötila (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 -näyttö (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 = "Oma salasana"; const char* isäntä = "api.thingspeak.com"; const char* writeAPIKey = "W367812985"; // käytä YOUR writeApi // DHT11 -tavaraa float temperature_buiten; kelluva lämpötila_buiten2; DHT dht (DHTPIN, DHTTYPE, 15); // DS18b20 -tavarat OneWire oneWire (ONE_WIRE_BUS); // oneWire -ilmentymä kommunikoimaan minkä tahansa OneWire -laitteen kanssa DallasTemperature -anturit (& oneWire); // Välitä oneWire -ilmentymän osoite Dallas Temperaturelle. DeviceAddress Probe01 = {0x28, 0x0F, 0x2A, 0x28, 0x00, 0x00, 0x80, 0x9F}; DeviceAddress Probe02 = {0x28, 0x10, 0xA4, 0x57, 0x04, 0x00, 0x00, 0xA9}; // bmp180 tavaraa Adafruit_BMP085 bmp; void setup () {// I2C -tavarat Wire.pins (0, 2); Lanka.alku (0, 2); // Alusta anturit // dht 11 stuff dht.begin (); // ds18b20 stuff sensors.begin (); // ds18b20 // aseta resoluutio 10 bittiin (voi olla 9-12 bittiä.. pienempi on nopeampi) sensors.setResolution (Probe01, 10); sensors.setResolution (Probe02, 10); // bmp180 tavaraa if (! bmp.begin ()) {// Serial.println ("No BMP180 /BMP085"); // while (1) {}} // OLED -tavarat display.init (); display.flipScreenVertically (); display.setFont (ArialMT_Plain_10); viive (1000); // Yhdistä WiFi -verkkoon WiFi.begin (ssid, salasana); while (WiFi.status ()! = WL_CONNECTED) {delay (500); }} void loop () {// ds18b20stuff ------------------- sensors.requestTemperatures (); // Lähetä komento, jos haluat saada lämpötilat ---- kelluva kosteus = dht.readHumidity (); kellukkeen lämpötila = dht.readTemperature (); if (isnan (kosteus) || isnan (lämpötila)) {paluu; } // bmp-tavarat ------------------------- String t = String (bmp.readTemperature ()); Jono p = Jono (bmp.readPressure ()); // OLED-tavaraa -------------------------- display.clear (); display.drawString (0, 10, p); // bmp paine display.drawString (0, 24, String (temperature_buiten)); // ds18b20 display.drawString (0, 38, String (kosteus)); // dht11 display.näyttö(); // tee TCP -yhteydet WiFiClient -asiakas; const int httpPort = 80; if (! client.connect (isäntä, httpPort)) {return; } Merkkijono url = "/update? Key ="; url += writeAPIKey; url += "& kenttä1 ="; url += Merkkijono (lämpötila); // roost (DHT1) url += "& field2 ="; url += Merkkijono (kosteus); // roost (DHT11) url += "& field3 ="; url += Merkkijono (lämpötila_buiten); // coop -lämpötila (DS18B20 nr 1) url += "& field4 ="; url += Merkkijono (lämpötila_buiten2); // maaperän lämpötila (DS18B29 nr 2) url += "& field5 ="; url += Merkkijono (bmp.readTemperature ()); Ulkolämpötila (BMP180) url += "& field6 ="; url += Merkkijono (bmp.readPressure ()); // Ilmanpaine (BMP180) url += "\ r / n"; // Lähetä pyyntö palvelinasiakkaalle. Print (String ("GET") + url + "HTTP/1.1 / r / n" + "Host:" + host + "\ r / n" + "Connection: close / r / n / r / n "); viive (1000); }

……..

Vaihe 3: Lisää

Tällä hetkellä tämä ohjelma vain valvoo, mutta mikä estää sinua lisäämästä BH1750 I2C -valosensoria mittaamaan, onko ilta tai aamu vai RTC tietää kellonajan ja avaa ja sulje kopion oven automaattisesti PCF8574 I2C I/O -laajennuskortti, tai koska se on jo puutarhassa, lisää PCF8591- tai ADS1115 AD -muunnin maaperän kosteuden mittaamiseksi ja käynnistä pumppu tarvittaessa. Tai ehkä vedenlämmittimen kytkeminen päälle, kun lämpötila laskee alle nollan, jos sille on I2 C -siru, ESP8266 voi todennäköisesti käyttää sitä.

Tärkeä huomautus: Ohjelma sellaisenaan toimii hyvin, mutta jos lisäät muita antureita Rx: ään tai Tx: ään, varsinkin jos teet niistä ulostuloja, nastat voivat yhtäkkiä muistaa, etteivät ne ole oikeastaan GPIO -nastoja. On parempi kertoa nastat alusta alkaen, että ne ovat nyt GPIO -nastoja.

pinMode (1, FUNCTION_3);

pinMode (3, FUNCTION_3);

Suositeltava: