Kendalikan Arduino Anda dengan Google Assistant – Tutorial Lengkap Langkah demi Langkah
Komponen dan Perlengkapan
Arduino UNO
×
1
Espressif ESP8266 ESP-01
×
1
Aplikasi dan Layanan Online
Arduino IDE
Microsoft Visual Studio 2017
Tentang Proyek Ini
Dalam proyek ini, kita akan belajar cara membuat koneksi antara layanan internet dan papan Arduino. Pada akhir artikel ini, Anda akan:
mengetahui cara mendapatkan data dari Google Assistant
mengetahui cara menggunakan protokol IFTTT
mengenal webhooks dan permintaan http
dapat berbicara kepada Arduino Anda
Google Assistant & Applet IFTTT
Google Assistant adalah asisten virtual yang dikembangkan oleh Google yang didukung oleh kecerdasan buatan dan terutama tersedia di perangkat seluler dan smart home. Berbeda dengan asisten virtual sebelumnya perusahaan, Google Now, Google Assistant dapat terlibat dalam percakapan dua arah. Ia dapat mengenali kata-kata Anda lebih baik dari perangkat apa pun dan merespons perintah Anda dengan cepat dan benar. Pengguna terutama berinteraksi dengan Google Assistant melalui suara alami, meskipun input keyboard juga didukung. Dalam sifat dan cara yang sama dengan Google Now, Assistant mampu mencari Internet, menjadwalkan acara dan alarm, menyesuaikan pengaturan hardware pada perangkat pengguna, dan menampilkan informasi dari akun Google pengguna. Google juga telah mengumumkan bahwa Assistant akan dapat mengidentifikasi objek dan mengumpulkan informasi visual melalui kamera perangkat, serta mendukung pembelian produk dan pengiriman uang, serta mengidentifikasi lagu.
If This Then That, juga dikenal sebagai IFTTT, adalah layanan web gratis untuk membuat rantai pernyataan kondisional sederhana, disebut applet. Sebuah applet dipicu oleh perubahan yang terjadi dalam layanan web lainnya seperti Gmail, Facebook, Telegram, Instagram, atau Pinterest. Misalnya, sebuah applet dapat mengirim pesan email jika pengguna bertwitter menggunakan hashtag, atau menyalin foto di Facebook ke arsip pengguna jika seseorang menandai pengguna dalam foto. Selain aplikasi berbasis web, layanan ini berjalan di iOS dan Android. Pada Februari 2015, IFTTT mengubah nama aplikasi aslinya menjadi IF, dan merilis serangkaian aplikasi baru yang disebut Do, yang memungkinkan pengguna membuat aplikasi pintasan dan tindakan. Sejak 2015, pengguna IFTTT membuat sekitar 20 juta resep setiap hari. Semua fungsionalitas serangkaian aplikasi Do telah terintegrasi ke dalam aplikasi IFTTT yang dirancang ulang.
Webhook & Konten JSON
Webhook dalam pengembangan web adalah metode untuk memperluas atau mengubah perilaku halaman web, atau aplikasi web, dengan callback kustom. Callback ini dapat dipelihara, dimodifikasi, dan dikelola oleh pengguna dan pengembang pihak ketiga yang mungkin tidak terafiliasi dengan situs web atau aplikasi asli. Istilah “webhook” diciptakan oleh Jeff Lindsay pada tahun 2007 dari istilah pemrograman komputer hook.
Dalam komputasi, JavaScript Object Notation (JSON) adalah format file standar terbuka yang menggunakan teks yang dapat dibaca manusia untuk mentransmisikan objek data yang terdiri dari pasangan atribut–nilai dan tipe data array (atau nilai serializable lainnya). Ini adalah format data yang sangat umum digunakan untuk komunikasi browser–server asinkron, termasuk sebagai pengganti XML dalam beberapa sistem gaya AJAX.
Google Assistant ke Arduino
Dalam proyek ini, kita ingin mengendalikan berbagai bagian Arduino seperti pin I/O, PWM, port Serial dan sebagainya dengan mengirim string dari Google Assistant ke port Serial Arduino. Pertama-tama, kita perlu mendefinisikan beberapa frasa spesifik untuk Google Assistant untuk mengetahui apa yang kita maksud. Kemudian kita akan membuat applet di situs web IFTTT dan membuat koneksi antara Google Assistant dan database kita. Setelah itu kita membaca data dari database dengan modul ESP8266 dan mengirimkannya ke Arduino. Mari kita mulai!
Rangkaian
Implementasi
Pertama-tama, Anda perlu sebuah perangkat untuk menjalankan Google Assistant Anda. Kunjungi assistant.google.com dan lihat semua perangkat yang mendukung asisten. Dalam proyek ini, kami menggunakan ponsel pintar Android. Buka ifttt.com dan buat akun. Setelah masuk, Klik My Applets lalu klik New Applet. Sekarang Anda dapat menambahkan layanan Anda sebagai THIS di applet Anda. Klik THIS dan cari Google Assistant. Anda memiliki 4 pilihan untuk mendefinisikan frasa Anda untuk google assist. Pilih frasa dengan bahan angka. Di halaman berikutnya Anda dapat menambahkan frasa Anda. Misalnya Anda ingin mengatakan “Set PWM of pin 9 to 255”. Ketikkan saja sebagai frasa Anda dan ganti “255” dengan simbol “#”. Anda dapat menambahkan lebih banyak frasa dengan arti yang sama seperti “PWM 9 to 255”. Sekarang tambahkan respons sehingga Google Assistant dapat memberi tahu Anda bahwa perintah Anda dipahami dan tindakan yang diperlukan telah dilakukan, misalnya “The PWM is updated”. Ketika selesai klik Create Trigger. Di bagian “THAT” dari applet Anda Anda memiliki banyak layanan untuk dipilih cari “Webhooks” dan pilih itu. Klik “Make a web request.” Tambahkan URL Server Anda untuk menerima data. Setel metode ke POST dan pilih Application/json untuk jenis konten. Sekarang Anda harus menambahkan isi konten. Seperti ini: {“Number”:”{{NumberField}}”}. Sekarang klik “Create action.”
Server dan Database
Kami menulis kode contoh untuk Server untuk mendapatkan data dari IFTTT dan menyimpannya di database. Anda dapat mengubah model untuk membuat data disimpan sesuai minat Anda. Unduh dari Sini.
ESP8266 & Kode Arduino
Pertama kami menulis kode untuk ESP-01 untuk mendapatkan data dari database dan mengirimkannya ke Arduino melalui port Serial. Kemudian kami menulis kode lain untuk Arduino untuk mendapatkan data dari ESP-01 dan mengeksekusi perintah (misalnya mengubah PWM). Anda dapat menggunakan Arduino IDE untuk mengkompilasi kedua kode dan mengunggahnya ke papan.
Sebelum dapat menggunakan perpustakaan ArduinoJson, Anda harus memastikan perpustakaan terinstal di komputer Anda. Untuk melakukan pemeriksaan cepat, buka pengelola perpustakaan di Arduino IDE (Sketch > Include Library > Manage Libraries) dan ketik “ArduinoJson” di kotak teks, jika Anda melihat label berwarna hijau “INSTALLED” di samping nama perpustakaan, itu berarti Anda siap melanjutkan ke langkah berikutnya. Jika Anda tidak melihat label, klik kotak/divisi sekali dan Anda akan melihat tombol “Install”. Klik install dan Anda siap untuk langkah berikutnya.
Sekarang, Unggah kode ini ke ESP-01
#include "ESP8266WiFi.h" #include "ESP8266HTTPClient.h" #include "ArduinoJson.h" // WiFi Parameters const char* ssid = "YOUR_SSID"; const char* password = "YOUR_PASSWORD"; void setup() { Serial.begin(115200); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting..."); } } void loop() { // Check WiFi Status if (WiFi.status() == WL_CONNECTED) { HTTPClient http; //Object of class HTTPClient http.begin("https://yourip/api/Home/GetAllApp"); int httpCode = http.GET(); //Check the returning code if (httpCode > 0) { // Get the request response payload String payload = http.getString(); // TODO: Parsing Serial.println(payload); } http.end(); //Close connection } // Delay delay(3000); }
Dan ini adalah kode untuk Arduino untuk menerima perintah dari Google Assistant dan mengeksekusinya.
String inputString = ""; // a String to hold incoming data String buff; bool stringComplete = false; // whether the string is complete bool id; int f,buf; char x; void setup() { // initialize serial: Serial.begin(9600); // reserve 200 bytes for the inputString: inputString.reserve(200); } void loop() { // print the string when a newline arrives: if (stringComplete) { while (f < 100) { if (inputString.substring(f) == "id") { id = true; break; } f++; } if (id == true) { x = inputString.charAt(f + 4); } if (x == '4') { f = 0; while (f < 100) { if (inputString.substring(f) == "number") { f += 9; for (int i = 0; i < 3; i++) { if (inputString.charAt(f + i) == '"') i = 3; else buff += inputString.charAt(f + i); } buf = buff.toInt(); analogWrite(9, buf); break; } f++; } } // clear the string: inputString = ""; stringComplete = false; } } void serialEvent() { while (Serial.available()) { // get the new byte: char inChar = (char)Serial.read(); // add it to the inputString: inputString += inChar; // if the incoming character is a newline, set a flag so the main loop can // do something about it: if (inChar == '\n') { stringComplete = true; } } }
Apa Selanjutnya?
Anda dapat meningkatkan proyek ini sesuai keinginan Anda. Berikut beberapa saran:
Cobalah untuk menambahkan perintah favorit Anda seperti mengontrol pin output Anda, Anda dapat menggunakan modul relay dan mengontrol lampu kamar Anda.
Cobalah untuk mengirim data dari Arduino ke Google Assistant.