Sisukord:

ESP8266-01 4 tihvti kasutamine: 3 sammu
ESP8266-01 4 tihvti kasutamine: 3 sammu

Video: ESP8266-01 4 tihvti kasutamine: 3 sammu

Video: ESP8266-01 4 tihvti kasutamine: 3 sammu
Video: Брата А4 сожрала SCP ГОРКА ПОЖИРАТЕЛЬ? Нашли коробку в горке и открыли! АлояВера Директор ютуба 2024, November
Anonim
Kasutades ESP8266-01 4 tihvti
Kasutades ESP8266-01 4 tihvti
Kasutades ESP8266-01 4 tihvti
Kasutades ESP8266-01 4 tihvti
Kasutades ESP8266-01 4 tihvti
Kasutades ESP8266-01 4 tihvti

Märkus. See projekt on põhimõtteliselt laiendus varasemale juhendile, mis kasutas ainult 2 tihvti. Piiratud arv (4) GPIO-tihvte ESP8266-01-l võib tunduda takistuseks mis tahes tõsise rakenduse jaoks. Kuid kui kasutate tihvte tark viis on väga hästi võimalik teha palju ainult nende 4 tihvtiga. Mõnes oma hiljutises juhendis olen näidanud DHT11, DS18B20, OLED, RTC ja BMP180 kasutamist koos ESP8266-01-ga. Selles juhendis otsustasin kasutada 4 andurit ja kuvarit, laadides samal ajal omandatud andmed ka Thingspeaki. Tegelikult laiendatakse seda projekti, mis jälgib minu kanakojas ja selle ümbruses valitsevat atmosfääri. Jah, seda võiks nimetada ilmastikuoluks, kuid see on lihtsalt 4 tihvti kasutamise näitlikustamiseks. Sel moel saate hõlpsalt midagi muud teha. Ma kasutan 2 tihvti I2C (BMP180 ja OLED) jaoks 1 tihvti 2 DS18B20 anduri jaoks OneWire'i protokoll 1 tihvt DHT11 jaoks. Kuigi ESP8266-01-l on nüüd kõik tihvtid kasutatud, saan siiski OneWire-protokolli ja/või I2C-protokolli kaudu lisada rohkem andureid (või täiturmehhanisme). Niisiis, mida me vajame: BOM

  • ESP8266-01
  • 2x DS18B20
  • 1x DHT11
  • 1x BMP 180
  • OLED (valikuline)

ja muidugi leivalaud, 3,3 V toiteallikas ja mõned leivaplaadi juhtmed ning Thingspeaki konto

Lihtsalt mõned märkused BOM -i kohta:

  • Ilmselt on projekt mõeldud ESP8266-01 piiratud tihvtide kasutamiseks, kuid kui teil on siiski vaja seda osta, võiksite kaaluda ESP8266-12, millel on rohkem tihvte
  • DHT11A odav universaalne niiskus- ja temperatuuriandur. See ei ole väga täpne, kuid teeb seda. Kui teil on siiski vaja seda osta, võite valida DHT22, mis on väidetavalt täpsem, kuid võite valida ka AMS2321. See on omamoodi DHT22, mis sobib I2C jaoks, vabastades seega teise tihvti
  • BMP180 mõõdab temperatuuri ja õhurõhku. See on BMP085 järeltulija, kuid nüüd on tal ka mõned suvessorid. Seal on (odavam) BMP280, kuid võite valida ka BME280, mis mõõdab temperatuuri, õhurõhku JA niiskust. Nii saate säästa DHT/AMS anduri pealt
  • OLEDI kasutas seda lihtsalt, et saaksin kiiresti näha, kas andureid on loetud, kuid sama hästi võiksite seda kontrollida ka Thingspeaki kaudu. OLED on niigi liiga väike, et kõiki loetud väärtusi printida

1. samm: vooluring

Ringkond
Ringkond

ESP8266 nelja tihvti pole trükkplaadil sellisena märgitud ja enamikul piltidel on selgelt kirjas ainult GPIO0 ja GPIO2. ESP826-01-l on aga GPIO1-tihvt (Tx-tihvt) ja GPIO3-tihvt (Rx-tihvt). I kasutab neid tihvte järgmiselt

  • GPIO0 -> I2C pordi SDA tihvt
  • GPIO1 -> DHT11
  • GPIO2-> I2C-pordi SCL-tihvt
  • GPIO3-> OneWire buss

Kuna minu I2C moodulitel on juba tõmbetakistid, ei lisa ma sinna ühtegi I2C tõmbetakistust. DS18B20 vajab endiselt tõmbetakistit, mille jaoks kasutasin 4k7, kuid see pole tõesti nii kriitiline, ka 10k on hea. DHT11 vajab väidetavalt ka tõmbetakistit, kuid leidsin, et see töötab ka ilma selleta. 4k7 takisti lisamine ei muutnud ühtegi näitu, nii et jätsin selle välja. Paljud 3 -pin DHT11 moodulid on juba 10 k jooditud mooduli külge. Ma just mõistsin, et ma ei joonistanud OLED -i ühendusi. Selle põhjuseks on asjaolu, et ühendasin selle ainult kiireks kontrollimiseks, kuid kui soovite seda lisada, siis on lihtsalt vaja ühendada SDA SDA -ga ja SCL SCL -iga… ja muidugi maapind ja Vcc -tihvtid nende kolleegidega

2. samm: programm

