APIS - Sistem Irigasi Tanaman Otomatis: 12 Langkah (dengan Gambar)
APIS - Sistem Irigasi Tanaman Otomatis: 12 Langkah (dengan Gambar)
Anonim
APIS - Sistem Irigasi Pabrik Otomatis
APIS - Sistem Irigasi Pabrik Otomatis

SEJARAH: (evolusi berikutnya dari sistem ini tersedia di sini)

Ada beberapa instruksi tentang topik penyiraman tanaman, jadi saya hampir tidak menemukan sesuatu yang asli di sini. Apa yang membuat sistem ini berbeda adalah jumlah pemrograman dan penyesuaian yang masuk ke dalamnya, memungkinkan kontrol dan integrasi yang lebih baik ke dalam kehidupan sehari-hari.

Berikut adalah video watering run: penyiraman run

Inilah bagaimana APIS muncul:

Kami memiliki dua tanaman cabai merah, yang hampir tidak "bertahan" beberapa liburan kami, dan hampir dianggap sebagai anggota keluarga pada saat ini. Mereka telah melalui kekeringan yang ekstrem, dan penyiraman yang berlebihan, tetapi entah bagaimana selalu pulih.

Ide untuk membangun penyiraman tanaman berbasis Arduino hampir merupakan ide pertama bagaimana Arduino dapat diterapkan sebagai proyek otomasi rumah. Maka dibangunlah sistem penyiraman tanaman yang sederhana.

Namun, Versi 1 tidak memiliki indikasi kelembaban tanah, dan tidak ada cara untuk mengetahui apakah akan menyirami tanaman, atau menyiram beberapa hari lagi.

Curiosity, seperti yang kita semua tahu, membunuh kucing itu, dan Versi 2 dibuat dengan modul 4 digit 7 segmen untuk menampilkan kelembapan saat ini setiap saat.

Itu tidak cukup. Pertanyaan selanjutnya adalah "kapan terakhir kali menyiram tanaman"? (Karena kami jarang di rumah untuk menyaksikannya). Versi 3 menggunakan modul 7 segmen untuk juga menampilkan berapa lama yang lalu penyiraman terakhir terjadi (sebagai string teks berjalan).

Suatu malam, penyiraman dimulai pukul 4 pagi, membangunkan semua orang. Frustrasi… Menemukan terlalu banyak pekerjaan untuk mematikan APIS pada malam hari, dan pada siang hari untuk mencegah penyiraman di tengah malam, jam waktu nyata telah ditambahkan untuk membuat perangkat tidur di malam hari sebagai bagian dari Versi 4.

Karena jam waktu nyata memerlukan penyesuaian berkala (seperti sakelar waktu musim panas misalnya), Versi 5, menyertakan tiga tombol yang memungkinkan pengaturan berbagai parameter penyiraman tanaman.

Itu tidak berhenti di situ. Saya perhatikan bahwa probe kelembaban cenderung terkikis agak cepat, sangat mungkin karena fakta bahwa itu (berdasarkan desain) di bawah tegangan konstan, dan oleh karena itu ada arus listrik konstan antara probe (mengikis anoda). Penyelidikan tanah murah dari China bertahan sekitar seminggu. Bahkan paku galvanis "dimakan" dalam sebulan. Sebuah probe stainless steel memegang lebih baik, tapi saya perhatikan bahwa bahkan menyerah. Versi 6 menyalakan probe hanya 1 menit setiap jam (dan sepanjang waktu selama penyiraman), sehingga secara dramatis mengurangi erosi (~16 menit sehari vs 24 jam sehari).

Ide:

Mengembangkan sistem penyiraman tanaman dengan kemampuan sebagai berikut:

  1. Mengukur kelembaban tanah
  2. Setelah mencapai tanda kelembaban "rendah" yang telah ditentukan, nyalakan pompa air dan sirami tanaman sampai tanda kelembaban "tinggi" tercapai
  3. Penyiraman harus dilakukan dalam beberapa kali, dipisahkan oleh periode tidak aktif untuk memungkinkan saturasi air melalui tanah
  4. Sistem harus menonaktifkan dirinya sendiri di malam hari antara waktu "tidur" dan "bangun"
  5. Waktu "Bangun" harus disesuaikan untuk akhir pekan ke nilai yang lebih baru
  6. Sistem harus menyimpan log pemompaan berjalan
  7. Sistem harus menampilkan pembacaan kelembaban tanah saat ini
  8. Sistem harus menampilkan tanggal/waktu pompa terakhir dijalankan
  9. Parameter penyiraman harus disesuaikan tanpa pemrograman ulang
  10. Hentikan pemompaan dan indikasikan Kondisi kesalahan jika pompa berjalan tidak menyebabkan perubahan kelembaban (kehabisan air, atau masalah sensor) mencegah membanjiri pabrik dan kebocoran air
  11. Sistem harus mengaktifkan/menonaktifkan probe kelembaban untuk menghindari erosi logam
  12. Sistem harus mengalirkan air dari tabung untuk mencegah jamur terbentuk di dalamnya

Parameter berikut harus dapat dikonfigurasi melalui tombol:

  1. Kelembaban tanda "rendah", dalam %, untuk memulai pompa berjalan (default = 60%)
  2. Kelembaban tanda "tinggi", dalam %, untuk menghentikan pengoperasian pompa (default = 65%)
  3. Durasi penyiraman tunggal, dalam detik (default = 60 detik)
  4. Jumlah percobaan ulang untuk mencapai kelembaban target (default = 4 run)
  5. Waktu militer untuk menonaktifkan untuk malam, jam saja (default = 22 atau 10 malam)
  6. Waktu militer untuk mengaktifkan di pagi hari, jam saja (default = 07 atau 7 pagi)
  7. Penyesuaian akhir pekan untuk aktivasi pagi, jam delta (default = +2 jam)
  8. Tanggal dan waktu saat ini

APIS menulis tanggal/waktu 10 penyiraman terakhir ke dalam memori EEPROM. Log dapat ditampilkan, menunjukkan tanggal dan waktu berjalan.

Salah satu dari banyak hal yang kami pelajari dari APIS adalah Anda sebenarnya tidak perlu menyirami tanaman setiap hari, yang merupakan rutinitas kami sampai kami melihat pembacaan kelembaban tanah di layar 7 segmen…

Langkah 1: BAGIAN dan ALAT

BAGIAN dan ALAT
BAGIAN dan ALAT
BAGIAN dan ALAT
BAGIAN dan ALAT

Anda akan membutuhkan bagian-bagian berikut untuk membangun APIS:

KOTAK KONTROL DAN TABUNG:

  1. Papan Arduino Uno: di Amazon.com
  2. Pompa Cairan Peristaltik 12v dengan Tabung Silikon: di Adafruit.com
  3. 4X Tampilan LED Numerik Tabung Digital Modul JY-MCU: di Fasttech.com
  4. Kit papan breakout Jam Waktu Nyata DS1307: di Adafruit.com (opsional)
  5. Saklar Kebijaksanaan Microtivity IM206 6x6x6mm: di Amazon.com
  6. Papan Vero: di Amazon.com
  7. IC driver motor L293D: di Fasttech.com
  8. 3 x 10kOhm resistor
  9. Arduino memproyeksikan kasing plastik: di Amazon.com
  10. Adaptor AC/DC 12v dengan colokan listrik 2,1 mm: di Amazon.com
  11. Tusuk sate bambu
  12. Tapak dan sedikit lem supersemen
  13. Tabung Karet Lateks Super Lembut 1/8" ID, 3/16" OD, Dinding 1/32", Amber Semi-Jelas, Panjang 10 kaki: di McMaster.com
  14. Fitting Tabung Berduri Segel Ketat Nylon Tahan Lama, Tee untuk ID Tabung 1/8", Putih, paket 10: di McMaster.com
  15. Fitting Tabung Berduri Segel Ketat Nylon Tahan Lama, Wye untuk ID Tabung 1/8", Putih, paket 10: di McMaster.com
  16. Seperti biasa, kabel, alat solder, dll.

PROBE KELEMBABAN:

  1. Potongan kayu kecil (1/4" x 1/4" x 1")
  2. 2 x Jarum ekstraksi jerawat stainless steel: di Amazon.com
  3. Modul Sensor Deteksi Kelembaban Tanah: di Fasttech.com

Langkah 2: PROBE KELEMBABAN TANAH V1

PROBE KELEMBABAN TANAH V1
PROBE KELEMBABAN TANAH V1
PROBE KELEMBABAN TANAH V1
PROBE KELEMBABAN TANAH V1
PROBE KELEMBABAN TANAH V1
PROBE KELEMBABAN TANAH V1

Kelembaban tanah diukur berdasarkan resistansi antara dua probe logam yang dimasukkan ke dalam tanah (terpisah sekitar 1 inci). Skema diwakili pada gambar.

Probe pertama yang saya coba adalah yang bisa Anda beli dari sejumlah penyedia internet (seperti ini).

Masalah dengan itu adalah bahwa tingkat foil relatif tipis, dan terkikis dengan cepat (dalam hitungan satu atau dua minggu), jadi saya segera meninggalkan yang pra-manufaktur ini untuk sensor yang lebih kuat, berdasarkan paku galvanis (silakan lihat langkah berikutnya).

Langkah 3: PROBE KELEMBABAN TANAH V2

PROBE KELEMBABAN TANAH V2
PROBE KELEMBABAN TANAH V2
PROBE KELEMBABAN TANAH V2
PROBE KELEMBABAN TANAH V2

Probe "generasi berikutnya" dibuat di rumah dari dua paku galvanis, papan kayu, dan beberapa kabel.

Karena saya sudah memiliki probe yang sudah usang, saya menggunakan kembali bagian koneksi dan modul elektronik darinya, pada dasarnya hanya mengganti komponen tanah.

Paku galvanis, yang mengejutkan saya, juga terkikis (walaupun lebih lambat dari foil tipis), tetapi masih lebih cepat dari yang saya inginkan.

Probe lain dirancang, berdasarkan jarum penghilang jerawat stainless steel. (lihat langkah selanjutnya).

Langkah 4: PROBE KELEMBABAN TANAH V3 "Katana"

PROBE KELEMBABAN TANAH V3
PROBE KELEMBABAN TANAH V3
PROBE KELEMBABAN TANAH V3
PROBE KELEMBABAN TANAH V3

Probe stainless steel (menyerupai pedang samurai, maka namanya) adalah yang saat ini digunakan.

Saya percaya erosi cepat dapat dikaitkan dengan fakta bahwa probe selalu di bawah tegangan listrik (24x7) terlepas dari seberapa sering pengukuran yang sebenarnya terjadi.

Untuk mengurangi ini, saya mengubah interval pengukuran menjadi sekali dalam 1 jam (setelah semua, ini BUKAN sistem waktu nyata), dan menghubungkan probe ke salah satu pin digital alih-alih 5v permanen. Saat ini, probe hanya diberi daya ~16 menit per hari, bukan 24 jam, yang seharusnya meningkatkan masa pakainya secara dramatis.

Langkah 5: FUNGSIONALITAS DASAR

FUNGSI DASAR
FUNGSI DASAR
FUNGSI DASAR
FUNGSI DASAR

APIS didasarkan pada papan Arduino UNO.

APIS mengukur kelembaban tanah sekali dalam satu jam, dan jika turun di bawah ambang batas yang telah ditentukan, menyalakan pompa untuk jangka waktu yang telah ditentukan sebelumnya beberapa kali dipisahkan oleh interval "saturasi".

Setelah ambang batas kelembaban target tercapai, proses kembali ke mode pengukuran satu jam sekali.

Jika kelembaban target tidak dapat dicapai, tetapi batas bawah tercapai, tidak apa-apa juga (setidaknya ada penyiraman). Penyebabnya bisa jadi penempatan probe yang kurang menguntungkan, di mana letaknya terlalu jauh dari tanah yang lembab.

Namun, jika bahkan batas kelembaban yang lebih rendah tidak dapat dicapai, kondisi kesalahan dinyatakan. (Kemungkinan besar masalah probe, atau ember persediaan kehabisan air, dll.). Dalam kondisi kesalahan, unit akan tidur selama 24 jam tanpa melakukan apa-apa, dan kemudian akan mencoba lagi.

Langkah 6: TAMPILAN 7 SEGMEN

TAMPILAN 7 SEGMEN
TAMPILAN 7 SEGMEN
TAMPILAN 7 SEGMEN
TAMPILAN 7 SEGMEN

TAMPILAN 7 SEGMEN BERBASIS TM1650:

Awalnya, APIS tidak memiliki kemampuan tampilan apa pun. Tidak mungkin untuk mengetahui tingkat kelembaban tanah saat ini tanpa menghubungkan melalui USB.

Untuk memperbaikinya saya menambahkan tampilan 4 digit 7 segmen ke sistem: di Fasttech.com

Saya tidak dapat menemukan perpustakaan untuk bekerja dengan modul ini di mana pun (bukan lembar data untuk itu), jadi setelah beberapa jam pemeriksaan dan eksperimen port I²C, saya memutuskan untuk menulis perpustakaan driver sendiri.

Ini mendukung tampilan hingga 16 digit (dengan 4 sebagai default), dapat menampilkan karakter ASCII dasar (harap dicatat tidak semua karakter dapat dibangun dengan 7 segmen, jadi huruf seperti W, M, dll. tidak diterapkan), mendukung desimal titik tampilan pada modul, menjalankan string karakter (untuk menampilkan lebih dari 4 huruf), dan mendukung 16 derajat kecerahan.

Perpustakaan tersedia di taman bermain arduino.cc di sini. Perpustakaan driver TM1650

Contoh video tersedia di sini

ANIMASI:

Sedikit animasi 7 segmen diimplementasikan selama water run.

  • Saat pompa diaktifkan, titik-titik digital pada layar berjalan dalam pola kiri ke kanan, melambangkan aliran air: video animasi penyiraman
  • Selama periode "saturasi", titik-titik berjalan dari pusat tampilan ke luar, melambangkan saturasi: video animasi saturasi

Tidak perlu, tapi sentuhan yang bagus.

Langkah 7: POMPA dan KONTROL POMPA

POMPA dan KONTROL POMPA
POMPA dan KONTROL POMPA
POMPA dan KONTROL POMPA
POMPA dan KONTROL POMPA

POMPA

Saya menggunakan Pompa Cairan Peristaltik 12v (tersedia di sini) untuk menyiram tanaman. Pompa menyediakan sekitar 100 mL/menit (yaitu sekitar 1/2 gelas - baik untuk diingat ketika mengkonfigurasi waktu aliran air untuk menghindari luapan, dan itu memang terjadi 8-))

KONTROL POMPA - L293D

Pompa dikendalikan melalui chip driver motor L293D. Karena arah rotasi sudah diatur sebelumnya, Anda benar-benar hanya perlu menggunakan pin pengaktif chip untuk kontrol. Pin arah dapat dihubungkan langsung ke +5v dan GND secara permanen.

Jika Anda (seperti saya) tidak yakin ke arah mana pompa akan pergi, Anda masih dapat menghubungkan ketiga pin ke Arduino dan mengontrol arah secara terprogram. Kurang solder ulang.

Langkah 8: KONFIGURASI dan TOMBOL

KONFIGURASI dan TOMBOL
KONFIGURASI dan TOMBOL
KONFIGURASI dan TOMBOL
KONFIGURASI dan TOMBOL

TOMBOL:

Saya menggunakan tiga tombol untuk mengonfigurasi dan mengontrol APIS.

Semua penekanan tombol diproses berdasarkan interupsi pin (perpustakaan PinChangeInt).

  • Merah (paling kanan) adalah tombol PILIH. Itu membuat APIS masuk ke mode konfigurasi, dan juga mengkonfirmasi nilainya.
  • Tombol paling kiri dan tengah berwarna hitam (masing-masing PLUS dan MINUS) digunakan untuk menambah/mengurangi nilai yang dapat dikonfigurasi (dalam mode konfigurasi), atau menampilkan tanggal/waktu saat ini dan informasi penyiraman terakhir (dalam mode normal).

Karena sebagian besar waktu tampilan dimatikan, semua tombol pertama-tama akan "membangunkan" APIS, dan baru kemudian, pada penekanan kedua, menjalankan fungsinya.

Layar mati setelah 30 detik tidak aktif (kecuali penyiraman sedang berlangsung).

APIS berjalan melalui parameter konfigurasi saat startup untuk ditinjau: video

KONFIGURASI:

APIS memiliki empat mode konfigurasi:

  1. Konfigurasikan parameter penyiraman
  2. Atur Jam Waktu Nyata
  3. Penyiraman "Paksa"
  4. Tinjau log penyiraman

PARAMETER PENGAIRAN:

  1. Ambang kelembaban tanah rendah (mulai penyiraman)
  2. Ambang batas kelembaban tanah yang tinggi (hentikan penyiraman)
  3. Durasi penyiraman tunggal (dalam detik)
  4. Jumlah penyiraman berjalan dalam satu batch
  5. Durasi periode kejenuhan tanah antar run dalam satu batch (dalam menit)
  6. Waktu aktivasi mode malam (waktu militer, jam saja)
  7. Waktu berakhir mode malam (waktu militer, jam saja)
  8. Penyesuaian akhir pekan untuk waktu akhir mode malam (dalam jam)

PENYIAPAN JAM WAKTU NYATA:

  1. Century (yaitu 20 untuk 2015)
  2. Tahun (yaitu 15 untuk 2015)
  3. Bulan
  4. Hari
  5. Jam
  6. Menit

Jam disesuaikan dengan detik yang disetel ke 00 setelah konfirmasi menit.

Pengaturan memiliki batas waktu 15 detik, setelah itu semua perubahan dibatalkan.

Setelah disimpan, parameter disimpan ke memori EEPROM.

MEMAKSA LARI PENGAIRAN:

Masih tidak yakin mengapa saya menerapkannya, tetapi itu ada. Setelah diaktifkan, APIS memasuki mode penyiraman. Mode penyiraman, bagaimanapun, masih tunduk pada ambang batas. Ini berarti, jika Anda memaksa penyiraman, tetapi kelembaban tanah di atas tanda TINGGI, penyiraman akan segera berakhir. Pada dasarnya ini hanya berfungsi jika kelembaban tanah berada di antara ambang batas RENDAH dan TINGGI.

TINJAUAN LOG PENYAIRAN:

APIS menyimpan log dari 10 penyiraman terakhir di memori EEPROM, yang dapat ditinjau pengguna. Hanya Tanggal/Waktu penyiraman yang disimpan. Ambang (pada saat itu), dan jumlah proses yang diperlukan untuk mencapai ambang TINGGI tidak disimpan (walaupun dalam versi berikutnya mungkin demikian).

Langkah 9: RTC: JAM WAKTU NYATA

RTC: JAM WAKTU NYATA
RTC: JAM WAKTU NYATA

MODE MALAM

Begitu APIS membangunkan saya di malam hari, sebuah ide untuk menerapkan "mode malam" muncul di benak saya.

Mode malam adalah saat tidak ada pengukuran, layar mati, dan tidak ada penyiraman.

Pada hari kerja biasa, APIS "bangun" pada pukul 7 pagi (dapat dikonfigurasi), dan memasuki mode malam pada pukul 10 malam (dapat dikonfigurasi). Pada akhir pekan, APIS menggunakan setelan "penyesuaian akhir pekan" untuk menunda bangun (hingga pukul 9 pagi misalnya, jika penyesuaian akhir pekan adalah 2 jam).

PAPAN BREAKOUT RTC vs. RTC "PERANGKAT LUNAK":

Saya menggunakan RTC perangkat keras (tersedia di sini) untuk melacak tanggal/waktu dan masuk/keluar dari mode malam.

Ini opsional untuk digunakan, karena sketsa dapat dikompilasi untuk menggunakan apa yang disebut "perangkat lunak" RTC (menggunakan fungsionalitas milis() dari arduino).

Kelemahan menggunakan perangkat lunak RTC adalah Anda harus mengatur waktu setiap kali APIS menyala.

Saya memodifikasi perpustakaan RTC standar untuk mencocokkan API dengan tepat, dan juga untuk mengatasi masalah rollover mili. (Silakan lihat langkah sketsa untuk mengunduh).

Langkah 10: MENYATAKAN SEMUANYA

MENYATAKAN SEMUANYA
MENYATAKAN SEMUANYA
MENYATAKAN SEMUANYA
MENYATAKAN SEMUANYA
MENYATAKAN SEMUANYA
MENYATAKAN SEMUANYA
MENYATAKAN SEMUANYA
MENYATAKAN SEMUANYA

Seluruh sistem (kecuali probe) termasuk pompa dimasukkan ke dalam kotak kecil untuk Arduino Uno.

  1. Layar TM1650 menggunakan antarmuka TWI, sehingga kabel SDA dan SDC masing-masing menuju ke pin Arduino A4 dan A5. Dua kabel lainnya adalah +5v dan GND.
  2. Papan RTC menggunakan antarmuka TWI, jadi sama seperti di atas. (TM1650 dan RTC menggunakan port yang berbeda, sehingga mereka hidup berdampingan dengan damai). Pin RTC +5v terhubung ke pin arduino 12 (didukung melalui pin digital, bukan +5v). Tidak ingat mengapa saya melakukannya, Anda tidak perlu melakukannya.
  3. Pin L293D terhubung sebagai berikut: aktifkan (pin 1) ke D5, dan pin kontrol arah 2 dan 7 masing-masing ke pin arduino D6 dan D7.
  4. TOMBOL terhubung ke pin D2, D8 dan D9 untuk SELECT, PLUS dan MINUS masing-masing. (Tombol diimplementasikan dengan resistor 10K pull-down - dalam konfigurasi "aktif-tinggi").
  5. Daya +5v modul PROBE terhubung ke pin arduino 10 (untuk memungkinkan pengukuran berkala), dan probe terhubung ke pin analog A1.

CATATAN: File skema Fritzing telah ditambahkan ke repositori github.

Langkah 11: SKETSA dan Lainnya

SKETSA dan Lainnya
SKETSA dan Lainnya

Pembaruan Maret 2015:

  1. Fungsi tambahan untuk mengalirkan tabung setelah penyiraman mengalir untuk mencegah pembentukan jamur (Wah! Saya senang saya tidak mengarahkan arah putaran pompa pada L293D!)
  2. Pencatatan yang lebih ekstensif mencakup tanggal/waktu mulai dan berakhirnya penyiraman, kelembaban awal dan akhir, dan berapa kali pompa dinyalakan selama penyiraman.
  3. Rutinitas kesalahan diperbarui: perangkat akan disetel ulang setelah 24 jam memasuki kondisi kesalahan
  4. Dikompilasi ulang dengan TaskScheduler 2.1.0
  5. Berbagai perbaikan bug lainnya

Mulai 18 November 2015 APIS ditingkatkan dengan fitur tambahan berikut:

  1. Penggunaan perpustakaan DirectIO untuk perubahan pin yang lebih cepat dan lebih mudah
  2. Penggunaan perpustakaan Zona Waktu untuk beralih dengan benar antara EST dan EDT
  3. Menambahkan logika pemantulan tombol hanya menggunakan Penjadwal Tugas
  4. Menambahkan fungsi pengulangan tombol (nilai siklus jika tombol ditekan dan ditahan, dengan kecepatan siklus meningkat setelah 5 siklus)
  5. Dikompilasi ulang dengan IDE 1.6.6 AVR 1.6.9 melawan TaskScheduler 1.8.4
  6. Pindah ke Github

PERPUSTAKAAN:

APIS didasarkan pada pustaka berikut:

  • EEPROM - bagian dari Arduino IDE
  • Kawat - bagian dari Arduino IDE
  • EnableInterrupt - tersedia di Github
  • Zona waktu - tersedia di Github
  • DirectIO - tersedia di Github

Dimodifikasi (bercabang) oleh saya:

  • Waktu - tersedia di Github
  • RTClib - tersedia di Github

Dikembangkan oleh saya:

  • TM1650 - tersedia di Github
  • Penjadwal Tugas - tersedia di Github
  • AvgFilter - tersedia di Github

SKETSA:

Versi terbaru dari sketsa APIS, termasuk file skema fritzing, tersedia di Github

LEMBAR DATA:

  • L293D: di sini
  • Papan breakout RTC: di sini

Langkah 12: *** KITA MENANG!!! ***

*** KAMI MENANG !!! ***
*** KAMI MENANG !!! ***

Proyek ini memenangkan Hadiah Kedua dalam kontes Otomasi Rumah yang disponsori oleh Dexter Industries.

Coba lihat! WOO HOO!!!

Otomatisasi Rumah
Otomatisasi Rumah
Otomatisasi Rumah
Otomatisasi Rumah

Hadiah Kedua dalam Otomasi Rumah