Obsah:
Video: Použitie 4 pinov ESP8266-01: 3 kroky
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:58
Poznámka: Tento projekt je v podstate rozšírením predchádzajúceho návodu, ktorý používal iba 2 piny. Obmedzený počet (4) pinov GPIO na ESP8266-01 sa môže javiť ako prekážka pre každú serióznu aplikáciu. Napriek tomu, ak niekto používa kolíky v inteligentným spôsobom je veľmi možné urobiť veľa iba s týmito 4 kolíkmi. V niektorých mojich nedávnych pokynoch som ukázal použitie DHT11 a DS18B20, OLED, RTC a BMP180 s ESP8266-01. V tomto návode som sa rozhodol použiť 4 senzory a displej a zároveň nahrať získané údaje do Thingspeak. V skutočnosti sa rozširuje o projekt monitorovania atmosféry v mojom kurníku a okolo neho. Áno, dá sa to nazvať meteorologická stanica, ale slúži to len na ilustráciu použitia 4 pinov, takže môžete ľahko vytvoriť niečo iné. Budem používať 2 piny pre I2C (BMP180 a OLED) 1 pin pre 2 senzory DS18B20 cez Protokol OneWire 1 pin pre DHT11 Napriek tomu, že ESP8266-01 má teraz všetky použité kolíky, stále môžem pridať ďalšie senzory (alebo akčné členy) prostredníctvom protokolu OneWire a/alebo prostredníctvom protokolu I2C. Čo teda potrebujeme: kusovník
- ESP8266-01
- 2x DS18B20
- 1x DHT11
- 1x BMP180
- OLED (voliteľné)
a samozrejme nepájivú dosku, 3,3 V zdroj a niekoľko drôtov na nepájivom poli a účet Thingspeak
Len niekoľko poznámok k kusovníku:
- Je zrejmé, že projekt je o využití obmedzených pinov ESP8266-01, ale ak si ich stále potrebujete kúpiť, mohli by ste zvážiť ESP8266-12, ktorý má viac pinov
- DHT11A lacný viacúčelový snímač vlhkosti a teploty. Nie je to veľmi presné, ale bude to fungovať. Ak si stále potrebujete kúpiť, môžete sa rozhodnúť pre DHT22, ktorý je údajne presnejší, ale môžete sa rozhodnúť aj pre AMS2321. Je to druh DHT22, ktorý je vhodný pre I2C, čím uvoľňuje ďalší pin
- BMP180 meria teplotu a tlak vzduchu. Je to nástupca modelu BMP085, ale v súčasnosti má aj niektorých vlastných nástupcov. Existuje (lacnejší) BMP280, ale môžete sa tiež rozhodnúť pre BME280, ktorý meria teplotu, tlak vzduchu A vlhkosť. Tak môžete ušetriť na senzore DHT/AMS
- OLEDI to práve použil, takže som rýchlo videl, či sú senzory načítané, ale rovnako dobre to môžete skontrolovať na Thingspeak. OLED je aj tak príliš malý na vytlačenie všetkých načítaných hodnôt
Krok 1: Okruh
4 kolíky ESP8266 nie sú na plošnom spoji uvedené a väčšina obrázkov iba jasne uvádza GPIO0 a GPIO2. ESP826-01 však má kolík GPIO1 (kolík Tx) a kolík GPIO3 (kolík Rx). I bude tieto kolíky používať nasledovne
- Kolík GPIO0 -> SDA portu I2C
- GPIO1 -> DHT11
- Pin GPIO2-> SCL portu I2C
- GPIO3-> OneWire Bus
Pretože moje moduly I2C už majú výsuvné odpory, nebudem tam pridávať žiadne výsuvné odpory I2C. DS18B20 stále potrebuje pull up odpor, na ktorý som použil 4k7, ale nie je to také kritické, 10k je tiež dobré. DHT11 údajne tiež potrebuje vyťahovací odpor, ale zistil som, že funguje aj bez neho. pridanie odporu 4k7 nezmenilo žiadne z hodnôt, takže som to vynechal. Mnoho z 3 -kolíkových modulov DHT11 už bolo na modul spájkovaných 10 k. Práve som si uvedomil, že som nevykreslil spojenia pre OLED. Je to preto, že som to pripojil len pre rýchlu kontrolu, ale ak by ste to chceli pridať, je to len otázka pripojenia SDA k SDA a SCL k SCL … a samozrejme uzemnenia a kolíkov VCC k ich náprotivkom.
Krok 2: Program
Program je celkom jednoduchý. Najprv nastaví knižnice a senzory. Pripojí DHT11 na pin 1 (Tx) a zbernicu OnWire pre DS18B20 na pin 3 (Rx). Aby ste na zbernici OneWire mohli použiť viac ako 1 snímač DS18B20, musíte poznať ich „jedinečnú adresu“. Ak to nemáte, potrebujete program na čítanie týchto adries. Urobte to na arduino pre jednoduchosť. V programe stále musíte poskytnúť svoje poverenia WiFi a API na zápis pre váš kanál Thingspeak.
/*
Teplota 1 Teplota miestnosti (DHT11) Pole 2 Teplota vlhkosti (DHT11) Pole 3 Teplota coopu (DS18B20) pole 4 Teplota pôdy (DS18B20) pole 5 Tlak vzduchu (bmp180) pole 6 Vonkajšia teplota (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" displej SSD1306 (0x3c, 0, 2); #define DHTPIN 1 // GPIO1 (Tx) #define DHTTYPE DHT11 #define ONE_WIRE_BUS 3 // GPIO3 = Rx const char* ssid = "YourSSID"; const char* heslo = "Vaše heslo"; const char* host = "api.thingspeak.com"; const char* writeAPIKey = "W367812985"; // použite SVOJE writeApi // veci DHT11 float temperature_buiten; teplota plaváka_buiten2; DHT dht (DHTPIN, DHTTYPE, 15); // veci DS18b20 OneWire oneWire (ONE_WIRE_BUS); // Inštancia oneWire na komunikáciu s akýmikoľvek zariadeniami OneWire Senzory DallasTemperature (& oneWire); // Odošlite adresu našej inštancie oneWire do Dallas Temperature. Sonda DeviceAddress01 = {0x28, 0x0F, 0x2A, 0x28, 0x00, 0x00, 0x80, 0x9F}; Sonda DeviceAddress02 = {0x28, 0x10, 0xA4, 0x57, 0x04, 0x00, 0x00, 0xA9}; // bmp180 veci Adafruit_BMP085 bmp; void setup () {// I2C veci Wire.pins (0, 2); Wire.begin (0, 2); // Inicializácia senzorov // dht 11 vecí dht.begin (); // ds18b20 stuff sensor.begin (); // ds18b20 // nastavenie rozlíšenia na 10 bitov (Môže byť 9 až 12 bitov.. nižšie je rýchlejšie) sensor.setResolution (Probe01, 10); sensor.setResolution (Probe02, 10); // veci bmp180 if (! bmp.begin ()) {// Serial.println ("No BMP180 /BMP085"); // while (1) {}} // OLED veci display.init (); display.flipScreenVertically (); display.setFont (ArialMT_Plain_10); oneskorenie (1000); // Pripojenie k sieti WiFi WiFi.begin (ssid, heslo); while (WiFi.status ()! = WL_CONNECTED) {oneskorenie (500); }} void loop () {// ds18b20stuff ------------------- sensor.requestTemperatures (); // Pošlite príkaz na získanie teplôt teplota_buiten = sensor.getTempC (Probe01); // teplota_buiten2 = sensor.getTempC (Probe02); // // veci dht11 ---------------- ---- vlhkosť v plaváku = dht.readHumidity (); plávajúca teplota = dht.readTemperature (); if (isnan (vlhkosť) || isnan (teplota)) {návrat; } // veci bmp ------------------------- String t = String (bmp.readTemperature ()); Reťazec p = Reťazec (bmp.readPressure ()); // veci OLED -------------------------- display.clear (); display.drawString (0, 10, p); // zobrazenie tlaku bmp.drawString (0, 24, String (teplota_buiten)); // ds18b20 display.drawString (0, 38, String (vlhkosť)); // zobrazenie dht11.display (); // vytvorenie TCP spojení WiFiClient klient; const int httpPort = 80; if (! client.connect (host, httpPort)) {return; } Adresa URL reťazca = "/aktualizovať? Kľúč ="; url += writeAPIKey; url += "& field1 ="; url += String (teplota); // roost (DHT1) url += "& field2 ="; url += String (vlhkosť); // roost (DHT11) url += "& field3 ="; url += String (teplota_buiten); // teplota coopu (DS18B20 č. 1) url += "& field4 ="; url += reťazec (teplota_buiten2); // teplota pôdy (DS18B29 č. 2) url += "& field5 ="; url += String (bmp.readTemperature ()); Vonkajšia teplota (BMP180) url += "& field6 ="; url += String (bmp.readPressure ()); // tlak vzduchu (BMP180) url += "\ r / n"; // Odoslať požiadavku na server client.print (String ("GET") + url + "HTTP/1.1 / r / n" + "Host:" + host + "\ r / n" + "Pripojenie: zavrieť / r / n / r / n "); oneskorenie (1000); }
……..
Krok 3: Viac
V súčasnej dobe tento program iba monitoruje, čo vám však bráni v tom, aby ste pridali svetelný senzor BH1750 I2C na meranie, či je večer alebo ráno alebo RTC, aby ste poznali dennú dobu a automaticky otvárali a zatvárali dvere coopu pomocou rozširujúcu kartu I/O PCF8574 I2C, alebo pretože je už v záhrade, pridajte prevodník PCF8591 alebo ADS1115 AD na meranie vlhkosti pôdy a v prípade potreby aktivujte čerpadlo. Alebo možno zapnúť ohrievač vodnej nádrže, keď teplota klesne pod nulu, ak je na to čip I2 C, to pravdepodobne dokáže použiť ESP8266.
Dôležitá poznámka: Program ako taký funguje dobre, ale ak do Rx alebo Tx pridáte ďalšie senzory, najmä ak ich zaradíte do výstupov, piny si môžu zrazu spomenúť, že v skutočnosti nie sú pinmi GPIO. Je lepšie od začiatku povedať, že piny sú teraz piny GPIO. Urobíte to tak, že do nastavenia vložíte nasledujúce vyhlásenia:
pinMode (1, FUNCTION_3);
pinMode (3, FUNCTION_3);
Odporúča:
4 -miestny 7 -segmentový displej 14 pinov s Arduino: 3 kroky
4 -miestny 7 -segmentový displej 14 pinov s Arduino: Vždy je dobré vyskúšať, či zariadenie funguje správne alebo nie, ak má tento komponent veľmi veľký počet pinov. V tomto projekte som testoval svoj 4 -miestny 7 -segmentový 14 -pinový displej. Všetky segmenty 7 budú zobrazovať 0 až 9 súčasne.
Ovládanie viacerých LED diód pomocou GPIO pinov Pythonu a Raspberry Pi: 4 kroky (s obrázkami)
Ovládanie viacerých LED diód pomocou GPIO pinov Pythonu a vášho Raspberry Pi: Tento návod ukazuje, ako ovládať viac pinov GPIO na vašom RaspberryPi tak, aby napájali 4 LED diódy. Tiež vás zavedie do parametrov a podmienených príkazov v Pythone. Náš predchádzajúci návod na používanie pinov GPIO vášho Raspberry Pi na
Opätovné použitie pinov rozhrania ATtiny84/85 SPI: 6 krokov
Opätovné použitie pinov rozhrania ATtiny84/85 SPI: Tento návod je nadväznosťou na „ladenie obvodu ATtiny84/85 so sériovým výstupom“; inštruovateľné a rozširuje konfiguráciu hardvéru a softvéru tak, aby vyriešila problém opätovného použitia pinov na stiahnutie programovania aplikáciou
ESP8266 pomocou pinov GPIO0/GPIO2/GPIO15: 4 kroky
ESP8266 s použitím pinov GPIO0/GPIO2/GPIO15: Aktualizácia 1. júla 2018-pridaná poznámka k preprogramovaniu, keď je výstupom GPIO0 Toto je veľmi krátka poznámka o tom, ako používať piny GPIO0/GPIO2 a GPIO15 na module ESP8266. Aktualizácia: Tiež skontrolujte Ako používať kolíky ESP8266-01 Úvod ESP8266 je nízky
Vývoj aplikácií pomocou GPIO pinov na DragonBoard 410c s operačným systémom Android a Linux: 6 krokov
Vývoj aplikácií pomocou GPIO pinov na DragonBoard 410c s operačnými systémami Android a Linux: Cieľom tohto tutoriálu je ukázať informácie potrebné na vývoj aplikácií pomocou kolíka GPIO na nízkorýchlostnom rozšírení DragonBoard 410c. Tento tutoriál prináša informácie o vývoji aplikácií pomocou pinov GPIO so systémom SYS na Andr