WaterPi: Penyiraman & Pemantauan Jarak Jauh Cerdas untuk Tanaman Rumah
Komponen dan Perlengkapan
Raspberry Pi 1 Model B
×
1
Arduino UNO
×
1
Sensor Suhu & Kelembaban DHT11 (4 pin)
×
1
Sensor Kelembaban Tanah YL-69
×
1
Sensor Tinggi Air
×
1
LCD Standar 16x2
×
1
Motor Pompa Air
×
1
Relay 5V
×
1
Tempat Baterai 4xAA
×
1
Aplikasi dan Layanan Online
Amazon Web Services AWS IoT
Amazon Web Services AWS DynamoDB
Johnny-Five
Tentang Proyek Ini
Pendahuluan
Sistem ini adalah solusi yang cocok untuk orang yang suka dan ingin merawat tanaman di rumah mereka tetapi sangat sibuk dengan pekerjaan harian untuk melakukannya. Menanam tanaman membutuhkan waktu dan upaya untuk berhasil karena ada beberapa hal teratur yang harus dilakukan seperti menyiram mereka setiap hari. Orang terkadang lupa merawat tanaman mereka. Juga, beberapa orang sering bepergian dan menghabiskan lebih sedikit waktu di rumah mereka. Dalam konteks ini, mereka biasanya meminta bantuan untuk merawat tanaman rumah mereka jika tidak mereka hanya menyerah untuk memilikinya. WaterPi dapat membantu orang-orang ini dengan melakukan hal teratur untuk tanaman. Juga, karena dapat dikendalikan secara jarak jauh, pemilik tanaman dapat campur dalam proses penyiraman saat diperlukan.
Sistem memantau suhu dan kelembaban tempat, dan kelembaban tanah, menyiram tanaman secara jarak jauh, kemudian menyimpan semua data ke DynamoDB melalui AWS IoT. Data yang dikumpulkan divisualisasikan oleh berbagai diagram dan angka untuk memberikan pemahaman yang lebih baik tentang kondisi tempat tanaman berkembang.
Raspberry Pi menjalankan aplikasi nodejs untuk mengontrol semua sensor dan pompa air. Untuk tujuan itu saya memilih untuk menggunakan library Johnny-Five. Untuk berkomunikasi dengan AWS, saya menggunakan AWS IoT SDK untuk javascript.
Langkah 1: Setup DynamoDB
DynamoDB digunakan untuk menyimpan data yang dikumpulkan oleh sensor. Pergi ke halaman DynamoDB dan buat tabel baru dengan atribut berikut:
Nama Tabel: waterpi_sensor_data
Kunci Partisi: key
Klik Add Sort key dan tambahkan timestamp
Hal penting adalah key dan timestamp tipe harus String.
Langkah 2: Setup AWS IoT
Pergi ke Halaman Konsol AWS IoT dan lakukan hal berikut:
Buat sesuatu dengan nama raspi-water-pump
Buat kebijakan baru. Nama kebijakan pump-policy, Aksi iot:*, sumber daya *, pilih Allow, lalu klik Add statement dan Create.
Buat sertifikat dengan 1-Click certificate create. Kemudian unduh kunci publik, kunci pribadi, dan sertifikat.
Kemudian Anda harus memilih sertifikat yang telah Anda buat dan lakukan hal berikut:
klik Actions > Activate tombol sertifikat
klik Actions > Attach a policy, ketik nama kebijakan yang Anda buat dan klik Attach
klik Actions > Attach a thing, ketik raspi-water-pump, dan klik Attach
Buat aturan dengan hal berikut:
nama saveToDynamoDB
Atribut *
Filter Topik sensor/data
Pilih tindakan insert message into a database table
Nama Tabel waterpi_sensor_data
Nilai kunci hash ${topic()}
Nilai kunci rentang ${timestamp()}
Nama Peran > Klik buat peran baru dan klik tombol Allow dari halaman yang terbuka lalu pilih dari daftar Nama Peran
Langkah 3: Mempersiapkan Arduino
Keluaran sensor ketinggian air dan kelembaban tanah adalah keluaran analog. Oleh karena itu, alih-alih menyambungkannya secara langsung ke Raspberry Pi, saya memilih untuk menggunakan Arduino untuk mengambil nilai analog tersebut dan kemudian mengirim ke Pi melalui Arduino sebagai nilai digital. Kode Arduino diperbarui oleh Pi, jadi satu-satunya hal yang harus kita lakukan dalam langkah ini adalah menghubungkan Arduino ke komputer kita dan mengunggah firmata standar ke dalamnya.
Jika Anda tidak memiliki Arduino IDE, ikuti langkah-langkah di sini untuk menginstalnya.
Skema Pemasangan Sensor Kelembaban Tanah ke Arduino harus seperti di bawah ini;
VCC (daya) -> PIN 7
GND (ground) -> GND
AO (keluaran analog) -> A1
Skema Pemasangan Sensor Ketinggian Air ke Arduino harus seperti di bawah ini;
(+) -> PIN 4
(-) -> GND
S -> A0
Setelah itu Anda harus menghubungkan Arduino Anda dengan Raspberry Pi melalui kabel USB. Jangan lupa untuk memasukkan sensor kelembaban tanah ke dalam pot bunga dan sensor ketinggian air ke dalam tangki air Anda.
Langkah 4: Mempersiapkan Raspberry Pi
Sambungkan layar LCD, dht11, pompa air melalui relay dengan Raspberry Pi.
Pemasangan DHT11 ke Pi
S -> GPIO4 (pin 7)
(+) -> 3V3 (pin 1)
(-) -> GND (pin 25)
Pemasangan Layar LCD
VCC -> 5V (pin 2)
GND -> GND (pin 6)
SDA -> GPIO2 (pin 3)
SCL -> GPIO3 (pin 5)
Pemasangan Relay untuk Pompa Air
S -> GPIO18 (pin 12)
(+) -> 5V (pin 4)
(-) -> GND (pin 20)
Pemasangan pompa air dengan relay dan paket baterai
Pompa air memiliki dua kabel. Satu harus dihubungkan ke relay, yang lain harus dirangkaikan dengan kabel paket baterai.
Kabel paket baterai lainnya harus dihubungkan ke relay. Lihat diagram di atas untuk mempelajari cara menghubungkannya.
Langkah 5: Menjalankan Aplikasi Nodejs di Pi
Dalam bagian ini, kita akan menjalankan aplikasi nodejs di pi untuk mengumpulkan data sensor dan mengontrol pompa air. Raspberry pi harus terhubung ke Internet. Anda dapat melakukannya melalui ethernet atau wifi.
Node harus diinstal di pi sebelum melanjutkan. Jika Anda belum menginstal nodejs silakan ikuti tutorial di sini untuk menginstalnya.
Hubungkan Raspberry Pi Anda dan jalankan hal berikut:
git clone git@github.com:demirhanaydin/waterpi-node.git cd waterpi-node npm install
Anda harus menempatkan kunci publik, kunci pribadi, dan file sertifikat yang Anda unduh dari halaman aws iot di bawah folder certs. Juga Anda harus mengunduh file sertifikat root CA dari root certificate. Simpan file tersebut sebagai rootCA.pem dan tempatkan di bawah folder certs.
Kemudian buka file device.js dengan editor teks favorit Anda dan perbarui baris-baris ini dengan jalur file Anda. Anda harus mendapatkan IOT_DEVICE_URL Anda dari platform AWS IoT dengan mengklik sesuatu Anda. Itu harus seperti https://XXXXXXXXX.iot.us-east-1.amazonaws.com
Kemudian jalankan
sudo node index.js
Jika semuanya benar, Anda seharusnya dapat melihat nilai sensor dicetak pada layar LCD.
Juga Anda harus melihat nilai-nilai di tabel DynamoDB Anda. Aplikasi mengirim data sensor ke platform IoT setiap 20 detik
Langkah 6: Menjalankan Aplikasi Web
Aplikasi sinatra dasar memvisualisasikan data yang ada di tabel dynamodb dengan menggunakan highcharts. Juga, dapat mengontrol pompa air secara jarak jauh. Apa yang dilakukan adalah setiap kali pengguna mengklik tombol start/stop, itu mempublikasikan peristiwa ke platform AWS IoT. Raspberry Pi menerima peristiwa ini dan memprosesnya apakah akan memulai atau menghentikan pompa.
Ruby harus diinstal di komputer Anda untuk melanjutkan tutorial. Jika tidak, silakan periksa halaman ini untuk menginstalnya.
Buka Terminal Anda dan jalankan perintah berikut
git clone git@github.com:demirhanaydin/waterpi-web.git cd waterpi-web bundle install
Anda harus menempatkan kunci publik, kunci pribadi, sertifikat, dan file rootCA di bawah folder certs. Kemudian buka boot.rb dan perbarui baris-baris ini dengan nilai yang tepat. Anda harus mengambil kunci akses aws dan rahasia dari halaman Security Credentials di AWS Management Console.
Jika selesai, Anda harus menjalankan proyek seperti
ruby app.rb
Buka browser Anda dan ketik https://localhost:4567/ Anda seharusnya dapat melihat data sensor yang dikumpulkan yang datang dari dynamodb pada diagram.
Saat Anda klik start, pompa akan mulai menyiram tanaman.
Berikut beberapa foto yang saya ambil saat mengembangkan proyek ini
Selamat!
Kode
Kode Sumber Nodejs Raspberry Pi
clone kode sumber ke raspberry pi dan tambahkan file sertifikat aws iot Anda di bawah folder certs. Anda juga harus memperbarui device.js dengan url aws iot thing Andahttps://github.com/demirhanaydin/waterpi-node
Klien Web WaterPi
jangan lupa memperbarui boot.rb dengan kredensial Andahttps://github.com/demirhanaydin/waterpi-web