İçindekiler:
Video: ESP8266-01'in 4 Pinini Kullanma: 3 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:19
Not: Bu proje temelde sadece 2 pin kullanılan önceki bir talimatın bir uzantısıdır. ESP8266-01'deki sınırlı sayıda (4) GPIO pini herhangi bir ciddi uygulama için bir engel gibi görünebilir. akıllıca bir yol, sadece bu 4 pinle çok şey yapmak çok iyi. Son talimatlarımdan bazılarında, ESP8266-01 ile bir DHT11, DS18B20, bir OLED, bir RTC ve bir BMP180 kullanımını gösterdim. Bu talimatta, elde edilen verileri Thingspeak'e yüklerken 4 sensör ve bir ekran kullanmaya başladım. Aslında tavuk kümesimin içindeki ve çevresindeki atmosferi izleme projesi üzerinde genişliyor. Evet, buna meteoroloji istasyonu diyebilirsiniz, ancak bu sadece 4 pinin kullanımını göstermek içindir, bu şekilde kolayca başka bir şey yapabilirsiniz. I2C (BMP180 ve OLED) için 2 pin kullanacağım 2 DS18B20 sensörü için 1 pin DHT11 için OneWire protokolü1 pini ESP8266-01 artık tüm pinlerini kullanmış olsa da, OneWire protokolü ve/veya I2C protokolü aracılığıyla hala daha fazla sensör (veya aktüatör) ekleyebilirim. Öyleyse, neye ihtiyacımız var: Malzeme Listesi
- ESP8266-01
- 2x DS18B20
- 1x DHT11
- 1x BMP180
- OLED (isteğe bağlı)
ve tabii ki bir devre tahtası, bir 3.3 V PSU ve bazı devre tahtası kabloları ve bir Thingspeak hesabı
Malzeme Listesi ile ilgili sadece bazı açıklamalar:
- ESP8266-01Açıkçası proje ESP8266-01'in sınırlı pinlerini kullanmakla ilgili, ancak yine de bir tane satın almanız gerekiyorsa, daha fazla pini olan bir ESP8266-12'yi düşünebilirsiniz.
- DHT11A ucuz çok amaçlı nem ve sıcaklık sensörü. Çok doğru değil ama yapacak. Hala bir tane satın almanız gerekiyorsa, sözde daha doğru olan DHT22'yi tercih edebilirsiniz, ancak AMS2321'i de tercih edebilirsiniz. Bu, I2C için uygun olan bir çeşit DHT22'dir, böylece başka bir pini serbest bırakır.
- BMP180, sıcaklık ve Hava basıncını ölçer. BMP085'in halefidir, ancak şimdi kendisinin de bazı talipleri vardır. (Daha ucuz) BMP280 var, ancak sıcaklık, hava basıncı VE nemi ölçen BME280'i de tercih edebilirsiniz. Bu şekilde DHT/AMS sensöründen tasarruf edebilirsiniz
- OLEDI bunu kullandı, böylece sensörlerin okunup okunmadığını hızlıca görebildim, ancak bunu Thingspeak'te kontrol edebilirsiniz. OLED, tüm okunan değerleri yazdırmak için zaten çok küçük
Adım 1: Devre
ESP8266'nın 4 pimi PCB'de bu şekilde gösterilmemiştir ve çoğu resim yalnızca GPIO0 ve GPIO2'yi açıkça belirtir. Ancak ESP826-01'de bir GPIO1 pimi (Tx pimi) ve bir GPIO3 pimi (Rx pimi) bulunur.i bu pinleri aşağıdaki gibi kullanacak
- GPIO0 -> I2C portunun SDA pini
- GPIO1 ->DHT11
- GPIO2-> I2C portunun SCL pini
- GPIO3-> OneWire Veri Yolu
I2C modüllerimde zaten çekme dirençleri olduğundan, oraya herhangi bir I2C çekme direnci eklemeyeceğim. DS18B20'nin hala 4k7 kullandığım bir yukarı çekme direncine ihtiyacı var, ancak gerçekten o kadar kritik değil, 10k da iyi. DHT11'in ayrıca bir pull-up direncine de ihtiyacı var ama ben onun bir direnç olmadan da çalıştığını gördüm. 4k7 direnç eklemek, okumaların hiçbirini değiştirmedi, bu yüzden onu dışarıda bıraktım. 3 pinli DHT11 modüllerinin çoğu zaten modül üzerine 10 k lehimlidir. OLED için bağlantıları ben çizmediğimi şimdi fark ettim. Bunun nedeni, onu sadece hızlı bir kontrol için bağladım, ancak eklemek isterseniz, bu sadece SDA'yı SDA'ya ve SCL'yi SCL'ye bağlama meselesi… ve tabii ki toprak ve Vcc pinlerini muadillerine
2. Adım: Program
Program oldukça basittir. Önce kütüphaneleri ve sensörleri kurar. DHT11'i pim 1'e (Tx) ve DS18B20 için OnWire veri yolunu pim 3'e (Rx) bağlar. OneWire bus üzerinde 1'den fazla DS18B20 sensörü kullanabilmek için onların 'benzersiz adresini' bilmeniz gerekir. Eğer buna sahip değilseniz, bu adresleri okumak için bir programa ihtiyacınız var. Kolaylık için bunu bir arduino üzerinde yapın. Programda hala WiFi kimlik bilgilerinizi ve Thingspeak Kanalınız için yazma API'sini sağlamanız gerekir.
/*
Alan 1 sıcaklık tünek (DHT11) Alan 2 nem tünek (DHT11) alan 3 Kümes sıcaklığı (DS18B20) alan 4 toprak sıcaklığı (DS18B20) alan 5 Hava basıncı (bmp180) alan 6 Dış sıcaklık (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 ekran(0x3c, 0, 2); #define DHTPIN 1 //GPIO1 (Tx) #define DHTTYPE DHT11 #define ONE_WIRE_BUS 3 // GPIO3=Rx const char* ssid = "SSID'niz"; const char* şifre = "Parolanız"; const char* ana bilgisayar = "api.thingspeak.com"; const char* writeAPIKey = "W367812985"; // SİZİN writeApi'nizi kullanın //DHT11 malzeme kayan nokta sıcaklığı_buiten; yüzer sıcaklık_buiten2; DHT dht(DHTPIN, DHTTYPE, 15); //DS18b20 OneWire oneWire(ONE_WIRE_BUS); //oneWire örneği, herhangi bir OneWire cihazıyla iletişim kurmak için DallasTemperature sensörleri(&oneWire);// oneWire örneğimizin adresini Dallas Sıcaklığına iletin. DeviceAddress Probe01 = { 0x28, 0x0F, 0x2A, 0x28, 0x00, 0x00, 0x80, 0x9F}; DeviceAddress Probe02={0x28, 0x10, 0xA4, 0x57, 0x04, 0x00, 0x00, 0xA9}; // bmp180 malzeme Adafruit_BMP085 bmp; void setup() { //I2C öğeleri Wire.pins(0, 2); tel.başla(0, 2); // Sensörleri başlat //dht 11 şeyler dht.begin(); //ds18b20 stock sensor.begin();//ds18b20 // çözünürlüğü 10 bit olarak ayarlayın (9 ila 12 bit olabilir.. daha düşük daha hızlıdır) sensor.setResolution(Probe01, 10); sensörler.setResolution(Probe02, 10); //bmp180 şeyler if (!bmp.begin()) { // Serial.println("BMP180 Yok / BMP085"); // while (1) {} } //OLED öğeleri display.init(); display.flipScreenVertically(); display.setFont(ArialMT_Plain_10); gecikme(1000); // WiFi ağına bağlanın WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { gecikme(500); } } void loop() { //ds18b20stuff------------------- sensörler.requestTemperatures(); // Sıcaklıkları almak için komutu gönderin sıcaklık_buiten = sensor.getTempC(Probe01);// sıcaklık_buiten2 = sensor.getTempC(Probe02);// //dht11 malzeme---------------- ---- kayan nem = dht.readHumidity(); kayan nokta sıcaklığı = dht.readTemperature(); if (isnan(nem) || isnan(sıcaklık)) { dönüş; } //bmp öğeleri------------------------- String t= String(bmp.readTemperature()); String p=String(bmp.readPressure()); //OLED öğeleri-------------------------- display.clear(); display.drawString(0, 10, p);//bmp basınç display.drawString(0, 24, String(temperature_buiten));//ds18b20 display.drawString(0, 38, String(nem));//dht11 display. Görüntüle(); // TCP bağlantılarını yapın WiFiClient istemcisi; const int httpPort = 80; if (!client.connect(host, httpPort)) { return; } Dize url = "/update?key="; url += writeAPIKey; url += "&alan1="; url += Dize(sıcaklık);// tünek (DHT1) url += "&field2="; url += Dize(nem);// tünek (DHT11) url += "&field3="; url += String(temperature_buiten);//coop sıcaklığı (DS18B20 nr 1) url += "&field4="; url += Dize(sıcaklık_buiten2); //toprak sıcaklığı (DS18B29 nr 2) url +="&field5="; url +=String(bmp.readTemperature());Dış sıcaklık (BMP180) url +="&field6="; url +=String(bmp.readPressure());// Hava Basıncı (BMP180) url += "\r\n"; // Sunucuya istek gönder client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Ana Bilgisayar: " + ana bilgisayar + "\r\n" + "Bağlantı: kapat\r \n\r\n"); gecikme(1000); }
……..
3. Adım: Daha Fazla
Şu anda bu program sadece izliyor, ancak akşam mı yoksa sabah mı olduğunu ölçmek için bir BH1750 I2C ışık sensörü veya günün saatini bilmek için bir RTC eklemekten ve yardımı ile kümes kapısını otomatik olarak açıp kapatmaktan sizi alıkoyan nedir? bir PCF8574 I2C I/O genişletme kartı veya zaten bahçede olduğu için, toprak nemini ölçmek ve gerektiğinde bir pompayı etkinleştirmek için bir PCF8591 veya ADS1115 AD dönüştürücü ekleyin. Veya sıcaklık sıfırın altına düştüğünde şofben ısıtıcısını çalıştırabilir, bunun için bir I2 C çipi varsa, ESP8266 muhtemelen onu kullanabilir.
Yine de önemli bir not: Program olduğu gibi iyi çalışıyor, ancak Rx veya Tx'e başka sensörler eklerseniz, özellikle bunları çıkışlara yaparsanız, pinler aniden onların gerçekten GPIO pinleri olmadığını hatırlayabilir. Pinlere artık GPIO pinleri olduklarını en baştan söylemek daha iyidir. Biri bunu kuruluma aşağıdaki ifadeleri koyarak yapar:
pinMode(1, FUNCTION_3);
pinMode(3, FUNCTION_3);
Önerilen:
ESP8266 ile Analog Sensörleri Kullanma: 5 Adım
ESP8266 ile Analog Sensörleri Kullanma: Bir analogdan dijitale dönüştürücü (ADC, A/D, A–D veya A-to-D), bir analog sinyali dijital bir sinyale dönüştüren bir sistemdir. A/D dönüştürücüler, veri işleme amaçları için analog elektrik sinyallerini çevirir. Performans, güç,
ESP8266/ESP32 Kartları ile WiFi Otomatik Bağlantıyı Kullanma: 3 Adım
WiFi AutoConnect'i ESP8266/ESP32 Board'larla Kullanma: Bir akıllı telefon kullanarak WiFi erişim noktalarına bağlanmamızı ve bunları yönetmemizi sağlayan AutoConnect kitaplığının nasıl kullanılacağını öğreneceğiz. Yukarıdaki video, ihtiyacınız olan çeşitli ekranlarla birlikte süreç boyunca size rehberlik edecektir. hakkında bilgi edinmek için erişmek için
Ubidots-ESP32+Sıcaklık ve Nem Sensörünü Kullanma-Ubidots-Kullanma-Uyarı Oluşturma: 9 Adım
Ubidots-ESP32+Sıcaklık ve Nem Sensörü-Ubidots-Kullanma-Uyarı Oluşturma: Bu eğitimde, Sıcaklık ve nem sensörünü kullanarak farklı sıcaklık ve nem verilerini ölçeceğiz. Bu verileri Ubidots'a nasıl göndereceğinizi de öğreneceksiniz. Böylece farklı uygulamalar için her yerden analiz edebilirsiniz. Ayrıca e-posta oluşturarak
Ubidots+ESP32 ve Titreşim Sensörünü Kullanma-Uyarı Oluşturma-Kullanma: 8 Adım
Ubidots+ESP32 ve Titreşim Sensörünü Kullanma-Uyarı Oluşturma: Bu projede, Ubidots-titreşim sensörünü ve ESP32'yi kullanarak makine titreşimi ve sıcaklığı hakkında bir e-posta uyarısı oluşturacağız. motorlu araçlardaki makineler ve bileşenler. Titreşim ben
ESP8266'yı Arduino ve Blynk ile Kullanma: 4 Adım
ESP8266'yı Arduino ve Blynk ile Kullanma: Arduino Mega'nızı espp8266 kalkanını kullanarak blynk uygulamasına bağlayın