Taman Rumahan Berbasis Arduino: Perawatan Tanaman Cerdas dan Otomatis
Komponen dan Perlengkapan
Arduino Nano R3
×
1
Dongle Bluetooth ke USB mbientLab
×
1
PCB Kustom JLCPCB
×
1
Tentang Proyek Ini
Berkebun di era modern berarti membuat hal-hal menjadi lebih rumit dan sulit, dengan elektron, bit, dan byte. Menggabungkan mikrokontroler dan berkebun adalah ide yang sangat populer. Saya pikir itu karena taman memiliki input dan output yang sangat sederhana yang mudah dipahami. Saya duga orang (saya sendiri termasuk) melihat hobi yang terkenal sederhana dan santai dan tidak bisa menahan diri untuk tidak merasa terpaksa mempersulitnya.
Dalam proyek ini saya akan menunjukkan kepada Anda cara membuat versi yang lebih sederhana dari taman indoor menggunakan papan pengembangan Arduino.
Saya memberikan panduan langkah demi langkah penuh untuk menunjukkan kepada Anda cara membuat taman indah Anda sendiri, dan saya menjelaskan secara detail baik bagian perangkat keras maupun perangkat lunak untuk mengubah panduan ini menjadi cara termudah yang membawa Anda untuk mencoba keterampilan Anda dalam pembuatan elektronik. Proyek ini sangat praktis untuk dibuat terutama setelah mendapatkan PCB kustom yang telah kami pesan dari JLCPCB untuk memperbaiki penampilan mobil kami dan juga ada cukup dokumen dan kode dalam panduan ini untuk memungkinkan Anda menciptakan sistem taman otomatis Anda sendiri.
Kami telah membuat proyek ini hanya dalam 7 hari, hanya tiga hari untuk menyelesaikan pembuatan perangkat keras dan pemasangan, lalu 4 hari untuk menyiapkan kode dan aplikasi android. untuk mengontrol taman melalui itu. Sebelum memulai mari kita lihat terlebih dahulu
Apa yang akan Anda pelajari dari tutorial ini :
Memilih komponen yang tepat tergantung pada fungsionalitas proyek Anda
Membuat rangkaian untuk menghubungkan semua komponen yang dipilih
Menggabungkan semua bagian proyek dan memulai pengujian
Menggunakan aplikasi Android untuk terhubung melalui Bluetooth dan mulai memanipulasi sistem
Langkah 1: Apa itu Taman Indoor!
Sebagian besar tanaman memiliki kebutuhan sederhana. Seperti tamu, mereka relatif tidak terlalu mengharuskan. Hanya ada tiga hal dasar yang perlu Anda pahami sebelum Anda memutuskan untuk mengundang tanaman ke rumah: cahaya, air, dan udara. Jika Anda dapat menguasai empat elemen ini, dari perspektif tanaman, Anda dapat membuat taman indoor hampir di mana saja di dunia dan selama setiap musim tahun.
Cahaya - Sebagian besar tanaman taman membutuhkan setidaknya enam jam cahaya sehari. Tetapi itu harus cahaya yang baik. Jika Anda menaruh tangan di depan jendela dan tidak membuat bayangan, kemungkinan cahaya tidak memadai untuk sebagian besar tanaman untuk hidup bahagia. Namun, Anda selalu dapat menambahkan cahaya grow light untuk kondisi cahaya rendah. Jika Anda memiliki cahaya alami yang modest di rumah Anda dan tidak ingin repot dengan pencahayaan khusus, pilih tanaman yang biasanya membutuhkan kondisi cahaya rendah, atau coba pindahkan taman Anda ke jendela yang menyala matahari.
Air - Tanaman membutuhkan kondisi yang mirip dengan habitat asli mereka. Tanaman yang menyebut gurun sebagai rumahnya akan membutuhkan penyiraman yang kurang sering daripada tanaman yang tinggal di rawa. Mengetahui kondisi air yang disukai oleh tanaman adalah langkah pertama yang baik untuk menjaga taman indoor yang sukses. Ini lebih mudah dari yang Anda pikir karena tanaman itu sendiri sering memberi Anda petunjuk. Tanaman dengan daun tebal seperti karet adalah penampung air dan biasanya dapat bertahan dengan air lebih sedikit daripada tanaman dengan daun tipis dan rapuh. Jika Anda membenci menyiram tanaman Anda, pilih varietas yang dapat berkembang dengan lebih sedikit, atau pilih pot tanaman dengan reservoir tersembunyi untuk mengurangi tugas penyiraman Anda.
Udara - Sebagai produk samping fotosintesis, tanaman menghasilkan oksigen dan menyaring gas jahat, seperti formaldehide, dari lingkungan rumah Anda melalui daunnya. Untuk menjaga tanaman tetap sehat, Anda perlu menjaga daunnya tetap bersih dan menjaga udara di sekitarnya bergerak dan lembap. Untuk melakukan ini, Anda dapat menempatkannya di tempat dengan sirkulasi udara yang baik atau memberikan kipas kecil kepada mereka.
Saya akan membuat sistem berbasis Arduino untuk memantau status suhu dan kelembaban tanaman saya dan secara otomatis menyediakan kebutuhan yang diperlukan seperti intensitas cahaya, air, dan udara segar murni dan untuk melakukan ini saya butuh beberapa sensor untuk mengontrol beberapa aktuator. Misalnya saya akan mengontrol intensitas cahaya tergantung pada sinyal yang diterima dari sensor kecerahan cahaya yang sama untuk penyiraman saya menggunakan sensor kelembaban tanah untuk menyalakan dan mematikan pompa air dan sensor suhu/kelembaban untuk mengontrol on dan off kipas DC 12V.
Langkah 2: Sensor dan Aktuator
Membuat sistem ini adalah Pengumpulan beberapa sensor dan aktuator untuk mengakses data fisik di sekitar tanaman dan dapat menemukan hal apa yang diminta oleh tanaman dan kapan harus Anda sediakan.
Ini adalah alasan mengapa Anda harus menggunakan beberapa sensor dan aktuator yang semuanya terhubung ke satu papan Arduino:
Sensor
Sensor cahaya BH1750 : BH1750FVI adalah Sensor Cahaya Digital , yang merupakan IC Sensor Cahaya Ambient Digital untuk antarmuka bus I2C. IC ini paling sesuai untuk mendapatkan data cahaya ambient untuk menyesuaikan daya backlight LCD dan Keypad ponsel. Memungkinkan untuk mendeteksi rentang luas dengan resolusi tinggi. (1 - 65535 lx ).
Sensor kelembaban tanah : Sensor kelembaban yang mengukur resistansi atau konduktivitas di seluruh matriks tanah antara dua kontak pada dasarnya adalah sampah. Pertama-tama, resistansi bukan indikator yang sangat baik untuk konten kelembaban, karena sangat tergantung pada sejumlah faktor yang mungkin bervariasi dari taman ke tanah termasuk pH tanah, padatan terlarut dalam air, dan suhu. Kedua, sebagian besar dari mereka berkualitas buruk dengan kontak yang mudah korosi. Sebagian besar Anda akan beruntung jika mendapatkan satu yang bertahan selama satu musim penuh.
Sensor Suhu & Kelembaban : DHT11 adalah sensor suhu dan kelembaban digital dasar, ultra murah. Ia menggunakan sensor kelembaban kapasitif dan termistor untuk mengukur udara di sekitarnya, dan mengeluarkan sinyal digital pada pin data (tidak diperlukan pin input analog). Cukup sederhana untuk digunakan, tetapi memerlukan waktu yang hati-hati untuk mengambil data. Satu kekurangan nyata dari sensor ini adalah Anda hanya dapat mendapatkan data baru dari itu setiap 2 detik sekali, jadi saat menggunakan pustaka kami, pembacaan sensor dapat berumur hingga 2 detik.
Aktuator
LED putih cahaya : Dioda emissi cahaya (LED) adalah sumber cahaya semiconductornya dua kaki. Ini adalah dioda sambungan p–n yang memancarkan cahaya saat diaktifkan.[5] Ketika tegangan yang sesuai diterapkan pada kaki, elektron dapat merekombinasikan dengan lubang elektron di dalam perangkat, melepaskan energi dalam bentuk foton.
Pompa air : Pompa adalah perangkat yang memindahkan fluida (cairan atau gas), atau terkadang selerapan, oleh aksi mekanis. Pompa dapat diklasifikasikan ke dalam tiga kelompok utama menurut metode yang mereka gunakan untuk memindahkan fluida: pompa angkat langsung, pompa perpindahan, dan pompa gravitasi. Pompa bekerja melalui beberapa mekanisme (biasanya gerak balik atau putar), dan mengonsumsi energi untuk melakukan pekerjaan mekanis dengan memindahkan fluida. Pompa bekerja melalui banyak sumber energi, termasuk operasi manual, listrik, mesin, atau tenaga angin, datang dalam banyak ukuran, dari mikroskopik untuk penggunaan dalam aplikasi medis hingga pompa industri besar.
Kipas pendingin DC 12V : Penting untuk memahami teknik pendinginan yang dapat digunakan untuk melindungi kehidupan tanaman Anda dengan memindahkan udara segar di sekitar tanaman ketika diperlukan untuk menjaga tanaman dalam kondisi sehat.
Langkah 3: Pembuatan PCB (Dihasilkan oleh JLCPCB)
Tentang JLCPCB
JLCPCB (Shenzhen JIALICHUANG Electronic Technology Development Co., Ltd.), adalah perusahaan prototipe PCB terbesar di Cina dan produsen teknologi tinggi yang khusus dalam prototipe PCB cepat dan produksi PCB kecil.
Dengan lebih dari 10 tahun pengalaman dalam pembuatan PCB, JLCPCB memiliki lebih dari 200.000 pelanggan di dalam dan luar negeri, dengan lebih dari 8.000 pesanan online untuk prototipe PCB dan produksi PCB kecil per hari. Kapasitas produksi tahunan adalah 200.000 sq.m. untuk berbagai PCB 1 lapis, 2 lapis, atau multi-lapis. JLC adalah produsen PCB profesional dengan skala besar, peralatan yang baik, manajemen yang ketat, dan kualitas superior.
Kembali ke proyek kami
Untuk memproduksi PCB, saya telah membandingkan harga dari banyak produsen PCB dan saya memilih JLCPCB sebagai penyedia PCB terbaik dan penyedia PCB termurah untuk memesan rangkaian ini. Semua yang perlu saya lakukan adalah beberapa klik sederhana untuk mengunggah berkas gerber dan mengatur beberapa parameter seperti ketebalan PCB warna dan kuantitas, lalu saya telah membayar hanya 2 Dollar untuk mendapatkan PCB saya setelah 3 hari saja dan saya perhatikan bahwa ada beberapa tawaran pengiriman gratis dari waktu ke waktu di platform pemesanan online ini.
Anda dapat mendapatkan berkas Rangkaian (PDF) dari sini.
Seperti yang Anda lihat di gambar di atas PCB sangat diproduksi dengan baik dan saya mendapatkan bentuk daun PCB yang sama yang telah kami desain dan semua label dan logo ada untuk memandu saya selama langkah penyolengan.
Langkah 4: Bahan-bahan
Sekarang mari kita tinjau komponen yang diperlukan untuk proyek ini dan Anda dapat menemukan semua tautan terkait untuk pemesanan online jadi kita akan membutuhkan:
- PCB yang telah kami pesan dari JLCPCB
- Arduino Nano : https://amzn.to/2C7g0YW
- Modul ESP01 : https://amzn.to/2CCRVdL
- Modul Bluetooth HC-05 atau HC-06 : https://amzn.to/2CCRVdL
- Sensor cahaya BH1750 : https://amzn.to/2CCRVdL
- Sensor Suhu & Kelembaban : https://amzn.to/2CCRVdL
- Sensor kelembaban : https://amzn.to/2CCRVdL
- Pompa air : https://amzn.to/2CCRVdL
- Kipas DC 12V : https://amzn.to/2CCRVdL
- LED putih : https://amzn.to/2CCRVdL
- Beberapa konektor Header: https://amzn.to/2CCRVdL-
Langkah 5: Pemasangan
Tampilkan Semua 9 Item
Kami siap sekarang jadi mari kita mulai menyoleng komponen dan jangan lupa untuk mengikuti label untuk menghindari kesalahan penyolengan. Kami memulai dengan menyoleng konektor Arduino untuk menguji suplai daya dan Anda juga dapat menulis beberapa kode uji dasar untuk memverifikasi koneksi yang benar untuk setiap sensor seperti sensor cahaya dan hal yang sama untuk LED karena semuanya terhubung langsung ke papan (Arduino) jadi Anda memiliki akses penuh ke mereka.
Catatan: Anda perlu menjaga pengoleng logam Anda tetap bersih dan rapi. Artinya mengosongkan ia pada spons setiap kali Anda menggunakannya. Ujung pengoleng logam Anda harus bersih dan bersinar. Setiap kali Anda melihat ujung menjadi kotak dengan flux atau oksidasi, artinya kehilangan kilauannya, Anda harus membersihkannya. Bahkan jika Anda di tengah-tengah penyolengan. Memiliki ujung pengoleng yang bersih membuatnya BANYAK lebih mudah untuk mentransfer panas ke target penyolengan.
PCB yang kami pesan dari JLCPCB akan memandu Anda untuk menempatkan semuanya di tempat yang benar jadi jangan ragu untuk mengunjungi tautan ini jika Anda ingin melihat PCB yang telah kami buat dan memesan online.
Seperti yang Anda lihat, menggunakan PCB ini sangat praktis karena kualitasnya dan untuk itu semua label yang ada memberikan panduan terbaik untuk Anda, jadi Anda akan 100% yakin bahwa Anda tidak akan membuat kesalahan penyolengan.
Saya telah menyoleng setiap komponen ke tempatnya dan Anda dapat menggunakan kedua sisi PCB untuk menyoleng bagian elektronik Anda.
Sekarang kami memiliki PCB yang siap dan semua komponen disoleng dengan sangat baik, setelah itu saya menyiapkan desain ini untuk pemotongan laser CNC untuk memasukkan bagian elektronik dan tanaman dalam satu sokongan, jadi jika Anda ingin membuat desain yang sama dengan saya temukan berkas (DXF) di sini
Langkah 6: Aplikasi Android.
Aplikasi ini akan memungkinkan Anda untuk terhubung ke Arduino Anda melalui Bluetooth, dan menggunakan mode Manual Anda dapat memiliki akses ke kipas, lampu dan juga pompa air untuk mengontrol ON dan OFF, tanpa lupa sensor yang dapat Anda baca datanya dengan menekan tombol “get data” dan semua data yang sesuai akan ditampilkan pada layar smartphone Anda.
Anda dapat mendapatkan aplikasi android ini secara gratis dari tautan ini
Langkah 7: Kode Arduino dan Validasi Pengujian
kode tersedia dan seperti biasa Anda dapat mengunduhnya dari tautan ini. Dan seperti yang Anda lihat di foto kode sangat sederhana dan sangat baik dikomentari sehingga Anda dapat memahaminya sendiri.
Seperti yang Anda lihat para sahabat setiap tombol memiliki fungsionalitas dengan sistem tetapi apa yang saya sangat hargai adalah mode otomatis untuk kontrol kecerahan cahaya saya meletakkan sensor cahaya di dasar bawah rumah lalu ketika kita memilih mode ini sistem akan mengontrol kecerahan lampu LED depan tergantung pada sinyal sensor. Juga kita dapat membaca nilai suhu dan kelembaban langsung pada layar ponsel pintar yang sangat mengesankan.
Kode
Kode sumber ArduinoArduino
/************************************************************************************************************************************************************************ * - Author : BELKHIR Mohamed * * - Profession : (Developer) MEGA DAS owner * * - Main purpose : Industrial Application * * - Copyright (c) holder : All rights reserved * * - License : BSD 2-Clause License * * - Date : 20/11/2017 * * ***********************************************************************************************************************************************************************/ /*********************************** NOTE **************************************/ // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // * Redistributions of source code must retain the above copyright notice, this // list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED /* ________________________________________________________________________________________________ (`v) ________________________________________________________________________________________________(`())__(`v) _________________________________________________________________________________________________(_.^._)__(`()) ___________________________________________________________________________________________________(`v)(_.^._) __________________________________________________________________________________________________(`())(`v) ___________________________________________________________________________________________________(_.^._)(`()) ______________________________________________________________________________________________(`v)_____ (_.^._)(`v) _____________________________________________________________________________________________ (`())_ (`v)___(`()) ______________________________________________________________________________________________ (_.^._)_(`())___(_.^._) ______________________________________________________________________________________________ (`v) (_.^._) (`v) ______________________________________________________________________________________________(`())____(`()) _______________________________________________________________________________________________(_.^._)_____(_.^._) _____________________________________________________________________________________________________ ___________________________________________________________________________________________________ _____________________________________________________________________________________________________. ___________________________________________________________________________________________________ ___________________________________________________________________________________________________ ____________________________________________________________________________________________________ ______________________________________________________________________________________________________ _______________________________________________________________________________________________________ ____________________________________________________________________________________________________________ ____________________________________________________________________________________________.________ _________________________________________________________________________________________________ __________________________________________________________________________________________________ ___________________________________________________________________________________________ ___________ ___________________________________________________________________________________________________________ ____________________________________________________________________________________________________ ______________________________________________________________________________________________ __________________________________________________________________________________________(`v) __________________________________________________________________________________________(`()) __________________________________________________________________________________________ (_.^._) ___________________________________________________________________________________________ (`v) ____________________________________________________________________________________________ (`()) ______________________________________________________________________________________________ (_.^._) ________________________________________________________________________________________________(`v) __________________________________________________________________________________________________(`()) __________________________________________________________________________________________________(_.^._)______ _____________________________________________________________________________________________ _______________________________________________________________________________________________ */ #include "DHT.h" // Include the dht library to interface with the DHT sensor #include <Wire.h> // IC library to use the light sensor #include <BH1750.h> // Import BH1750 library in order to be able to use the light sensor //------------------------------------------------ Define the control pins -------------------------------------------------------- const int Pump=4; // We've used this pin to control the motor pump const int Fan=5; // Use this pin as a PWM output to control the Fan speed const int Light=6; // Use this pin in order to control the LED brightness const int TempHum=7; // Input pin for DHT sensor const int Moisture=8; // Digital Input pin to read the moisture command signals const int TestLED=9; // Use this output pin to test the right soldering on your PCB by turning on and off the test LEDs const int Brightness=12; // Input pin to read the light sensor signals const int analogMoistue=0; // Analog Input to read the analog signal from moisture sensor //--------------------------------------------------------------------------------------------------------------------------------- #define DHTTYPE DHT11 // DHT 22 (AM2302), AM2321 DHT dht(TempHum, DHTTYPE); // Temperature and humidity sensor constructor BH1750 lightMeter; // Light sensor constructor char Data='x'; // Store Serial data in this variable String cmd=""; // Read the full instruction sent from the android app int flagModeAuto=0; // flag to activate the auto mode int sprayCMD=0; // CMD limit spray int LightCMD=0; // CMD limit brightness int lightLevelPlus=0; // Variable to control the light brightness float temperature=0; // Variable to store the temperature value float humidity=0; // Variable to store the humidity value uint16_t lux=0; // Variable to read light brightness from the light sensor //------------------------------------------------ Start the pin configuration -------------------------------------------------------- void setup() { Wire.begin(); // Initialize the I2C bus (BH1750 library doesn't do this automatically) dht.begin(); // Start the temperature and humidity sensor reading lightMeter.begin(); // Start the light sensor reading Serial.begin(9600); // Set the baudrate up to 9600 BPS to comunicate with the android app through Bluetooth Serial.setTimeout(100); // Set the time to wait for data before closing the Serial port (after 100 ms) pinMode(Pump,OUTPUT); pinMode(Fan,OUTPUT); pinMode(Light,OUTPUT); pinMode(Moisture,INPUT); pinMode(TestLED,INPUT); delay(1000); digitalWrite(Pump,LOW); digitalWrite(Fan,LOW); digitalWrite(Light,LOW); } //------------------------------------------------ Start the Process code -------------------------------------------------------- void loop() { while(Serial.available()) // Read the serial data once available { delay(10); Data=Serial.read(); cmd+=Data; } if(cmd=="dt") // Send the humidity value to the android app { Serial.print(humidity); } if(cmd=="dh") // Send the brightness value to the android app { Serial.print(lux); } if(cmd=="db") // Send the temperature value to the android app { Serial.print(temperature); } if(cmd=="o") // Activate the automatic mode { flagModeAuto=1; } if(cmd=="m") // Disactivate the automatic mode { flagModeAuto=0; } if(flagModeAuto==1) { autoPump(); lightBrightness(); autoFan(); } if(flagModeAuto==0) { if(cmd=="f") // Turn ON the FAN { analogWrite(Fan,255); } if(cmd=="x") // Turn OFF the FAN { analogWrite(Fan,0); } if(cmd=="l") // Turn ON the Lights { analogWrite(Light,255); } if(cmd=="k") // Turn OFF the Lights { analogWrite(Light,0); } if(cmd=="w") // Turn ON the Pump { analogWrite(Pump,255); } if(cmd=="y") // Turn OFF the Pump { analogWrite(Pump,0); } } cmd=""; // Clear the cmd variable to make it available for the next instruction lux = lightMeter.readLightLevel(); // Get the brightness level from the light sensor temperature=dht.readTemperature(); // Get the temperature value from the DHT sensor (C) humidity=dht.readHumidity(); // Get the humidity value from the DHT sensor (%) } //------------------------------------------------ Auto control function for Pump spray -------------------------------------------------------- void autoPump() { if(analogRead(analogMoistue)<sprayCMD) { digitalWrite(Pump,HIGH); delay(1000); digitalWrite(Pump,LOW); delay(1000); } } //------------------------------------------------ Auto control function for Brightness LED -------------------------------------------------------- void lightBrightness() { while(lux<LightCMD) { analogWrite(Light,lightLevelPlus); // Increase the light brightness delay(100); lightLevelPlus++; lux = lightMeter.readLightLevel(); // Read the light brightness level } } //------------------------------------------------ Auto control function for FAN -------------------------------------------------------- void autoFan() { if(temperature>30) { analogWrite(Fan,255); // Turn ON the fan if the temperature exceed 30C } else { analogWrite(Fan,0); // Turn OFF the fan if the temperature exceed 30C } }