Мазмуну:

ESP8266-01 4 пиндерин колдонуу: 3 кадам
ESP8266-01 4 пиндерин колдонуу: 3 кадам

Video: ESP8266-01 4 пиндерин колдонуу: 3 кадам

Video: ESP8266-01 4 пиндерин колдонуу: 3 кадам
Video: Как сделать 4-канальное реле Wi-Fi ESP8266 ESP01 | ESP01 Домашняя автоматизация | УдаленныйXY 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 жана ESP8266-01 менен BMP180 колдонууну көрсөттүм. Бул көрсөтмөдө мен 4 сенсорду жана дисплейди колдонууну, ошол эле учурда алынган маалыматты Thingspeakке жүктөөнү чечтим. Бул чындыгында менин тоокканамдын айланасындагы атмосфераны көзөмөлдөө долбоорун кеңейтүүдө. Ооба, сиз муну аба ырайы станциясы деп атасаңыз болот, бирок бул 4 казыктын колдонулушун көрсөтүү үчүн, башка жол менен оңой эле жасай аласыз Мен I2C (BMP180 жана OLED) үчүн 2 төөнөгүчтү 2 DS18B20 датчиктери аркылуу DHT11 үчүн OneWire протоколунун 1 пини ESP8266-01де азыр анын бардык төөнөгүчтөрү колдонулганына карабастан, мен дагы OneWire протоколу аркылуу жана/же I2C протоколу аркылуу дагы сенсорлорду (же кыймылдаткычтарды) кошо алам. Демек, бизге эмне керек: BOM

  • ESP8266-01
  • 2x DS18B20
  • 1x DHT11
  • 1x BMP180
  • OLED (милдеттүү эмес)

жана, албетте, нан тактасы, 3.3 В PSU жана кээ бир нан такталары жана Thingspeak аккаунту

Банкка байланыштуу кээ бир эскертүүлөр:

  • Албетте, бул долбоор ESP8266-01дин чектелген казыктарын колдонуу жөнүндө, бирок дагы эле сатып алуу керек болсо, анда көбүрөөк казыктары бар ESP8266-12ди карап көрсөңүз болот.
  • DHT11A арзан бардык максаттуу нымдуулук жана температура сенсору. Бул өтө так эмес, бирок аткарат. Эгерде сиз дагы эле бирөөнү сатып алышыңыз керек болсо, анда тагыраак DHT22ди тандасаңыз болот, бирок сиз дагы AMS2321ди тандасаңыз болот. Бул DHT22дин бир түрү, ал I2C үчүн ылайыктуу, ошондуктан башка пинди бошотот
  • BMP180 температураны жана аба басымын өлчөйт. Бул BMP085тин мураскору, бирок азыр анын өзү дагы кээ бир жардамчыларга ээ. BMP280 бар (арзаныраак), бирок сиз температураны, абаны жана нымдуулукту өлчөгөн BME280ди тандасаңыз болот. Ошентип, сиз DHT/AMS сенсорун үнөмдөй аласыз
  • OLEDI муну колдонгон, ошондуктан сенсорлордун окулганын тез эле көрө алам, бирок сиз Thingspeakте текшере аласыз. OLED бардык окуу баалуулуктарын басып чыгаруу үчүн өтө кичинекей

1 -кадам: Circuit

Circuit
Circuit

ESP8266 4 казыктары ПКБда көрсөтүлгөн эмес жана көпчүлүк сүрөттөр GPIO0 жана GPIO2. Ал эми ESP826-01де GPIO1 пин (Tx пин) жана GPIO3 пин (Rx пин) бар. ал пиндерди төмөнкүдөй колдонот

  • GPIO0 -> I2C портунун SDA пини
  • GPIO1 -> DHT11
  • GPIO2-> I2C порттун SCL пини
  • GPIO3-> OneWire Bus

Менин I2C модулумда мурунтан эле каршылаштар бар болгондуктан, мен ал жерге I2C тартылуучу каршылыгын кошпойм. DS18B20 дагы эле 4k7 колдонгон каршылык резисторуна муктаж, бирок чынында анчалык деле маанилүү эмес, 10k дагы жакшы. DHT11ге ошондой эле тартылуучу резистор керек, бирок мен анын ансыз иштешин таптым. 4k7 каршылыгын кошуу эч кандай көрсөткүчтү өзгөрткөн жок, ошондуктан мен аны калтырдым. 3 пинтүү DHT11 модулдарынын көбү, модулга 10 к легирленген, мен OLED үчүн туташууларды тартпаганымды түшүндүм. Себеби, мен аны тез текшерүү үчүн гана байладым, бирок эгер сиз аны кошкуңуз келсе, бул SDAны SDAга жана SCLге SCLге туташтыруу … жана, албетте, жерди жана Vcc казыктарын кесиптештерине

2 -кадам: Программа

Программа абдан жөнөкөй. Адегенде ал китепканаларды жана сенсорлорду орнотот. DHT11ди 1 (Tx) пинге жана DS18B20 үчүн OnWire автобусуна 3 (Rx) туташтырат. OneWire автобусунда 1ден ашык DS18B20 сенсорун колдонуу үчүн, алардын "уникалдуу дарегин" билишиңиз керек. Эгер сизде андай болбосо, анда сизге ошол даректерди окуу программасы керек. Программа боюнча дагы эле Thingspeak каналыңыз үчүн WiFi грамоталарын жана API жазууңузду камсыз кылууңуз керек.

/*

1 -талаа темпери (DHT11) 2 -талаа нымдуулугу (DHT11) талаасы 3 Coop температурасы (DS18B20) 4 -топурактын температурасы (DS18B20) талаа 5 Airpressure (bmp180) талаа 6 Сырткы температура (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 дисплейи (0x3c, 0, 2); #Define DHTPIN 1 // GPIO1 (Tx) #Define DHTTYPE DHT11 #deineFine ONE_WIRE_BUS 3 // GPIO3 = Rx const char* ssid = "YourSSID"; const char* password = "YourPassword"; const char* host = "api.thingspeak.com"; const char* writeAPIKey = "W367812985"; // UseAOUR writeApi // DHT11 нерселери float temperature_buiten; сүзүү температурасы_buiten2; DHT dht (DHTPIN, DHTTYPE, 15); // DS18b20 нерселери OneWire oneWire (ONE_WIRE_BUS); // OneWire экземпляры OneWire түзмөктөрү менен байланышуу үчүн DallasTemperature сенсорлору (& 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; void setup () {// I2C stuff 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 нерселери if (! bmp.begin ()) {// Serial.println ("BMP180 /BMP085 жок"); // while (1) {}} // OLED stuff 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 (); if (isnan (нымдуулук) || isnan (температура)) {кайтуу; } // bmp нерселери ------------------------- String t = String (bmp.readTemperature ()); String p = String (bmp.readPressure ()); // OLED нерселери -------------------------- display.clear (); display.drawString (0, 10, p); // bmp басымы display.drawString (0, 24, String (температура_буитен));.display (); // WiFiClient кардарынын TCP байланыштарын түзүү; const int httpPort = 80; if (! client.connect (host, httpPort)) {return; } String url = "/update? Key ="; url += writeAPIKey; url += "& field1 ="; url += String (температура); // roost (DHT1) url += "& field2 ="; url += сап (нымдуулук); // roost (DHT11) url += "& field3 ="; url += String (temperature_buiten); // түйүндүн температурасы (DS18B20 nr 1) url += "& field4 ="; url += String (temperature_buiten2); // топурактын температурасы (DS18B29 nr 2) url += "& field5 ="; url += String (bmp.readTemperature ()); Сырткы температура (BMP180) url += "& field6 ="; url += String (bmp.readPressure ()); // Airpressure (BMP180) url += "\ r / n"; // Server client.print сурам жөнөтүү (String ("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 аны колдонушу мүмкүн.

Маанилүү эскертүү: Программа мурдагыдай эле жакшы иштейт, бирок эгер сиз Rx же Txке башка сенсорлорду кошсоңуз, айрыкча, эгерде сиз аларды чыгарсаңыз, казыктар күтүлбөгөн жерден алар GPIO казыктары эмес экенин эстеши мүмкүн. Түзгүчтөрдү GPIO казыктары экенин башынан баштап айтуу жакшыраак. Муну төмөнкү орнотууларды орнотуу аркылуу жасайт:

pinMode (1, FUNCTION_3);

pinMode (3, FUNCTION_3);

Сунушталууда: