J.A.R.V.I.S. – Asisten Virtual Rumah Pintar Diberdayakan oleh Arduino
Komponen dan Perlengkapan
Arduino 101
×
1
Schild Relai 4 Channel Arduino
×
1
Schild GSM Arduino V2
×
1
Alat dan Mesin yang Diperlukan
Paku las (generik)
Pistol lem panas (generik)
Aplikasi dan Layanan Online
Unity
Android Studio
Vuforia
Adobe Illustrator
Arduino IDE
Tentang Proyek Ini
Mengapa mengatasi masalah Rumah Pintar?
Apa yang baru?
Mengapa kami memutuskan untuk membuatnya?
Kerja
Meter Energi Digital
Asisten Virtual AI
Alur sinyal adalah sebagai berikut:
1. Masukan Suara ke Aplikasi Android
2. Pemrosesan di Aplikasi Android
3. Mengirim data terenkripsi ke Arduino melalui Bluetooth.
4. Pemrosesan pada Arduino 101
5. Sinyal digital ke relai
Koneksi Pin:
Pin 8 -- > PulseIn [Masukan Digital]
Pin 6 -- > IN1 -- > Keluaran Kipas
Pin 4 -- > IN2 -- > Keluaran Lampu
Pin 5 -- > IN3 -- > Pembuat Kopi
Koneksi Meter Energi:
Hubungkan meter ke suplai daya.
Tutup meter energi dengan lem hitam, mencegah LDR di dalam meter energi dari cahaya luar.
Hubungkan kabel nol langsung ke beban dan kabel fasa ke relai.
Ambill kabel dari LDR di luar meter ke rangkaian penghitung.
Sekarang ambil keluaran dari rangkaian penghitung ke pin yang ditetapkan pin 8 pulsepin seperti dalam kode.
Hubungkan pin TX, RX Arduino 101 ke pin RX, TX modul GSM.
Sekarang nyalakan papan setelah memasukkan kode.
Diagram Rangkaian
Perangkat Keras dan Peralatan yang Digunakan:
Di dalam Meter Energi: Resistor Terbahan Cahaya LDR
Modul GSM
Rangkaian Penghitung: potentiometer, IC LM358N
Arduino 101
Modul Bluetooth-HC05
Modul papan kontrol relai 4 channel 12V 10A dengan optocoupler untuk PIC AVR ARM
Platform Pemrograman
· Untuk memprogram Arduino 101, kami menggunakan Arduino IDE default.
· Kami mengembangkan aplikasi Android kami menggunakan Android Studio (JAVA dan XML).
· Konektivitas basis data dilakukan menggunakan Firebase Google.
· Untuk realitas augmentasi kami menggunakan Unity bersama dengan SDK Vuforia.
Implementasi:
Semua komponen memberikan pembacaan ke Arduino, di mana kami mengonversi pembacaan ini menjadi kode karakter untuk mengirim byte secara efisien dan cepat ke komputer. Dalam loop yang tidak berakhir, setiap pembacaan sesuai dengan karakter.
Sebuah kode harus berjalan pada komputer untuk menerima data yang dikirim oleh arduino melalui port serial.
Untuk mengembangkan aplikasi android kami menggunakan android studio dan untuk mengubah suara menjadi teks kami menggunakan standar google api.
Untuk pengenalan ucapan kami menggunakan parameter fonetik akustik untuk pengenalan ucapan independen pembicara di aplikasi android.
Kami memiliki asisten virtual AI (kecakalan buatan) yang menggunakan teknik deep learning seperti CNN (Jaringan Saraf Konvolusional) menggunakan python untuk mengimplementasikan pemrosesan bahasa alami.
Untuk aplikasi realitas augmentasi kami menggunakan Unity IDE dan VuforiaSDK (Ini adalah Kit Pengembangan Perangkat Lunak Realitas Augmentasi (SDK) untuk perangkat seluler yang memungkinkan pembuatan aplikasi Realitas Augmentasi).
Video
Tautan Berguna:
Kode
Kode Arduino untuk pembacaan energi digital dan perhitungan biaya
Kode Arduino yang mengimplementasikan koneksi JARVIS ke relai menggunakan Arduino
Kode Arduino untuk pembacaan energi digital dan perhitungan biayaArduino
Kode ini mengimplementasikan unit energi yang dikonsumsi oleh perangkat yang terhubung ke Arduino. Instruksi : 1. Buat koneksi dan masukkan nomor seluler dalam kode Arduino 2. Unggah kode ke Arduino 101 3. Jalankan kode 4. Kirim SMS dari ponsel apa pun ke nomor seluler yang ditentukan dalam kode dalam format #anytext* 5. Balasan yang berisi unit yang dikonsumsi dan biaya akan diterima
#include <LiquidCrystal.h> LiquidCrystal lcd(7,6,5,4,3,2); int led=13; // mendeklarasikan LED di pin 13 #define pulsein 8 // mendefinisikan pin masukan pulsa 8 unsigned int pusle_count=0; // mendeklarasikan tipe hitungan pulsa sebagai integer float units=0; // mendeklarasikan unit sebagai Float unsigned int rupees=0; // mendeklarasikan tipe rupiah sebagai unsigned integer unsigned int temp=0,i=0; // mendeklarasikan temp& i sebagai unsigned integer char str[70],flag1=0,flag2=0; // panjang karakter sebagai string dan mendeklarasikan flag void setup() { lcd.begin(16,2); // menginisialisasi tipe LCD 16x2 Serial.begin(9600); // menginisialisasi baud rate serial 9600 pinMode(led, OUTPUT); pinMode(pulsein, INPUT); digitalWrite(pulsein, HIGH); lcd.setCursor(0,0); lcd.print("Energi Nirkabel"); lcd.setCursor(0,1); lcd.print(" Meter "); delay(2000); lcd.clear(); lcd.print("Oleh "); delay(2000); lcd.clear(); lcd.print("GSM Sedang Menginisialisasi..."); gsm_init(); lcd.clear(); lcd.print("Sistem Siap"); Serial.println("AT+CNMI=2,2,0,0,0"); init_sms(); send_data("Sistem Siap"); send_sms(); delay(1000); digitalWrite(led, LOW); lcd.clear(); } void loop() { serialEvent(); // memeriksa peristiwa serial units=rupees/5.0; // perhitungan unit lcd.setCursor(0,0); lcd.print("Unit:"); lcd.print(units); lcd.print(" "); lcd.setCursor(0,1); lcd.print("Rupiah:"); lcd.print(rupees); lcd.print(" "); read_pulse(); if(temp==1) { check(); } } void serialEvent() // peristiwa serial untuk menerima dan memeriksa sms masuk { while(Serial.available()) { if(Serial.find("#")) { digitalWrite(led, HIGH); delay(1000); digitalWrite(led, LOW); while (Serial.available()) { char inChar=Serial.read(); str[i++]=inChar; if(inChar=='*') { temp=1; return; } } } } } void init_sms() //menginisialisasi & konfigurasi pengiriman pesan { Serial.println("AT+CMGF=1"); delay(200); Serial.println("AT+CMGS=\"MASUKKAN NOMOR SELULER DI SINI\""); delay(200); } void send_data(String message) { Serial.println(message); delay(200); } void send_sms() { Serial.write(26); } //Membaca Pulsa dari Meter Energi void read_pulse() { if(!digitalRead(pulsein)) { digitalWrite(led, HIGH); units++; rupees=units*5; while(!digitalRead(pulsein)); digitalWrite(led,LOW); } } //Memeriksa Status Pesan void check() { if(!(strncmp(str,"units",5))) { Serial.println("AT+CMGF=1"); delay(200); Serial.println("AT+CMGS=\"MASUKKAN NOMOR SELULER DI SINI\""); delay(200); lcd.setCursor(0,1); send_data("Unit Meter Energi:"); Serial.println(units); send_data("\nRupiah:"); Serial.println(rupees); delay(200); Serial.write(26); flag1=1; flag2=1; temp=0; } } void message_sent() { lcd.clear(); lcd.print("Pesan Terkirim."); delay(1000); } void gsm_init() { lcd.clear(); lcd.print("Mencari Modul.."); boolean at_flag=1; while(at_flag) { Serial.println("AT"); while(Serial.available()>0) { if(Serial.find("OK")) at_flag=0; } delay(1000); } lcd.clear(); lcd.print("Modul Terhubung.."); delay(1000); lcd.clear(); lcd.print("Menonaktifkan ECHO"); boolean echo_flag=1; while(echo_flag) { Serial.println("ATE0"); while(Serial.available()>0) { if(Serial.find("OK")) echo_flag=0; } delay(1000); } lcd.clear(); lcd.print("ECHO Mati"); delay(1000); lcd.clear(); lcd.print("Mencari Jaringan.."); boolean net_flag=1; while(net_flag) { Serial.println("AT+CPIN?"); while(Serial.available()>0) { if(Serial.find("+CPIN: READY")) net_flag=0; } delay(1000); } lcd.clear(); lcd.print("Jaringan Ditemukan.."); delay(1000); lcd.clear(); }
Arduino mengimplementasikan koneksi JARVIS ke relai menggunakan ArduinoArduino
Ini adalah kode yang mengimplementasikan transfer karakter serial Bluetooth antara aplikasi android dan Arduino.
# define CH3 7 # define CH4 4 # define CH5 5 # define CH6 6 void setup() { Serial.begin(9600); pinMode(CH3, OUTPUT); pinMode(CH4, OUTPUT); pinMode(CH5, OUTPUT); pinMode(CH6, OUTPUT); //Berikan daya ke kedua LED //Matikan daya ke channel Relai digitalWrite(CH3, HIGH); digitalWrite(CH4, HIGH); digitalWrite(CH5, HIGH); digitalWrite(CH6, HIGH); delay(2000); //Tunggu 2 detik sebelum memulai urutan } void loop() { delay(100); if(Serial.available()) { //Serial.println(sum1); char c = Serial.read(); Serial.print(c); if(c=='b') { //kopi mati } else if(c=='c')//lampu nyala {digitalWrite(CH4 ,LOW); delay(100);} else if(c=='d')//kipas nyala {digitalWrite(CH6,LOW); delay(100);} else if(c=='k')//kopi nyala {digitalWrite(CH5,LOW); delay(100);} else if(c=='g')//kopi mati {digitalWrite(CH5,HIGH); delay(100);} else if(c=='e')//lampu mati {digitalWrite(CH4,HIGH); delay(100);} else if(c=='f')//kipas mati {digitalWrite(CH6,HIGH); delay(100);} else if(c=='z')//selamat tinggal {digitalWrite(CH6,HIGH); digitalWrite(CH4,HIGH); digitalWrite(CH3,HIGH); digitalWrite(CH5,HIGH); delay(500); digitalWrite(CH5,LOW); delay(500); digitalWrite(CH5,HIGH); delay(500); digitalWrite(CH5,LOW); delay(500); digitalWrite(CH5,HIGH); delay(10000); } } }
Bagian dan Enclosure Khusus
Instruksi :
1. Unduh dan instal aplikasi 2. Pastikan ponsel terhubung ke internet 3. Mulai aplikasi dan arahkan ke perangkat yang telah dikonfigurasi dengan Vuforia (marker default Vuforia digunakan di sini) 4. Perangkat akan mulai berjalan 5. Untuk mematikan perangkat, klik tombol virtual yang muncul di layar setiap kali ponsel diarahkan ke perangatjarvisaugmented_I2zWAu2jGG.apk
Skema Rangkaian
Perhatikan: Koneksi Internet Aktif pada ponsel diperlukan sepanjang waktu Instruksi : 1. Instal aplikasi pada ponsel android 2. Setelah menyiapkan perangkat keras dan menjalankannya dengan berhasil, mulai aplikasi 3. Untuk menggunakan Asisten Virtual (Suara), katakan kata kunci, 'Dengarkan JARVIS'. Ini seharusnya mengaktifkan agen 3.1 Bicarakan perintah Anda dengan jelas 3.2 Agen seharusnya memberikan respons 4. Untuk memulai aplikasi realitas augmentasi, klik tombol augment; layar kosong akan muncul 4.1 Buka aplikasi Jarvis Augmented pada ponsel yang berbeda (CATATAN : aplikasi android J.A.R.V.I.S. harus berada pada ponsel yang berbeda) 4.2 Lanjutkan ke instruksi yang diberikan dalam JarvisAugmented untuk mengimplementasikan realitas augmentasi
CATATAN : 1. Jika aplikasi macet di titik apa pun, coba restart aplikasi 2. Jika pesan yang mirip dengan, 'Tidak dapat membuka Mikrofon' muncul di layar, restart aplikasi 3. Aplikasi ini diimplementasikan menggunakan modul Bluetooth HC05 untuk meningkatkan cakupan proyek. Oleh karena itu, Modul Bluetooth HC05 direkomendasikanapp-release_eo3LK2AsLV.apk