Mundarija:

ESP8266-01: 3 qadamining 4 ta pinidan foydalanish
ESP8266-01: 3 qadamining 4 ta pinidan foydalanish

Video: ESP8266-01: 3 qadamining 4 ta pinidan foydalanish

Video: ESP8266-01: 3 qadamining 4 ta pinidan foydalanish
Video: IoT: скорость управления двигателем постоянного тока с NodeMCU ESP8266 и модулем L298N 2024, Noyabr
Anonim
ESP8266-01 4 pinidan foydalanish
ESP8266-01 4 pinidan foydalanish
ESP8266-01 ning 4 pinidan foydalanish
ESP8266-01 ning 4 pinidan foydalanish
ESP8266-01 ning 4 pinidan foydalanish
ESP8266-01 ning 4 pinidan foydalanish

Eslatma: Ushbu loyiha, asosan, faqat 2 ta pin ishlatilgan, oldingi ko'rsatmalarni kengaytmasi bo'lib, ESP8266-01 GPIO pinlarining cheklangan soni (4) har qanday jiddiy dastur uchun to'siq bo'lib tuyulishi mumkin. Aqlli usulda, faqat 4 ta pin bilan ko'p ish qilish mumkin, ba'zi so'nggi ko'rsatmalarimda men DHT11, DS18B20, OLED, RTC va ESP8266-01 bilan BMP180 ishlatilishini ko'rsatdim. Bu yo'riqnomada men 4 ta sensor va displeydan foydalanishni, shu bilan birga olingan ma'lumotlarni Thingspeak -ga yuklashni yo'lga qo'ydim. Bu aslida mening tovuqxonam va atrofimdagi atmosferani kuzatish loyihasini kengaytirmoqda. Ha, siz buni ob -havo stantsiyasi deb atashingiz mumkin, lekin bu faqat 4 ta pinni ishlatishni tasvirlash uchun, siz boshqa yo'l bilan osonlikcha boshqa narsani qilishingiz mumkin, men 2 DS18B20 datchiklari uchun I2C (BMP180 va OLED) uchun 1 ta pinni ishlataman. DHT11 uchun OneWire protokoli 1-pin ESP8266-01-da hozirda uning barcha pinlari ishlatilgan bo'lsa-da, men hali ham OneWire protokoli va/yoki I2C protokoli orqali ko'proq sensorlarni (yoki aktuatorlarni) qo'shishim mumkin, shuning uchun bizga nima kerak: BOM

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

va, albatta, non paneli, 3,3 V kuchlanishli PSU va bir nechta non simlari va Thingspeak hisobi

Bank bilan bog'liq ba'zi izohlar:

  • Shubhasiz, loyiha ESP8266-01 cheklangan pimlarini ishlatishga qaratilgan, lekin agar siz hali ham sotib olishingiz kerak bo'lsa, ko'proq pinli ESP8266-12 ni ko'rib chiqishingiz mumkin.
  • DHT11A arzon namlik va harorat sensori. Bu unchalik aniq emas, lekin shunday bo'ladi. Agar siz hali ham sotib olishingiz kerak bo'lsa, siz aniqroq DHT22 ni tanlashingiz mumkin, lekin siz ham AMS2321 ni tanlashingiz mumkin. Bu I2C uchun mos bo'lgan DHT22 turidir, shuning uchun boshqa pinni bo'shatadi
  • BMP180 harorat va havo bosimini o'lchaydi. Bu BMP085 vorisi, lekin hozirda uning o'zi ham ba'zi yordamchilarga ega. BMP280 (arzonroq) bor, lekin siz harorat, havo bosimi va namlikni o'lchaydigan BME280 ni tanlashingiz mumkin. Shunday qilib, siz DHT/AMS sensorini tejashingiz mumkin
  • OLEDI buni ishlatdi, shuning uchun men sensorlar o'qilganligini tezda bilib oldim, lekin siz buni Thingspeak -da tekshirishingiz mumkin. OLED hamma o'qilgan qiymatlarni chop etish uchun juda kichik

1 -qadam: O'chirish davri

O'chirish davri
O'chirish davri

ESP8266 ning 4 ta pimi tenglikni kartasida ko'rsatilmagan va aksariyat tasvirlarda faqat GPIO0 va GPIO2 aniq ko'rsatilgan, biroq ESP826-01da GPIO1 pinli (Tx pinli) va GPIO3 pinli (Rx pinli).i mavjud. bu pinlarni quyidagicha ishlatadi

  • GPIO0 -> I2C portining SDA pimi
  • GPIO1 -> DHT11
  • GPIO2-> I2C portining SCL pin
  • GPIO3-> OneWire avtobusi

Mening I2C modullarim allaqachon tortishish rezistorlariga ega bo'lgani uchun, men u erga hech qanday I2C tortish qarshiligini qo'shmayman. DS18B20 hali ham 4k7 ishlatgan tortishish qarshiligiga muhtoj, lekin bu unchalik muhim emas, 10k ham yaxshi. DHT11, shuningdek, tortish qarshiligiga muhtoj, lekin men u ham ishlamasdan ishlaganini topdim. 4k7 rezistorni qo'shish hech qanday o'qishni o'zgartirmadi, shuning uchun men uni tashlab qo'ydim. 3 pinli DHT11 modullarining ko'pchiligi, 10 k lehimlangan, men hozirgina OLED uchun ulanishlarni chizmaganimni tushundim. Buning sababi shundaki, men uni faqat tezkor tekshirish uchun bog'ladim, lekin agar siz uni qo'shishni xohlasangiz, bu faqat SDA -ni SDA -ga va SCL -ni SCL -ga ulash … va, albatta, er va Vcc pinlarini hamkasblariga ulash.

2 -qadam: Dastur

Dastur juda sodda. Avval u kutubxonalar va datchiklarni o'rnatadi, DHT11 -ni 1 -pin (Tx) ga va DS18B20 uchun OnWire avtobusini 3 -pin (Rx) ga ulaydi. OneWire avtobusida 1 dan ortiq DS18B20 sensoridan foydalanish uchun siz ularning "noyob manzilini" bilishingiz kerak. Agar sizda bunday bo'lmasa, u manzillarni o'qish uchun sizga dastur kerak. Dasturda siz hali ham Thingspeak kanalingiz uchun WiFi ma'lumotlarini, shuningdek API yozishni ta'minlashingiz kerak.

/*

Dala 1 temp roost (DHT11) Dala 2 namlik rost (DHT11) maydon 3 Coop harorati (DS18B20) maydon 4 tuproq harorati (DS18B20) maydon 5 Havo bosimi (bmp180) maydon 6 Tashqi harorat (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 displeyi (0x3c, 0, 2); #depine DHTPIN 1 // GPIO1 (Tx) #deftine DHTTYPE DHT11 #deineFine ONE_WIRE_BUS 3 // GPIO3 = Rx const char* ssid = "YourSSID"; const char* password = "Sizning parolingiz"; const char* host = "api.thingspeak.com"; const char* writeAPIKey = "W367812985"; // WriteApi -ni ishlating // DHT11 narsalar float temperature_buiten; suzuvchi harorat_buiten2; DHT dht (DHTPIN, DHTTYPE, 15); // DS18b20 materiallari OneWire oneWire (ONE_WIRE_BUS); // OneWire namunasi har qanday OneWire qurilmasi bilan aloqa o'rnatish uchun DallasTemperature sensorlar (& oneWire); // Bizning oneWire misolimizning manzilini Dallas haroratiga o'tkazing. DeviceAddress Probe01 = {0x28, 0x0F, 0x2A, 0x28, 0x00, 0x00, 0x80, 0x9F}; DeviceAddress Probe02 = {0x28, 0x10, 0xA4, 0x57, 0x04, 0x00, 0x00, 0xA9}; // bmp180 narsalar Adafruit_BMP085 bmp; void setup () {// I2C stuff Wire.pins (0, 2); Wire.begin (0, 2); // Sensorlarni ishga tushirish // dht 11 ta narsalar dht.begin (); // ds18b20 stuff sensors.begin (); // ds18b20 // piksellar sonini 10 bitga o'rnating (9 dan 12 bitgacha bo'lishi mumkin.. pastroq tezroq) sensorlar.setResolution (Probe01, 10); sensorlar.setResolution (Probe02, 10); // bmp180 narsalar, agar (! bmp.begin ()) {// Serial.println ("BMP180 /BMP085 yo'q"); // while (1) {}} // OLED materiallari display.init (); display.flipScreenVertically (); display.setFont (ArialMT_Plain_10); kechikish (1000); // WiFi tarmog'iga ulanish WiFi.begin (ssid, parol); while (WiFi.status ()! = WL_CONNECTED) {kechiktirish (500); }} void loop () {// ds18b20stuff ------------------- sensorlar.requestTemperatures (); // haroratni olish uchun buyruq yuboring temperature_buiten = sensors.getTempC (Probe01); // temperature_buiten2 = sensorlar.getTempC (Probe02); // // dht11 narsalar ---------------- ---- suzuvchi namlik = dht.readHumidity (); float harorati = dht.readTemperature (); agar (isnan (namlik) || isnan (harorat)) {qaytish; } // bmp narsalar ------------------------- String t = String (bmp.readTemperature ()); String p = String (bmp.readPressure ()); // OLED materiallari -------------------------- display.clear (); display.drawString (0, 10, p); // bmp bosimini ko'rsatish.drawString (0, 24, String (harorat_buiten)); // ds18b20 ko'rsatish.drawString (0, 38, String (namlik));. ekran (); // WiFiClient mijoziga TCP ulanishini o'rnatish; const int httpPort = 80; if (! client.connect (host, httpPort)) {return; } String url = "/update? Key ="; url += yozishAPIKey; url += "& maydon1 ="; url += String (harorat); // roost (DHT1) url += "& field2 ="; url += String (namlik); // roost (DHT11) url += "& field3 ="; url += String (temperatura_buiten); // xona harorati (DS18B20 nr 1) url += "& field4 ="; url += String (harorat_buiten2); // tuproq harorati (DS18B29 nr 2) url += "& field5 ="; url += String (bmp.readTemperature ()); Tashqi harorat (BMP180) url += "& field6 ="; url += String (bmp.readPressure ()); // Havo bosimi (BMP180) url += "\ r / n"; // Client.print serveriga so'rov yuboring (String ("Get") + url + "HTTP/1.1 / r / n" + "Xost:" + host + "\ r / n" + "Ulanish: yopish / r / n / r / n "); kechikish (1000); }

……..

3 -qadam: Ko'proq

Hozirgi vaqtda bu dastur faqat kuzatadi, lekin sizni BH1750 I2C yorug'lik sezgichini qo'shishga nima to'sqinlik qiladi: kech yoki ertalabmi yoki RTC kunning vaqtini biladi va uning yordamida eshikni avtomatik ravishda ochadi va yopadi. PCF8574 I2C I/U kengaytirish kartasi yoki u allaqachon bog'da bo'lgani kabi, tuproq namligini o'lchash va kerak bo'lganda nasosni yoqish uchun PCF8591 yoki ADS1115 AD konvertorini qo'shing. Yoki harorat noldan pastga tushganda, suv havzasi isitgichini yoqish mumkin, agar I2 C chipi bo'lsa, ESP8266 uni ishlatishi mumkin.

Muhim eslatma: Dastur avvalgidek yaxshi ishlaydi, lekin agar siz Rx yoki Tx -ga boshqa datchiklarni qo'shsangiz, ayniqsa ularni chiqishlarga aylantirsangiz, pinlar kutilmaganda ular GPIO pinlari emasligini eslab qolishi mumkin. Ilovalarni GPIO pinlari ekanligini boshidanoq aytish yaxshiroqdir, buni quyidagi sozlamalarni o'rnatish orqali amalga oshiradi:

pinMod (1, FUNCTION_3);

pinMode (3, FUNCTION_3);

Tavsiya: