Daftar Isi:

Crawl Space Monitor (alias: Tidak Ada Lagi Pipa Beku!!): 12 Langkah (dengan Gambar)
Crawl Space Monitor (alias: Tidak Ada Lagi Pipa Beku!!): 12 Langkah (dengan Gambar)

Video: Crawl Space Monitor (alias: Tidak Ada Lagi Pipa Beku!!): 12 Langkah (dengan Gambar)

Video: Crawl Space Monitor (alias: Tidak Ada Lagi Pipa Beku!!): 12 Langkah (dengan Gambar)
Video: Haduww.. Niat Kasih Minum Malah Dikasih Kartu Merah sama Wasit #shorts 2024, Juli
Anonim
Monitor Ruang Perayapan (alias: Tidak Ada Lagi Pipa Beku!!)
Monitor Ruang Perayapan (alias: Tidak Ada Lagi Pipa Beku!!)

Air ke rumah saya berasal dari sumur saya melalui ruang merangkak yang tidak dipanaskan. Semua pipa dapur dan kamar mandi mengalir melalui ruang ini juga. (Pipa dalam ruangan adalah renungan tamparan di pertengahan 70-an di rumah ini!) Saya telah menggunakan lampu panas pada colokan termostatik "tangki stok" untuk mempertahankan suhu di atas titik beku. Ada beberapa masalah signifikan dengan pengaturan ini:1 - Tidak ada visibilitas. Indikasi pertama dari bohlam yang terbakar adalah pipa yang membeku!2 - Terkadang colokan tidak mau mati. Yang membuat kejutan buruk datang tagihan listrik.3 - Tidak ada perincian. Saya menyimpan 3 bohlam "online" (total 750 watt) dan itu adalah solusi semua atau tidak sama sekali. (2 bohlam tidak akan selalu menanganinya.) Setelah diperkenalkan ke Arduino, dan melihat beberapa hal yang dilakukan orang lain dengannya, saya memutuskan untuk mencobanya. Saya akan mengakui langsung bahwa saya tanpa malu-malu mengambil dan mengubah kode sampel dari proyek orang lain untuk membuat ini berhasil, meskipun pada akhirnya saya telah menulis ulang hampir semuanya. Awalnya, saya membangun "WiFi Weather Station" yang saya temukan di Adafruit.com dan memodifikasinya. Alih-alih memperbarui situs web, saya menggunakan Amazon Web Services untuk mengirimi saya pembaruan status SMS. Saya juga menambahkan kontrol beberapa relai 110V (https://www.adafruit.com/products/268). Saya kemudian menjadi "pintar" dan memutuskan untuk "memperkuatnya" -- yah -- sesuatu mempersingkat sesuatu dan saya mendapat kepulan asap biru ajaib. Semuanya digoreng… Tidak ada lagi CC3000 WiFi breakout, saya melakukan hal yang berbeda kali ini. Saya membangunnya untuk dipantau secara interaktif melalui antarmuka serial dan kemudian menambahkan antarmuka FTDI Bluetooth EZ-Link. (Tidak perlu lagi menyeret laptop ke bawah rumah untuk pembaruan perangkat lunak!!!) Saya juga membangun antarmuka Python yang terhubung ke unit melalui Bluetooth, menanyakannya secara teratur, dan menampilkan informasi status di Mac saya. (Ada juga "antarmuka manusia" yang dapat diakses oleh perangkat lunak emulasi terminal apa pun.) Sebagai hasil dari penulisan ulang dan penghapusan semua kode WiFi dan RTC, ukuran proyek telah menyusut dari lebih dari 29K menjadi hampir 10K. Ini juga telah meningkatkan keandalan sejauh pengawas perangkat keras tidak terpicu sama sekali dalam beberapa minggu ini telah berjalan dan saya telah mengutak-atik.

17/2/16 Pembaruan/catatan: Dalam upaya untuk mendapatkan pemformatan yang tepat pada beberapa kode (terutama indentasi kode Python), segalanya berubah dari jelek menjadi tidak dapat digunakan. Saya yakin masalahnya ada di pihak saya di suatu tempat, dan saya akan berusaha untuk mencari tahu. Sampai saat itu, saya telah menambahkan tautan ke file kode melalui DropBox. Mereka harus dapat diakses oleh siapa saja. Jika tidak, beri tahu saya agar saya dapat menyampaikannya kepada Anda dengan cara lain!

Langkah 1: Masalah untuk Dipecahkan

Sistem perlu melakukan hal-hal berikut untuk saya:1 - memantau suhu di ruang merangkak.2 - menyalakan lampu pemanas seperlunya untuk menjaga suhu di atas titik beku.3 - saat tidak beroperasi, uji bohlam secara berkala dan beri saya visibilitas status mereka.4 - beri saya visibilitas suhu dan status sistem, termasuk: - apakah sistem berjalan? - berapa suhu SEKARANG? - berapa suhu terdingin? - berapa banyak bola lampu yang menyala? - berapa banyak bohlam yang diuji dengan baik? - berapa total waktu saya dalam "menit cahaya" (alias "waktu pembakaran")?5 - lakukan semua hal di atas tanpa saya perlu merangkak di bawah rumah!!!Saya memutuskan bahwa cara termudah untuk menguji pengoperasian bohlam adalah dengan sensor cahaya. Beberapa masalah lain yang ingin saya atasi adalah waktu siklus pada lampu. Terlalu lambat, dan saya membakar listrik yang tidak perlu. Terlalu cepat, dan saya berisiko membakarnya dari semua pengaktifan & penonaktifan dengan pemanasan dan pendinginan terkait.

Langkah 2: Perangkat Keras

Perangkat Keras
Perangkat Keras

2 lampu panas 250 watt1 lampu kerja 500 watt (salah satu lampu panas saya hilang, jadi ini adalah stand-in)Arduino UnoDHT22 Sensor Suhu/KelembabanGA1A12S202 sensor cahayaPowerSwitch 110V relayBluefruit EZ-Link Serial Interface & ProgrammerKasing berteknologi tinggi (bak Rubbermaid ukuran sandwich)Kelenjar kabel1/2 ukuran papan tempat memotong rotiPiring akrilik untuk papan tempat memotong roti dan ArduinoBerbagai macam kabel jumper. Coleman 5-outlet "strip bengkel"Saya juga menggunakan Adafruit Trinket sebagai pengawas perangkat keras, tetapi telah terbukti tidak dibutuhkan (sial, tentu saja!) dan saya menulis instruksi terpisah tentang hal itu jadi saya tidak akan mengulanginya di sini. Kuncir Coleman adalah penemuan yang bagus, karena memberi saya 4 outlet untuk lampu panas saya PLUS outlet untuk catu daya Arduino tanpa splitter tambahan atau soket ekstensi yang terlibat. Dinilai pada 15 Amps penuh dengan sakelar dan pemutus internal, itu bisa menangani semua yang bisa saya tarik melalui satu outlet.

Langkah 3: Pendekatan

Sementara sistem adalah aplikasi yang dibangun untuk duduk menunggu, dan melakukan beberapa hal dengan relatif lambat, yang tidak ingin saya lakukan adalah membangun sistem di mana pengontrol duduk dalam siklus delay() menjadi tidak responsif. Saya juga ingin dapat mengubah parameter konfigurasi sedekat mungkin dengan yang saya bisa -- tentu saja tidak dengan cara yang mengharuskan penulisan ulang kode atau melakukan operasi pencarian dan penggantian massal pada sumbernya. menemukan artikel Bill Earl yang paling bagus tentang "Multitasking Arduino" (mulai di sini: https://learn.adafruit.com/multi-tasking-the-arduino-part-1) dan menjadi sibuk. Dengan membuat kelas "timer" dan "heater" saya dapat melakukan semua fungsi pengaturan waktu yang saya inginkan tanpa menggunakan delay() (dengan hanya beberapa pengecualian) dan mengkonfigurasi bohlam ("heater") dengan satu baris kode untuk masing-masing satu.

Langkah 4: Menghubungkannya

Menghubungkannya
Menghubungkannya
Menghubungkannya
Menghubungkannya

Diagram Fritzing tidak menyertakan Bluefruit EZ-LinkArduino 5V & Ground ke bus papan tempat memotong rotiDHT22 pin 1 hingga 5V busDHT22 pin 2 ke Arduino pin 7DHT22 pin 4 ke Ground bus10K resistor antara DHT22 pin 1 dan 2GA1A12S202 Pin VCC ke 5V busGA1A12S202 pin GND ke Ground busGA1A12S202 OUT pin ke Arduino A0Arduino pin 3V ke Arduino AREF pinRelay Ground mengarah ke Ground busRelay 1 power mengarah ke Arduino A1Relay 2 power mengarah ke Arduino A2Relay 3 power mengarah ke Arduino A3Relay 4 power lead ke Arduino A4Sebagian besar koneksi ini dapat diatur ulang sesuai keinginan. Satu-satunya yang penting adalah OUT memimpin pada sensor cahaya perlu pergi ke pin analog. Pin-out ini akan bekerja dengan kode saya seperti yang tertulis. Jika Anda menggunakan pengawas perangkat keras, Anda akan melihat kode saya mengeluarkan detak jantung pada pin Arduino 2.

Langkah 5: Kode Arduino, Sketsa Utama

CrawlSpace_monitor.ino

Langkah 6: Catatan tentang Kode

Baris kode berikut membuat instance pemanas dan menentukan parameter operasi:// Heater(relayPin, onTemp(f), offTemp(f), minMinutes, testInterval(minutes), luxDelta)Pemanas pemanas1 = Pemanas(A1, 38, 43, 20, 1440, 5);Pemanas pemanas2 = Pemanas(A2, 36, 41, 20, 1440, 5);Pemanas pemanas3 = Pemanas(A3, 34, 39, 20, 1440, 5);Pemanas pemanas4 = Pemanas (A4, 32, 37, 20, 1440, 5);(Dan ya, saya mendefinisikan semua 4 pemanas meskipun saya hanya menjalankan 3 saat ini. Saya masih perlu mendapatkan relai lain, tetapi kemudian menambahkan pemanas ke-4 akan sesederhana mencolokkannya.) Saya mengubah suhu pemicu mereka, mulai dari 38 derajat untuk yang pertama dan berakhir pada 32 untuk yang ke-4 tidak ada. Salah satu hal yang saya temukan ketika saya pertama kali mulai merakit ini bersama adalah bahwa saya perlu memberikan kisaran suhu serta menentukan "waktu pembakaran" minimum, atau saya menyalakan dan mematikan lampu sepeda seperti orang gila. Di sini saya memberi masing-masing penyebaran 5 derajat serta waktu pembakaran minimum 20 menit. Saya mengatur interval pengujian ke 24 jam dan menetapkan 5 lux sebagai pembacaan cahaya minimum yang saya perlukan untuk menentukan bohlam masih berfungsi. Hampir semua yang perlu dikonfigurasi ada di sini, di 4 baris kode ini.

Langkah 7: Kode Arduino, Kelas

Saya membuat 3 kelas untuk proyek ini. Mereka adalah "pengatur waktu", "pemanas" dan "akumulator". Dengan sedikit pemikiran lagi, saya seharusnya bisa melipat akumulator menjadi pengatur waktu, tetapi saya belum melakukannya. Ini dia selengkapnya:heater.h

timer.h

akumulator.h

Langkah 8: Memantau Sistem

Memantau Sistem
Memantau Sistem

Saya membuat satu antarmuka ke dua monitor terpisah. Ini adalah sesi interaktif melalui konsol serial. Dalam kasus saya, saya menggunakan Bluefruit EZ-Link sehingga saya dapat mengakses sistem tanpa merangkak di bawah rumah atau mencoba memasang kabel USB di antara balok lantai! Manfaat tambahan dari EZ-Link adalah saya dapat mengunggah kode program baru ke Arduino melalui Bluetooth juga. Antarmuka "manusia" dapat diakses (Bluetooth atau kabel fisik) dengan perangkat lunak emulasi terminal apa pun, termasuk serial Arduino IDE memantau. Saat Anda pertama kali terhubung, tidak ada respons, tetapi tombol menekan "u" (untuk "pembaruan") dan "t" (untuk "pengujian") akan memberi Anda output yang ditampilkan di tangkapan layar. "m" ("monitor") dan "s" ("sys check") memberi Anda data yang sama tetapi dalam format yang jauh lebih mudah dibaca. Ini dimaksudkan untuk "digores" oleh program lain untuk tampilan otomatis. Saya menyusun skrip Python yang melakukan hal itu. Kunci lainnya akan menampilkan pesan kesalahan. Anda akan melihat nilai untuk "waktu pembakaran" -- anggap saja ini seperti "menit bohlam" -- 1 bohlam selama 10 menit = 10 menit, 3 bohlam selama 10 menit = 30 menit.

Langkah 9: Skrip Python

Skrip Python
Skrip Python

crawlspace_gui.py

Langkah 10: Masih Harus Dilakukan…

Ini mungkin tidak cantik, atau sempurna, tetapi efektif dan membuktikan dirinya dapat diandalkan. DAN, saya belum mengalami masalah pipa beku musim dingin ini!!! Saya memiliki daftar hal yang harus dilakukan. Tentu saja, sekarang setelah berfungsi, saya mungkin atau mungkin tidak pernah menyelesaikan sebagian besar item ini: Jalankan Bluetooth di salah satu Raspberry Pi saya sehingga saya dapat membuat monitor khusus. Pelajari lebih lanjut Python - lalu bersihkan Python antarmuka. Pemisahan elemen itu tidak disengaja dan saya tidak mengerti mengapa itu ada. Tambahkan antarmuka ke sesuatu seperti layanan IO Adafruit sehingga saya dapat memantaunya dari mana saja. Tambahkan peringatan pesan teks. Pindahkan ke pengontrol yang lebih kecil (mungkin Metro Mini atau Trinket Pro?), relai yang lebih murah, dan kemasan yang lebih baik. Keluarkan dari papan tempat memotong roti dan ke papan "Perma Proto". Parameter konfigurasi di EEPROM. Antarmuka yang lebih terperinci yang akan menunjukkan - bohlam mana yang bagus, dan bahkan mungkin menghabiskan waktu untuk masing-masing bohlam. Ketika saya menyelesaikannya, saya akan kembali dan memperbarui Instruksi ini.

Langkah 11: Perbarui 16/3, Build "permanen"

Perbarui 16/3,
Perbarui 16/3,
Perbarui 16/3,
Perbarui 16/3,
Perbarui 16/3,
Perbarui 16/3,

Mendapatkan istirahat yang baik dalam cuaca dingin, saya telah mengambil unit dan memindahkannya ke pengontrol yang lebih kecil (saya bermaksud menggunakan Trinket Pro, tetapi memiliki Adafruit Metro Mini yang tidak diklaim oleh proyek lain), menyoldernya di papan Perma-Proto, dan letakkan semuanya dalam wadah yang lebih baik. Berdasarkan seberapa andalnya, saya tidak mengembalikan pengawas perangkat keras ke dalamnya. Saya masih hanya menggunakan 3 lampu/relay dimana sistem akan menangani 4. Modul Bluetooth berada di atas solder, jadi bisa dilepas jika saya membutuhkannya di tempat lain. Tidak ada perubahan kode yang diperlukan untuk pindah ke pengontrol baru - kompilasi ulang dan pemuatan sederhana membuat saya siap dan berjalan dalam hitungan menit. (Metro Mini memiliki pinout yang identik dengan Arduino Uno dan juga merupakan prosesor ATMega328.)

Langkah 12: Perbarui 12/1/2018 - Selamat datang di IoT

Sistem telah bekerja dengan sempurna untuk kami. Setelah dua musim dingin yang agak parah, TIDAK ADA pipa beku. Bahkan, sistem ini mampu memelihara pipa tanpa pernah membakar lebih dari 2 bohlam. Memiliki bohlam ke-3 online adalah asuransi yang bagus, tetapi kami tidak pernah membutuhkannya hingga saat ini.

Memasuki tahun ke-3 untuk sistem, modul Bluetooth gagal. Kami juga membangun rumah baru, sehingga sistem pemantauan berada di luar jangkauan Bluetooth. (Rumah tua tetap terjaga untuk sementara waktu, tetapi tidak selamanya.) Selama waktu itu, saya telah melakukan banyak hal dengan prosesor berkemampuan WiFi ESP8266; baik dalam format Adafruit Feather maupun dalam format "NodeMCU" open-source. NodeMCU umumnya dapat ditemukan di Amazon dengan harga sekitar $5 - apalagi jika Anda membeli dalam jumlah besar dan/atau dari seseorang seperti AliExpress.

Versi baru ini mempertahankan antarmuka serial, sehingga masih dapat digunakan dengan modul Bluetooth atau koneksi serial USB langsung dan skrip python sebelumnya, namun versi baru memiliki antarmuka halaman web. Seperti yang tertulis, itu termasuk fitur berikut:

Manajer jaringan WiFi untuk menghilangkan kredensial WiFi hard-coding.

Kemampuan untuk memperbarui firmware over-the-air menggunakan Arduino IDE (selama Anda berada di jaringan WiFi yang sama -- perhatikan bahwa setelah melakukan unggahan USB ke perangkat, reset diperlukan sebelum pembaruan OTA bekerja). HARAP ubah kata sandi OTA di baris 6 menjadi unik untuk Anda!!

Halaman web yang menampilkan data yang sama dengan skrip python, dengan penyegaran otomatis setiap menit. Saya tidak menempatkan keamanan apa pun di halaman, karena ini hanya untuk tampilan.

Anda dapat menemukan kode baru di sini. Perhatikan bahwa nama pin berubah saat pindah ke NodeMCU.

Direkomendasikan: