Innholdsfortegnelse:
Video: Bruke de fire pinnene i ESP8266-01: 3 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:23
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
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:
Hvordan finne pinnene til en vaskemaskinmotor: 6 trinn
Hvordan finne pinnene til en vaskemaskinmotor: Vaskemaskinens motorpinner finner ved hjelp av et digitalt multimeter. Vi trenger et multimeter i kontinuitetstester -modus og en lignende universell vaskemaskinmotor som den på bildet ovenfor. Vi vil start først med å visuelt inspisere t
Hvordan bruke DS1307 Bruke Arduino: 7 trinn
Hvordan bruke DS1307 Bruke Arduino: DS1307 er en sanntidsklokke IC (RTC). Denne IC brukes til å gi tidsdata. Tildelt tid starter fra sekunder, minutt, timer, dager, dato, måned og år. Denne IC krever ytterligere eksterne komponenter som Crystal og 3,6V batterier. Krystall
Hvordan bruke en tenåring til å skrive ut bilder på Splatoon 2 Bruke SplatPost -skriveren: 10 trinn
Hvordan bruke en tenåring til å skrive ut bilder på Splatoon 2 Bruke SplatPost -skriveren: I denne instruksen vil jeg vise hvordan du bruker SplatPost -skriveren av ShinyQuagsire. Uten klare instruksjoner ville noen som ikke har erfaring med kommandolinjen ha litt problemer. Målet mitt er å forenkle trinnene ned til poi
Neopixel Ws2812 Rainbow LED-glød med M5stick-C - Kjører Rainbow på Neopixel Ws2812 Bruke M5stack M5stick C Bruke Arduino IDE: 5 trinn
Neopixel Ws2812 Rainbow LED-glød med M5stick-C | Running Rainbow på Neopixel Ws2812 Bruke M5stack M5stick C Bruke Arduino IDE: Hei folkens i denne instruksen, vi lærer hvordan du bruker neopixel ws2812 LED eller led strip eller led matrise eller led ring med m5stack m5stick-C utviklingstavle med Arduino IDE, og vi skal lage et regnbuemønster med den
Hvordan bruke Wiimote som en datamus ved å bruke stearinlys som sensor !!: 3 trinn
Slik bruker du Wiimote som en datamus ved å bruke stearinlys som en sensor !!: Denne guiden viser deg hvordan du kobler din Wii -fjernkontroll (Wiimote) til din PC og bruker den som en mus