Բովանդակություն:

Օգտագործելով ESP8266-01: 3 քայլերի 4 կապում
Օգտագործելով ESP8266-01: 3 քայլերի 4 կապում

Video: Օգտագործելով ESP8266-01: 3 քայլերի 4 կապում

Video: Օգտագործելով ESP8266-01: 3 քայլերի 4 կապում
Video: Ինչպես կատարել 4-ալիք ESP8266 ESP01 Wi-Fi ռելեներ | ESP01 Տնային ավտոմատացում | Remotexy | Խաբել 2024, Նոյեմբեր
Anonim
Օգտագործելով ESP8266-01- ի 4 կապում
Օգտագործելով ESP8266-01- ի 4 կապում
Օգտագործելով ESP8266-01- ի 4 կապում
Օգտագործելով ESP8266-01- ի 4 կապում
Օգտագործելով ESP8266-01- ի 4 կապում
Օգտագործելով ESP8266-01- ի 4 կապում

Նշում. Այս նախագիծը հիմնականում նախկին հրահանգի ընդլայնումն է, որն օգտագործել է ընդամենը 2 կապ: ESP8266-01- ի GPIO կապանքների սահմանափակ թիվը (4) կարող է խոչընդոտ թվալ ցանկացած լուրջ կիրառման համար: Այնուամենայնիվ, եթե մեկը օգտագործում է կապում խելացի կերպով շատ լավ հնարավոր է շատ բան անել միայն այդ 4 կապում: Իմ վերջին հրահանգներից մի քանիսում ես ESP8266-01- ով ցույց եմ տվել DHT11- ի, DS18B20- ի, OLED- ի, RTC- ի և BMP180- ի օգտագործումը: Այս ձեռնարկում ես նպատակադրվեցի օգտագործել 4 տվիչ և դիսփլեյ ՝ միաժամանակ ներբեռնելով ձեռք բերված տվյալները Thingspeak- ում: Այն, ըստ էության, ընդլայնվում է մթնոլորտի մոնիտորինգի նախագծով ՝ իմ հավի համագործարանում և նրա շրջակայքում: Այո, դուք կարող եք սա անվանել եղանակի սառնամանիք, բայց դա պարզապես ցույց տալու համար, թե ինչպես են 4 կապում օգտագործվում, կարող եք հեշտությամբ այլ բան անել այս կերպ: I2C (BMP180 և OLED) 2 կապի համար կօգտագործեմ 2 կապ 2 DS18B20 սենսորների միջոցով Թեև ESP8266-01- ն այժմ օգտագործում է իր բոլոր կապերը, ես դեռ կարող եմ ավելացնել ավելի շատ տվիչներ (կամ գործարկիչներ) OneWire արձանագրության և/կամ I2C արձանագրության միջոցով: Այսպիսով, մեզ ինչ է պետք. BOM

  • ESP8266-01
  • 2x DS18B20
  • 1x DHT11
  • 1x BMP180
  • OLED (ըստ ցանկության)

և, իհարկե, տախտակ, 3.3 Վ լարման հոսանք և որոշ տախտակի լարեր և Thingspeak հաշիվ

Ընդամենը մի քանի նկատառում BOM- ի վերաբերյալ.

  • ESP8266-01 Ակնհայտ է, որ նախագիծը վերաբերում է ESP8266-01- ի սահմանափակ կապերի օգտագործմանը, բայց եթե դեռ անհրաժեշտ է գնել մեկը, կարող եք հաշվի առնել ESP8266-12- ը, որն ունի ավելի շատ կապում
  • DHT11A էժան բոլոր նշանակության խոնավության և ջերմաստիճանի ցուցիչ: Դա չափազանց ճշգրիտ չէ, բայց դա անելու է: Եթե դեռ անհրաժեշտ է գնել մեկը, կարող եք ընտրել DHT22- ը, որը ենթադրաբար ավելի ճշգրիտ է, բայց կարող եք նաև ընտրել AMS2321- ը: Դա DHT22- ի մի տեսակ է, որը հարմար է I2C- ի համար, դրանով իսկ ազատելով մեկ այլ քորոց
  • BMP180 չափում է ջերմաստիճանը և ճնշումը: Այն BMP085- ի իրավահաջորդն է, բայց այժմ այն նաև ունի որոշ սուլիչներ ինքնին: Կա (ավելի էժան) BMP280, բայց կարող եք նաև ընտրել BME280- ը, որը չափում է ջերմաստիճանը, օդային ճնշումը և խոնավությունը: Այդ կերպ Դուք կարող եք խնայել DHT/AMS սենսորի վրա
  • OLEDI- ն հենց դա օգտագործեց, որպեսզի ես արագ տեսնեմ ՝ սենսորները կարդացվա՞ծ են, բայց դու նույնքան լավ կարող ես այն ստուգել Thingspeak- ում: OLED- ն ամեն դեպքում չափազանց փոքր է `կարդալու բոլոր ընթերցված արժեքները տպելու համար

Քայլ 1: Շղթան

The Circuit
The Circuit

ESP8266- ի 4 կապում նշված չեն որպես PCB, և պատկերների մեծ մասը միայն հստակորեն նշում է GPIO0- ը և GPIO2- ը: Այնուամենայնիվ, ESP826-01- ն ունի aa GPIO1 կապ (Tx քորոց) և GPIO3 (Rx քորոց) pin: i կօգտագործի այդ կապերը հետևյալ կերպ

  • GPIO0 -> I2C պորտի SDA քորոց
  • GPIO1 -> DHT11
  • GPIO2-> I2C պորտի SCL քորոց
  • GPIO3-> OneWire ավտոբուս

Քանի որ իմ I2C մոդուլներն արդեն ունեն ձգման դիմադրիչներ, ես այնտեղ I2C քաշող դիմադրողներ չեմ ավելացնի: DS18B20- ին դեռ պետք է քաշման դիմադրություն, որի համար ես օգտագործել եմ 4k7, բայց դա իրոք այնքան էլ կարևոր չէ, 10k- ն նույնպես լավ է: DHT11- ը ենթադրաբար նաև կարիք ունի ձգվող դիմադրության, բայց ես գտա, որ այն աշխատում է նաև առանց դրա: 4k7 ռեզիստորի ավելացումը չի փոխեց որևէ ընթերցում, այնպես որ ես այն թողեցի: 3 -փին DHT11 մոդուլներից շատերն արդեն ունեն 10 կ մոդուլ, որը միացված է մոդուլին: Ես պարզապես հասկացա, որ ես չեմ նկարել OLED- ի միացումները: Դա պայմանավորված է նրանով, որ ես այն միացրել եմ միայն արագ ստուգման համար, բայց եթե ցանկանում եք ավելացնել այն, պարզապես SDA- ն SDA- ին և SCL- ին SCL- ին միացնելն է… և, իհարկե, գետնին և Vcc կապում իրենց գործընկերներին

Քայլ 2: րագիրը

Quiteրագիրը բավականին պարզ է: Սկզբում այն ստեղծում է գրադարաններն ու սենսորները: Այն DHT11- ին ամրացնում է 1 (Tx), իսկ OnWire ավտոբուսը ՝ DS18B20- ի համար 3 -ին (Rx): OneWire ավտոբուսում 1 -ից ավելի DS18B20 սենսոր օգտագործելու համար անհրաժեշտ է իմանալ նրանց «յուրահատուկ հասցեն»: Եթե դա չունեք, ապա ձեզ հարկավոր է ծրագիր ՝ այդ հասցեները կարդալու համար: Հեշտությամբ արեք դա arduino- ով: programրագրում դեռ պետք է տրամադրեք ձեր WiFi հավատարմագրերը, ինչպես նաև Thingspeak Channel- ի համար գրելու API- ն

/*

Դաշտ 1 ջերմաստիճան (DHT11) դաշտ 2 խոնավություն (DHT11) դաշտ 3 Համագործակցության ջերմաստիճան (DS18B20) դաշտ 4 հողի ջերմաստիճան (DS18B20) դաշտ 5 Օդային ճնշում (bmp180) դաշտ 6 Արտաքին ջերմաստիճան (bmp180) * */ #ներառել #ներառել // https://www.pjrc.com/teensy/td_libs_OneWire.html #include // https://milesburton.com/Main_Page?title=Dallas_Tem… #include #include #include "SSD1306.h" SSD1306 ցուցադրում (0x3c, 0x3c, 0, 2); #սահմանել DHTPIN 1 // GPIO1 (Tx) #սահմանել DHTTYPE DHT11 #սահմանել ONE_WIRE_BUS 3 // GPIO3 = Rx const char* ssid = "YourSSID"; const char* գաղտնաբառ = "YourPassword"; const char* host = "api.thingspeak.com"; const char* writeAPIKey = "W367812985"; // օգտագործել ՁԵՐ writeApi // DHT11 իրերը float temperature_buiten; բոց ջերմաստիճան_բուիտեն 2; DHT dht (DHTPIN, DHTTYPE, 15); // DS18b20 իրեր OneWire oneWire (ONE_WIRE_BUS); // OneWire օրինակ ՝ ցանկացած OneWire սարքի հետ DallasTemperature sensors (& oneWire); // Մեր OneWire օրինակի հասցեն փոխանցեք Dallas Temperature- ին: DeviceAddress Probe01 = {0x28, 0x0F, 0x2A, 0x28, 0x00, 0x00, 0x80, 0x9F}; DeviceAddress Probe02 = {0x28, 0x10, 0xA4, 0x57, 0x04, 0x00, 0x00, 0xA9}; // bmp180 իրեր Adafruit_BMP085 bmp; void setup () {// I2C իրեր Wire.pins (0, 2); Wire.begin (0, 2); // Նախնականացնել սենսորները // dht 11 իրեր dht.begin (); // ds18b20 stuff sensors.begin (); // ds18b20 // սահմանեք լուծաչափը 10 բիթ (Կարող է լինել 9 -ից 12 բիթ.. ցածրը ավելի արագ է) sensors.setResolution (Probe01, 10); sensors.setResolution (Probe02, 10); // bmp180 իրեր, եթե (! bmp.begin ()) {// Serial.println ("No BMP180 /BMP085"); // while (1) {}} // OLED իրեր display.init (); display.flipScreenVertically (); display.setFont (ArialMT_Plain_10); ուշացում (1000); // Միացեք WiFi ցանցին WiFi.begin (ssid, գաղտնաբառ); while (WiFi.status ()! = WL_CONNECTED) {ուշացում (500); }} void loop () {// ds18b20stuff ------------------- sensors.requestTemperatures (); // Ուղարկեք հրամանը ՝ ջերմաստիճան ստանալու համար temperature_buiten = sensors.getTempC (Probe01); // temperature_buiten2 = sensors.getTempC (Probe02); // // dht11 իրեր ---------------- ---- բոց խոնավություն = dht.readHumidity (); բոցի ջերմաստիճան = dht.readTemperature (); եթե (isnan (խոնավություն) || isnan (ջերմաստիճան)) {վերադարձ; } // bmp իրեր ------------------------- String t = String (bmp.readTemperature ()); Տող p = լարային (bmp.readPressure ()); // OLED նյութեր -------------------------- ցուցադրում: հստակ (); display.drawString (0, 10, p); // bmp ճնշման ցուցիչ.drawString (0, 24, լարային (temperature_buiten)); // ds18b20 display.drawString (0, 38, լարային (խոնավություն)); // dht11 ցուցադրում. ցուցադրել (); // կատարել TCP կապեր WiFiClient հաճախորդ; const int httpPort = 80; if (! client.connect (հյուրընկալող, httpPort)) {վերադարձ; } String url = "/update? Key ="; url += գրելAPIKey; url += "& դաշտ 1 ="; url += լարային (ջերմաստիճան); // roost (DHT1) url += "& field2 ="; url += տող (խոնավություն); // roost (DHT11) url += "& field3 ="; url += լարային (temperature_buiten); // համագործ ջերմաստիճան (DS18B20 nr 1) url += "& field4 ="; url += լարային (temperature_buiten2); // հողի ջերմաստիճան (DS18B29 nr 2) url += "& field5 ="; url += լարային (bmp.readTemperature ()); արտաքին ջերմաստիճան (BMP180) url += "& դաշտ 6 ="; url += Լար (bmp.readPressure ()); // Օդային ճնշում (BMP180) url += "\ r / n"; // Հարցում ուղարկեք սերվերի client.print (տող ("GET") + url + "HTTP/1.1 / r / n" + "Host:" + host + "\ r / n" + "Connection: close / r / n / r / n "); ուշացում (1000); }

……..

Քայլ 3: Ավելին

Ներկայումս այս ծրագիրը միայն վերահսկում է, բայց ինչն է խանգարում ձեզ ավելացնել BH1750 I2C լուսային սենսոր `չափելու համար, եթե երեկո է կամ առավոտ, կամ RTC ՝ օրվա ժամը իմանալու և ավտոմատ կերպով բացելու և փակելու համագործակարի դուռը: PCF8574 I2C I/O ընդլայնման քարտ, կամ ինչպես արդեն այգում է, ավելացրեք PCF8591 կամ ADS1115 AD փոխարկիչ `հողի խոնավությունը չափելու և անհրաժեշտության դեպքում պոմպը ակտիվացնելու համար: Կամ գուցե միացնել ջրատաքացուցիչը, երբ ջերմաստիճանը զրոյից ցածր է, եթե դրա համար կա I2 C չիպ, ESP8266- ը, հավանաբար, կարող է օգտագործել այն:

Այնուամենայնիվ, կարևոր նշում. Asրագիրը լավ է աշխատում, բայց եթե Rx- ին կամ Tx- ին ավելացնեք այլ տվիչներ, հատկապես եթե դրանք դարձնեք ելքեր, ապա կապումներն անսպասելիորեն կհիշեն, որ դրանք իրականում GPIO- ի կապիչներ չեն: Ավելի լավ է սկզբից ասեք կապումներին, որ դրանք այժմ GPIO կապում են: Մեկը դա անում է ՝ տեղադրելով հետևյալ հայտարարությունները.

pinMode (1, FUNCTION_3);

pinMode (3, FUNCTION_3);

Խորհուրդ ենք տալիս: