Tentang proyek ini
Pendahuluan
Sistem ini menjadi solusi yang tepat bagi orang yang suka dan ingin merawat tanaman di rumahnya namun sangat sibuk dengan pekerjaan sehari-hari. Menanam tanaman membutuhkan waktu dan usaha agar berhasil karena ada beberapa hal rutin yang harus dilakukan seperti menyiraminya setiap hari. Orang terkadang lupa untuk merawat tanamannya. Juga, beberapa orang sering bepergian dan menghabiskan lebih sedikit waktu di rumah mereka. Dalam konteks ini, mereka umumnya meminta bantuan untuk merawat tanaman hias mereka jika tidak, mereka menyerah begitu saja untuk memilikinya. WaterPican membantu orang-orang dengan melakukan hal-hal biasa untuk tanaman. Selain itu, karena dapat dikendalikan dari jarak jauh, pemilik tanaman dapat dengan mudah mengganggu proses penyiraman saat dibutuhkan.
Sistem memantau suhu dan kelembapan tempat, serta kelembapan tanah, menyirami tanaman dari jarak jauh, lalu menyimpan semua data ke DynamoDB melalui AWS IoT. Data yang dikumpulkan divisualisasikan dengan bagan dan gambar yang berbeda untuk memberikan pemahaman yang lebih baik tentang kondisi di mana tanaman tumbuh subur.
Raspberry Pi menjalankan aplikasi nodejs untuk mengontrol semua sensor dan pompa air. Untuk tujuan itu saya lebih suka menggunakan perpustakaan Johnny-Five. Untuk berkomunikasi dengan AWS, saya menggunakan AWS IoT SDK untuk javascript.
Langkah 1:Siapkan DynamoDB
DynamoDB digunakan untuk menyimpan data yang dikumpulkan oleh sensor. Buka halaman DynamoDB dan buat tabel baru dengan atribut berikut:
- Nama Tabel:waterpi_sensor_data
- Kunci Partisi: kunci
- Klik Tambahkan kunci Urutkan dan tambahkan stempel waktu
Yang penting adalah tipe kunci dan stempel waktu harus String.
Langkah 2:Siapkan AWS IoT
Buka Halaman Konsol AWS IoT dan lakukan hal berikut:
Buat sesuatu dengan nama raspi-water-pump
Buat kebijakan baru. Nama kebijakan pump-policy, Tindakan iot:*, sumber daya * , pilih Izinkan, lalu klik Tambahkan pernyataan dan Buat.
Buat sertifikat dengan Buat sertifikat 1-Klik . Kemudian unduh kunci publik, kunci pribadi, dan sertifikat.
Kemudian Anda harus memilih sertifikat yang Anda buat dan lakukan hal berikut:
- klik Tindakan > Aktifkan tombol sertifikat
- klik Tindakan> Lampirkan kebijakan , ketik nama kebijakan yang Anda buat dan klik Lampirkan
- klik Tindakan> Lampirkan sesuatu , ketik raspi-water-pump, dan klik Lampirkan
Buat aturan dengan yang berikut:
- nama saveToDynamoDB
- Atribut *
- Filter Topik sensor/data
- Memilih tindakan menyisipkan pesan ke dalam tabel database
- Nama tabel waterpi_sensor_data
- Nilai kunci hash ${topic()}
- Nilai kunci rentang ${timestamp()}
- Nama Peran> Klik buat peran baru dan klik Izinkan dari halaman pembuka lalu pilih dari tarik-turun Nama Peran
Langkah 3:Mempersiapkan Arduino
Ketinggian air, dan keluaran sensor kelembaban tanah adalah keluaran analog. Jadi daripada menghubungkannya langsung ke Raspberry Pi, saya lebih suka 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.
- Buka File> Contoh> Firma> StandardFirmata contoh
Skema Wiring Soil Moisture ke Arduino harus seperti di bawah ini;
- VCC (daya) -> PIN 7
- GND (tanah) -> GND
- AO (keluaran analog) -> A1
Pengkabelan sensor Level Air ke skema Arduino harus seperti di bawah ini;
- (+) -> PIN 4
- (-) -> GND
- S -> A0
Setelah itu Anda harus menghubungkan arduino Anda dengan raspberry pi melalui kabel usb. Juga jangan lupa untuk menempatkan sensor kelembaban tanah Anda ke dalam pot bunga dan sensor ketinggian air Anda ke tangki air Anda.
Langkah 4:Mempersiapkan Raspberry Pi
Layar lcd kawat, dht11, pompa air melalui relai dengan raspberry pi.
Menghubungkan DHT11 ke Pi
- S -> GPIO4 (pin 7)
- (+) -> 3V3 (pin 1)
- (-) -> GND (pin 25)
Kabel Layar LCD
- VCC -> 5V (pin 2)
- GND -> GND (pin 6)
- SDA -> GPIO2 (pin 3)
- SCL -> GPIO3 (pin 5)
Relai Pengkabelan untuk pompa Air
- S -> GPIO18 (pin 12)
- (+) -> 5V (pin 4)
- (-) -> GND (pin 20)
Pengkabelan pompa air dengan relai dan baterai
- Pompa air memiliki dua kabel. Yang satu harus dihubungkan ke relai, yang lain harus disambungkan dengan kabel baterai.
- Kabel paket baterai lainnya harus disambungkan ke relai. Lihat diagram di atas untuk mempelajari cara menghubungkannya.
Langkah 5:Menjalankan Aplikasi Nodejs di Pi
Pada bagian ini, kita akan menjalankan aplikasi nodejs pada pi untuk mengumpulkan data sensor dan mengontrol pompa air. Raspberry pi harus terhubung ke Internet. Anda bisa melakukannya melalui ethernet atau wifi.
Node harus diinstal pada pi sebelum melangkah lebih jauh. Jika Anda belum menginstal nodejs sebelumnya, ikuti tutorial di sini untuk menginstalnya.
Hubungkan raspberry pi Anda dan jalankan perintah berikut:
git clone [email protected]:demirhanaydin/waterpi-node.gitcd waterpi-nodenpm install
Anda harus meletakkan kunci publik, kunci pribadi, dan file sertifikat yang Anda unduh dari halaman aws iot di bawah sertifikat map. Anda juga harus mendownload file sertifikat CA root dari sertifikat root. Simpan file tersebut sebagai rootCA.pem dan letakkan di bawah sertifikat folder.
Kemudian buka device.js file dengan editor teks favorit Anda dan perbarui baris ini dengan jalur file Anda. Anda harus mendapatkan IOT_DEVICE_URL dari platform AWS IoT dengan mengklik barang Anda. Seharusnya seperti https://XXXXXXXXX.iot.us-east-1.amazonaws.com
Kemudian jalankan
sudo node index.js
Jika semuanya benar, Anda seharusnya dapat melihat nilai sensor tercetak di layar lcd.
Anda juga akan melihat nilai dalam tabel DynamoDB Anda. Aplikasi mengirimkan data sensor ke platform IoT setiap 20 detik
Langkah 6:Menjalankan Aplikasi Web
Aplikasi basic sinatra memvisualisasikan data yang ada pada tabel dynamodb dengan menggunakan highcharts. Juga, dapat mengontrol pompa air dari jarak jauh. Apa yang dilakukannya adalah setiap kali pengguna mengklik tombol mulai/berhenti, peristiwa itu akan dipublikasikan ke platform AWS IoT. Raspberry Pi mengambil acara ini dan memprosesnya baik untuk memulai atau menghentikan pompa.
Ruby harus diinstal di komputer Anda untuk melanjutkan tutorial. Jika tidak, periksa halaman ini untuk menginstalnya.
Buka Terminal Anda dan jalankan perintah berikut
git clone [email protected]:demirhanaydin/waterpi-web.gitcd waterpi-webbundle install
Anda harus meletakkan kunci publik, kunci pribadi, sertifikat, dan file rootCA Anda di bawah sertifikat map. Kemudian buka boot.rb dan perbarui baris ini dengan nilai yang sesuai. Anda harus mengambil kunci dan rahasia akses aws Anda dari halaman Kredensial Keamanan di AWS Management Console.
Jika sudah selesai, maka Anda harus menjalankan proyek seperti
ruby app.rb
Buka browser Anda dan ketik http://localhost:4567/ Anda seharusnya dapat melihat data sensor yang dikumpulkan yang berasal dari dynamodb pada grafik.
Saat Anda mengklik mulai, untuk memompa akan mulai menyirami tanaman.
Berikut adalah beberapa foto yang saya ambil ketika saya mengembangkan proyek
Selamat!
Kode
Kode Sumber Raspberry Pi Nodejs
kloning 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 untuk memperbarui boot.rb dengan kredensial Andahttps://github.com/demirhanaydin/waterpi-web Skema
pi-wout-camera.fzz
arduino.fzz