Sisällysluettelo:
Video: ESP8266-01: n 4 nastan käyttäminen: 3 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:01
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
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:
ESP8266: n käyttäminen verkkopalvelimena: 5 vaihetta
ESP8266: n käyttäminen verkkopalvelimena: Hei, Käytän tällä hetkellä Windows 10: tä, NodeMCU 1.0: ta ja tässä on luettelo käyttämistäni ohjelmistoista ja asennusoppaista, joita seurasin: Arduino IDE Lisälevyt esp8266: lle SpiffLibrary käytetty: WebsocketI käytin NodeMCU: ta palvelimena palvella HTML -tiedostoa hullu
CS -nastan lisääminen ST7789 1,3 tuuman IPS -nestekidenäyttöön: 5 vaihetta
CS -nastan lisääminen ST7789 1,3 tuuman IPS -nestekidenäyttöön: törmäsin äskettäin halpaan 1,3 tuuman IPS -TFT -näyttöön. Siinä on erittäin korkea resoluutio, 240 x 240 pikseliä ja erittäin suuri pikselitiheys pienen koon vuoksi. Se on IPS -paneeli, IPS lyhenne sanoista InPlane Switching. Nämä ovat huippuluokan LCD -näytön tyyppejä
MQTT: n käyttäminen Raspberry Pi: n ja ESP8266/sonoffin kanssa: 4 vaihetta
MQTT: n käyttäminen Raspberry Pi: n ja ESP8266/sonoffin kanssa: Hei kaikki! Tänään aion näyttää sinulle, miten voit määrittää vadelmapi- ja ESP8266 -pohjaisen sonoff -wifi -relekytkimen ohjaamaan kodinkoneitasi kaikkialta maailmasta. tästä ohjeesta, jos olet noudattanut huolellisesti ohjeitani
MQTT: n käyttäminen Raspberry Pi: n ja ESP8266: n kanssa: 8 vaihetta (kuvilla)
MQTT: n käyttäminen Raspberry Pi: n ja ESP8266: n kanssa: Tässä opetusohjelmassa selitän, mikä on MQTT -protokolla ja miten sitä käytetään laitteiden väliseen kommunikointiin. asiakasjärjestelmä, jossa ESP8266 -moduuli lähettää viestin
Wemos ESP-Wroom-02 D1 Mini WiFi -moduulin ESP8266 + 18650 käyttäminen Blynkin avulla: 10 vaihetta
Wemos ESP-Wroom-02 D1 Mini WiFi -moduulin ESP8266 + 18650 käyttäminen Blynk-tekniikan avulla: Erittely: Yhteensopiva nodemcu 18650 -latausjärjestelmän integroinnin kanssa Merkkivaloa (vihreä tarkoittaa täyden punaisen lataamista) voidaan käyttää latauksen aikana liitintä voidaan käyttää lepotilassa · 1 lisää