Tentang proyek ini
Pengantar
Dalam proyek ini kita akan melihat cara mengontrol outlet listrik rumah Anda secara native dan di cloud menggunakan raspberry pi yang berjalan di windows 10 iot, xbee dan arduino. Semua contoh kode tersedia di github.
Mengapa mengotomatiskan stopkontak?
Alih-alih mengontrol perangkat dari cloud, jika Anda dapat mengotomatiskan stopkontak, kami dapat menghubungkan perangkat apa pun ke stopkontak dan mengontrolnya. Dalam proyek ini, saya telah mengambil contoh untuk mengontrol kipas dan lampu.
Mari kita mulai dengan Lebah
Saya telah menggunakan Xbee untuk mentransfer sinyal radio. Satu Xbee yang disebut koordinator terhubung ke raspberry pi dan yang lainnya disebut Router terhubung ke stopkontak. Koordinator mengirimkan sinyal berdasarkan masukan kami ke Router untuk mengontrol stopkontak.
Konfigurasikan Xbee dalam Mode AT
Unduh dan instal XCTU.
Untuk mengupdate firmware Zigbee (Xbee), saya menggunakan adaptor FTDI adafruit
Silakan tonton tutorial ini tentang mengonfigurasi Xbees dalam mode AT.
Mengkonfigurasi Lebah
Anda perlu memastikan bahwa kedua Xbee ini berbicara satu sama lain sebelum kita melanjutkan ke langkah berikutnya.
Siapkan Penerima
Kami membutuhkan Router Zigbee, Arduino UNO R3, Xbee Shield untuk Arduino, dan pelindung relai Arduino.
Sketsa Arduino
Jika data dari CoOrdinator Zigbee ON1, relay1 kita hidupkan. Jika data ON2, kami mengaktifkan relai2. Demikian pula kami mematikan relai untuk OFF1 dan OFF2
Anda harus mengkompilasi ini di arduino ide dan membakar ke arduino uno:
#define RELAY1 7#define RELAY2 5String state ="OFF";void setup(){Serial.begin(9600);pinMode(RELAY1, OUTPUT);}void loop(){//Periksa apakah serial data tersedia (Serial.available()> 0){state =Serial.readString();Serial.println(state);}//Jika teks ON1. Nyalakan relai1if(status =="ON1\r\n")digitalWrite(RELAY1,1);//Jika teks ON2. Nyalakan relai2else if(status =="ON2\r\n")digitalWrite(RELAY2,1);//Jika teks OFF1. Matikan relay1else if(state =="OFF1\r\n")digitalWrite(RELAY1,0);//Jika teks OFF2. Matikan relay2else if(state =="OFF2\r\n")digitalWrite(RELAY2,0);//Do Nothingelse{digitalWrite(RELAY1,0);digitalWrite(RELAY2,0);}}
Konfigurasi stopkontak (Perhatian kita bermain dengan tegangan tinggi)
Relay adalah teknologi kuno di bidang elektronik. Ini bertindak sebagai saklar. Input ke relai dapat berupa tegangan ac (110 hingga 240 V). Dengan menggunakan mikrokontroler seperti arduino, kita dapat menghidupkan/mematikan relai
Kami akan menghubungkan tegangan tinggi ke relai, harap hormati arus ac dan berhati-hatilah saat menghubungkan kabel ke relai. Ini terlalu berbahaya, lanjutkan dengan risiko Anda sendiri
Alih-alih langsung mengkonfigurasi relai ke stopkontak, saya menggunakan kabel ekstensi. Konsepnya sama.
Di kabel ekstensi, biarkan satu kabel apa adanya dan jepit kabel lainnya. Hubungkan ujung kabel ke Common (C) dan ujung lainnya ke NO (Normally Open)
Hubungkan pelindung Relay ke Arduino, susun Xbee Shield di atas atau pelindung relai. Colokkan Zigbee yang dikonfigurasi sebagai Router di Xbee Shield
Saya menggunakan Xbee Shield untuk Menghubungkan Xbee ke arduino. Pastikan pengaturan di perisai diatur ke Xbee. Perisai ini bersama dengan arduino juga dapat digunakan untuk menulis pengaturan firmware ketika kami mengatur sakelar ke usb. Ia menggunakan chip FTDI bawaan Arduino untuk menulis data ke Xbee.
Colokkan kabel dan nyalakan arduino menggunakan sumber baterai eksternal. Penerima selesai.
Mengonfigurasi Server
Untuk menyiapkan server, kita memerlukan Raspberry Pi 2 yang berjalan di windows 10 IOT dan Zigbee diatur sebagai koordinator.
Hubungkan Zigbee ke adaptor FTDI, dan kabel USB FTDI RS 232 6 pin ke port usb raspberry pi. Kami akan menyiapkan server web di raspberry pi menggunakan UWP. Server akan menunggu input pengguna dan berdasarkan pilihan, ia akan menulis data serial ke port usb di mana kabel FTDI RS 232 terhubung, Zigbee akan mengirimkan pesan ini sebagai gelombang radio. Kami telah menyiapkan DH dan DL router di koordinator Zigbee, sehingga pesan dikirim ke Router Zigbee yang benar.
Untuk mengetahui lebih lanjut tentang driver FTDI untuk raspberry pi, lihat https://github.com/jark/ftdisample
Silakan ikuti video ini untuk mengatur server di Raspberry Pi.
Server Web
Semua contoh kode tersedia di github.
Aktifkan Azure
Untuk mengontrol rumah kami dari mana saja di dunia, kami mengaktifkan layanan cloud ke aplikasi kami.
Anda perlu membuat situs web dan menghostingnya di Azure. Buat Azure SQL DB untuk mengautentikasi/mengotorisasi pengguna untuk situs Anda. Buat Layanan Penyimpanan Cloud Azure untuk menjalankan perintah kami. Proses perintah ini dari Raspberry PI Blinky App dan kendalikan rumah Anda.
Anda perlu merujuk artikel ini untuk membuat tabel penyimpanan:
https://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-tables/
Untuk membuat tabel Sql, lihat artikel ini:
https://azure.microsoft.com/en-us/documentation/articles/sql-database-get-started/
Silakan tonton video tutorial tentang cara menggunakan Azure untuk proyek kami:
Aktifkan Azure Demo
Saya mencoba menunjukkan bagaimana Anda dapat mengontrol stopkontak dengan dua cara,
- Mengakses url server web raspberry dalam jaringan
- Melalui aplikasi web aspnet5 yang dihosting di Azure
Demo Kesimpulan
- Otomasi semacam ini memecahkan banyak masalah dunia nyata. Dengan memasang sensor tambahan seperti pendeteksi cahaya dan gerakan, kita dapat menyalakan/mematikan lampu atau setidaknya memberikan data kepada pengguna untuk menghemat energi.
- Orang tua dapat menggunakan remote untuk mengontrol stopkontak mereka. Dalam hal ini, kita perlu memiliki perangkat RFID tambahan.
- Kita bisa membuat jadwal untuk menyalakan/mematikan lampu agar listrik bisa dihemat.
- Jika ada penyusup, semua lampu bisa dinyalakan.
- Saat liburan, tidak perlu khawatir.. kita bisa mematikan rumah kita dengan sekali klik.
- Tidak perlu menjaga suhu ruangan setiap saat, lakukan saat Anda merasa cocok. Menghemat energi.
Kode
RelaiC/C++
Untuk Mengontrol Relay #define RELAY1 7 #define RELAY2 5String state ="OFF";void setup(){ Serial.begin(9600); pinMode(RELAY1, OUTPUT); }void loop(){ //Periksa apakah data serial tersedia if(Serial.available()> 0){ state =Serial.readString(); Serial.println(status); } //Jika teks ON1. Nyalakan relai1 if(status =="ON1\r\n") digitalWrite(RELAY1,1); //Jika teks ON2. Nyalakan relay2 else if(state =="ON2\r\n") digitalWrite(RELAY2,1); //Jika teks OFF1. Matikan relay1 else if(state =="OFF1\r\n") digitalWrite(RELAY1,0); //Jika teks OFF2. Matikan relay2 else if(state =="OFF2\r\n") digitalWrite(RELAY2,0); //Jangan Lakukan Yang Lain{ digitalWrite(RELAY1,0); digitalWrite(RELAY2,0); }}
Contoh
Contoh kodehttps://github.com/syediddi/hacksterio Skema
Pasang kabel daya untuk relai