Programm on üsna lihtne. Esiteks seadistab see raamatukogud ja andurid. See ühendab DHT11 tihvtiga 1 (Tx) ja OnWire'i siini DS18B20 jaoks tihvtiga 3 (Rx). Kui soovite OneWire'i siinil kasutada rohkem kui ühte DS18B20 andurit, peate teadma nende "ainulaadset aadressi". Kui teil seda pole, vajate nende aadresside lugemiseks programmi. Tehke seda arduino jaoks lihtsuse huvides. Programmis peate ikkagi esitama oma WiFi volikirjad ja kirjutamisliidese oma Thingspeak Channel jaoks

/*

Väli 1 temp roost (DHT11) väli 2 niiskus (DHT11) väli 3 Coop temperatuuri (DS18B20) väli 4 pinnase temperatuur (DS18B20) väli 5 Õhurõhu (bmp180) väli 6 Välistemperatuur (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 ekraan (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 = "Sinu parool"; const char* host = "api.thingspeak.com"; const char* writeAPIKey = "W367812985"; // kasuta SINU writeApi // DHT11 kraami float temperature_buiten; ujuktemperatuur_buiten2; DHT dht (DHTPIN, DHTTYPE, 15); // DS18b20 kraam OneWire oneWire (ONE_WIRE_BUS); // oneWire eksemplar mis tahes OneWire seadmetega suhtlemiseks DallasTemperature sensorid (& oneWire); // Edastage meie oneWire eksemplari aadress Dallas Temperature'ile. DeviceAddress Probe01 = {0x28, 0x0F, 0x2A, 0x28, 0x00, 0x00, 0x80, 0x9F}; DeviceAddress Probe02 = {0x28, 0x10, 0xA4, 0x57, 0x04, 0x00, 0x00, 0xA9}; // bmp180 kraam Adafruit_BMP085 bmp; void setup () {// I2C kraam Wire.pins (0, 2); Traat.algus (0, 2); // Andurite initsialiseerimine // dht 11 stuff dht.begin (); // ds18b20 kraami andurid.begin (); // ds18b20 // määrake eraldusvõimeks 10 bitti (võib olla 9 kuni 12 bitti.. madalam on kiirem) sensors.setResolution (Probe01, 10); sensors.setResolution (Probe02, 10); // bmp180 värk if (! bmp.begin ()) {// Serial.println ("Nr BMP180 /BMP085"); // while (1) {}} // OLED kraam display.init (); display.flipScreenVertically (); display.setFont (ArialMT_Plain_10); viivitus (1000); // WiFi -võrguga ühenduse loomine WiFi.begin (ssid, parool); while (WiFi.status ()! = WL_CONNECTED) {delay (500); }} void loop () {// ds18b20stuff ------------------- sensors.requestTemperatures (); // Saada käsk, et saada temperatuure temperatuur_buiten = sensorid.getTempC (Probe01); // Temperature_buiten2 = sensor.getTempC (Probe02); // // dht11 värk ---------------- ---- ujuki niiskus = dht.readHumidity (); ujuktemperatuur = dht.readTemperature (); if (isnan (niiskus) || isnan (temperatuur)) {return; } // bmp värk ------------------------- String t = String (bmp.readTemperature ()); String p = string (bmp.readPressure ()); // OLED värk -------------------------- display.clear (); display.drawString (0, 10, p); // bmp surve display.drawString (0, 24, String (temperatuuri_buiten)); // ds18b20 display.drawString (0, 38, string (niiskus))); // dht11 kuva.display (); // teha TCP -ühendused WiFiClient klient; const int httpPort = 80; if (! client.connect (host, httpPort)) {return; } String url = "/update? Key ="; url += writeAPIKey; url += "& väli1 ="; url += String (temperatuur); // roost (DHT1) url += "& field2 ="; url += string (niiskus); // roost (DHT11) url += "& field3 ="; url += String (temperatuur_buiten); // coop temperatuur (DS18B20 nr 1) url += "& field4 ="; url += String (temperatuur_buiten2); // mulla temperatuur (DS18B29 nr 2) url += "& field5 ="; url += String (bmp.readTemperature ()); Välistemperatuur (BMP180) url += "& field6 ="; url += String (bmp.readRõhk ()); // Õhurõhk (BMP180) url += "\ r / n"; // Saada taotlus serveri kliendile.print (String ("GET") + URL + "HTTP/1.1 / r / n" + "Host:" + host + "\ r / n" + "Ühendus: sulge / r / n / r / n "); viivitus (1000); }

……..

3. samm: rohkem

Praegu see programm ainult jälgib, kuid mis takistab teil lisamast BH1750 I2C valgusandurit, et mõõta, kas on õhtu või hommik või RTC, et teada saada kellaaega ning avada ja sulgeda kopa uks automaatselt. PCF8574 I2C I/O laienduskaart või kuna see on juba aias, lisage mulla niiskuse mõõtmiseks PCF8591 või ADS1115 AD muundur ja vajadusel aktiveerige pump. Või võib -olla lülitada vesiküttekeha sisse, kui temperatuur langeb alla nulli, kui selle jaoks on I2 C kiip, saab ESP8266 seda tõenäoliselt kasutada.

Oluline märkus: Programm töötab hästi, kuid kui lisate Rx või Tx -le muid andureid, eriti kui muudate need väljunditeks, võivad tihvtid äkki meelde tuletada, et need pole tegelikult GPIO -nööbid. Parem on nööpnõelad algusest peale öelda, et need on nüüd GPIO -tihvtid. Seda saab teha, lisades seadistusse järgmised avaldused:

pinMode (1, FUNCTION_3);

pinMode (3, FUNCTION_3);

Soovitan: