Talaan ng mga Nilalaman:
Video: Gamit ang 4 na Pins ng ESP8266-01: 3 Mga Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:13
Tandaan: Ang proyektong ito ay karaniwang isang extension ng isang naunang itinuro na gumagamit lamang ng 2 mga pin. Ang limitadong bilang (4) ng mga GPIO pin sa ESP8266-01 ay maaaring parang isang balakid, para sa anumang seryosong aplikasyon. Gayunpaman kung ang isang gumagamit ng mga pin sa isang matalinong paraan posible na gumawa ng marami sa mga 4 na pin lamang na iyon. Sa ilan sa aking mga kamakailan-lamang na instruksyon, ipinakita ko ang paggamit ng isang DHT11 isang DS18B20, isang OLED, isang RTC at isang BMP180 sa ESP8266-01. Sa itinuturo na ito nagtakda ako upang gumamit ng 4 na mga sensor at isang display, habang ina-upload din ang nakuha na data sa Thingspeak. Ito ay talagang lumalawak sa isang proyekto ng pagsubaybay sa kapaligiran sa loob at paligid ng aking manukan. Oo, maaari mo itong tawaging isang Weatherstation, ngunit upang mailarawan lamang ang paggamit ng 4 na mga pin, madali kang makagawa ng ibang bagay sa ganitong paraan Gumagamit ako ng 2 mga pin para sa I2C (BMP180 at OLED) 1 pin para sa 2 DS18B20 sensor sa pamamagitan ng Kahit na ang ESP8266-01 ngayon ay ginagamit ang lahat ng mga pin nito, maaari pa rin akong magdagdag ng higit pang mga sensor (o actuators) sa pamamagitan ng OneWire protocol at / o sa pamamagitan ng I2C protocol. Kaya, ano ang kailangan namin: BOM
- ESP8266-01
- 2x DS18B20
- 1x DHT11
- 1x BMP180
- OLED (opsyonal)
at umikot ng isang breadboard, isang 3.3 V PSU at ilang mga wire ng breadboard at isang bagay na Thingspeak
Ilang mga pangungusap lamang tungkol sa BOM:
- Malinaw na ang proyekto ay tungkol sa paggamit ng mga limitadong mga pin ng ESP8266-01, ngunit kung kailangan mo pa ring bumili ng isa, maaari mong isaalang-alang ang isang ESP8266-12 na may maraming mga pin
- DHT11A mura ang lahat ng layunin ng kahalumigmigan at temperatura sensor. Ito ay hindi masyadong tumpak ngunit gagawin ito. Kung kailangan mo pa ring bumili ng isa, maaari kang pumili para sa DHT22 na mas wastong mas wasto, ngunit maaari mo ring mag-opt para sa AMS2321. Iyon ay isang uri ng DHT22 na angkop para sa I2C, sa gayon ay nagpapalaya ng isa pang pin
- BMP180 sukat ng temperatura at Airpressure. Ito ang kahalili ng BMP085, ngunit mayroon din itong ilang mga suvessors mismo. Mayroong (mas murang) BMP280, ngunit maaari mo ring mag-opt para sa BME280 na sumusukat sa temperatura, airpresure AT halumigmig. Sa ganoong paraan makaka-save ka sa sensor ng DHT / AMS
- Ginamit lang iyon ng OLEDI kaya't mabilis kong nakita kung nabasa ang mga sensor, ngunit maaari mo ring suriin ito sa Thingspeak. Ang OLED ay masyadong maliit pa rin upang mai-print ang lahat ng mga binasang halaga
Hakbang 1: Ang Circuit
Ang 4 na mga pin ng ESP8266 ay hindi ipinahiwatig na tulad sa PCB, at ang karamihan sa mga imahe ay malinaw lamang na isinasaad ang GPIO0 at GPIO2. Gayunpaman ang ESP826-01 ay mayroong aa GPIO1 pin (ang Tx pin) at isang GPIO3 pin (ang Rx pin). gagamitin ang mga pin na tulad ng sumusunod
- GPIO0 -> SDA pin ng I2C port
- GPIO1 -> DHT11
- GPIO2-> SCL pin ng I2C port
- GPIO3-> OneWire Bus
Tulad ng aking mga module na I2C na mayroon nang mga pull up resistor, hindi ako magdagdag ng anumang I2C pullup resistors doon. Ang DS18B20 ay nangangailangan pa rin ng isang pull up risistor na kung saan ginamit ko ang isang 4k7, ngunit ito ay talagang hindi na kritikal, isang 10k ay mabuti din. Kailangan din ng DHT11 ng isang pull-up risistor ngunit nahanap kong gumana ito nang wala rin. ang pagdaragdag ng isang 4k7 risistor ay hindi nagbago ng anumang mga pagbabasa, kaya't iniwan ko ito. Marami sa mga module ng 3 pin DHT11, mayroon nang 10 k na solder sa module. Napagtanto ko na hindi ko iginuhit ang mga koneksyon para sa OLED. Iyon ay dahil na-hook ko lamang ito para sa isang mabilis na pagsusuri, ngunit kung nais mong idagdag ito, ito ay isang bagay lamang ng pagkonekta sa SDA sa SDA at SCL sa SCL … at pag-iskedyul ang mga ground at Vcc pin sa kanilang mga katapat
Hakbang 2: Ang Programa
Ang programa ay medyo prangka. Una nitong itinatakda ang mga aklatan at sensor. Nakakabit nito ang DHT11 upang i-pin ang 1 (Tx) at ang OnWire bus para sa DS18B20 upang i-pin ang 3 (Rx). Upang magamit ang higit sa 1 sensor ng DS18B20 sa OneWire bus, kailangan mong malaman ang kanilang 'natatanging adress'. Kung wala ka nito kailangan mo ng isang programa upang mabasa ang mga address. Gawin iyon sa isang arduino para sa kadalian. Sa programa kailangan mo pa ring ibigay ang iyong mga kredensyal sa WiFi pati na rin ang isulat ang API para sa iyong Thingspeak Channel
/*
Patlang 1 temp roost (DHT11) Patlang 2 kahalumigmigan roost (DHT11) patlang 3 Coop temperatura (DS18B20) patlang 4 temperatura ng lupa (DS18B20) patlang 5 Airpressure (bmp180) patlang 6 Sa labas ng temperatura (bmp180) * * / # isama ang # isama // https://www.pjrc.com/teensy/td_libs_OneWire.html #include // https://milesburton.com/Main_Page?title=Dallas_Tem… #include #include #include "SSD1306.h" display na 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 * password = "YourPassword"; const char * host = "api.thingspeak.com"; const char * writeAPIKey = "W367812985"; // use HIS writeApi // DHT11 bagay float temperatura_buiten; float temperatura_buiten2; DHT dht (DHTPIN, DHTTYPE, 15); // DS18b20 bagay na OneWire oneWire (ONE_WIRE_BUS); // oneWire instance upang makipag-usap sa anumang mga aparato ng OneWire na DallasTemperature sensor (& oneWire); // Pass address ng aming oneWire instance sa Dallas Temperature. DeviceAddress Probe01 = {0x28, 0x0F, 0x2A, 0x28, 0x00, 0x00, 0x80, 0x9F}; DeviceAddress Probe02 = {0x28, 0x10, 0xA4, 0x57, 0x04, 0x00, 0x00, 0xA9}; // bmp180 bagay Adafruit_BMP085 bmp; void setup () {// I2C bagay na Wire.pins (0, 2); Wire.begin (0, 2); // Initialize sensors // dht 11 bagay dht.begin (); // ds18b20 bagay sensors.begin (); // ds18b20 // itakda ang resolusyon sa 10 bit (Maaaring 9 hanggang 12 bits.. mas mababa ang mas mabilis) sensors.setResolution (Probe01, 10); sensors.setResolution (Probe02, 10); // bmp180 bagay kung (! bmp.begin ()) {// Serial.println ("Walang BMP180 / BMP085"); // habang (1) {}} // OLED bagay na display.init (); display.flipScreenVertically (); display.setFont (ArialMT_Plain_10); pagkaantala (1000); // Kumonekta sa WiFi network WiFi.begin (ssid, password); habang (WiFi.status ()! = WL_CONNected) {pagkaantala (500); }} void loop () {// ds18b20stuff ------------------- sensors.requestTemperature (); // Ipadala ang utos upang makakuha ng temperatura ng temperatura_buiten = sensors.getTempC (Probe01); // temperatura_buiten2 = sensors.getTempC (Probe02); // // dht11 bagay ---------------- ---- float halumigmig = dht.readHumidity (); temperatura ng float = dht.readTemperature (); kung (isnan (halumigmig) || isnan (temperatura)) {bumalik; } // bmp bagay-bagay ----------------- String t = String (bmp.readTemperature ()); String p = String (bmp.readPressure ()); // OLED bagay-bagay ---- display.clear (); display.drawString (0, 10, p); // display ng bmp pressure.drawString (0, 24, String (temperatura_buiten)); // ds18b20 display.drawString (0, 38, String (halumigmig)); // display ng dht11. ipakita (); // gumawa ng mga koneksyon sa TCP WiFiClient client; const int httpPort = 80; kung (! client.connect (host, httpPort)) {return; } String url = "/ update? Key ="; url + = writeAPIKey; url + = "& field1 ="; url + = String (temperatura); // roost (DHT1) url + = "& field2 ="; url + = String (halumigmig); // roost (DHT11) url + = "& field3 ="; url + = String (temperatura_buiten); // temperatura ng coop (DS18B20 nr 1) url + = "& field4 ="; url + = String (temperatura_buiten2); // temperatura ng lupa (DS18B29 nr 2) url + = "& field5 ="; url + = String (bmp.readTemperature ()); Sa labas ng temperatura (BMP180) url + = "& field6 ="; url + = String (bmp.readPressure ()); // Airpressure (BMP180) url + = "\ r / n"; // Send request to the server client.print (String ("GET") + url + "HTTP / 1.1 / r / n" + "Host:" + host + "\ r / n" + "Connection: close / r / n / r / n "); pagkaantala (1000); }
……..
Hakbang 3: Dagdag pa
Sa kasalukuyan ang program na ito ay sinusubaybayan lamang, ngunit ano ang pipigilan ka sa pagdaragdag ng isang ilaw ng BH1750 I2C upang sukatin kung gabi o umaga o isang RTC upang malaman ang oras ng araw at upang buksan at isara ang pintuan ng coop nang may tulong ng isang PCF8574 I2C I / O expansion card, o dahil nasa hardin na ito, magdagdag ng isang PCF8591 o ADS1115 AD converter upang masukat ang halumigmig sa lupa at buhayin ang isang bomba kung kinakailangan. O baka ang paglipat sa pampainit ng palanggana ng tubig kapag ang temperatura ay bumaba sa ibaba zeroif mayroong isang chip na I2 C para dito, maaaring magamit ito ng ESP8266.
Gayunpaman, isang mahalagang tala: Ang programa ay gumagana nang maayos, ngunit kung magdagdag ka ng iba pang mga sensor sa Rx o Tx, lalo na kung gagawin mo itong mga output, maaaring biglang matandaan ng mga pin na hindi talaga sila GPIO pin. Mas mahusay na sabihin sa mga pin mula sa simula na sila ngayon ay mga GPIO pin. Ginagawa iyon ng isa sa pamamagitan ng paglalagay ng mga sumusunod na pahayag sa pag-setup:
pinMode (1, FUNCTION_3);
pinMode (3, FUNCTION_3);
Inirerekumendang:
Internet Clock: Ipakita ang Petsa at Oras Gamit ang isang OLED Gamit ang ESP8266 NodeMCU Sa NTP Protocol: 6 na Hakbang
Internet Clock: Display Date and Time With an OLED Gamit ang ESP8266 NodeMCU With NTP Protocol: Kumusta mga tao sa mga itinuturo na ito na magtatayo kami ng isang orasan sa internet na magkakaroon ng oras mula sa internet kaya't ang proyektong ito ay hindi mangangailangan ng anumang RTC upang tumakbo, kakailanganin lamang nito ang isang nagtatrabaho koneksyon sa internet At para sa proyektong ito kailangan mo ng isang esp8266 na magkakaroon ng
Manatiling Ligtas Gamit ang Bikelight na Ito Gamit ang Mga Senyas na Pagliko: 5 Hakbang (na may Mga Larawan)
Manatiling Ligtas Gamit ang Bikelight na Ito Gamit ang Mga Sinyales na Pag-turn: Gustong-gusto kong sumakay ng bisikleta, karaniwang ginagamit ko ito upang makarating sa paaralan. Sa oras ng taglamig, madalas na madilim pa rin sa labas at mahirap para sa ibang mga sasakyan na makita ang mga signal ng aking kamay na lumiliko. Samakatuwid ito ay isang malaking panganib dahil maaaring hindi makita ng mga trak na nais kong
Paano Gumawa ng isang Device ng IoT upang Makontrol ang Mga Kagamitan at Subaybayan ang Panahon Gamit ang Esp8266: 5 Mga Hakbang
Paano Gumawa ng isang IoT Device upang Makontrol ang Mga Kagamitan at Subaybayan ang Panahon Gamit ang Esp8266: Ang Internet ng mga bagay (IoT) ay ang inter-networking ng mga pisikal na aparato (tinukoy din bilang " mga konektadong aparato " at " mga smart device "), mga gusali, at iba pang mga item - naka-embed sa electronics, software, sensor, actuators, at
Pag-unlad ng Mga Aplikasyon Gamit ang GPIO Pins sa DragonBoard 410c Sa Mga Sistema ng Pagpapatakbo ng Android at Linux: 6 na Hakbang
Pag-unlad ng Mga Aplikasyon Gamit ang GPIO Pins sa DragonBoard 410c Sa Mga Sistemang Pagpapatakbo ng Android at Linux: Ang layunin ng tutorial na ito ay upang ipakita ang impormasyong kinakailangan upang makabuo ng mga application gamit ang GPIO pin sa DragonBoard 410c mababang bilis na pagpapalawak. Ang tutorial na ito ay nagpapakita ng impormasyon para sa pagbuo ng mga application gamit ang mga GPIO pin na may SYS sa Andr
Kontrolin ang Arduino Gamit ang Smartphone Sa pamamagitan ng USB Gamit ang Blynk App: 7 Mga Hakbang (na may Mga Larawan)
Kontrolin ang Arduino Gamit ang Smartphone Sa Pamamagitan ng USB Sa Blynk App: Sa tutorial na ito, matututunan namin kung paano gamitin ang Blynk app at Arduino upang makontrol ang lampara, ang kumbinasyon ay sa pamamagitan ng USB serial port. Ang layunin ng pagtuturo na ito ay upang ipakita ang pinakasimpleng solusyon sa malayo-pagkontrol ng iyong Arduino o c