Kit Otomasi Rumah WARAN: Raspberry Pi, Arduino, Sensor & Komponen
Komponen dan Perlengkapan
Raspberry Pi 2 Model B – 1 unit
Arduino UNO – 1 unit
Sensor Suhu & Kelembaban DHT11 (4 pin) – 2 unit
Soil Hygrometer – 1 unit
Arduino Pro Mini 5V – 2 unit
Baterai 9V (umum) – 3 unit
Pompa Air – 1 unit (Opsional)
nRF24l01+ – 3 unit
nRF24l01+ Socket – 1 unit (Opsional)
Transistor NPN – 1 unit (Opsional)
Regulator Tegangan 3.3V – 2 unit
Resistor 10kΩ – 2 unit
Kapasitor 10µF – 4 unit
Kapasitor 47µF – 2 unit
Perfboard – 3 unit
Alat dan Mesin yang Diperlukan
Mesin Solder
Wire Stripper
Wire Nipper
Kabel Jumper
Aplikasi dan Layanan Online
Microsoft Windows 10 IoT Core
Microsoft Azure
PubNub Publish/Subscribe API
Tentang Proyek Ini
Saya berencana membangun sistem otomasi rumah murah. Saya ingin ini menjadi sistem modular sehingga saya dapat terus menambahkan sensor dan perangkat padanya tanpa banyak perubahan. WARAN (Windows IoT, Azure, Raspberry Pi, Arduino, NRF24L01+) adalah sistem otomasi rumah modular yang terdiri dari satu Hub dan beberapa modul. Modul akan kombinasi mikrokontroler dan sensor yang mengumpulkan data dari berbagai lokasi rumah dan mengirimkan data ke Hub melalui RF. Semua komunikasi antara Hub dan modul terjadi melalui RF. Akan ada aplikasi ponsel Windows pendamping untuk Hub juga. Berikut adalah diagram alur sederhana yang menjelaskan pengaturan.
Mengapa Windows IoT ?
Saya adalah pengembang perangkat lunak yang saat ini terjun ke IoT. Dengan pengalaman saya sebelumnya dengan XAML/C# dan Visual Studio (yang menurut saya adalah IDE terbaik yang pernah ada) sangat membantu bagi saya untuk mengimplementasikan ini dengan sangat cepat.
Mengapa NRF24L01+ ?
Saat saya memeriksa opsi nirkabel NRF24L01+ hadir sebagai solusi murah dan hemat daya. Dengan beberapa pustaka yang sangat kuat yang tersedia ini menjadi solusi terbaik bagi saya.
Mengapa Windows Azure
Windows Azure sangat mudah untuk dipelajari dan disesuaikan. Dengan sedikit konfigurasi yang diperlukan untuk membangun layanan kita dapat fokus lebih pada pengembangan daripada konfigurasi dan penerapan. Pengalaman saya sebelumnya dengan Azure membantu saya dalam integrasi yang cepat.
Hub
Hub adalah pusat kontrol WARAN. Ini terdiri dari RPI2, Arduino Uno dan nRF24L01+. RPI2 menjalankan Windows IoT core. Ini menjalankan Aplikasi Universal yang bertindak sebagai pusat kontrol. Hub akan terhubung ke layar besar (biasanya TV atau monitor) yang melalui itu kita dapat melihat data dari modul dan juga mengontrol modul. Keyboard dan mouse yang terhubung ke RPI2 akan membantu menambahkan, menghapus modul dari pusat kontrol. Berikut adalah diagram rangkaiannya (Lihat file WARAN.Hub.fzz di proyek)
Bagaimana cara kerjanya ?
Setiap modul akan memiliki alamat unik yang digunakan hub untuk berkomunikasi dengannya. Kami akan menambahkan modul ke pusat kontrol menggunakan alamat ini dan memberi nama pada modul. Setelah ditambahkan pusat kontrol (Aplikasi Universal) akan mengirim data ke Arduino Uno melalui I2C. Arduino Uno akan mengirim data ke modul melalui nRF24L01+ dan modul membaca data dari sensor atau memulai/menghentikan perangkat berdasarkan data yang diterima dan mengirim data kembali ke Arduino Uno. Arduino Uno akan mengirim data ke pusat kontrol melalui I2C. Data ini akan ditampilkan di TV/Monitor dan juga dikirim ke cloud. Arduino Uno hanya bertindak sebagai antarmuka untuk RPI2 untuk mendapatkan data sensor dari modul lain. Proses di atas akan terjadi dalam tiga skenario
Pada interval tertentu tergantung pada modul
Saat pengguna berinteraksi dengan pusat kontrol (via Mouse/Keyboard)
Saat pemicu dikirim dari cloud (via PubNub)
Berikut adalah alur umum
Dan inilah cara komponen di hub dan modul berinteraksi satu sama lain.
Pusat Kontrol
Pusat kontrol adalah aplikasi universal yang berjalan di RPI2. Pusat kontrol adalah antarmuka bagi pengguna untuk berinteraksi. Ini berkomunikasi dengan modul dan juga dengan cloud. Pusat kontrol WARAN menggunakan Azure Mobile Services dan PubNub sebagai backend cloud-nya. Setiap info modul yang kami tambahkan akan disimpan secara lokal di sqlite db dan juga dikirim ke azure mobile service. Ini akan kemudian mengirim pesan PubNub atau notifikasi push ke aplikasi seluler. Saya tidak ingin menjelaskan bagian pemrograman di sini dan membuat artikel ini menjadi kacau. Kode sumber proyek, dokumentasi dan detail penerapan dapat ditemukan di https://bitbucket.org/arjunganesan/waran (Saya sedang memperbarui dokumentasi sepenuhnya yang akan segera dilakukan). Ini adalah cara kerja pusat kontrol
Aplikasi Seluler
Aplikasi seluler adalah aplikasi ponsel Windows (akan dikembangkan untuk platform lain nanti) yang akan bertindak sebagai aplikasi pendamping untuk hub. Kita dapat melihat semua data terkait sensor di aplikasi seluler dari mana saja di dunia. Jika ada informasi penting yang didapat dari modul (seperti peringatan kebocoran gas dari modul pemantau kebocoran gas) kita akan mendapatkan notifikasi push juga. Juga kita dapat memicu beberapa tindakan pada modul (seperti memulai pompa pada modul Penanam Tanaman) dari aplikasi seluler itu sendiri. Karena semua ini terjadi melalui cloud tidak perlu untuk perangkat seluler berada di dekat hub untuk melakukan semua tindakan ini.
Berikut adalah tampilan Aplikasi Seluler
Modul
Modul adalah kombinasi komponen yang bekerja sama dan menerima serta mengirim data ke dan dari Hub melalui RF. Ini dapat berupa kombinasi seperti Arduino Pro Mini dengan sensor atau RPI2 dengan sensor dll. Yang perlu dilakukan hanyalah menerima data/perintah dari hub melalui RF dan merespons dengan tepat. Ini memberikan kemungkinan tak terbatas dari modul. Untuk memulai saya menambahkan 2 modul
Plant Waterer
Temperature Monitor
Plant Waterer
Penanam tanaman akan memantau tingkat air di tanaman dan juga suhu di lingkungan sekitar tanaman. Jika tidak ada air yang cukup peringatan akan dikirim ke aplikasi seluler. Kita dapat memulai pompa dari aplikasi seluler dari mana saja. Kita juga dapat mengonfigurasinya untuk memulai pompa secara otomatis setiap kali tingkat air turun di bawah ambang. Ini terdiri dari Arduino Pro Mini, DHT11, Soil Hygrometer, dan nRF24L01+. Berikut adalah diagram rangkaian (Lihat PlantWaterer.fzz di proyek)
Daya dari baterai 9V pergi ke pin RAW Arduino Pro Mini. Regulator tegangan bawaan dalam arduino akan memberikan output 5V di Vcc. Kita akan menggunakan ini untuk memberi daya DHT11. Juga kita memberikan daya 9V sebagai input ke regulator tegangan 3.3V yang akan kita gunakan untuk memberi daya nRF24L01+. Tingkat air dari hygrometer akan dibaca di pin analog A3. Pembacaan suhu dari DHT11 akan dibaca di pin digital 6. Di pin digital 5 kita akan mengirim sinyal ke transistor atau relay yang kita gunakan untuk memulai menghentikan pompa. Untuk tujuan demo saya akan menggunakan pompa DC dan akan menggunakan transistor sebagai saklar. Dan inilah alur cara kerjanya
Saya tidak ingin rangkaian tetap di breadboard jadi saya memindahkannya ke perfboard. Saya ingin menjaga agar kompak jadi saya membuatnya dengan cara ini. Anda dapat merujuk diagram rangkaian dan membuat tata letak Anda sendiri.
Dan di bawah ini adalah video cara kerjanya.
Temperature Monitor
Pemantau suhu akan memantau suhu di ruangan (misal. kamar tidur) dan memberikan pembaruan tentang suhu dan tingkat kelembaban. Juga kita dapat menyalakan/mematikan atau menyesuaikan perangkat (Thermostat, AC dll.) dari hub atau seluler. Untuk tujuan demo saya akan mematikan/menyalakan LED yang terhubung ke arduino. Rangkaian terdiri dari Arduino Pro Mini, DHT11 dan nRF24L01+. Berikut adalah diagram rangkaian (Lihat file TemperatureMonitor.fzz di proyek)
Daya dari baterai 9V pergi ke pin RAW Arduino Pro Mini. Regulator tegangan bawaan dalam arduino akan memberikan output 5V di Vcc. Kita akan menggunakan ini untuk memberi daya DHT11. Juga kita memberikan daya 9V sebagai input ke regulator tegangan 3.3V yang akan kita gunakan untuk memberi daya nRF24L01+. Pembacaan suhu dan kelembaban dari DHT11 akan dibaca di pin digital 5. Di pin 6 kita akan mengirim sinyal ke transistor atau relay yang kita gunakan untuk memulai menghentikan perangkat (mis. Thermostat, AC dll.). Untuk tujuan demo saya akan menggunakan lampu LED untuk menunjukkan mematikan/menyalakan perangkat. Dan inilah alur cara kerjanya
Berikut adalah cara saya menata di papan perf. Anda dapat membuat tata letak Anda sendiri berdasarkan diagram rangkaian.
Dan inilah cara kerjanya
Masalah Tunjukan
Daya - Baterai habis dalam beberapa jam di kedua modul. Perlu mencari sumber daya yang efisien dan portabel. Saya berencana menggunakan prosesor attiny sebagai gantinya pro mini di modul mana pun yang mungkin. Ini akan lebih efisien dalam daya. Artikel saya sebelumnya tentang attiny dapat ditemukan di sini.
Konkuren I2C - Jika RPI2 mengirim 2 permintaan kabel ke Arduino uno pada waktu yang sama maka salah satunya gagal. Saya sedang mencari cara untuk menghindari ini dan juga mencoba mengimplementasikan mekanisme coba ulang.
Komunikasi Satu Arah - Saat ini Hub memulai permintaan dan modul meresponsnya. Meskipun ini bekerja baik dalam banyak skenario beberapa modul baru mungkin memerlukan untuk mengirim data ke Hub tanpa hub mengirim permintaan.
Jangkauan - Saya telah menempatkan modul di kamar berikutnya dan dapat menerima data dengan benar. Namun jika Anda ingin meningkatkan jangkauan ganti nRF24L01 di Hub dengan NRF24L01+PA+LNA yang memiliki antena eksternal.
Keamanan - Karena ini dikembangkan dengan asumsi dimiliki oleh pengembang saya tidak menambahkan mekanisme autentikasi. Jika Anda ingin Anda dapat memanfaatkan layanan Identitas dari Azure Mobile service untuk mengintegrasikan autentikasi Microsoft, FB, Twitter, Google ke aplikasi seluler dan hub.
Rencana Masa Depan
Saya ingin membuat ini sebagai platform terbuka bagi orang untuk mengimplementasikan sistem otomasi rumah mereka sendiri. Saya akan menstabilkan Hub dan aplikasi seluler. Saya ingin menambahkan banyak modul lagi ke proyek ini. Perintah dan respons berbasis suara juga ada dalam peta jalan. Saat ini saya sedang bekerja pada modul di bawah ini
Sensor Kebocoran Gas
Detector Intrusi
Pengontrol Perangkat (mis. Pengontrol Mesin Kopi, Pengontrol Lampu, dll)
Pembuka Pintu Garasi
Beberapa Modul Wearable
Layanan Internet tanpa hardware (Cuaca, Azure Logic App, Laporan Saham dll)
Modul yang bekerja di luar jangkauan Hub dan berkomunikasi dengannya melalui internet (mis. Pelacak Mobil, Pelacak Hewan Peliharaan, Pedometer dll.)
Semua modul ini digabungkan dan bekerja sebagai satu unit melalui Hub akan memberikan sistem otomasi rumah yang selalu saya inginkan. Saya akan terus menambahkan modul baru sebagai proyek terpisah di hackster. Semua orang disambut untuk menambahkan modul baru dan mengembangkan. Akan memperbarui halaman wiki tentang cara menambahkan modul baru ke proyek.