Daftar Isi:

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: Proyek ini pada dasarnya merupakan perpanjangan dari instruksi sebelumnya yang hanya menggunakan 2 pin. Terbatasnya jumlah (4) pin GPIO pada ESP8266-01 mungkin tampak seperti hambatan, untuk aplikasi serius apa pun. Namun jika seseorang menggunakan pin di cara cerdas sangat mungkin untuk melakukan banyak hal hanya dengan 4 pin itu. Dalam beberapa instruksi saya baru-baru ini, saya telah menunjukkan penggunaan DHT11, DS18B20, OLED, RTC, dan BMP180 dengan ESP8266-01. Dalam instruksi ini saya mulai menggunakan 4 sensor dan layar, sambil juga mengunggah data yang diperoleh ke Thingspeak. Ini sebenarnya berkembang pada proyek pemantauan atmosfer di dalam dan sekitar kandang ayam saya. Ya, Anda bisa menyebutnya stasiun cuaca, tetapi itu hanya untuk menggambarkan penggunaan 4 pin, Anda dapat dengan mudah membuat sesuatu yang lain dengan cara ini Saya akan menggunakan 2 pin untuk I2C (BMP180 dan OLED)1 pin untuk 2 sensor DS18B20 melalui Pin protokol1 OneWire untuk DHT11Meskipun ESP8266-01 sekarang memiliki semua pin yang digunakan, saya masih dapat menambahkan lebih banyak sensor (atau aktuator) melalui protokol OneWire dan/atau melalui protokol I2C. Jadi, apa yang kita butuhkan:BOM

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

dan tentu saja papan tempat memotong roti, PSU 3,3 V dan beberapa kabel papan tempat memotong roti dan akun Thingspeak

Hanya beberapa komentar tentang BOM:

  • ESP8266-01Jelas proyek ini tentang memanfaatkan pin terbatas dari ESP8266-01, tetapi jika Anda masih perlu membelinya, Anda dapat mempertimbangkan ESP8266-12 yang memiliki lebih banyak pin
  • DHT11A murah semua tujuan kelembaban dan sensor suhu. Ini tidak terlalu akurat tetapi akan berhasil. Jika Anda masih perlu membelinya, Anda dapat memilih DHT22 yang dianggap lebih akurat, tetapi Anda juga dapat memilih AMS2321. Itu adalah semacam DHT22 yang cocok untuk I2C, sehingga membebaskan pin lain
  • BMP180mengukur suhu dan tekanan udara. Ini adalah penerus BMP085, tetapi sekarang juga memiliki beberapa suvesor sendiri. Ada BMP280 (lebih murah), tetapi Anda juga dapat memilih BME280 yang mengukur suhu, tekanan udara, DAN kelembapan. Dengan begitu Anda dapat menghemat sensor DHT/AMS
  • OLEDI baru saja menggunakannya sehingga saya dapat dengan cepat melihat apakah sensor terbaca, tetapi Anda juga dapat memeriksanya di Thingspeak. OLED terlalu kecil untuk mencetak semua nilai yang dibaca

Langkah 1: Sirkuit

Sirkuit
Sirkuit

4 pin ESP8266 tidak ditunjukkan seperti itu pada PCB, dan sebagian besar gambar hanya menyatakan dengan jelas GPIO0 dan GPIO2. Namun ESP826-01 memiliki pin GPIO1 (pin Tx) dan pin GPIO3 (pin Rx).i akan menggunakan pin tersebut sebagai berikut:

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

Karena modul I2C saya sudah memiliki resistor pull up, saya tidak akan menambahkan resistor pullup I2C di sana. DS18B20 masih membutuhkan resistor pull up yang saya gunakan 4k7, tetapi sebenarnya tidak terlalu kritis, 10k juga bagus. DHT11 seharusnya juga membutuhkan resistor pull-up tetapi saya menemukan itu berfungsi tanpa resistor juga. menambahkan resistor 4k7 tidak mengubah pembacaan apa pun, jadi saya meninggalkannya. Banyak dari modul DHT11 3 pin, sudah memiliki 10 k disolder ke modul. Saya baru menyadari bahwa saya tidak menggambar koneksi untuk OLED. Itu karena saya hanya menghubungkannya untuk pemeriksaan cepat, tetapi jika Anda ingin menambahkannya, ini hanya masalah menghubungkan SDA ke SDA dan SCL ke SCL… dan tentu saja ground dan pin Vcc ke rekan-rekan mereka

Langkah 2: Program

Program ini cukup mudah. Pertama, set up library dan sensor. Ini menempelkan DHT11 ke pin 1 (Tx) dan bus OnWire untuk DS18B20 ke pin 3 (Rx). Untuk menggunakan lebih dari 1 sensor DS18B20 pada bus OneWire, Anda perlu mengetahui 'alamat unik' mereka. Jika Anda tidak memilikinya maka Anda memerlukan program untuk membaca alamat tersebut. Lakukan itu di arduino untuk kemudahan. Dalam program ini Anda masih harus memberikan kredensial WiFi Anda serta API tulis untuk Saluran Thingspeak Anda

/*

Bidang 1 temp roost (DHT11) Lapangan 2 kelembaban roost (DHT11) bidang 3 Suhu kandang (DS18B20) bidang 4 suhu tanah (DS18B20) bidang 5 Tekanan udara (bmp180) bidang 6 Suhu luar (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" Layar 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 sandi = "Kata Sandi Anda"; const char* host = "api.thingspeak.com"; const char* writeAPIKey = "W367812985"; //gunakan writeApi ANDA //DHT11 barang float temperature_buiten; mengapung temperature_buiten2; DHT dht(DHTPIN, DHTTYPE, 15); //DS18b20 barang OneWire oneWire(ONE_WIRE_BUS); //instans oneWire untuk berkomunikasi dengan perangkat OneWire sensor DallasTemperature(&oneWire);// Melewati alamat instans 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 stuff Adafruit_BMP085 bmp; void setup() { //I2C stuff Wire.pins(0, 2); Kawat.begin(0, 2); // Inisialisasi sensor //dht 11 stuff dht.begin(); //ds18b20 stuff sensor.begin();//ds18b20 // atur resolusi ke 10 bit (Bisa 9 hingga 12 bit.. lebih rendah lebih cepat) sensor.setResolution(Probe01, 10); sensor.setResolution(Probe02, 10); //bmp180 stuff if (!bmp.begin()) { // Serial.println("Tidak ada BMP180 / BMP085"); // while (1) {} } //OLED stuff display.init(); display.flipScreenVertikal(); display.setFont(ArialMT_Plain_10); penundaan (1000); // Hubungkan ke jaringan WiFi WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); } } void loop() { //ds18b20stuff-------------------sensor.requestTemperatures(); // Kirim perintah untuk mendapatkan temperatur temperature_buiten = sensor.getTempC(Probe01);// temperature_buiten2 = sensor.getTempC(Probe02);// //dht11 stuff---------------- ---- float kelembaban = dht.readHumidity(); suhu float = dht.readTemperature(); if (isnan(kelembaban) || isnan(suhu)) { kembali; } //bmp stuff------------------------- String t= String(bmp.readTemperature()); String p=String(bmp.readPressure()); //barang OLED-------------------------- display.clear(); display.drawString(0, 10, p);//bmp tekanan tampilan.drawString(0, 24, String(temperature_buiten));//ds18b20 display.drawString(0, 38, String(kelembaban));//dht11 tampilan.menampilkan(); // membuat koneksi TCP klien WiFiClient; const int httpPort = 80; if (!client.connect(host, httpPort)) { kembali; } String url = "/update?key="; url += tulisAPIKey; url += "&bidang1="; url += String(suhu);// bertengger (DHT1) url += "&field2="; url += String(kelembaban);// bertengger (DHT11) url += "&field3="; url += String(temperature_buiten);//suhu kandang (DS18B20 nr 1) url += "&field4="; url += String(temperature_buiten2); //suhu tanah (DS18B29 nr 2) url +="&field5="; url +=String(bmp.readTemperature());Suhu luar (BMP180) url +="&field6="; url +=String(bmp.readPressure());// Tekanan Udara (BMP180) url += "\r\n"; // Kirim permintaan ke server client.print(String("GET") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r \n\r\n"); penundaan (1000); }

……..

Langkah 3: Lainnya

Saat ini program ini hanya memantau, tetapi apa yang menghentikan Anda dari menambahkan sensor cahaya BH1750 I2C untuk mengukur apakah itu malam atau pagi atau RTC untuk mengetahui waktu hari dan untuk membuka dan menutup pintu kandang secara otomatis dengan bantuan kartu ekspansi I/O PCF8574 I2C, atau seperti yang sudah ada di kebun, tambahkan konverter PCF8591 atau ADS1115 AD untuk mengukur kelembapan tanah dan aktifkan pompa bila perlu. Atau mungkin menyalakan pemanas bak air ketika suhu turun di bawah nol jika ada chip I2 C untuk itu, ESP8266 mungkin dapat menggunakannya.

Catatan penting: Program ini bekerja dengan baik, tetapi jika Anda menambahkan sensor lain ke Rx atau Tx, terutama jika Anda membuatnya menjadi output, pin mungkin tiba-tiba ingat bahwa itu bukan pin GPIO yang sebenarnya. Lebih baik untuk memberitahu pin dari awal bahwa mereka sekarang pin GPIO. Salah satu melakukannya dengan meletakkan pernyataan berikut dalam setup:

pinMode(1, FUNCTION_3);

pinMode(3, FUNCTION_3);

Direkomendasikan: