Satura rādītājs:

Izmantojot ESP8266-01 4 tapas: 3 soļi
Izmantojot ESP8266-01 4 tapas: 3 soļi

Video: Izmantojot ESP8266-01 4 tapas: 3 soļi

Video: Izmantojot ESP8266-01 4 tapas: 3 soļi
Video: ESP8266 ESP01 WI-FI-UART | Программирование LDmicro-Roboremo 2024, Septembris
Anonim
Izmantojot ESP8266-01 4 tapas
Izmantojot ESP8266-01 4 tapas
Izmantojot ESP8266-01 4 tapas
Izmantojot ESP8266-01 4 tapas
Izmantojot ESP8266-01 4 tapas
Izmantojot ESP8266-01 4 tapas

Piezīme. Šis projekts būtībā ir iepriekšēja instrukcijas paplašinājums, kurā tika izmantotas tikai 2 tapas. Ierobežots skaits (4) GPIO tapas uz ESP8266-01 var šķist šķērslis jebkuram nopietnam lietojumam. Tomēr, ja izmantojat tapas gudrs veids, kā ļoti iespējams paveikt daudz tikai ar šīm četrām tapām. Dažos savos jaunākajos norādījumos esmu parādījis DHT11, DS18B20, OLED, RTC un BMP180 izmantošanu ar ESP8266-01. Šajā pamācībā es nolēmu izmantot 4 sensorus un displeju, vienlaikus augšupielādējot iegūtos datus vietnē Thingspeak. Tas faktiski paplašina projektu, lai uzraudzītu atmosfēru manā vistu kūts un ap to. Jā, jūs to varētu saukt par laika apstākļiem, bet tas ir tikai, lai ilustrētu četru tapu izmantošanu, jūs varētu viegli izgatavot kaut ko citu šādā veidā. Es izmantošu 2 tapas I2C (BMP180 un OLED) 1 tapu 2 DS18B20 sensoriem, izmantojot OneWire protokols 1 tapa DHT11 Lai gan ESP8266-01 tagad ir izmantotas visas tapas, es joprojām varu pievienot vairāk sensoru (vai izpildmehānismu), izmantojot OneWire protokolu un/vai I2C protokolu. Tātad, kas mums nepieciešams: BOM

  • ESP8266-01
  • 2x DS18B20
  • 1x DHT11
  • 1x BMP180
  • OLED (pēc izvēles)

un, protams, maizes dēlis, 3,3 V barošanas bloks un daži maizes dēļa vadi un Thingspeak konts

Tikai dažas piezīmes par BOM:

  • Acīmredzot projekta mērķis ir izmantot ierobežotos ESP8266-01 tapas, bet, ja jums joprojām ir nepieciešams to iegādāties, varat apsvērt ESP8266-12, kuram ir vairāk tapas
  • DHT11A lēts universāls mitruma un temperatūras sensors. Tas nav ļoti precīzs, bet tas notiks. Ja jums joprojām ir nepieciešams to iegādāties, varat izvēlēties DHT22, kas ir precīzāks, bet jūs varat arī izvēlēties AMS2321. Tas ir sava veida DHT22, kas piemērots I2C, tādējādi atbrīvojot citu tapu
  • BMP180 mēra temperatūru un gaisa spiedienu. Tas ir BMP085 pēctecis, bet tagad tam ir arī daži suvesori. Ir (lētāks) BMP280, bet jūs varat arī izvēlēties BME280, kas mēra temperatūru, gaisa spiedienu UN mitrumu. Tādā veidā jūs varat ietaupīt uz DHT/AMS sensora
  • OLEDI to vienkārši izmantoja, lai es ātri redzētu, vai sensori ir nolasīti, bet tikpat labi jūs to varētu pārbaudīt vietnē Thingspeak. OLED jebkurā gadījumā ir pārāk mazs, lai izdrukātu visas nolasītās vērtības

1. solis: ķēde

Ķēde
Ķēde

ESP8266 četras tapas kā tādas nav norādītas uz PCB, un lielākajā daļā attēlu ir skaidri norādīti tikai GPIO0 un GPIO2. Tomēr ESP826-01 ir aa GPIO1 tapa (Tx tapa) un GPIO3 tapa (Rx tapa). I izmantos šīs tapas šādi

  • GPIO0 -> I2C porta SDA tapa
  • GPIO1 -> DHT11
  • GPIO2-> I2C porta SCL tapa
  • GPIO3-> OneWire kopne

Tā kā maniem I2C moduļiem jau ir uzvilkami rezistori, es tur nepievienošu nekādus I2C pievilkšanas rezistorus. DS18B20 joprojām ir nepieciešams pacelšanas rezistors, kuram es izmantoju 4k7, bet tas tiešām nav tik kritisks, arī 10k ir labs. DHT11, domājams, ir nepieciešams arī pievilkšanas rezistors, bet es atklāju, ka tas darbojas arī bez tā. pievienojot 4k7 rezistoru, nemainījās neviens no rādījumiem, tāpēc es to atstāju. Daudziem no 3 kontaktu DHT11 moduļiem jau ir 10 k lodēti uz moduļa. Es tikko sapratu, ka neesmu izveidojis savienojumus OLED. Tas ir tāpēc, ka es to pievienoju tikai ātrai pārbaudei, bet, ja vēlaties to pievienot, tas ir tikai jautājums par SDA savienošanu ar SDA un SCL ar SCL … un, protams, zemi un Vcc tapas ar saviem kolēģiem

2. solis: programma

Programma ir diezgan vienkārša. Vispirms tas izveido bibliotēkas un sensorus. Tas piestiprina DHT11 piespraudei 1 (Tx) un OnWire kopnei DS18B20 līdz tapai 3 (Rx). Lai OneWire kopnē izmantotu vairāk nekā 1 DS18B20 sensoru, jums jāzina to “unikālā adrese”. Ja jums tas nav, jums ir nepieciešama programma šo adrešu lasīšanai. Dariet to arduino, lai atvieglotu. Programmā jums joprojām ir jāsniedz WiFi akreditācijas dati, kā arī rakstīšanas API jūsu Thingspeak kanālam

/*

Lauka 1 temp roost (DHT11) 2. lauka mitruma istabas (DHT11) lauks 3 Coop temperatūras (DS18B20) lauka 4 augsnes temperatūra (DS18B20) lauks 5 Gaisa spiediena (bmp180) lauks 6 Ārējās temperatūras (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 displejs (0x3c, 0, 2); #define DHTPIN 1 // GPIO1 (Tx) #define DHTTYPE DHT11 #define ONE_WIRE_BUS 3 // GPIO3 = Rx const char* ssid = "YourSSID"; const char* parole = "YourPassword"; const char* saimnieks = "api.thingspeak.com"; const char* writeAPIKey = "W367812985"; // izmantojiet SAVU writeApi // DHT11 sīkumi float temperature_buiten; pludiņa temperatūra_buiten2; DHT dht (DHTPIN, DHTTYPE, 15); // DS18b20 sīkumi OneWire oneWire (ONE_WIRE_BUS); // oneWire instance saziņai ar visām OneWire ierīcēm DallasTemperatūras sensori (& oneWire); // Nosūtiet mūsu oneWire instances adresi Dallas Temperature. DeviceAddress Probe01 = {0x28, 0x0F, 0x2A, 0x28, 0x00, 0x00, 0x80, 0x9F}; DeviceAddress Probe02 = {0x28, 0x10, 0xA4, 0x57, 0x04, 0x00, 0x00, 0xA9}; // bmp180 stuff Adafruit_BMP085 bmp; void setup () {// I2C stuff Wire.pins (0, 2); Wire.begin (0, 2); // Inicializēt sensorus // dht 11 stuff dht.begin (); // ds18b20 sīkumi sensors.begin (); // ds18b20 // iestatiet izšķirtspēju uz 10 bitiem (var būt no 9 līdz 12 bitiem.. zemāks ir ātrāks) sensors.setResolution (Probe01, 10); sensors.setResolution (Zonde02, 10); // bmp180 stuff if (! bmp.begin ()) {// Serial.println ("No BMP180 /BMP085"); // while (1) {}} // OLED stuff display.init (); display.flipScreenVertically (); display.setFont (ArialMT_Plain_10); kavēšanās (1000); // Savienojuma izveide ar WiFi tīklu WiFi.begin (ssid, parole); while (WiFi.status ()! = WL_CONNECTED) {kavēšanās (500); }} void loop () {// ds18b20stuff ------------------- sensors.requestTemperatures (); // Nosūtiet komandu, lai iegūtu temperatūru temperature_buiten = sensors.getTempC (Probe01); // temperature_buiten2 = sensors.getTempC (Probe02); // // dht11 stuff ---------------- ---- pludiņa mitrums = dht.readHumidity (); pludiņa temperatūra = dht.readTemperature (); if (isnan (mitrums) || isnan (temperatūra)) {return; } // bmp stuff ------------------------- String t = String (bmp.readTemperature ()); String p = String (bmp.readPressure ()); // OLED stuff -------------------------- display.clear (); display.drawString (0, 10, p); // bmp spiediena display.drawString (0, 24, String (temperature_buiten)); // ds18b20 display.drawString (0, 38, String (mitrums)); // dht11 display.display (); // izveidot TCP savienojumus WiFiClient klients; const int httpPort = 80; if (! client.connect (resursdators, httpPort)) {return; } String url = "/update? Key ="; url += writeAPIKey; url += "& lauks1 ="; url += String (temperatūra); // roost (DHT1) url += "& field2 ="; url += String (mitrums); // roost (DHT11) url += "& field3 ="; url += String (temperature_buiten); // coop temperatūra (DS18B20 nr 1) url += "& field4 ="; url += String (temperatūra_buiten2); // augsnes temperatūra (DS18B29 nr 2) url += "& field5 ="; url += String (bmp.readTemperature ()); Ārējā temperatūra (BMP180) url += "& field6 ="; url += String (bmp.readPressure ()); // Gaisa spiediens (BMP180) url += "\ r / n"; // Nosūtīt pieprasījumu uz servera klientu. Print (String ("GET") + url + "HTTP/1.1 / r / n" + "Host:" + resursdators + "\ r / n" + "Savienojums: aizvērt / r / n / r / n "); kavēšanās (1000); }

……..

3. solis: vairāk

Pašlaik šī programma tikai uzrauga, bet kas jums traucē pievienot BH1750 I2C gaismas sensoru, lai izmērītu, vai ir vakars vai rīts vai RTC, lai uzzinātu diennakts laiku un automātiski atvērtu un aizvērtu kurtuves durvis, izmantojot PCF8574 I2C I/O paplašināšanas karti vai, ja tā jau atrodas dārzā, pievienojiet PCF8591 vai ADS1115 AD pārveidotāju, lai izmērītu augsnes mitrumu un vajadzības gadījumā aktivizētu sūkni. Vai varbūt ūdens baseina sildītāja ieslēgšana, kad temperatūra nokrītas zem nulles, ja tam ir I2 C mikroshēma, iespējams, to var izmantot ESP8266.

Tomēr svarīga piezīme: Programma darbojas labi, taču, ja Rx vai Tx pievienojat citus sensorus, it īpaši, ja tos padarāt par izejām, tapas var pēkšņi atcerēties, ka tās nav īsti GPIO tapas. No sākuma labāk ir pateikt tapām, ka tās tagad ir GPIO tapas. To var izdarīt, iestatot šādus paziņojumus:

pinMode (1, FUNCTION_3);

pinMode (3, FUNCTION_3);

Ieteicams: