MKR1000 dengan DHT22: Pemantauan Suhu dan Kelembaban Real-Time ke Azure
Tentang Proyek
Paul DeCarlo memiliki artikel yang bagus tentang mengirim data cuaca dari Particle Photon ke Microsoft Azure. Saya ingin mengulanginya dengan Arduino MKR1000 yang baru.
Photon menggunakan webhook untuk mengirim data dari cloud Particle ke Azure. Karena MKR1000 mendukung HTTPS, data dapat dikirim langsung ke Azure. Panduan ini akan menghubungkan MKR1000 Anda ke Azure dan menggunakan kembali banyak kode sisi server dari proyek Microsoft Connect the Dots.
Hardware
Sensor DHT22 digunakan untuk mengukur suhu dan kelembaban. Anda juga dapat memodifikasi kode untuk mendukung sensor DHT11. Sambungkan sensor DHT pada breadboard. Kirim 3,3 volt dari MKR1000 ke pin pertama. Tempatkan resistor pull-up 10.000Ω dari 3,3V ke pin 2. Hubungkan pin 3 ke ground. Jalankan kabel dari pin 2 pada DHT22 ke pin 6 pada MKR1000.
Untuk informasi lebih lanjut tentang DHT22, lihat tutorial DHT dari Adafruit.
Arduino IDE
Buka Arduino IDE. Gunakan Boards Manager untuk menginstal board MKR1000. Gunakan Library Manager untuk menginstal perpustakaan WiFi101.
HTTPS
Arduino MKR1000 mendukung HTTPS, tetapi kita perlu menginstal sertifikat secara manual untuk situs yang akan kita kunjungi. Ini diperlukan karena memori pada perangkat terbatas. Ini adalah proses dua langkah. Pertama, kita memuat skets ke board dan kemudian menjalankan program di komputer untuk mengunggah sertifikat.
Gunakan Arduino IDE untuk memuat Firmware Updater Sketch ke board Anda.
Unduh WiFi101 Firmware Updater. Buka arsip dan jalankan winc1500-uploader-gui.exe.
Sertifikat HTTPS untuk Azure Event hubs diterbitkan untuk servicebus.windows.net sehingga setiap URL service bus akan bekerja. Masukkan ctd-ns.servicebus.windows.net di kolom teks. Pilih port COM Anda dan unggah sertifikat.
Skets Arduino
Clone atau unduh skets Arduino dari https://github.com/don/MKR1000-Azure. Edit tab ssid dan ubah ssid[] dan password[] untuk mencocokkan pengaturan jaringan Anda. Unggah skets ke board MKR1000 Anda.
Jika Anda mendapatkan kesalahan, Anda mungkin perlu menggunakan Arduino Library Manager (Sketch -> Include Library -> Manage Libraries...) untuk menginstal perpustakaan "DHT sensor library", ArduinoJson, atau RTCZero.
Buka Arduino Serial Monitor (Tools -> Serial Monitor) dan pastikan data dikirim ke Azure.
Skets menggunakan kembali Event hub dari proyek connect the dots. Ini berarti kita dapat menggunakan aplikasi web Azure yang ada untuk melihat data kita. Buka https://connectthedotsdx.azurewebsites.net/ di browser Anda. Anda seharusnya melihat data dari MKR1000. Karena ini adalah event hub "publik", data sensor Anda akan dicampur dengan sensor lain. Jika beberapa orang menjalankan kode MKR1000 ini, Anda mungkin ingin mengubah displayname atau guid dalam fungsi createJSON.
Membuat Event Hub Anda Sendiri
Menjalankan terhadap Event hub yang ada sudah cukup, tetapi Anda juga dapat membuat event hub Anda sendiri untuk data Anda. Ini memerlukan Visual Studio dan langganan Azure. Edisi komunitas Visual Studio 2015 Community gratis berfungsi dengan baik. Anda juga dapat mendaftar untuk uji coba gratis langganan Azure.
Kami akan menggunakan kode dari proyek Connect the Dots. Clone proyek dengan git atau gunakan tombol Download ZIP di halaman Github.
Anda dapat mengikuti instruksi Microsoft untuk membuat sumber daya Azure yang memakan waktu sedikit tetapi memberi Anda pemahaman yang dalam tentang bagaimana potongan-potongan disatukan. Saya menyarankan menggunakan proyek AzurePrep dari repositori yang di-clone untuk secara otomatis membuat sumber daya ini.
Gunakan Visual Studio dan buka Solusi AzurePrep dari connectthedots\Azure\AzurePrep. Jalankan proyek AzurePrep dalam Mode Release.
Aplikasi akan membuka beberapa jendela yang meminta Anda untuk masuk ke Azure dan memberikan izin ke sumber daya Anda. Setelah itu, jawab sejumlah pertanyaan di terminal untuk membuat sumber daya.
Anda perlu memilih nama untuk sumber daya. Dokumentasi connect the dots merekomendasikan nama ctd (connect the dots) + inisial Anda. Misalnya, saya memilih "ctddc".
Kembali di Visual Studio, jalankan target CreateWebConfig dari AzurePrep untuk membuat file konfigurasi untuk situs web. Masuk, ikuti petunjuk. File web.config akan ditulis ke desktop.
Salin web.config dari Desktop Anda ke proyek situs web connectthedots, connectthedots\Azure\WebSite\ConnectTheDotsWebSite.
Buka solusi ConnectTheDotsWebsite dari connectthedots\Azure\WebSite di Visual Studio.
Anda perlu menambahkan file web.config baru ke proyek. Klik kanan solusi di Solution Explorer. Pilih "Add -> Existing Item..." dari menu. Masuk ke ConnectTheDotsWebSite dan tambahkan web.config.
Jalankan proyek di Microsoft Edge. Anda tidak akan melihat data apa pun sampai kita memperbarui skets pada MKR1000.
Skets Arduino memerlukan kunci SAS untuk mengakses sumber daya Azure. Gunakan alat Event Hubs Signature Generator milik Sandrino Di Mattia untuk menghasilkan kunci dalam format yang benar. Unduh dari https://github.com/sandrinodimattia/RedDog/releases. Buka arsip dan jalankan RedDog.ServiceBus.EventHubs.SignatureGenerator.
Isi UI menggunakan namespace yang Anda buat sebelumnya. Karena saya menggunakan ctddc saat membuat sumber daya Azure, namespace saya adalah ctddc-ns. Nama hub adalah ehdevices. Nama kunci pengirim dan pengirim harus keduanya D1. Saya mengatur TTL Token selama 1 tahun (525.600 menit). Tanda tangan akan berguna untuk umur perangkat.
Anda perlu masuk ke Azure Portal untuk mendapatkan kunci pengirim. Dari menu kiri, pilih browse, dan gunakan filter untuk menemukan Event hubs.
Event hubs membuka jendela baru di Azure Portal lama.
Klik namespace yang Anda buat.
Pilih Event Hubs
Pilih ehdevices
Pilih configure
Gulir ke bawah dan salin kunci utama untuk D1
Kembali ke alat Signature Generator dan tempelkan kunci ke kolom Sender Key. Klik tombol Generate untuk menghasilkan tanda tangan.
Salin tanda tangan yang dihasilkan.
Buka kembali skets MKR1000-Azure di Arduino IDE. Kita perlu mengganti variabel hostname[] dan authSAS[] dengan pengaturan event hub baru Anda. Tempelkan tanda tangan yang dihasilkan ke kolom char authSAS[]. Edit kolom hostname agar sesuai dengan nama host Anda. Misalnya: char hostname[] = "ctddc-ns.servicebus.windows.net";
Simpan skets dan unggah ke MKR1000 Anda. Secara opsi buka Serial Monitor dan periksa apakah data dikirim ke Azure.
ALT+TAB ke situs web connect the dots yang berjalan di Microsoft Edge dan Anda seharusnya mulai melihat data dari perangkat Anda.
IoT Hub
Azure IoT hub lebih baru dari Event hub dan mungkin lebih cocok untuk proyek Anda. IoT Hub mendukung pesan device-to-cloud (seperti proyek ini) dan cloud-to-device messaging.
Gunakan Azure Portal untuk membuat IoT Hub baru.
Device Explorer digunakan untuk menghasilkan tanda tangan untuk mengakses IoT hub. Unduh SetupDeviceExplorer.msi dari https://github.com/Azure/azure-iot-sdks/releases.
Kembali ke Azure Portal dan buka IoT hub baru. Klik ikon kunci, pilih baris iothubowner, salin string koneksi untuk kunci utama.
Klik tab Management. Klik tombol create di bawah Actions. Masukkan D1 sebagai Device ID dan klik Create.
Sorot baris D1 dan klik tombol SAS Token dan buat token baru.
Buka skets MKR1000-Azure di Arduino IDE.
Ganti hostname[] dengan nama IoT hub Anda + ".azure-devices.net". Perbarui authSAS[] dengan nilai yang dihasilkan dengan Device Explorer. Pastikan untuk hanya menyalin bagian dari SAS Token setelah "SharedAcessSignature=". Sesuaikan URI untuk menunjuk ke IoT hub.
Edit kode dalam fungsi sendEvent yang memeriksa respons yang valid. Event hub mengirim HTTP 201 untuk menunjukkan sukses. IoT hub mengirim HTTP 204.
Ubah
if (response.startsWith("HTTP/1.1 201")) {
Menjadi
if (response.startsWith("HTTP/1.1 204")) {
Gunakan Arduino IDE untuk unggah skets ke Arduino MKR1000 Anda.
Alihkan tab Data di Device Explorer. Klik tombol monitor untuk melihat data yang dikirim ke Event Hub.
Karena proyek ini mengirim data dari device-to-cloud, saya menggunakan HTTP POST untuk mengirim data. Terdapat juga perpustakaan untuk mengirim dan menerima data dengan Azure IoT hub. Sayangnya, menurut saya mereka belum sangat seperti Arduino atau ramah pengguna. Jika Anda ingin perangkat Anda menerima data dari Azure, perpustakaan mungkin lebih membantu. Atau, lihat posting blog Mohan Palanisamy tentang mengirim data dari IoT hub ke MKR1000.
Posting ini menunjukkan cara mengirim data sensor dari MRK1000 ke Azure Event hubs dan IoT hub. Kami menggunakan kode yang ada untuk melihat dan menggambar data. Lihat proyek connect the dots untuk lebih banyak cara menulis kode untuk menyimpan, memanipulasi, dan melihat data Anda dengan Azure.
Sekarang setelah selesai, Anda mungkin ingin mematikan atau menghapus sumber daya yang tidak Anda gunakan untuk membatasi jumlah biaya yang dikenakan. Solusi AzurePrep memiliki proyek ClearResources untuk membantu Anda menghapus layanan Azure.
Kode
Device Explorer
Alat untuk IoT Hub. Unduh SetupDeviceExplorer.msihttps://github.com/Azure/azure-iot-sdks/releases
Connect the Dots
Kode contoh Azurehttps://github.com/Azure/connectthedots
MKR1000-Arduino
Kode Sumber Arduinohttps://github.com/don/MKR1000-Azure
WiFi101 Firmware Updater
Alat untuk menambahkan sertifikat TLS ke MKR1000https://github.com/arduino-libraries/WiFi101-FirmwareUpdater/releases/latest
Event Hubs Signature Generator
Alat untuk menghasilkan kredensial Azure untuk MKR1000https://github.com/sandrinodimattia/RedDog/releases