Innholdsfortegnelse:

Bruke de fire pinnene i ESP8266-01: 3 trinn
Bruke de fire pinnene i ESP8266-01: 3 trinn

Video: Bruke de fire pinnene i ESP8266-01: 3 trinn

Video: Bruke de fire pinnene i ESP8266-01: 3 trinn
Video: Как сделать 4-канальное реле Wi-Fi ESP8266 ESP01 | ESP01 Домашняя автоматизация | УдаленныйXY 2024, Juli
Anonim
Bruke de fire pinnene i ESP8266-01
Bruke de fire pinnene i ESP8266-01
Bruke de fire pinnene i ESP8266-01
Bruke de fire pinnene i ESP8266-01
Bruke de fire pinnene i ESP8266-01
Bruke de fire pinnene i ESP8266-01

Merk: Dette prosjektet er i utgangspunktet en forlengelse av en tidligere instruerbar som bare brukte 2 pinner. Det begrensede antallet (4) GPIO-pinner på ESP8266-01 kan virke som et hinder for enhver seriøs applikasjon. Men hvis man bruker pinnene i på en smart måte er det veldig godt mulig å gjøre mye med bare de 4 pinnene. I noen av mine siste instrukser har jeg vist bruk av en DHT11 en DS18B20, en OLED, en RTC og en BMP180 med ESP8266-01. I denne instruksen bestemte jeg meg for å bruke 4 sensorer og en skjerm, samtidig som jeg lastet opp de innhentede dataene til Thingspeak. Det utvider faktisk et prosjekt for å overvåke atmosfæren i og rundt hønsegården min. Ja, du kan kalle dette en værstasjon, men det er bare for å illustrere bruken av de 4 pinnene, du kan enkelt lage noe annet på denne måten. Jeg bruker 2 pinner for I2C (BMP180 og OLED) 1 pinne for 2 DS18B20 sensorer via OneWire-protokoll1-pin for DHT11 Selv om ESP8266-01 nå har alle pinnene sine brukt, kan jeg fortsatt legge til flere sensorer (eller aktuatorer) gjennom OneWire-protokollen og/eller via I2C-protokollen. Så, hva trenger vi: BOM

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

og selvfølgelig et brødbrett, en 3,3 V PSU og noen brødbrettledninger og en Thingspeak -konto

Bare noen kommentarer angående styklisten:

  • ESP8266-01 Tydeligvis handler prosjektet om å bruke de begrensede pinnene til ESP8266-01, men hvis du fortsatt trenger å kjøpe en, kan du vurdere en ESP8266-12 som har flere pinner
  • DHT11A billig allsidig fuktighets- og temperatursensor. Det er ikke veldig nøyaktig, men det vil gjøre det. Hvis du fortsatt trenger å kjøpe en, kan du velge DHT22 som visstnok er mer nøyaktig, men du kan også velge AMS2321. Det er en slags DHT22 som er egnet for I2C, og dermed frigjør en annen pinne
  • BMP180 måler temperatur og lufttrykk. Det er etterfølgeren til BMP085, men den har også nå noen suvessors selv. Det er (billigere) BMP280, men du kan også velge BME280 som måler temperatur, lufttrykk OG fuktighet. På den måten kan du spare på DHT/AMS -sensoren
  • OLEDI brukte det bare slik at jeg raskt kunne se om sensorene ble lest, men du kan like godt sjekke det på Thingspeak. OLED er uansett for liten til å skrive ut alle leseverdiene

Trinn 1: Kretsen

Kretsen
Kretsen

De fire pinnene på ESP8266 er ikke angitt som sådan på kretskortet, og de fleste bilder viser bare tydelig GPIO0 og GPIO2. ESP826-01 har imidlertid en GPIO1-pinne (Tx-pinnen) og en GPIO3-pinne (Rx-pinnen). vil bruke disse pinnene som følger

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

Siden mine I2C -moduler allerede har trekkmotstander, vil jeg ikke legge til noen I2C -pullup -motstander der. DS18B20 trenger fremdeles en opptrekksmotstand som jeg brukte en 4k7 for, men det er egentlig ikke så kritisk, en 10k er også bra. DHT11 trenger visstnok også en pull-up-motstand, men jeg syntes den fungerte uten en også. å legge til en 4k7 -motstand endret ikke noen av målingene, så jeg utelot det. Mange av de 3 -pinners DHT11 -modulene har allerede 10 k loddet på modulen. Jeg skjønte bare at jeg ikke tegnet tilkoblingene for OLED. Det er fordi jeg bare koblet den til for en rask sjekk, men hvis du vil legge den til, er det bare å koble SDA til SDA og SCL til SCL … og selvfølgelig bakken og Vcc -pinnene til sine kolleger

Trinn 2: Programmet

Programmet er ganske greit. Først setter den opp bibliotekene og sensorene. Den fester DHT11 til pin 1 (Tx) og OnWire -bussen for DS18B20 til pin 3 (Rx). For å bruke mer enn 1 DS18B20 -sensor på OneWire -bussen, må du kjenne deres 'unike adresse'. Hvis du ikke har det, trenger du et program for å lese disse adressene. Gjør det enkelt på en arduino. I programmet må du fortsatt oppgi WiFi -legitimasjonene dine samt skrive -API -en for Thingspeak -kanalen din

/*

Felt 1 temp roost (DHT11) Felt 2 fuktighet roost (DHT11) felt 3 Coop temperatur (DS18B20) felt 4 jordtemperatur (DS18B20) felt 5 Lufttrykk (bmp180) felt 6 Utetemperatur (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"; // bruk DINE writeApi // DHT11 ting flyte temperatur_buiten; flyte temperatur_buiten2; DHT dht (DHTPIN, DHTTYPE, 15); // DS18b20 ting OneWire oneWire (ONE_WIRE_BUS); // oneWire -forekomst for å kommunisere med alle OneWire -enheter DallasTemperature -sensorer (& oneWire); // Pass -adressen til vår 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 // sett oppløsningen til 10 bit (Kan være 9 til 12 bits.. lavere er raskere) sensors.setResolution (Probe01, 10); sensors.setResolution (Probe02, 10); // bmp180 ting hvis (! bmp.begin ()) {// Serial.println ("Ingen BMP180 /BMP085"); // mens (1) {}} // OLED -ting display.init (); display.flipScreenVertically (); display.setFont (ArialMT_Plain_10); forsinkelse (1000); // Koble til WiFi -nettverk WiFi.begin (ssid, passord); mens (WiFi.status ()! = WL_CONNECTED) {forsinkelse (500); }} void loop () {// ds18b20stuff ------------------- sensors.requestTemperatures (); // Send kommandoen for å få temperaturen temperature_buiten = sensors.getTempC (Probe01); // temperature_buiten2 = sensors.getTempC (Probe02); // // dht11 stuff ---------------- ---- flytefuktighet = dht.readHumidity (); flyte temperatur = dht.readTemperature (); if (isnan (fuktighet) || isnan (temperatur)) {retur; } // bmp stuff ------------------------- String t = String (bmp.readTemperature ()); String p = String (bmp.readPressure ()); // OLED-ting -------------------------- display.clear (); display.drawString (0, 10, p); // bmp press display.drawString (0, 24, String (temperature_buiten)); // ds18b20 display.drawString (0, 38, String (fuktighet)); // dht11 display.vise(); // lage TCP -tilkoblinger 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 (fuktighet); // roost (DHT11) url += "& field3 ="; url += String (temperature_buiten); // coop temperature (DS18B20 nr 1) url += "& field4 ="; url += String (temperatur_buiten2); // jordtemperatur (DS18B29 nr 2) url += "& field5 ="; url += String (bmp.readTemperature ()); Utetemperatur (BMP180) url += "& field6 ="; url += String (bmp.readPressure ()); // Airpressure (BMP180) url += "\ r / n"; // Send forespørsel til serveren client.print (String ("GET") + url + "HTTP/1.1 / r / n" + "Host:" + host + "\ r / n" + "Connection: close / r / n / r / n "); forsinkelse (1000); }

……..

Trinn 3: Mer

For øyeblikket overvåker dette programmet bare, men hva er det som skal stoppe deg fra å legge til en BH1750 I2C lyssensor for å måle om det er kveld eller morgen eller en RTC for å vite tidspunktet på dagen og å åpne og lukke døren til coop automatisk ved hjelp av et PCF8574 I2C I/O -utvidelseskort, eller som det allerede er i hagen, kan du legge til en PCF8591 eller ADS1115 AD -omformer for å måle jordfuktighet og aktivere en pumpe om nødvendig. Eller kanskje slå på vannkokervarmeren når temperaturen faller under null hvis det er en I2 C -brikke for den, kan ESP8266 sannsynligvis bruke den.

Et viktig notat skjønt: Programmet som det fungerer fungerer bra, men hvis du legger til andre sensorer til Rx eller Tx, spesielt hvis du gjør dem til utganger, kan pinnene plutselig huske at de egentlig ikke er GPIO -pinner. Det er bedre å fortelle pinnene fra starten at de nå er GPIO -pinner. En gjør det ved å sette følgende utsagn i oppsettet:

pinMode (1, FUNCTION_3);

pinMode (3, FUNCTION_3);

Anbefalt: