Isi kandungan:

Menggunakan 4 Pin ESP8266-01: 3 Langkah
Menggunakan 4 Pin ESP8266-01: 3 Langkah

Video: Menggunakan 4 Pin ESP8266-01: 3 Langkah

Video: Menggunakan 4 Pin ESP8266-01: 3 Langkah
Video: Hanya 30 Ribuan sudah bisa merakit saklar WiFi Canggih - esp01 - esp8266 2024, November
Anonim
Menggunakan 4 Pin ESP8266-01
Menggunakan 4 Pin ESP8266-01
Menggunakan 4 Pin ESP8266-01
Menggunakan 4 Pin ESP8266-01
Menggunakan 4 Pin ESP8266-01
Menggunakan 4 Pin ESP8266-01

Catatan: Projek ini pada dasarnya adalah lanjutan dari instruksional sebelumnya yang hanya menggunakan 2 pin. Bilangan terhad (4) pin GPIO pada ESP8266-01 mungkin kelihatan seperti halangan, untuk aplikasi yang serius. Namun jika seseorang menggunakan pin di cara pintar adalah sangat baik untuk melakukan banyak perkara dengan hanya 4 pin tersebut. Dalam beberapa arahan saya baru-baru ini, saya telah menunjukkan penggunaan DHT11 DS18B20, OLED, RTC dan BMP180 dengan ESP8266-01. Dalam instruksional ini saya menetapkan untuk menggunakan 4 sensor dan paparan, sementara juga memuat naik data yang diperoleh ke Thingspeak. Ini sebenarnya berkembang pada projek memantau suasana di dalam dan sekitar kandang ayam saya. Ya, anda boleh menyebutnya sebagai weatherstation, tetapi hanya untuk menggambarkan penggunaan 4 pin, anda boleh dengan mudah membuat yang lain dengan cara ini Saya akan menggunakan 2 pin untuk I2C (BMP180 dan OLED) 1 pin untuk 2 sensor DS18B20 melalui Protokol OneWire1 pin untuk DHT11 Walaupun ESP8266-01 kini telah menggunakan semua pinnya, saya masih boleh menambahkan lebih banyak sensor (atau penggerak) melalui protokol OneWire dan / atau melalui protokol I2C. Jadi, apa yang kita perlukan: BOM

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

dan tentu saja papan roti, 3.3 V PSU dan beberapa wayar papan roti dan akaun Thingspeak

Hanya beberapa komen mengenai BOM:

  • ESP8266-01Tentunya projek ini adalah mengenai penggunaan pin terhad ESP8266-01, tetapi jika anda masih perlu membelinya, anda boleh mempertimbangkan ESP8266-12 yang memiliki lebih banyak pin
  • DHT11A sensor kelembapan dan suhu serba guna yang murah. Ia tidak tepat tetapi akan berjaya. Sekiranya anda masih perlu membelinya, anda boleh memilih DHT22 yang seharusnya lebih tepat, tetapi anda juga boleh memilih AMS2321. Itu adalah sejenis DHT22 yang sesuai untuk I2C, sehingga membebaskan pin lain
  • BMP180 mengukur suhu dan Tekanan Udara. Ia adalah penerus BMP085, tetapi sekarang juga mempunyai beberapa penyokong itu sendiri. Terdapat BMP280 (lebih murah), tetapi anda juga boleh memilih BME280 yang mengukur suhu, tekanan udara dan kelembapan. Dengan cara itu anda dapat menjimatkan sensor DHT / AMS
  • OLEDI menggunakannya begitu cepat sehingga saya dapat melihat sama ada sensor dibaca, tetapi anda juga boleh memeriksanya di Thingspeak. OLED terlalu kecil untuk mencetak semua nilai yang dibaca

Langkah 1: Litar

Litar
Litar

4 pin ESP8266 tidak ditunjukkan pada PCB, dan kebanyakan gambar hanya menyatakan GPIO0 dan GPIO2 dengan jelas. Walau bagaimanapun, ESP826-01 mempunyai pin GPIO1 (pin Tx) dan pin GPIO3 (pin Rx).i akan menggunakan pin tersebut seperti berikut

  • GPIO0 -> pin SDA port I2C
  • GPIO1 -> DHT11
  • GPIO2-> pin SCL dari port I2C
  • GPIO3-> Bas OneWire

Oleh kerana modul I2C saya sudah mempunyai perintang penarik, saya tidak akan menambahkan perintang penarik I2C di sana. DS18B20 masih memerlukan resistor penarik yang saya gunakan 4k7, tetapi sebenarnya tidak begitu kritikal, 10k juga bagus. DHT11 kononnya juga memerlukan perintang penarik tetapi saya dapati ia berfungsi juga. menambah perintang 4k7 tidak mengubah bacaan, jadi saya membiarkannya. Sebilangan besar modul 3 pin DHT11, sudah disolder 10 k ke modul. Saya baru sedar bahawa saya tidak membuat sambungan untuk OLED. Itu kerana saya hanya menyambungkannya untuk pemeriksaan cepat, tetapi sekiranya anda ingin menambahkannya, itu hanya masalah menghubungkan SDA ke SDA dan SCL ke SCL … dan tentu saja pin tanah dan pin Vcc ke rakan mereka

Langkah 2: Program

Program ini agak mudah. Mula-mula ia menyediakan perpustakaan dan sensor. Ia melampirkan DHT11 ke pin 1 (Tx) dan bas OnWire untuk DS18B20 ke pin 3 (Rx). Untuk menggunakan lebih daripada 1 sensor DS18B20 pada bas OneWire, anda perlu mengetahui 'alamat unik' mereka. Sekiranya anda tidak memilikinya maka anda memerlukan program untuk membaca alamat tersebut. Lakukan itu di arduino untuk kemudahan. Dalam program ini, anda masih perlu memberikan kelayakan WiFi anda dan juga API tulis untuk Saluran Thingspeak anda

/*

Medan 1 suhu roost (DHT11) Medan 2 kelembapan roost (DHT11) medan 3 Coop suhu (DS18B20) medan 4 suhu tanah (DS18B20) medan 5 Airpressure (bmp180) medan 6 Suhu luar (bmp180) * * / #masuk #masuk // https://www.pjrc.com/teensy/td_libs_OneWire.html #include // https://milesburton.com/Main_Page?title=Dallas_Tem… #include #include #include "SSD1306.h" paparan 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 * kata laluan = "Kata Laluan Anda"; const char * host = "api.thingspeak.com"; const char * writeAPIKey = "W367812985"; // gunakan writeApi ANDA // Bahan DHT11 mengapung suhu_buiten; suhu apungan_buiten2; DHT dht (DHTPIN, DHTTYPE, 15); // Perkara DS18b20 OneWire oneWire (ONE_WIRE_BUS); // contoh oneWire untuk berkomunikasi dengan mana-mana peranti OneWire DallasTemperature sensor (& oneWire); // Masukkan alamat instance oneWire kami ke Dallas Temperature. DeviceAddress Probe01 = {0x28, 0x0F, 0x2A, 0x28, 0x00, 0x00, 0x80, 0x9F}; DeviceAddress Probe02 = {0x28, 0x10, 0xA4, 0x57, 0x04, 0x00, 0x00, 0xA9}; // bmp180 barang Adafruit_BMP085 bmp; batal persediaan () {// I2C barang Wire.pins (0, 2); Wire.begin (0, 2); // Memulakan sensor // dht 11 perkara dht.begin (); // ds18b20 stuff sensors.begin (); // ds18b20 // tetapkan resolusi ke 10 bit (Boleh 9 hingga 12 bit.. lebih rendah lebih pantas) sensor.setResolution (Probe01, 10); sensor.setResolution (Probe02, 10); // bmp180 barang jika (! bmp.begin ()) {// Serial.println ("No BMP180 / BMP085"); // while (1) {}} // OLED stuff display.init (); display.flipScreenVertically (); display.setFont (ArialMT_Plain_10); kelewatan (1000); // Sambungkan ke rangkaian WiFi WiFi.begin (SSID, kata laluan); sementara (WiFi.status ()! = WL_CONNECTED) {kelewatan (500); }} gelung void () {// ds18b20stuff ------------------- sensors.requestTemperatures (); // Kirim arahan untuk mendapatkan suhu suhu_buiten = sensor.getTempC (Probe01); // suhu_buiten2 = sensor.getTempC (Probe02); // // barang dht11 ---------------- ---- kelembapan apungan = dht.readHumidity (); suhu apungan = dht.readTemperature (); jika (isnan (kelembapan) || isnan (suhu)) {kembali; } // barang bmp ------------------------- String t = String (bmp.readTemperature ()); Rentetan p = Rentetan (bmp.readPressure ()); // Barang OLED -------------------------- display.clear (); display.drawString (0, 10, p); // paparan tekanan bmp.drawString (0, 24, String (temperature_buiten)); // ds18b20 display.drawString (0, 38, String (kelembapan)); // paparan dht11. paparan (); // buat sambungan TCP pelanggan WiFiClient; const int httpPort = 80; jika (! client.connect (host, httpPort)) {return; } String url = "/ kemas kini? Key ="; url + = tulisAPIKey; url + = "& bidang1 ="; url + = String (suhu); // roost (DHT1) url + = "& field2 ="; url + = String (kelembapan); // roost (DHT11) url + = "& field3 ="; url + = String (temperature_buiten); // suhu kandang (DS18B20 nr 1) url + = "& field4 ="; url + = Rentetan (suhu_buiten2); // suhu tanah (DS18B29 nr 2) url + = "& lapangan5 ="; url + = String (bmp.readTemperature ()); Suhu luar (BMP180) url + = "& field6 ="; url + = String (bmp.readPressure ()); // Tekanan Udara (BMP180) url + = "\ r / n"; // Kirim permintaan ke klien pelayan.print (String ("GET") + url + "HTTP / 1.1 / r / n" + "Host:" + host + "\ r / n" + "Sambungan: tutup / r / n / r / n "); kelewatan (1000); }

……..

Langkah 3: Lagi

Pada masa ini program ini hanya memantau, tetapi apa yang menghalang anda daripada menambahkan sensor cahaya BH1750 I2C untuk mengukur sama ada waktu petang atau pagi atau RTC untuk mengetahui waktu siang dan untuk membuka dan menutup pintu kandang secara automatik dengan bantuan kad pengembangan I / O PCF8574 I2C, atau seperti yang sudah ada di taman, tambahkan penukar PCF8591 atau ADS1115 AD untuk mengukur kelembapan tanah dan mengaktifkan pam apabila perlu. Atau mungkin menghidupkan pemanas lembangan air apabila suhu jatuh di bawah zeroif sekiranya ada cip I2 C untuknya, ESP8266 mungkin dapat menggunakannya.

Catatan penting walaupun: Program ini berfungsi dengan baik, tetapi jika anda menambahkan sensor lain ke Rx atau Tx, terutamanya jika anda menjadikannya output, pin tiba-tiba mungkin ingat bahawa itu bukan pin GPIO. Lebih baik memberitahu pin dari awal bahawa mereka sekarang adalah pin GPIO. Seseorang melakukannya dengan meletakkan penyataan berikut dalam persediaan:

pinMode (1, FUNCTION_3);

pinMode (3, FUNCTION_3);

Disyorkan: