Indholdsfortegnelse:

Brug af de 4 pins i ESP8266-01: 3 trin
Brug af de 4 pins i ESP8266-01: 3 trin

Video: Brug af de 4 pins i ESP8266-01: 3 trin

Video: Brug af de 4 pins i ESP8266-01: 3 trin
Video: Как запрограммировать модуль реле Wi-Fi ESP8266 ESP-01 2024, Juli
Anonim
Brug af de 4 pins af ESP8266-01
Brug af de 4 pins af ESP8266-01
Brug af de 4 pins af ESP8266-01
Brug af de 4 pins af ESP8266-01
Brug af de 4 pins af ESP8266-01
Brug af de 4 pins af ESP8266-01

Bemærk: Dette projekt er dybest set en forlængelse af en tidligere instruerbar, der kun brugte 2 ben. Det begrænsede antal (4) GPIO-ben på ESP8266-01 kan virke som en hindring for enhver seriøs anvendelse. Dog hvis man bruger stifterne i på en smart måde er det meget muligt at gøre meget med kun de 4 pins. I nogle af mine seneste instruktioner har jeg vist brugen af en DHT11 en DS18B20, en OLED, en RTC og en BMP180 med ESP8266-01. I denne instruktive satte jeg mig for at bruge 4 sensorer og et display, mens jeg også uploadede de indsamlede data til Thingspeak. Det udvider faktisk et projekt med overvågning af atmosfæren i og omkring mit hønsehus. Ja, du kan kalde dette en vejrstation, men det er bare for at illustrere brugen af de 4 ben, du kan nemt lave noget andet på denne måde. Jeg vil bruge 2 ben til I2C (BMP180 og OLED) 1 ben til 2 DS18B20 sensorer via OneWire-protokol1-pin til DHT11 Selvom ESP8266-01 nu har alle sine ben brugt, kan jeg stadig tilføje flere sensorer (eller aktuatorer) gennem OneWire-protokollen og/eller via I2C-protokollen. Så hvad har vi brug for: BOM

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

og selvfølgelig et brødbræt, en 3,3 V PSU og nogle brødbrætskabler og en Thingspeak -konto

Bare nogle bemærkninger vedrørende styklisten:

  • ESP8266-01 Det er klart, at projektet handler om at udnytte de begrænsede ben på ESP8266-01, men hvis du stadig skal købe en, kan du overveje en ESP8266-12, der har flere ben
  • DHT11A billig luftfugtigheds- og temperatursensor til alle formål. Det er ikke enormt præcist, men det vil gøre det. Hvis du stadig skal købe en, kan du vælge DHT22, der angiveligt er mere præcis, men du kan også vælge AMS2321. Det er en slags DHT22, der er egnet til I2C, hvilket frigør en anden pin
  • BMP180 måler temperatur og lufttryk. Det er efterfølgeren til BMP085, men det har også nu selv nogle suvessors. Der er den (billigere) BMP280, men du kan også vælge BME280, der måler temperatur, lufttryk OG fugtighed. På den måde kan du spare på DHT/AMS -sensoren
  • OLEDI brugte det bare, så jeg hurtigt kunne se, om sensorerne blev læst, men du kunne lige så godt tjekke det på Thingspeak. OLED er alligevel for lille til at udskrive alle læseværdierne

Trin 1: Kredsløbet

Kredsløbet
Kredsløbet

De 4 ben på ESP8266 er ikke angivet som sådan på printkortet, og de fleste billeder angiver kun klart GPIO0 og GPIO2. ESP826-01 har imidlertid en GPIO1-pin (Tx-stiften) og en GPIO3-pin (Rx-stiften). vil bruge disse stifter som følger

  • GPIO0 -> SDA -pin på I2C -porten
  • GPIO1 -> DHT11
  • GPIO2-> SCL-pin på I2C-porten
  • GPIO3-> OneWire Bus

Da mine I2C -moduler allerede har pull up -modstande, tilføjer jeg ikke nogen I2C -pullup -modstande der. DS18B20 har stadig brug for en pull up -modstand, som jeg brugte en 4k7 til, men det er virkelig ikke så kritisk, en 10k er også god. DHT11 har tilsyneladende også brug for en pull-up-modstand, men jeg fandt den også til at fungere uden en. tilføjelse af en 4k7 modstand ændrede ikke nogen af målingerne, så jeg udelod det. Mange af de 3 -pin DHT11 -moduler har allerede en 10 k loddet på modulet. Jeg indså lige, at jeg ikke tegnede forbindelserne til OLED. Det er fordi jeg kun tilsluttede det til en hurtig kontrol, men hvis du vil tilføje det, er det bare et spørgsmål om at forbinde SDA til SDA og SCL til SCL … og selvfølgelig jorden og Vcc -pins til deres modparter

Trin 2: Programmet

Programmet er ganske ligetil. Først opsætter den bibliotekerne og sensorerne. Den fastgør DHT11 til pin 1 (Tx) og OnWire -bussen til DS18B20 til pin 3 (Rx). For at bruge mere end 1 DS18B20 -sensor på OneWire -bussen skal du kende deres 'unikke adresse'. Hvis du ikke har det, skal du bruge et program til at læse disse adresser. Gør det let på en arduino. I programmet skal du stadig angive dine WiFi -legitimationsoplysninger samt skrive -API'en til din Thingspeak -kanal

/*

Felt 1 temp. Roost (DHT11) Felt 2 fugtighedsfrost (DHT11) felt 3 Coop temperatur (DS18B20) felt 4 jordtemperatur (DS18B20) felt 5 Lufttryk (bmp180) felt 6 Udetemperatur (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 display (0x3c, 0, 2); #define DHTPIN 1 // GPIO1 (Tx) #define DHTTYPE DHT11 #define ONE_WIRE_BUS 3 // GPIO3 = Rx const char* ssid = "YourSSID"; const char* password = "YourPassword"; const char* host = "api.thingspeak.com"; const char* writeAPIKey = "W367812985"; // brug DIN writeApi // DHT11 stuff float temperature_buiten; flyde temperatur_buiten2; DHT dht (DHTPIN, DHTTYPE, 15); // DS18b20 stuff OneWire oneWire (ONE_WIRE_BUS); // oneWire -forekomst for at kommunikere med alle OneWire -enheder DallasTemperature sensorer (& oneWire); // Videregive adressen på vores oneWire -forekomst til Dallas Temperature. DeviceAddress Probe01 = {0x28, 0x0F, 0x2A, 0x28, 0x00, 0x00, 0x80, 0x9F}; DeviceAddress Probe02 = {0x28, 0x10, 0xA4, 0x57, 0x04, 0x00, 0x00, 0xA9}; // bmp180 ting Adafruit_BMP085 bmp; void setup () {// I2C stuff Wire.pins (0, 2); Wire.begin (0, 2); // Initialiser sensorer // dht 11 stuff dht.begin (); // ds18b20 stuff sensors.begin (); // ds18b20 // indstil opløsningen til 10 bit (Kan være 9 til 12 bit.. lavere er hurtigere) sensorer.setResolution (Probe01, 10); sensorer.setResolution (Probe02, 10); // bmp180 stuff if (! bmp.begin ()) {// Serial.println ("No BMP180 /BMP085"); // mens (1) {}} // OLED -ting display.init (); display.flipScreenVertically (); display.setFont (ArialMT_Plain_10); forsinkelse (1000); // Opret forbindelse til WiFi -netværk WiFi.begin (ssid, adgangskode); mens (WiFi.status ()! = WL_CONNECTED) {forsinkelse (500); }} void loop () {// ds18b20stuff ------------------- sensors.requestTemperatures (); // Send kommandoen for at få temperaturer temperatur_buiten = sensorer.getTempC (sans01); // temperatur_buiten2 = sensorer.getTempC (sondel02); // // dht11 ting ---------------- ---- flydende luftfugtighed = dht.readHumidity (); flyde temperatur = dht.readTemperature (); hvis (isnan (fugtighed) || isnan (temperatur)) {return; } // bmp stuff ------------------------- String t = String (bmp.readTemperature ()); String p = String (bmp.readPressure ()); // OLED-ting -------------------------- display.clear (); display.drawString (0, 10, p); // bmp tryk display.drawString (0, 24, String (temperatur_buiten)); // ds18b20 display.drawString (0, 38, streng (luftfugtighed)); // dht11 display. Skærm(); // lav TCP -forbindelser WiFiClient -klient; const int httpPort = 80; if (! client.connect (host, httpPort)) {return; } String url = "/update? Key ="; url += writeAPIKey; url += "& field1 ="; url += String (temperatur); // roost (DHT1) url += "& field2 ="; url += String (fugtighed); // roost (DHT11) url += "& field3 ="; url += String (temperatur_buiten); // coop temperatur (DS18B20 nr 1) url += "& field4 ="; url += String (temperatur_buiten2); // jordtemperatur (DS18B29 nr 2) url += "& field5 ="; url += String (bmp.readTemperature ()); Udetemperatur (BMP180) url += "& field6 ="; url += String (bmp.readPressure ()); // Lufttryk (BMP180) url += "\ r / n"; // Send anmodning til serveren client.print (String ("GET") + url + "HTTP/1.1 / r / n" + "Host:" + host + "\ r / n" + "Connection: close / r / n / r / n "); forsinkelse (1000); }

……..

Trin 3: Mere

I øjeblikket overvåger dette program kun, men hvad skal forhindre dig i at tilføje en BH1750 I2C lyssensor til måling af, om det er aften eller morgen eller en RTC for at kende tidspunktet på dagen og automatisk åbne og lukke døren til coop ved hjælp af et PCF8574 I2C I/O -udvidelseskort, eller som det allerede er i haven, tilføj en PCF8591 eller ADS1115 AD -konverter for at måle jordfugtighed og aktivere en pumpe, når det er nødvendigt. Eller måske tænde for vandbassinvarmeren, når temperaturen falder til under nul, hvis der er en I2 C -chip til det, kan ESP8266 sandsynligvis bruge den.

En vigtig bemærkning dog: Programmet som det fungerer fungerer godt, men hvis du tilføjer andre sensorer til Rx eller Tx, især hvis du laver dem til udgange, kan benene pludselig huske, at de ikke rigtig er GPIO -ben. Det er bedre at fortælle stifterne fra starten, at de nu er GPIO -ben. Det gør man ved at sætte følgende udsagn i opsætningen:

pinMode (1, FUNCTION_3);

pinMode (3, FUNCTION_3);

Anbefalede: