Isi kandungan:

Pencatat Suhu WiFi (dengan ESP8266): 11 Langkah (dengan Gambar)
Pencatat Suhu WiFi (dengan ESP8266): 11 Langkah (dengan Gambar)

Video: Pencatat Suhu WiFi (dengan ESP8266): 11 Langkah (dengan Gambar)

Video: Pencatat Suhu WiFi (dengan ESP8266): 11 Langkah (dengan Gambar)
Video: Mengirim data suhu dan kelembapan (Sensor DHT11) ke Blynk Cloud/Blynk IoT dengan NodeMCU ESP8266 2024, Julai
Anonim
Image
Image
Bahan
Bahan

Helo, gembira melihat anda di sini. Saya harap dalam arahan ini anda akan dapati beberapa maklumat berguna. Jangan ragu untuk menghantar cadangan, soalan,… Berikut adalah beberapa data asas dan gambaran keseluruhan ringkas mengenai projek ini. Untuk pengguna mudah alih: Video. Beritahu saya pendapat anda mengenai projek di bahagian komen, terima kasih. Saya baru-baru ini membeli papan NodeMcu (berdasarkan esp8266) hanya untuk mencubanya jadi ini bukan projek yang sangat maju. Tetapi ia berfungsi dan itulah yang saya perlukan, jadi tidak mengapa. Fungsi utama untuk data logger ini adalah mengumpulkan suhu dan menyimpannya ke pelayan. Ini membolehkan pengguna memeriksa data dan grafik dalam talian walaupun mereka tidak berada di lokasi yang sama dengan penebang (misalnya untuk stesen cuaca). Ciri lain yang berguna ialah kemas kini OTA yang termasuk dalam kod yang membolehkan pengguna mengemas kini dan menyesuaikan perisian dengan mudah. Saya akan menganalisis dua sensor dan kaedah pemerolehan yang berkaitan untuk membuat keseimbangan semua kebaikan dan keburukan.

Spoiler: setelah melakukan sedikit ujian, saya mendapati bahawa sensor digital seperti DS18B20 adalah penyelesaian terbaik kerana ia menawarkan kestabilan dan ketepatan yang lebih tinggi. Ia sudah kalis air dan dengan kabel.

Langkah 1: Bahan

Bahan
Bahan
Bahan
Bahan
Bahan
Bahan

Ini adalah projek minimum dengan hanya beberapa komponen luaran, kerana ini senarai BOM akan sangat pendek. Walau bagaimanapun, mari kita lihat bahan apa yang diminta:

  • NodeMcu V3 (atau mana-mana ESP8266 µprocessor yang serasi);
  • RGB dipimpin (anod biasa);
  • Perintang untuk led (1x10Ω, 1x22Ω, 1x100Ω, 1x10kΩ)
  • DS18B20 (termometer Bersepadu Maxim);
  • LM35 (termometer Texas Instrument);
  • Bateri luaran (pilihan);
  • Kabel;
  • Penyambung (untuk menjadikannya lebih "maju");
  • Kotak (pilihan, sekali lagi untuk menjadikannya lebih "maju");
  • Pemegang LED (pilihan);

Catatan: Seperti yang saya katakan, anda perlu memilih salah satu daripada dua kaedah. Sekiranya anda memilih termometer LM35, anda memerlukan beberapa komponen lain:

  • Attiny45 / 85;
  • Pengaturcara AVR (atau Arduino sebagai ISP);
  • Perintang (1x1kΩ, 1x2kΩ, 1x10kΩ, 1x18kΩ)
  • Penyambung jalur 2.54mm (pilihan)
  • Diod (2x1N914)
  • Perfboard atau PCB;

Langkah 2: Memilih Sensor

Memilih Sensor
Memilih Sensor

Memilih sensor boleh menjadi langkah yang sukar: hari ini terdapat banyak transduser (TI menawarkan 144 elemen berbeza) baik analog dan digital dengan julat suhu, ketepatan dan kes yang berbeza. Sensor Analog (46 bahagian tersedia dari TI): Kelebihan:

  • Pencatat data dapat diubah dengan mudah dari suhu ke kuantiti lain (voltan, arus,…);
  • Mungkin sedikit lebih murah;
  • Mudah digunakan kerana tidak memerlukan perpustakaan khas;

Keburukan:

  • Memerlukan ADC (yang boleh mempengaruhi ketepatan pengukuran) dan komponen luaran lain. Oleh kerana esp8266 hanya mempunyai satu ADC (dan tidak betul-betul tepat) saya akan mencadangkan untuk menggunakan yang luaran.
  • Memerlukan kabel khusus dengan penolakan kebisingan kerana voltan aruhan boleh mengubah hasilnya.

Setelah berfikir sedikit, saya memutuskan untuk menggunakan LM35, sensor linear dengan faktor skala + 10mV / ° C dengan ketepatan 0.5 ° C dan arus yang sangat rendah (kira-kira 60uA) dengan voltan operasi dari 4V hingga 30V. Untuk lebih terperinci saya cadangkan untuk melihat lembaran data: LM35.

Kelebihan Sensor Digital (sangat disyorkan):

Hampir semua komponen luaran diperlukan;

ADC bersepadu

Keburukan:

Minta perpustakaan atau perisian untuk menyahkod isyarat digital (I2C, SPI, Serial, One Wire,…);

Lebih mahal;

Saya telah memilih DS18B20 kerana saya menemui satu set 5 sensor kalis air di Amazon dan kerana didokumentasikan secara meluas di internet. Ciri utama ialah pengukuran 9-12bit, bas 1-Wire, voltan bekalan 3.0 hingga 5.5, ketepatan 0.5 ° C. Sekali lagi, untuk lebih terperinci berikut adalah lembaran data: DS18B20.

Langkah 3: LM35

LM35
LM35
LM35
LM35
LM35
LM35

Mari kita analisis bagaimana saya melaksanakan ADC luaran dan ciri lain untuk termometer LM35. Saya menjumpai kabel dengan tiga wayar, satu dengan pelindung dan dua tanpa. Saya memutuskan untuk menambahkan kapasitor pemisah untuk menstabilkan voltan bekalan berhampiran sensor. Untuk menukar suhu analog ke digital, saya telah menggunakan mikropemproses Attiny85 dalam pakej dip8 (sekali lagi untuk maklumat lebih lanjut lihat lembaran data: attiny85). Perkara yang paling penting bagi kami adalah ADC 10 bit (bukan yang terbaik tetapi cukup tepat untuk saya). Untuk berkomunikasi dengan Esp8266, saya memutuskan untuk menggunakan komunikasi Serial dengan mengingat bahawa esp8266 berfungsi dengan 3.3V dan attiny85 pada 5V (kerana perlu menghidupkan sensor). Untuk mencapainya, saya menggunakan pembahagi voltan sederhana (lihat skema). Untuk membaca suhu negatif, kita perlu menambahkan beberapa komponen luaran (perintang 2x1N914 dan 1x18k), kerana saya tidak mahu menggunakan bekalan kuasa negatif. Inilah kod: repositori TinyADC. Nota: untuk menyusun kod ini, anda perlu memasang attiny to ide (masukkan ini dalam pilihan: https://drazzy.com/package_drazzy.com_index.json), jika anda tidak tahu bagaimana melakukannya, cari di Google. Atau muat naik fail.hex secara langsung.

Langkah 4: DS18B20

DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20

Saya membeli sensor tersebut dari Amazon (5 berharga lebih kurang 10 €). Ia tiba dengan penutup keluli tahan karat dan kabel sepanjang 1m. Sensor ini dapat mengembalikan data suhu 9 hingga 12 bit. Banyak sensor boleh dipasang pada pin yang sama kerana semuanya mempunyai ID yang unik. Untuk memasang DS18B20 ke esp8266, anda hanya boleh mengikuti skema (foto kedua). Oleh kerana saya memutuskan bahawa pembalak saya akan mempunyai tiga siasatan, saya harus membezakan yang mana. Oleh itu, saya berfikir untuk memberi mereka warna yang berkaitan melalui perisian ke alamat mereka. Saya telah menggunakan beberapa tiub termal-shrinkable (foto ketiga).

Langkah 5: Kod ESP8266

Kod ESP8266
Kod ESP8266
Kod ESP8266
Kod ESP8266

Oleh kerana saya baru mengenal dunia ini, saya memutuskan untuk menggunakan banyak perpustakaan. Seperti yang dinyatakan dalam pengenalan ciri utama adalah:

  • Kemas kini OTA: anda tidak perlu memasukkan esp8266 ke komputer anda setiap kali anda perlu memuat naik kod (anda mesti melakukannya hanya pada kali pertama);
  • Pengurus wayarles, jika rangkaian tanpa wayar berubah, anda tidak perlu memuat semula lakaran. Anda boleh mengkonfigurasi lagi parameter rangkaian yang menyambung ke titik akses esp8266;
  • Trasmission data Thingspeak;
  • Kedua-dua LM35 dan DS18B20 disokong;
  • Antara Muka Pengguna Ringkas (RGB dipimpin menunjukkan beberapa maklumat berguna);

Mohon maaf kerana perisian saya bukan yang terbaik dan tidak disusun dengan betul. Sebelum memuat naik ke peranti, anda perlu mengubah beberapa parameter agar sesuai dengan kod pada persediaan anda. Di sini anda boleh memuat turun perisian. Konfigurasi LM35 dan DS18B20 biasa Anda perlu menukar definisi pin, token, nombor saluran, pengguna dan kata laluan untuk kemas kini OTA. Talian dari 15 hingga 23.

#tentukan merah YOURPINHERE #tentukan hijau YOURPINHERE anda

# tentukan biru YOURPINHERE const char * host = "pilih alamat hos"; // tidak benar-benar diperlukan anda boleh meninggalkan esp8266-webupdate const char * update_path = "/ firmware"; // untuk menukar alamat untuk mengemas kini cth: 192.168.1.5/firmware const char * update_username = "YOURUSERHERE"; const char * update_password = "KATA KATA KATA ANDA; myChannelNumber panjang yang tidak ditandatangani = CHANNELNUMBERHERE; const char * myWriteAPIKey =" WRITEAPIHERE ";

Langkah 6: Kod ESP8266: Pengguna LM35

Anda perlu menyambungkan papan attiny ke esp8266, untuk menghidupkan unit ADC menggunakan pin VU dan pin G. Anda perlu memilih pin mana yang ingin anda gunakan untuk komunikasi bersiri (untuk memastikan siri perkakasan bebas untuk tujuan debug). Pin Tx mesti dipilih tetapi tidak benar-benar digunakan. (Baris 27). SoftwareSerial mySerial (RXPIN, TXPIN); Di bahagian atas anda perlu menambah: #define LM35USER

Langkah 7: Kod ESP8266: Pengguna DS18B20

Sebagai operasi pertama, anda perlu mengenal pasti Alamat peranti untuk setiap sensor. Susun dan atur kod ini ke esp dan lihat secara bersiri untuk mendapatkan hasilnya. Kod boleh didapati di sini (cari tajuk ini di halaman: «Baca alamat dalaman DS18B20 individu»). Sambungkan hanya satu sensor untuk mendapatkan alamat, hasilnya adalah seperti ini (nombor rawak di sini! Sama seperti contoh): 0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12Jadi anda perlu menukar kod saya di bahagian " Konfigurasi untuk DS18B20 "(baris 31 hingga 36)":

#define ONE_WIRE_BUS ONEWIREPINHERE #define TEMPERATURE_PRECISION TEMPBITPRECISION // (dari 9 hingga 12) #define delayDallas READINTERVAL // (Dalam milisaat, minimum ialah 15s atau 15000mS) PerantiAddress blueSensor, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0 0x12}; // TUKAR DENGAN ALAMAT ANDA Peranti Alamat redSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; // TUKAR DENGAN ALAMAT ANDA Peranti Alamat hijauSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; // TUKAR ALAMAT ANDA Di bahagian atas, anda perlu menambah: #definisi DSUSER

Langkah 8: Little Trick ESP8266

ESP8266 Little Trick
ESP8266 Little Trick

Setelah menjalani sedikit ujian, saya dapati bahawa jika anda memasang esp8266 tanpa pengaturcaraan, ia tidak akan menjalankan kodnya sehingga anda menekan reset satu kali. Untuk menyelesaikan masalah ini, setelah membuat sedikit kajian, saya mendapati bahawa anda harus menambahkan pull-up resistor dari 3.3V ke D3. Ini akan memberitahu pemproses untuk memuatkan kod dari memori kilat. Dengan kaedah ini, D3 secara langsung dapat digunakan untuk input data untuk sensor DS18B20.

Langkah 9: Operasi Kali Pertama

Operasi Kali Pertama
Operasi Kali Pertama
Operasi Kali Pertama
Operasi Kali Pertama

Sekiranya anda memuat naik kod dengan betul tetapi tidak pernah menggunakan perpustakaan pengurus Wifi, inilah masanya untuk mengkonfigurasi sambungan wifi anda. Tunggu sehingga anda melihat LED RGB berkelip lebih cepat daripada sebelumnya, kemudian cari dengan rangkaian telefon bimbit atau PC anda yang disebut "AutoConnectAp" dan sambungkan dengan telefon bimbit atau PC anda. Selepas sambungan, buka penyemak imbas web dan masukkan 192.168.4.1, anda akan menemui antara muka GUI pengurus wifi (lihat foto) dan tekan "Konfigurasi Wifi". Tunggu esp8266 untuk mencari rangkaian wifi, dan pilih yang dikehendaki. Masukkan kata laluan dan tekan "simpan". Esp8266 akan dimulakan semula (tidak peduli RGB dipimpin kali ini kerana akan mengeluarkan beberapa maklumat rawak) dan menyambung ke rangkaian.

Langkah 10: Kesimpulannya

Kesimpulannya
Kesimpulannya
Kesimpulannya
Kesimpulannya
Kesimpulannya
Kesimpulannya
Kesimpulannya
Kesimpulannya

Pada akhirnya, berikut adalah grafik yang diambil dari data logger yang sedang bertindak sambil mencatat suhu pembeku saya. Dalam oren adalah DS18B20 dan biru LM35 dan litarnya. Anda dapat melihat perbezaan ketepatan terbesar dari sensor digital ke analog (dengan "litar ADC" saya yang lemah) yang memberikan beberapa data bukan fizikal. Ringkasnya, jika anda ingin membina logger ini, saya cadangkan menggunakan sensor suhu digital DS18B20 kerana ia lebih senang dibaca dan hampir "pasang dan mainkan", lebih stabil dan tepat, ia berjalan pada 3.3V dan hanya memerlukan satu pin untuk banyak sensor. Terima kasih atas perhatian, saya harap projek ini baik untuk anda dan anda sudah menemui beberapa maklumat berguna. Dan bagi siapa yang ingin menyedarinya, saya berharap saya memberikan semua maklumat yang diperlukan. Sekiranya tidak bebas untuk bertanya semuanya, saya dengan senang hati akan menjawab semua soalan. Oleh kerana saya bukan penutur bahasa Inggeris, jika ada yang tidak kena atau tidak difahami sila beritahu saya. Sekiranya anda menyukai projek ini, sila pilih untuk peraduan dan / atau tinggalkan komen ☺. Ini akan mendorong saya untuk terus mengemas kini dan menerbitkan kandungan baru. Terima kasih.

Disyorkan: