Isi kandungan:

IoT dipermudahkan: Memantau Pelbagai Sensor: 7 Langkah
IoT dipermudahkan: Memantau Pelbagai Sensor: 7 Langkah

Video: IoT dipermudahkan: Memantau Pelbagai Sensor: 7 Langkah

Video: IoT dipermudahkan: Memantau Pelbagai Sensor: 7 Langkah
Video: Overview of Orthostatic Intolerance 2024, Disember
Anonim
IoT dipermudahkan: Memantau Pelbagai Sensor
IoT dipermudahkan: Memantau Pelbagai Sensor
IoT dipermudahkan: Memantau Pelbagai Sensor
IoT dipermudahkan: Memantau Pelbagai Sensor

Beberapa minggu yang lalu, saya menerbitkan tutorial mengenai pemantauan suhu menggunakan DS18B20, sensor digital yang berkomunikasi melalui bas 1-Wire, menghantar data melalui internet dengan NodeMCU dan Blynk:

IoT dipermudahkan: Memantau Suhu Di Mana Saja

Tetapi apa yang kami terlepas dalam penerokaan, adalah salah satu kelebihan besar sensor jenis ini adalah kemungkinan mengumpulkan banyak data, dari pelbagai sensor yang disambungkan ke bas 1 wayar yang sama. Dan, sekarang masanya untuk menjelajahinya.

Kami akan memperluas apa yang dikembangkan pada tutorial terakhir, memantau sekarang dua sensor DS18B20, yang dikonfigurasi satu di Celcius dan satu lagi di Fahrenheit. Data akan dihantar ke Aplikasi Blynk, seperti yang ditunjukkan dalam gambarajah blok di atas.

Langkah 1: Bil Bahan

  • NodeMCU ESP 12-E (*)
  • Sensor Suhu 2 X DS18B20
  • Perintang 4.7K Ohms
  • Papan Roti
  • Pendawaian

(*) Sebarang jenis peranti ESP boleh digunakan di sini. Yang paling biasa adalah NodeMCU V2 atau V3. Kedua-duanya akan sentiasa berfungsi dengan baik.

Langkah 2: Sensor Suhu DS18B20

Sensor Suhu DS18B20
Sensor Suhu DS18B20

Kami akan menggunakan dalam tutorial ini versi kalis air dari sensor DS18B20. Ia sangat berguna untuk suhu jauh dalam keadaan basah, misalnya di tanah lembap. Sensor diasingkan dan dapat melakukan pengukuran hingga 125oC (Adafrut tidak mengesyorkan menggunakannya lebih dari 100oC kerana jaket PVC kabelnya).

DS18B20 adalah sensor digital yang menjadikannya baik untuk digunakan walaupun jarak jauh! Sensor suhu digital 1-wayar ini cukup tepat (± 0,5 ° C melebihi julat) dan boleh memberikan ketepatan hingga 12 bit dari penukar digital-ke-analog onboard. Mereka berfungsi dengan baik dengan NodeMCU menggunakan pin digital tunggal, dan anda juga boleh menghubungkan beberapa pin ke pin yang sama, masing-masing mempunyai ID 64-bit unik yang dibakar di kilang untuk membezakannya.

Sensor berfungsi dari 3.0 hingga 5.0V, yang bermaksud bahawa ia dapat dihidupkan terus dari salah satu pin NodeMCU 3.3V.

Sensor mempunyai 3 wayar:

  • Hitam: GND
  • Merah: VCC
  • Kuning: Data 1-Wire

Di sini, anda dapat mencari data lengkap: Lembaran Data DS18B20

Langkah 3: Menyambungkan Sensor ke NodeMCU

Menyambungkan Sensor ke NodeMCU
Menyambungkan Sensor ke NodeMCU
  1. Sambungkan 3 wayar dari setiap sensor di Breadboard mini seperti yang ditunjukkan pada foto di atas. Saya menggunakan penyambung khas untuk memasang kabel sensor dengan lebih baik.
  2. Perhatikan bahawa kedua-dua sensor ini selari. Sekiranya anda mempunyai lebih daripada 2 sensor, anda harus melakukan perkara yang sama.

    • Merah ==> 3.3V
    • Hitam ==> GND
    • Kuning ==> D4
  3. Gunakan perintang 4.7K ohm antara VCC (3.3V) dan Data (D4)

Langkah 4: Memasang Perpustakaan yang Diperuntukkan

Untuk menggunakan DS18B20 dengan betul, dua perpustakaan akan diperlukan:

  1. OneWire
  2. Suhu Dallas

Pasang kedua-dua perpustakaan tersebut di simpanan Arduino IDE Library anda.

Perhatikan bahawa perpustakaan OneWire HARUS menjadi yang istimewa, diubahsuai untuk digunakan dengan ESP8266, jika tidak, anda akan mendapat ralat semasa penyusunan. Anda akan mendapat versi terakhir di pautan di atas.

Langkah 5: Menguji Sensor

Menguji Sensor
Menguji Sensor

Untuk menguji sensor, muat turun fail di bawah dari GitHub saya:

NodeMCU_DS18B20_Dual_Se nsor_test.ino

/**************************************************************

* Ujian Pengirim Pelbagai Suhu * * 2 x Sensor OneWire: DS18B20 * Disambungkan ke NodeMCU D4 (atau Arduino Pin 2) * * Dibangunkan oleh Marcelo Rovai - 25 Ogos 2017 **************** ********************************************** / #sertakan # sertakan #define ONE_WIRE_BUS 2 // DS18B20 pada NodeMCU pin D4 OneWire oneWire (ONE_WIRE_BUS); DallasTemperature DS18B20 (& oneWire); persediaan tidak sah () {Serial.begin (115200); DS18B20.begin (); Serial.println ("Menguji data Sensor Dual"); } gelung void () {float temp_0; terapung temp_1; DS18B20.requestTemperatures (); temp_0 = DS18B20.getTempCByIndex (0); // Sensor 0 akan menangkap Temp dalam Celcius temp_1 = DS18B20.getTempFByIndex (1); // Sensor 0 akan menangkap Temp dalam Fahrenheit Serial.print ("Temp_0:"); Serial.print (temp_0); Serial.print ("oC. Temp_1:"); Cetakan bersiri (temp_1); Serial.println ("oF"); kelewatan (1000); }

Melihat kod di atas, kita harus perhatikan bahawa garis yang paling penting adalah:

temp_0 = DS18B20.getTempCByIndex (0); // Sensor 0 akan menangkap Temp dalam Celcius

temp_1 = DS18B20.getTempFByIndex (1); // Sensor 0 akan menangkap Temp di Fahrenheit

Yang pertama akan mengembalikan nilai dari Sensor [0] (lihat "indeks (0)") dalam Celcius (lihat bahagian kod: "getTempC". Baris kedua berkaitan dengan Sensor [1] dan akan mengembalikan data di Fahrenheit. Anda boleh mempunyai sensor "n" di sini kerana anda mempunyai "indeks" yang berbeza untuk masing-masing.

Muat naik sekarang kod di NodeMCU anda dan pantau suhu menggunakan Serial Monitor.

Foto di atas menunjukkan hasil yang diharapkan. Pegang setiap sensor di tangan anda, anda akan melihat suhu meningkat.

Langkah 6: Menggunakan Blynk

Menggunakan Blynk
Menggunakan Blynk
Menggunakan Blynk
Menggunakan Blynk

Sebaik sahaja anda mula menangkap data suhu, inilah masanya untuk melihatnya dari mana sahaja. Kami akan melakukan ini menggunakan Blynk. Jadi, semua data yang ditangkap akan dipaparkan dalam masa nyata pada peranti mudah alih anda dan kami juga akan membina simpanan sejarah untuk itu.

Ikuti langkah berikut:

  1. Buat Projek Baru.
  2. Beri nama (dalam kes saya "Monitor Suhu Ganda")
  3. Pilih Peranti Baru - ESP8266 (WiFi) sebagai "Peranti Saya"
  4. Salin TOKEN AUTH untuk digunakan dalam kod (anda boleh menghantarnya ke e-mel anda).
  5. Termasuk dua Widget "Gauge", yang menentukan:

    • Pin maya yang akan digunakan dengan setiap sensor: V10 (Sensor [0]) dan V11 (Sensor [1])
    • Julat suhu: -5 hingga 100 oC untuk Sensor [0]
    • Julat suhu: 25 hingga 212 oC untuk Sensor [1]
    • Kekerapan membaca data: 1 saat
  6. Termasuk Widget "Grafik Sejarah", yang menentukan V10 dan V11 sebagai pin maya
  7. Tekan "Main" (Segitiga di sudut kanan atas)

Sudah tentu, Aplikasi Blynk akan memberitahu anda bahawa NodeMCU tidak berfungsi. Sudah tiba masanya untuk memuat naik kod penuh di Arduino IDE anda. Anda boleh mendapatkannya di sini:

NodeMCU_Dual_Sensor_Blynk_Ext.ino

Tukar "data dummy" dengan bukti kelayakan anda sendiri.

/ * Kelayakan Blynk * /

char auth = "KOD AUTH BLYNK ANDA DI SINI"; / * Kelayakan WiFi * / char ssid = "SSID ANDA"; char pass = "KATA LALUAN ANDA";

Dan itu sahaja!

Di bawah kod penuh. Ini pada dasarnya adalah kod sebelumnya, di mana kita memasukkan dengan parameter Blynk dan fungsi tertentu. Perhatikan 2 baris terakhir kod. Itulah yang paling penting di sini. Sekiranya anda mempunyai lebih banyak sensor yang mengumpulkan data, anda juga harus mempunyai barisan baru yang setara dengan yang baru (dengan pin maya baru yang berkaitan).

/**************************************************************

* Monitor Suhu Pelbagai IoT dengan Blynk * Perpustakaan Blynk dilesenkan di bawah lesen MIT * Contoh kod ini berada dalam domain awam. * * Multiple OneWire Sensor: DS18B20 * Dibangunkan oleh Marcelo Rovai - 25 Ogos 2017 ********************************** **************************** / / * ESP & Blynk * / #include #include #define BLYNK_PRINT Serial // Komen ini kepada lumpuhkan cetakan dan jimat ruang / * kelayakan Blynk * / char auth = "KOD AUTH BLYNK ANDA DI SINI"; / * Kelayakan WiFi * / char ssid = "SSID ANDA"; char pass = "KATA LALUAN ANDA"; / * TIMER * / #termasuk pemasa SimpleTimer; / * Sensor Suhu DS18B20 * / #masuk #masuk #definisi ONE_WIRE_BUS 2 // DS18B20 pada arduino pin2 sepadan dengan D4 pada papan fizikal OneWire oneWire (ONE_WIRE_BUS); DallasTemperature DS18B20 (& oneWire); int temp_0; int temp_1; persediaan tidak sah () {Serial.begin (115200); Blynk.begin (auth, ssid, pass); DS18B20.begin (); timer.setInterval (1000L, getSendData); Serial.println (""); Serial.println ("Menguji data Sensor Dual"); } gelung kosong () {timer.run (); // Memulakan SimpleTimer Blynk.run (); } / ************************************************ *** * Hantar data Sensor ke Blynk ***************************************** ********* / batal getSendData () {DS18B20.requestTemperatures (); temp_0 = DS18B20.getTempCByIndex (0); // Sensor 0 akan menangkap Temp dalam Celcius temp_1 = DS18B20.getTempFByIndex (1); // Sensor 0 akan menangkap Temp dalam Fahrenheit Serial.print ("Temp_0:"); Serial.print (temp_0); Serial.print ("oC. Temp_1:"); Cetakan bersiri (temp_1); Serial.println ("oF"); Blynk.virtualWrite (10, temp_0); // pin maya V10 Blynk.virtualWrite (11, temp_1); // pin maya V11}

Setelah kod dimuat naik dan dijalankan, periksa aplikasi Blynk. Ia seharusnya juga berjalan seperti yang ditunjukkan pada skrin cetak di atas dari iPhone saya.

Langkah 7: Kesimpulannya

Kesimpulannya
Kesimpulannya

Seperti biasa, saya harap projek ini dapat membantu orang lain mencari jalan dalam dunia elektronik, robotik, dan IoT yang menarik!

Sila lawati GitHub saya untuk fail yang dikemas kini: NodeMCU Dual Temp Monitor

Untuk lebih banyak projek, sila lawati blog saya: MJRoBot.org

Saludos dari selatan dunia!

Jumpa anda di arahan saya yang seterusnya!

Terima kasih, Marcelo

Disyorkan: