Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Sistem Kontrol Kolam Renang Azure IoT: Sensor Cerdas & Pemantauan Jarak Jauh

Komponen dan Perlengkapan

Sensor Suhu Digital Tahan Air DS18B20
(Kabel merah menyambung ke 3-5V, Biru/Hitam menyambung ke ground dan Kuning/Putih adalah data)
×2
Relay Daya IoT
×1
Sistem Kontrol Kolam Renang Azure IoT: Sensor Cerdas & Pemantauan Jarak Jauh
Resistor 4,75k ohm
1/4W, 5%
×2
Sistem Kontrol Kolam Renang Azure IoT: Sensor Cerdas & Pemantauan Jarak Jauh
Raspberry Pi 2 Model B
×1
Sistem Kontrol Kolam Renang Azure IoT: Sensor Cerdas & Pemantauan Jarak Jauh
Arduino UNO
Arduino Uno R3
×1

Aplikasi dan Layanan Online

Sistem Kontrol Kolam Renang Azure IoT: Sensor Cerdas & Pemantauan Jarak Jauh
Microsoft Azure
Sistem Kontrol Kolam Renang Azure IoT: Sensor Cerdas & Pemantauan Jarak Jauh
Microsoft Windows 10 IoT Core
Sistem Kontrol Kolam Renang Azure IoT: Sensor Cerdas & Pemantauan Jarak Jauh
Arduino IDE
Sistem Kontrol Kolam Renang Azure IoT: Sensor Cerdas & Pemantauan Jarak Jauh
Microsoft Visual Studio 2015
Azure IoT Hub Device Explorer
Fritzing
Power BI

Tentang Proyek Ini

Ringkasan

Tujuan proyek ini adalah untuk mengontrol dan memantau kolam renang menggunakan sensor suhu, relay, dan Microsoft Azure.

Inspirasi untuk proyek ini adalah kebutuhan untuk mengoperasikan dan memantau kolam renang anak kami dari jarak jauh, yang merupakan kolam bundar Intex 15' x 48". Kolam menampung sekitar 5000 gallon air. Kolam terhubung ke Pompa Pasir/Pemompa, Pemanas 11KW, dan Sistem Air Asin. Tujuannya adalah memantau suhu air kolam, suhu udara, dan mengontrol pompa, pemanas, dan sistem air asin untuk memastikan kolam cukup hangat untuk anak-anak, sambil tidak berlebihan dalam operasinya.

Video 5 menit berikut menunjukkan bagaimana kolam, sensor, papan sirkuit, dan relay terhubung.

Diagram arsitektur berikut menunjukkan semua komponen utama dalam solusi ini.

Sistem Kontrol Kolam Renang Azure IoT: Sensor Cerdas & Pemantauan Jarak Jauh

Raspberry Pi, Arduino, IoT Power Relay, dan breadboard dipaku dengan ritsel ke dalam wadah penyimpanan plastik untuk menjaga air/kelembaban masuk. Lubang dibuat untuk kabel dan ventilasi.

Sistem Kontrol Kolam Renang Azure IoT: Sensor Cerdas & Pemantauan Jarak Jauh

Sensor

Pemantauan suhu air kolam dan suhu udara dilakukan menggunakan sepasang sensor suhu tahan air DS18B20, yang terhubung ke Arduino Uno R3 menggunakan Pustaka Kontrol Dallas dan Pustaka OneWire. Data suhu (dalam Celsius) dikirim ke Raspberry Pi setiap 1 detik melalui I2C. Kedua nilai suhu dipisahkan dengan "|".

temperatureData = padRight(String(poolSensor.getTempCByIndex(0)) + "|" + String(outsideSensor.getTempCByIndex(0)), I2C_BUFFER_LEN); 

Sensor suhu tahan air DS18B20 sudah terpasang kabel sebagai berikut:

Saya menggunakan kabel bel murah ukuran 20 gauge (kabel bel pintu) untuk memperpanjang jangkauan DS18B20 yang membaca suhu air. DS18B20 ini terendam dalam kolam.

Sistem Kontrol Kolam Renang Azure IoT: Sensor Cerdas & Pemantauan Jarak Jauh

Sensor DS18B20 kedua yang membaca suhu udara ditempel di bagian luar wadah penyimpanan plastik.

Relay

Raspberry Pi mengontrol power bar IoT Power Relay yang Pompa dan Sistem Air Asin terhubung padanya menggunakan 110V. Ini dilakukan menggunakan pin 3V pada Pi. Mengalihkan pin 3V mengaktifkan/menonaktifkan sepasang kontak 110V pada IoT Power Relay (pasangan kontak mati secara default). Lihat diagram nanti untuk skematis.

Sistem Kontrol Kolam Renang Azure IoT: Sensor Cerdas & Pemantauan Jarak Jauh

Tidak perlu menghubungkan relay ke Pemanas karena ia memiliki sensor aliran bawaan, dan akan berhenti/memulai pemanas berdasarkan kehadiran atau tidaknya aliran air. Saya juga tidak dapat dengan mudah menemukan relay untuk mengontrol sirkuit 220V/60amp yang dibutuhkan Pemanas menggunakan 3V atau 5V.

Di masa depan, saya akan memasang sensor untuk mengukur penggunaan listrik sirkuit 110V dan 220V. Jika ada yang dapat merekomendasikan beberapa, saya akan berterima kasih.

Raspberry Pi

Raspberry Pi menjalankan Windows IoT Core Build 10.0.10586.0 dan melakukan hal berikut:

IoTPoolRaspiBackgroundApp adalah aplikasi C# tanpa antarmuka (headless), yang dibuat menggunakan templat proyek Background Application (IoT) di Visual Studio 2015, Update 3.

IoTPoolRaspiBackgroundApp mengirim payload JSON berikut ke Azure IoT Hub setiap 1 menit menggunakan AMQP (ini dapat diubah dalam kode sumber menjadi HTTPS atau MQTT).

{ "PoolName" : "iotpool", "PoolWaterTempC" : 30, "OutsideAirTempC" : 27, "IsPoolPowerOn" : false, "SampleDateTime" : "2016-07-05T23:35:58.0882185Z" } 

Raspberry Pi terdaftar sebagai perangkat di Azure IoT Hub. Cara termudah untuk mendaftarkan perangkat di Azure IoT Hub adalah menggunakan Device Explorer. Alat ini juga merupakan cara yang bagus untuk mendapatkan string koneksi perangkat, memantau pesan D2C (Device to Cloud), dan menguji pengiriman pesan C2D (Cloud to Device).

Edit hal berikut di StartupTask.cs untuk menghubungkan IoTPoolRaspiBackgroundApp ke IoT Hub Anda:

static string iotPoolConnString = "HostName=<iothubname>.azure-devices.net;DeviceId=iotpool;SharedAccessKey=<key>"; static string deviceName = "iotpool"; 

Arduino Uno

Arduino Uno R3 terhubung ke dua sensor suhu DS18B20 menggunakan Pustaka Kontrol Dallas dan Pustaka OneWire. Ia mendapat daya dari Raspberry Pi melalui USB (5V) dan mengirim pasangan pembacaan suhu ke Raspberry Pi melalui I2C menggunakan pin SDA dan SLC. Lihat diagram Fritzing untuk skematis.

Sistem Kontrol Kolam Renang Azure IoT: Sensor Cerdas & Pemantauan Jarak Jauh

Gunakan kode Two-DS18B20-I2C.ino untuk menjalankan Arduino.

Azure

Semua komponen Azure dibuat di wilayah Azure yang sama (West US) untuk meminimalkan biaya yang terkait dengan lalu lintas keluar.

Azure IoT Hub

Edisi gratis Azure IoT Hub digunakan dalam proyek ini. Ia terbatas pada 8.000 pesan/hari dengan ukuran 500 byte setiap pesan. IoTPoolRaspiBackgroundApp mengirim pesan D2C dengan frekuensi 1 per menit, atau 1.440/hari, dengan ukuran 158 byte setiap pesan. Ini menyediakan ruang yang cukup untuk pesan C2D apa pun.

Anda harus terlebih dahulu mendaftarkan perangkat dengan Azure IoT Hub. Cara termudah adalah menggunakan Device Explorer. Setelah terdaftar, Anda dapat mendapatkan string koneksi perangkat menggunakan Device Explorer.

Sistem Kontrol Kolam Renang Azure IoT: Sensor Cerdas & Pemantauan Jarak Jauh

Azure Streaming Analytics

Tugas Azure Streaming Analytics (ASA) menghubungkan input IoT Hub ke output Azure SQL Database menggunakan kueri ASA sederhana berikut.

SELECT PoolName, PoolWaterTempC, OutsideAirTempC, IsPoolPowerOn, SampleDateTime INTO sql FROM iothub 

Kueri ini menulis setiap pesan JSON Device to Cloud (D2C) (1 per menit) ke tabel bernama Pools di Azure SQL Database.

Peningkatan di masa depan untuk kueri ini dapat mencakup beberapa fungsi agregasi untuk tujuan peringatan (misalnya, Rata-rata PoolWaterTempC > 35 menunjukkan kolam terlalu hangat).

Azure SQL Database

Untuk meminimalkan biaya, dan karena persyaratan kinerja database minimal, database adalah S0 Standard (10 DTUs).

Satu database dengan satu tabel dibuat untuk menyimpan semua pesan D2C.

Skema:

CREATE TABLE [dbo].[Pools] ( [Id] INT IDENTITY (1, 1) NOT NULL, [PoolName] NVARCHAR (MAX) NULL, [PoolWaterTempC] FLOAT (53) NOT NULL, [OutsideAirTempC] FLOAT (53) NOT NULL, [IsPoolPowerOn] INT NOT NULL, [SampleDateTime] DATETIME NOT NULL, CONSTRAINT [PK_dbo.Pools] PRIMARY KEY CLUSTERED ([Id] ASC) ); 

Azure API App

API adalah RESTful API yang dibuat menggunakan ASP.NET Web API.

Klien API harus mengautentikasi menggunakan kunci API yang ditentukan dalam header HTTP.

api-key : {your API key} 

Kunci API didefinisikan di IoTPoolAPI\Controllers\PoolControllers.cs. Aplikasi Seluler dan Aplikasi Web harus menggunakan kunci API ini untuk berkomunikasi dengan API.

REST API mendukung metode berikut:

Sistem Kontrol Kolam Renang Azure IoT: Sensor Cerdas & Pemantauan Jarak Jauh

Peningkatan di masa depan untuk API dapat mencakup menempatkannya di balik Azure API Management dan menambahkan opsi autentikasi lain ke API seperti Azure Active Directory.

Azure Web App

IoTPoolWebApp berisi aplikasi web forms ASP.NET untuk berinteraksi dengan API.

Sistem Kontrol Kolam Renang Azure IoT: Sensor Cerdas & Pemantauan Jarak Jauh

Tersedia juga versi ramah seluler dari aplikasi web.

Edit default.aspx.cs dan ubah hal berikut:

private static string apiKey = ""; ... HttpRequestMessage requestMessage = ...."https://<yourwebsite>.azurewebsites.net/api/pool/poweroff"); ... HttpRequestMessage requestMessage = ...."https://<yourwebsite>.azurewebsites.net/api/pool/poweron"); ... HttpRequestMessage requestMessage = ...."https://<yourwebsite>.azurewebsites.net/api/pool/getlatest"); 

Aplikasi web terintegrasi dengan Azure Active Directory (AAD) untuk autentikasi. Aplikasi web mengharuskan semua pengguna untuk mengautentikasi menggunakan AAD.

Anda harus terlebih dahulu mendaftarkan aplikasi web Anda dengan penyewa AAD Anda (misalnya tenant_name.onmicrosoft.com). Anda dapat melakukan ini melalui Azure Portal atau melalui Visual Studio. Setelah terdaftar, salin client ID dari Azure Portal.

Selanjutnya, ubah domain AAD di aplikasi web dengan memodifikasi <client ID AAD> di web.config.

<appSettings> <add key="ida:ClientId" value="<client ID AAD>" /> <add key="ida:AADInstance" value="https://login.microsoftonline.com/" /> </appSettings> 

Aplikasi Seluler

Aplikasi Seluler ditulis menggunakan Xamarin Forms. Saya hanya mengompilnya untuk berjalan di Windows Phone dan Windows 10, tetapi seharusnya dapat di-kompilasi lintas platform untuk iOS dan Android.

Sistem Kontrol Kolam Renang Azure IoT: Sensor Cerdas & Pemantauan Jarak Jauh

Edit Core.cs dan ubah hal berikut:

string queryString = "https://<yourwebsite>azurewebsites.net/api/pool/getlatest 

Edit DataService.cs dan ubah hal berikut:

private static string apiKey = ""; 

Edit PoolPage.xaml.cs dan ubah hal berikut:

private static string apiKey = ""; ... HttpRequestMessage requestMessage = ...."https://<yourwebsite>.azurewebsites.net/api/pool/poweroff"); ... HttpRequestMessage requestMessage = ...."https://<yourwebsite>.azurewebsites.net/api/pool/poweron"); 

Power BI

Power BI (edisi gratis) digunakan untuk membuat dan mempublikasikan dashboard waktu nyata yang menampilkan data IoT Pool.

Sistem Kontrol Kolam Renang Azure IoT: Sensor Cerdas & Pemantauan Jarak Jauh

Prosesnya melibatkan unduhan Power BI Desktop, terhubung ke Azure SQL DB (menggunakan DirectQuery), membuat beberapa laporan dengan visual, dan mempublikasikan .pbix ke PowerBI.com. Saya kemudian memasang laporan ke dashboard.

Di masa depan, saya mungkin menggunakan Power BI embedded untuk langsung menyematkan dashboard ke dalam aplikasi web.

Untuk saat ini, saya dapat melihat dashboard melalui Powerbi.com atau melalui aplikasi seluler gratis Power BI.

Referensi

Berikut adalah daftar sumber daya yang saya gunakan dalam membangun solusi ini:

Terima kasih khusus kepada Miles Burton untuk Pustaka Kontrol Dallas dan Mike Mackes untuk kode contoh Arduino / I2C / DS18B20 dan inspirasi keseluruhan untuk proyek ini.

Kode

Format Payload Pesan JSON untuk Pesan Device to Cloud (D2C)JSON
Catatan: "IsPoolPowerOn" - 0 menunjukkan daya mati; 1 menunjukkan daya nyala
{ "PoolName" : "IoTPool", "PoolWaterTempC" : 30, "OutsideAirTempC" : 27, "IsPoolPowerOn" : false, "SampleDateTime" : "2016-07-05T23:35:58.0882185Z" } 
Skema Tabel SQL Database "Pools"SQL
CREATE TABLE [dbo].[Pools] ( [Id] INT IDENTITY (1, 1) NOT NULL, [PoolName] NVARCHAR (MAX) NULL, [PoolWaterTempC] FLOAT (53) NOT NULL, [OutsideAirTempC] FLOAT (53) NOT NULL, [IsPoolPowerOn] INT NOT NULL, [SampleDateTime] DATETIME NOT NULL, CONSTRAINT [PK_dbo.Pools] PRIMARY KEY CLUSTERED ([Id] ASC) ); 
Repo GitHub IoT Pool
Semua kode sumberhttps://github.com/khilscher/iotpool

Skematik

Raspberry Pi ke Arduino melalui I2C menghubungkan 2 Sensor DS18B20RaspiArduinoTwoDS18B20.fzzDiagram arsitektur keseluruhanSistem Kontrol Kolam Renang Azure IoT: Sensor Cerdas & Pemantauan Jarak JauhSistem Kontrol Kolam Renang Azure IoT: Sensor Cerdas & Pemantauan Jarak Jauh

Proses manufaktur

  1. Panduan Lengkap Desain dan Konstruksi Kolam Renang Tanam dan Atas Tanah
  2. Arduino Meluncurkan Portenta H7: Papan IoT Industri-Grade Debut di CES
  3. Azure RTOS Meluas ke Platform Embedded Utama dengan Kit Pengembangan Baru
  4. Azure vs AWS: Platform Cloud Mana yang Menang untuk IoT?
  5. Membuat GPS Datalogger dengan Analisis Spasial di Azure IoT Hub
  6. Pemantauan Kualitas Air Berbasis IoT & AI Melindungi Kehidupan Akuatik
  7. Pemantau Detak Jantung IoT Real-Time dengan Arduino & MAX30100
  8. Kontrol Robotik Arm Custom Secara Jarak Jauh melalui IoT
  9. Buat Kotak Pintar IoT dengan ESP8266, Arduino & Sensor Ultrasonik – Pemantauan Real-Time
  10. Pelacak Surya Berbasis IoT: Manajemen Energi Cerdas dengan Arduino