Pemrograman OTA Arduino MKR dengan Kontrol Suara & Fitur Tambahan
Komponen dan Perlengkapan
Arduino MKR1000 — 1 unit (diperlukan untuk setiap proyek OTA. Komponen di bawah hanya dibutuhkan untuk kasus penggunaan / contoh: termostat kamar.)
Sensor Suhu & Kelembaban DHT11 (4 pin) — 1 buah
Relay (generik) — 1 buah
Breadboard (generik) — 1 buah
Aplikasi dan Layanan Online
Arduino IDE
Microsoft Azure (Azure IoT Hub)
Microsoft Visual Studio 2015 (menggunakan UWP / Universal Windows Platform)
Microsoft Project Oxford (Speech Recognition API)
Tentang Proyek Ini
Ringkasan
Kontribusi kami terdiri dari 2 bagian.
Bagian 1: Kumpulan komponen yang dapat digunakan kembali. Mereka dapat berfungsi sebagai kerangka untuk membangun berbagai proyek IoT yang memanfaatkan fitur berguna:
Pemrograman Over-the-Air (OTA) Arduino MKR1000 (misalnya mengunggah kode biner yang dikompilasi). Beberapa metode tersedia: misalnya dari dalam LAN atau dari Internet, dengan aman, melalui Microsoft Azure IoT Hub.
Aplikasi klien Universal Windows Platform (UWP) dengan antarmuka pengguna yang menarik. Ia berkomunikasi dengan aman dengan papan melalui Azure IoT Hub.
Pengenalan suara (pada aplikasi klien), melalui Speech Recognition API yang disediakan oleh Microsoft Project Oxford. Perintah lisan dapat digunakan untuk mengontrol papan melalui Azure IoT Hub.
Bagian 2: Kasus penggunaan / contoh, yang dibangun dengan komponen di atas: termostat kamar, dikontrol melalui ponsel (aplikasi UWP). Kami membangunnya untuk menjadi contoh cara menggunakan komponen. Dan kami pergi lebih jauh: kami telah memasangnya di kantor kami, dan saat kami menulis baris ini, sistem pemanas kantor kami dikontrol oleh proyek ini.
Bagian 1: Komponen yang Dapat Digunakan Kembali untuk OTA
Prinsip Kerja OTA
Kami telah mengembangkan komponen berikut:
Untuk Arduino IDE:
Sebuah pustaka runtime. Ini menangani mekanika unggah dan salinan firmware.
Sebuah paket "boards" khusus. Ini memiliki beberapa pengaturan linker yang diperlukan oleh pustaka.
Sebuah plugin Arduino IDE. Ini mengirim sinyal unduhan dan sketsa biner yang dikompilasi (alias firmware). Ia berkomunikasi dengan papan, Azure IoT Hub, server aplikasi pengirim IoT (lihat di bawah).
Untuk diinstal pada server pihak ketiga (misalnya Microsoft Azure Web Site):
IoT Dispatcher, aplikasi PHP + MySQL yang menyimpan dan melayani firmware.
Prinsip Kerja Aplikasi UWP
Kami telah mengembangkan:
Sebuah aplikasi klien UWP, ditulis dalam C#. Ia berkomunikasi dengan papan melalui Azure IoT Hub, dan mengenali perintah lisan melalui Microsoft Project Oxford. Ini dapat digunakan sebagai titik awal untuk berbagai proyek.
Demo OTA
Bagian 2: Kasus Penggunaan / Contoh: Termostat Kamar
Seperti yang disebutkan sebelumnya, kami mengembangkan termostat kamar untuk menunjukkan bagaimana seseorang dapat menggabungkan komponen kami untuk membangun proyek nyata. Dalam kasus kami, kami bahkan memasukkannya ke produksi, yaitu mengontrol pemanas kantor kami.
Logika sederhana:
ketika suhu menurun di bawah suhu yang ditentukan => relay (yaitu pemanas) menyala
ketika suhu di atas suhu yang ditentukan => relay / pemanas mati
antarmuka pengguna / klien UWP: menampilkan status, dan mengatur suhu yang ditentukan (melalui kotak teks atau suara)
1. Buat Proyek (Hardware)
Kami tidak menyediakan diagram Fritzing, karena kami menggunakan MKR1000 Beta. Tata letak pin mungkin berubah di masa depan.
2. Siapkan Lingkungan Pengembangan untuk OTA dan Azure IoT Hub
Unduh dan ekstrak beberapa pustaka di: SKETCHBOOK_DIR (misalnya Dokumen/Arduino)/libraries: WiFi101, AzureIoT, RTCZero.
Dan sekarang komponen kami:
Unduh dan ekstrak pustaka runtime OTA di: SKETCHBOOK_DIR (misalnya Dokumen/Arduino)/libraries.
Unduh paket "boards" khusus kami. Buat direktori: SKETCHBOOK_DIR (misalnya Dokumen/Arduino)/hardware/flower-platform. Ekstrak file yang diunduh di sini.
Unduh plugin Arduino IDE. Buat direktori: SKETCHBOOK_DIR (misalnya Dokumen/Arduino)/tools. Ekstrak file yang diunduh di sini.
Untuk OTA aman melalui Internet/HTTPS:
Unduh IoT Dispatcher dan instal di server PHP + MySQL. Misalnya kami memiliki petunjuk cara men-deploy di Microsoft Azure Cloud.
3. Tes Drive OTA
Ada 3 metode unggah OTA.
1) Coba OTA via LAN:File > Contoh > Arduino-FlowerOTA > WiFiOTA. Ubah baris yang di Komentar dengan "// CHANGE ME" sesuai, untuk mengonfigurasi alamat IP, parameter WiFi, plain/ssl, tanda tangan server. Kemudian Flower Platform > Upload OTA ...
Pastikan Anda menggunakan:
WiFiClient client;
dan (lihat "tanda tangan server" dari jendela popup).
CATATAN: untuk ketiga metode ini, Anda perlu melakukan unggah awal melalui USB. Setelah itu, Anda dapat terus menggunakan OTA, dengan metode pilihan Anda.
2) Coba OTA melalui pengirim aman, menggunakan file yang sama:
Pastikan Anda menggunakan:
WiFiSSLClient client;
dan
ota.begin(&udp, &client, "my-iot-dispatcher-upload-key"); // cf. configured within IoT Dispatcher (PHP)
3) Coba OTA melalui pengirim aman + Azure IoT Hub. File > Contoh > Arduino-FlowerOTA > WiFiOTA-AzureIoTHub. Lagi: jangan lupa untuk menyesuaikan baris yang di Komentar dengan "// CHANGE ME".
4) Coba kasus penggunaan / contoh: termostat kamar. Tersedia di sini.
4. Tes Drive Antarmuka Pengguna (Aplikasi UWP dengan Azure IoT Hub dan Pengenalan Suara)
Proyek UWP tersedia di sini. Visual Studio 2015 dan Windows 10 diperlukan.
Pastikan Anda mengubah parameter koneksi sesuai akun Azure Anda:
SendCloudToDevice.cs
class SendCloudToDevice { // CHANGE ME: Please replace the constants below, with actual values (taken from your Azure Portal) private const string HOST = "???.azure-devices.net"; private const string DEVICE_ID = "???"; private const string DEVICE_KEY = "???"; static string sharedAccessKeyName = "???"; static string sharedAccessKey = "???";
ReadDeviceToCloud.cs
class ReadDeviceToCloud { // Please replace the constants below, with actual values (taken from your Azure Portal) private static string ConnectionString = "???"; private static string eventHubEntity = "???";
Kode ini dapat berfungsi sebagai titik awal untuk aplikasi klien untuk berbagai proyek. Anda hanya perlu menyesuaikan antarmuka pengguna sesuai proyek Anda.
Langkah Mendatang
Papan seperti Arduino MKR1000, yang memiliki daya pemrosesan yang cukup dan kemampuan komunikasi SSL, merupakan langkah besar untuk komunitas pembuat.
Kami melanjutkan pekerjaan yang dimulai dengan proyek ini, untuk mengembangkan Flower Platform IoT, layanan online yang akan sangat mempercepat proyek IoT:
pengembangan: penggunaan komponen OOP dan bahasa pemrograman grafis (yang dapat dicampur dengan kode yang ditulis tangan);
penginstalan: penggunaan OTA.
Dengan memanfaatkan Flower Platform, kami berencana untuk membuat yayasan yang akan berfokus pada mengajarkan anak-anak muda untuk membuat dan memprogram proyek IoT.
Code
Pustaka runtime yang menangani mekanika unggah dan salinan firmware (C++)