ዝርዝር ሁኔታ:

የ ESP8266-01: 3 ደረጃዎች 4 ደረጃዎችን በመጠቀም
የ ESP8266-01: 3 ደረጃዎች 4 ደረጃዎችን በመጠቀም

ቪዲዮ: የ ESP8266-01: 3 ደረጃዎች 4 ደረጃዎችን በመጠቀም

ቪዲዮ: የ ESP8266-01: 3 ደረጃዎች 4 ደረጃዎችን በመጠቀም
ቪዲዮ: STUDY LIKE HERO | ጎበዝ ተማሪዎች የማይናገሩት ሚስጥር | Hakim Insight 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 ፒኖች ብቻ ብዙ መሥራት በጣም ብልጥ በሆነ መንገድ ነው። በአንዳንድ የቅርብ ጊዜ አስተማሪዎቼ ውስጥ ፣ የ DHT11 DS18B20 ፣ OLED ፣ RTC እና BMP180 ን ከ ESP8266-01 ጋር አሳይቻለሁ። በዚህ መመሪያ ውስጥ እኔ የ 4 ዳሳሾችን እና ማሳያዎችን ለመጠቀም ተነሳሁ ፣ እንዲሁም የተገኘውን መረጃ ወደ Thingspeak እሰቅላለሁ። በእውነቱ በዶሮ ቤቴ ውስጥ እና በዙሪያው ያለውን ከባቢ አየር የመከታተል ፕሮጀክት ላይ እየሰፋ ነው። አዎ ፣ ይህንን የአየር ሁኔታ ሁኔታ ብለው ሊጠሩት ይችላሉ ፣ ግን የ 4 ፒኖችን አጠቃቀም በምሳሌ ለማስረዳት ብቻ ነው ፣ በቀላሉ በዚህ መንገድ ሌላ ነገር ማድረግ ይችላሉ 2 ፒኖችን ለ I2C (BMP180 እና OLED) 1 ፒን ለ 2 DS18B20 ዳሳሾች በ ለ DHT11 የ OneWire ፕሮቶኮል 1 ፒን ምንም እንኳን ESP8266-01 አሁን ሁሉም ፒኖቹ ቢጠቀሙም ፣ አሁንም በ OneWire ፕሮቶኮል እና/ወይም በ I2C ፕሮቶኮል በኩል ተጨማሪ ዳሳሾችን (ወይም አንቀሳቃሾችን) ማከል እችላለሁ። ስለዚህ ፣ ምን እንፈልጋለን BOM

  • ESP8266-01
  • 2x DS18B20
  • 1x DHT11
  • 1x BMP180
  • OLED (አማራጭ)

እና በእርግጥ የዳቦ ሰሌዳ ፣ 3.3 ቮ PSU እና አንዳንድ የዳቦቦርድ ሽቦዎች እና የነገሮች ሁኔታ

ስለ BOM ጥቂት አስተያየቶች ብቻ-

  • ESP8266-01 በእርግጥ ፕሮጀክቱ የ ESP8266-01 ውስን ፒኖችን ስለመጠቀም ነው ፣ ግን አሁንም መግዛት ካስፈለገዎት ብዙ ፒን ያለው ESP8266-12 ግምት ውስጥ ማስገባት ይችላሉ።
  • DHT11A ርካሽ ሁሉንም ዓላማ እርጥበት እና የሙቀት ዳሳሽ። እጅግ በጣም ትክክለኛ አይደለም ግን ያደርገዋል። አሁንም አንድ መግዛት ከፈለጉ ፣ የበለጠ ትክክል ነው ተብሎ የሚታሰውን DHT22 ን መምረጥ ይችላሉ ፣ ግን እርስዎም ለ AMS2321 መምረጥ ይችላሉ። ያ ለ I2C ተስማሚ የሆነ የ DHT22 ዓይነት ነው ፣ ስለሆነም ሌላ ፒን ነፃ ያደርጋል
  • BMP180 የሙቀት እና የአየር ግፊት ይለካል። እሱ የ BMP085 ተተኪ ነው ፣ ግን እሱ ራሱ አሁን አንዳንድ ደጋፊዎች አሉት። BMP280 (ርካሽ) አለ ፣ ግን እርስዎም የሙቀት መጠንን ፣ አየርን እና እርጥበትን የሚለካውን BME280 ን መምረጥ ይችላሉ። በዚያ መንገድ በ DHT/AMS ዳሳሽ ላይ ማስቀመጥ ይችላሉ
  • ዳሳሾቹ እንደተነበቡ በፍጥነት ለማየት OLEDI ያንን ብቻ ተጠቅሟል ፣ ግን እርስዎ እንዲሁ በ ‹ነገሮችpeak› ላይ ማረጋገጥ ይችላሉ። ሁሉንም የተነበቡ እሴቶችን ለማተም OLED በጣም ትንሽ ነው

