Tentang proyek ini
Ikhtisar
Kontribusi kami memiliki 2 bagian.
Bagian 1: Kumpulan komponen yang dapat digunakan kembali. Mereka dapat berfungsi sebagai kerangka kerja untuk membangun berbagai proyek IoT yang memanfaatkan fitur berguna:
- Pemrograman Over-the-Air (OTA) dari Arduino MKR1000 (yaitu mengunggah kode biner yang dikompilasi). Beberapa metode tersedia:mis. dari dalam LAN atau dari Internet, dengan aman, melalui Microsoft Azure IoT Hub.
- Platform Windows Universal (UWP) aplikasi klien , dengan antarmuka pengguna yang bagus. Ini berkomunikasi secara 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 / sampel, dibuat dengan komponen di atas:termostat ruangan, dikontrol melalui telepon (aplikasi UWP). Kami telah membangunnya sebagai contoh bagaimana menggunakan komponen. Dan kami melangkah lebih jauh:kami telah memasangnya di kantor kami, dan saat kami menulis baris ini, sistem pemanas kantor dikendalikan oleh proyek ini.
Bagian 1:Komponen yang Dapat Digunakan Kembali untuk OTA
Prinsip Kerja OTA
Kami telah mengembangkan komponen berikut:
Untuk Arduino IDE:
- perpustakaan run-time . Ini menangani mekanisme pengunggahan dan penyalinan firmware.
- paket "papan" khusus . Ini memiliki beberapa pengaturan terkait tautan, yang dibutuhkan oleh perpustakaan.
- sebuah plugin Arduino IDE . Ini mengirimkan sinyal unduhan dan sketsa biner yang dikompilasi (alias firmware). Ini berkomunikasi dengan papan, Azure IoT Hub, aplikasi server operator IoT (lih. di bawah).
Untuk diinstal pada server pihak ketiga (misalnya seperti Situs Web Microsoft Azure):
- Pengirim IoT , aplikasi PHP + MySQL yang menyimpan dan menyajikan firmware.
Prinsip Kerja Aplikasi UWP
Kami telah mengembangkan:
- Aplikasi klien UWP, ditulis dalam C#. Ini 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 / Sampel:Termostat Ruangan
Seperti disebutkan sebelumnya, kami mengembangkan termostat ruangan untuk menunjukkan bagaimana seseorang dapat menggabungkan komponen kami untuk membangun proyek kehidupan nyata. Dalam kasus kami, kami bahkan memasukkannya ke dalam produksi, yaitu mengontrol pemanasan kantor kami.
Logikanya sederhana:
- ketika suhu turun di bawah suhu preset => relai (yaitu pemanasan) AKTIF
- ketika suhu di atas suhu preset => relai/pemanas mati
- antarmuka pengguna/klien UWP:menunjukkan status, dan menyetel suhu prasetel (melalui kotak teks atau suara)
1. Membuat Proyek (Perangkat Keras)
Kami tidak menyediakan diagram Fritzing, karena kami menggunakan Beta MKR1000. Tata letak pin dapat berubah di masa mendatang.
2. Siapkan Lingkungan Dev untuk OTA dan Azure IoT Hub - Instal Arduino IDE, setidaknya versi 1.6.7
- Pasang Papan SAMD Arduino. Dari Arduino IDE:Tools> Board:...> Boards Manager ...> pilih "Arduino SAMD Boards"
- Unduh dan buka zip beberapa perpustakaan di:SKETCHBOOK_DIR (mis. Documents/Arduino)/libraries :WiFi101, AzureIoT, RTCZero.
Dan sekarang komponen kami:
- Unduh dan buka zip perpustakaan run-time OTA di:SKETCHBOOK_DIR (mis. Documents/Arduino)/libraries.
- Unduh paket "papan" khusus kami . Buat direktori:SKETCHBOOK_DIR (mis. Documents/Arduino)/hardware/flower-platform . Buka zip file yang diunduh di sini.
- Unduh plugin Arduino IDE . Buat direktori:SKETCHBOOK_DIR (mis. Documents/Arduino)/tools. Buka zip file yang diunduh di sini.
Untuk OTA aman melalui Internet/HTTPS:
- Unduh IoT Dispatcher dan instal di server PHP + MySQL. Misalnya. kami memiliki instruksi tentang cara menyebarkan di Microsoft Azure Cloud.
3. Uji Coba OTA
Ada 3 metode pengunggahan OTA.
1) Coba OTA melalui LAN: File> Contoh> Arduino-FlowerOTA> WiFiOTA . Ubah baris yang dikomentari dengan "// CHANGE ME" karenanya, untuk mengonfigurasi alamat IP, parameter WiFi, plain/ssl, tanda tangan server. Kemudian Platform Bunga> Unggah OTA ...
Pastikan Anda menggunakan:
klien WiFiClient;
dan (lih. "tanda tangan server" dari jendela popup).
ota.begin(&udp, &client, "1hvtdliHzKLjMykvfW1MfPwsFthUU/YfjN8fOZJ3Qhc=");
CATATAN :untuk ketiga metode tersebut, Anda perlu melakukan unggahan awal melalui USB. Setelah itu, Anda dapat terus menggunakan OTA, dengan metode pilihan Anda.
2) Coba OTA melalui petugas operator yang aman , menggunakan file yang sama:
Pastikan Anda menggunakan:
klien WiFiSSLClient;
dan
ota.begin(&udp, &client, "my-iot-dispatcher-upload-key"); // lihat dikonfigurasi dalam IoT Dispatcher (PHP)
3) Coba OTA melalui petugas operator yang aman + Azure IoT Hub . File> Contoh> Arduino-FlowerOTA> WiFiOTA-AzureIoTHub. Sekali lagi:jangan lupa untuk menyesuaikan baris yang dikomentari dengan "// CHANGE ME ".
4) Coba kasus penggunaan / sampel:termostat ruangan. Ini tersedia di sini.
4. Test Drive Antarmuka Pengguna (Aplikasi UWP dengan Azure IoT Hub dan Speech Recognition)
Proyek UWP tersedia di sini. Visual Studio 2015 dan Windows 10 diperlukan.
Pastikan Anda mengubah parameter koneksi lih. akun Azure Anda:
SendCloudToDevice.cs
class SendCloudToDevice { // CHANGE ME:Harap ganti konstanta di bawah ini, dengan nilai aktual (diambil dari Portal Azure Anda) private const string HOST ="???.azure-devices.net"; string const pribadi DEVICE_ID ="???"; string const pribadi DEVICE_KEY ="???"; static string sharedAccessKeyName ="???"; static string sharedAccessKey ="???";
ReadDeviceToCloud.cs
class ReadDeviceToCloud { // Harap ganti konstanta di bawah ini, dengan nilai aktual (diambil dari Portal Azure Anda) 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 dengan proyek Anda.
Langkah ke Depan
Papan seperti Arduino MKR1000, yang memiliki kekuatan pemrosesan yang wajar dan kemampuan komunikasi SSL, merupakan langkah maju yang besar bagi 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 tulisan tangan);
- penerapan:penggunaan OTA.
Dengan memanfaatkan Platform Bunga, kami berencana untuk membuat sebuah yayasan yang akan berfokus pada mengajar anak-anak untuk membuat dan memprogram proyek IoT.
Kode
Library run-time yang menangani mekanisme pengunggahan dan penyalinan firmware (C++)
https://github.com/flower-platform/Arduino-FlowerOTA Paket "papan" khusus yang memiliki beberapa setelan terkait tautan, diperlukan oleh perpustakaan (skrip tautan)
https://github.com/flower-platform/ArduinoCore-samd-OTA Plugin Arduino IDE. Berkomunikasi dengan board, operator, dan IoT Hub (Java)
https://github.com/flower-platform/flower-platform-arduino-ide-plugin Pengirim IoT. Menyimpan dan menyajikan firmware yang dibutuhkan selama OTA (PHP + MySQL)
https://github.com/flower-platform/flower-platform-iot-dispatcher Contoh / contoh penggunaan termostat ruangan (C++)
https://github.com/flower-platform/ThermostatIoT UWP Client, untuk kasus/sampel penggunaan termostat ruangan (C#, HTML, JavaScript)
https://github.com/flower-platform/thermostat-uwp-ui Skema
Kami tidak menyediakan diagram Fritzing, karena kami menggunakan Beta MKR1000. Tata letak pin dapat berubah di masa mendatang.