ደረጃ 1 ወረዳው

ወረዳው
ወረዳው

የ ESP8266 4 ፒኖች በፒሲቢው ላይ እንደዚህ አልተገለፁም ፣ እና አብዛኛዎቹ ምስሎች GPIO0 ን እና GPIO2 ን ብቻ ይገልጻሉ። ሆኖም ግን ESP826-01 aa GPIO1 ፒን (የቲክስ ፒን) እና GPIO3 ፒን (የ Rx ፒን) አለው። እነዚያን ፒኖች እንደሚከተለው ይጠቀማሉ

  • GPIO0 -> የ I2C ወደብ SDA ፒን
  • GPIO1 -> DHT11
  • GPIO2-> የ I2C ወደብ SCL ፒን
  • GPIO3-> OneWire አውቶቡስ

የእኔ I2C ሞጁሎች ቀድሞውኑ ተቃዋሚዎችን ስለሚነሱ ፣ እኔ ማንኛውንም የ I2C pullup resistors እዚያ አልጨምርም። DS18B20 አሁንም 4k7 ን የተጠቀምኩበትን የመሳብ አቅም ይፈልጋል ፣ ግን በእውነቱ ያን ያህል ወሳኝ አይደለም ፣ 10 ኪ እንዲሁ ጥሩ ነው። DHT11 እንዲሁ የሚጎትት ተከላካይ ይፈልጋል ግን ያለ እሱ እንዲሁ እንዲሠራ አገኘሁት። 4 ኪ 7 ተቃዋሚ ማከል ማንኛውንም ንባቦችን አልቀየረም ፣ ስለዚህ ተውኩት። ብዙዎቹ የ 3 ፒን DHT11 ሞጁሎች ፣ ቀድሞውንም በሞጁሉ ላይ 10 ኪ ተሽጦ ነበር። እኔ ለኦሌድ ግንኙነቶችን እንዳልሳልኩ ተገነዘብኩ። ያ ለፈጣን ቼክ ብቻ ስለያዝኩት ነው ፣ ግን እሱን ማከል ከፈለጉ ፣ ኤስዲኤን ከ SDA እና SCL ከ SCL ጋር ማገናኘት ብቻ ነው…

ደረጃ 2 - ፕሮግራሙ

ፕሮግራሙ በጣም ቀጥተኛ ነው። በመጀመሪያ ቤተመጽሐፍት እና ዳሳሾችን ያዘጋጃል። እሱ DHT11 ን 1 (Tx) እና OnWire አውቶቡስን ለ DS18B20 3 (Rx) ለመሰካት ያያይዘዋል። በ OneWire አውቶቡስ ላይ ከ 1 DS18B20 ዳሳሽ ለመጠቀም ‹የእነሱን ልዩ አድራሻ› ማወቅ አለብዎት። ያ ከሌለዎት እነዚያን አድራሻዎች ለማንበብ ፕሮግራም ያስፈልግዎታል። ይህንን ለማድረግ በ arduino ላይ ያድርጉ። በፕሮግራሙ ውስጥ አሁንም የ WiFi ምስክርነቶችዎን እንዲሁም ለ ‹Thingspeak› ሰርጥዎ የመፃፍ ኤፒአይ ማቅረብ አለብዎት።

/*

የመስክ 1 የአየር ሙቀት መጠን (DHT11) የመስክ 2 የእርጥበት ማስቀመጫ (DHT11) መስክ 3 Coop ሙቀት (DS18B20) መስክ 4 የአፈር ሙቀት (DS18B20) መስክ 5 የአየር ግፊት (bmp180) መስክ 6 ከውጭ ሙቀት (bmp180) * */ #ያካትቱ #ያካትቱ // https://www.pjrc.com/teensy/td_libs_OneWire.html #ይካተቱ // https://milesburton.com/Main_Page?title=Dallas_Tem…, 2); #ጥራት DHTPIN 1 // GPIO1 (Tx) #define DHTTYPE DHT11 #define ONE_WIRE_BUS 3 // GPIO3 = Rx const char* ssid = "YourSSID"; const char* password = "የእርስዎ የይለፍ ቃል"; const char* host = "api.thingspeak.com"; const char* writeAPIKey = "W367812985"; // የእርስዎን WriteApi // DHT11 ነገሮች ተንሳፋፊ የሙቀት_ቡይተን ይጠቀሙ ፣ ተንሳፋፊ ሙቀት_buiten2; DHT dht (DHTPIN ፣ DHTTYPE ፣ 15); // DS18b20 ነገሮች OneWire oneWire (ONE_WIRE_BUS); // ከማንኛውም የ OneWire መሣሪያዎች የዳላስ የአየር ሙቀት ዳሳሾች (& oneWire) ጋር ለመገናኘት/አንድ/ዋ ምሳሌ ፣ // የእኛን የአንድ ምሳሌ ምሳሌ አድራሻ ወደ ዳላስ ሙቀት ያስተላልፉ። DeviceAddress Probe01 = {0x28, 0x0F, 0x2A, 0x28, 0x00, 0x00, 0x80, 0x9F}; DeviceAddress Probe02 = {0x28, 0x10, 0xA4, 0x57, 0x04, 0x00, 0x00, 0xA9}; // bmp180 ነገሮች Adafruit_BMP085 bmp; ባዶነት ማዋቀር () {// I2C ነገሮች Wire.pins (0 ፣ 2); Wire.begin (0, 2); // ዳሳሾችን ያስጀምሩ // dht 11 ነገሮች dht.begin (); // ds18b20 ነገሮች sensors.begin (); // ds18b20 // ውሳኔውን ወደ 10 ቢት ያዘጋጁ (ከ 9 እስከ 12 ቢት ሊሆን ይችላል.. ዝቅተኛው ፈጣን ነው) ዳሳሾች። sensors.setResolution (Probe02, 10); // bmp180 ነገሮች ((bmp.begin ()) {// Serial.println ("ምንም BMP180 /BMP085"); // እያለ (1) {}} // የ OLED ነገሮች display.init (); display.flipScreenVertically (); display.setFont (ArialMT_Plain_10); መዘግየት (1000); // ከ WiFi አውታረ መረብ ጋር ይገናኙ WiFi.begin (ssid ፣ የይለፍ ቃል); ሳለ (WiFi.status ()! = WL_CONNECTED) {መዘግየት (500); }} ባዶነት loop () {// ds18b20stuff ------------------- sensors.requestTemperatures (); // የሙቀት መጠንን ለማግኘት ትዕዛዙን ይላኩ የሙቀት_buiten = sensors.getTempC (Probe01) ፤ // temperature_buiten2 = sensors.getTempC (Probe02) ፤ // // dht11 ነገሮች ---------------- ---- ተንሳፋፊ እርጥበት = dht.read እርጥበት (); ተንሳፋፊ ሙቀት = dht.readTemperature (); ከሆነ (እስናን (እርጥበት) || ኢስናን (የሙቀት መጠን)) {ተመለስ; } // bmp ነገሮች ------------------------- ሕብረቁምፊ t = ሕብረቁምፊ (bmp.readTemperature ()); ሕብረቁምፊ p = ሕብረቁምፊ (bmp.readPressure ()); // የ OLED ነገሮች -------------------------- ማሳያ። ግልጽ (); display.drawString (0 ፣ 10 ፣ ገጽ) ፤ // የ bmp ግፊት ማሳያ።.አሳዩ (); // የ TCP ግንኙነቶችን WiFiClient ደንበኛ ያድርጉ ፣ const int httpPort = 80; ከሆነ (! client.connect (አስተናጋጅ ፣ httpPort)) {መመለስ ፤ } ሕብረቁምፊ url = "/update? Key ="; url += writeAPIKey; url += "& field1 ="; url += ሕብረቁምፊ (የሙቀት መጠን); // roost (DHT1) url += "& field2 ="; url += ሕብረቁምፊ (እርጥበት); // roost (DHT11) url += "& field3 ="; url += ሕብረቁምፊ (temperature_buiten); // coop ሙቀት (DS18B20 nr 1) url += "& field4 ="; url += ሕብረቁምፊ (ሙቀት_buiten2); // የአፈር ሙቀት (DS18B29 nr 2) url += "& field5 ="; url += ሕብረቁምፊ (bmp.readTemperature ()); የውጭ ሙቀት (BMP180) url += "& field6 ="; url += ሕብረቁምፊ (bmp.readPressure ()); // የአየር ግፊት (BMP180) url += "\ r / n"; // ጥያቄን ለአገልጋይ ደንበኛ ይላኩ። ህትመት (ሕብረቁምፊ ("GET") + url + "HTTP/1.1 / r / n" + "Host:" + host + "\ r / n" + "Connection: close / r / n / r / n "); መዘግየት (1000); }

……..

ደረጃ 3: ተጨማሪ

በአሁኑ ጊዜ ይህ ፕሮግራም ብቻ ይቆጣጠራል ፣ ግን ምሽት ወይም ማለዳ ከሆነ ወይም የቀኑን ሰዓት ለማወቅ RTC ከሆነ ለመለካት የ BH1750 I2C ብርሃን አነፍናፊን ከማከል ምን ይከለክላል? PCF8574 I2C I/O የማስፋፊያ ካርድ ፣ ወይም በአትክልቱ ውስጥ እንዳለ ፣ የአፈርን እርጥበት ለመለካት እና አስፈላጊ ሆኖ ሲገኝ ፓም activን ለማግበር PCF8591 ወይም ADS1115 AD መለወጫ ይጨምሩ። ወይም ምናልባት የሙቀት መጠኑ ከዜሮ በታች ሲወድቅ የውሃ ተፋሰስ ማሞቂያውን ማብራት ምናልባት ለእሱ I2 ሲ ቺፕ ካለ ፣ ESP8266 ምናልባት ሊጠቀምበት ይችላል።

ምንም እንኳን አስፈላጊ ማስታወሻ - ፕሮግራሙ በጥሩ ሁኔታ ይሠራል ፣ ግን ሌሎች ዳሳሾችን ወደ Rx ወይም Tx ካከሉ ፣ በተለይም ለውጤቶች ካደረጓቸው ፣ ፒኖቹ በእውነቱ የጂፒኦ ፒን እንዳልሆኑ ያስታውሱ ይሆናል። ፒፒኖቹን አሁን ከጂፒኦ ፒኖች እንደሆኑ ቢነግራቸው የተሻለ ነው። አንደኛው የሚከተሉትን መግለጫዎች በማዋቀር ውስጥ በማስቀመጥ ያደርገዋል።

pinMode (1 ፣ FUNCTION_3);

pinMode (3 ፣ FUNCTION_3);

የሚመከር: