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

Kolam Renang Azure IoT

Komponen dan persediaan

Sensor Suhu Digital Tahan Air DS18B20
(Kabel merah terhubung ke 3-5V, Biru/Hitam terhubung ke ground dan Kuning/Putih adalah data )
× 2
Relai Daya IoT
× 1
Resistor 4.75k ohm
1/4W, 5%
× 2
Raspberry Pi 2 Model B
× 1
Arduino UNO
Arduino Uno R3
× 1

Aplikasi dan layanan online

Microsoft Azure
Microsoft Windows 10 IoT Core
Arduino IDE
Microsoft Visual Studio 2015
Azure IoT Hub Device Explorer
Fritzing
Power BI

Tentang proyek ini

Ikhtisar

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

Inspirasi untuk proyek ini adalah kebutuhan untuk mengoperasikan dan memantau kolam renang anak-anak kami dari jarak jauh, yang merupakan kolam bundar Intex 15' x 48". Kolam ini menampung sekitar 5000 galon air. Terhubung ke Filter/Pompa Pasir, sebuah Pemanas 11KW, dan Sistem Air Asin. Tujuannya adalah untuk memantau suhu air kolam, suhu udara dan mengontrol pompa, pemanas, dan sistem air asin untuk memastikan kolam cukup hangat untuk anak-anak, sementara tidak terlalu sering digunakan.

Video berdurasi 5 menit ini menunjukkan bagaimana kumpulan, sensor, papan sirkuit, dan relai terhubung.

Diagram arsitektur berikut menunjukkan semua komponen utama dalam solusi.

Raspberry Pi, Arduino, IoT Power Relay, dan papan tempat memotong roti diikat ke dalam wadah penyimpanan plastik untuk menjaga air/kelembaban. Lubang dibor untuk kabel dan ventilasi.

Sensor

Pemantauan suhu air kolam dan suhu udara dilakukan dengan menggunakan sepasang sensor suhu tahan air DS18B20, yang terhubung ke Arduino Uno R3 menggunakan Perpustakaan Dallas Controls dan Perpustakaan OneWire. Data suhu (dalam Celcius) 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 telah dilengkapi dengan kabel sebagai berikut:

  • Merah terhubung ke 3v/5v
  • Biru/Hitam terhubung ke ground
  • Kuning/Putih adalah data

Saya menggunakan beberapa kabel bel pengukur 20 murah (kawat bel pintu) untuk memperluas jangkauan DS18B20 yang membaca suhu air. DS18B20 ini terendam di kolam.

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

Relai

Raspberry Pi mengontrol power bar IoT Power Relay yang menghubungkan Sistem Pompa dan Air Garam menggunakan 110v. Ini dilakukan dengan menggunakan pin 3v pada Pi. Mengalihkan pin 3v mengaktifkan/menonaktifkan sepasang outlet 110v pada IoT Power Relay (pasangan outlet mati secara default). Lihat diagram nanti untuk skema.

Tidak perlu menghubungkan relai ke Pemanas karena memiliki sensor aliran internal, dan akan menghentikan/memulai pemanasan berdasarkan tidak adanya atau ada aliran air. Ditambah saya tidak dapat dengan mudah menemukan relay untuk mengontrol rangkaian 220v/60amp yang dibutuhkan oleh Heater menggunakan 3v atau 5v.

Di masa depan saya akan memasang sensor untuk mengukur penggunaan listrik dari rangkaian 110v dan 220v. Jika ada yang bisa merekomendasikan beberapa, saya akan berterima kasih.

Raspberry Pi

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

  • Menjalankan IoTPoolRaspiBackgroundApp aplikasi latar belakang;
  • Bertindak sebagai gerbang bidang IoT (buram);
  • Menyediakan daya ke Arduino Uno melalui USB (5v);
  • Menerima suhu kolam dan udara (dalam C) dari Arduino Uno melalui I2C;
  • Mengontrol Relai Daya IoT menggunakan pin 3v; dan
  • Mengirimkan nama kolam, suhu kolam, suhu udara, status nyala/mati Relai Daya IoT, dan stempel waktu (dalam UTC) setiap 1 menit ke Azure IoT Hub.

IoTPoolRaspiBackgroundApp adalah aplikasi C# tanpa kepala, dibuat menggunakan Aplikasi Latar Belakang (IoT) templat proyek di Visual Studio 2015, Perbarui 3.

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

{"PoolName" :"iotpool","PoolWaterTempC" :30,"OutsideAirTempC" :27,"IsPoolPowerOn" :false, "SampleDateTime" :"05-07-2016T23: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 rangkaian koneksi perangkat, memantau pesan D2C (Perangkat ke Cloud) dan menguji pengiriman pesan C2D (Cloud ke Perangkat).

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

string statis iotPoolConnString ="HostName=.azure-devices.net;DeviceId=iotpool;SharedAccessKey=";string statis deviceName ="iotpool";  

Arduino Uno

Arduino Uno R3 terhubung ke dua sensor suhu DS18B20 menggunakan Dallas Controls Library dan OneWire Library. Ini didukung oleh Raspberry Pi melalui USB (5v) dan mengirimkan sepasang pembacaan suhu ke Raspberry Pi melalui I2C menggunakan pin SDA dan SLC. Lihat diagram Fritzing untuk skema.

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

Azure

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

Pusat Azure IoT

Edisi gratis Azure IoT Hub digunakan dalam proyek ini. Ini dibatasi hingga 8.000 pesan/hari pada masing-masing 500 byte. IoTPoolRaspiBackgroundApp mengirim pesan D2C dengan kecepatan 1 per menit, atau 1.440/hari, pada masing-masing 158 byte. Ini menyisakan ruang yang cukup untuk pesan C2D.

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

Analisis Streaming Azure

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

SELECT PoolName, PoolWaterTempC, OutsideAirTempC, IsPoolPowerOn, SampleDateTimeINTO sqlFROM iothub 

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

Penyempurnaan kueri ini di masa mendatang dapat mencakup beberapa fungsi agregasi untuk tujuan peringatan (mis. Rata-rata PoolWaterTempC> 35 menunjukkan kolam terlalu panas).

Basis Data Azure SQL

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

Basis data tunggal dengan satu tabel dibuat untuk menyimpan semua pesan D2C.

Skema:

BUAT TABEL [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)); 

Aplikasi Azure API

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

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

api-key :{kunci API Anda} 

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

REST API mendukung metode berikut:

Perbaikan masa depan untuk API mungkin termasuk menempatkannya di belakang Azure API Management dan menambahkan opsi otentikasi lain ke dalam API seperti Azure Active Directory.

Aplikasi Web Azure

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

Ada juga versi aplikasi web yang ramah seluler.

Edit default.aspx.cs dan ubah yang berikut:

string statis pribadi apiKey ="";...HttpRequestMessage requestMessage =...."http://.azurewebsites.net/api/pool/poweroff");...HttpRequestMessage requestMessage =...."http://.azurewebsites.net/api/pool/poweron");...HttpRequestMessage requestMessage =...."http://.azurewebsites.net/api /pool/getlatest"); 

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

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

Selanjutnya, ubah domain AAD di aplikasi web dengan memodifikasi di web.config.

 

Aplikasi Seluler

Aplikasi Seluler ditulis menggunakan Formulir Xamarin. Saya hanya mengkompilasinya untuk berjalan di Windows Phone dan Windows 10 tetapi harus mengkompilasi silang di iOS dan Android.

Edit Core.cs dan ubah yang berikut:

string queryString ="http://azurewebsites.net/api/pool/getlatest 

Edit DataService.cs dan ubah berikut ini:

string statis pribadi apiKey =""; 

Edit PoolPage.xaml.cs dan ubah berikut ini:

string statis pribadi apiKey ="";...HttpRequestMessage requestMessage =...."http://.azurewebsites.net/api/pool/poweroff");...HttpRequestMessage requestMessage =...."http://.azurewebsites.net/api/pool/poweron"); 

Power BI

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

Prosesnya melibatkan pengunduhan Power BI Desktop, menyambungkan ke Azure SQL DB (menggunakan DirectQuery), membuat beberapa laporan dengan visual, dan menerbitkan .pbix ke PowerBI.com. Saya kemudian menyematkan laporan ke dasbor.

Di masa mendatang, saya dapat menggunakan Power BI yang disematkan untuk menyematkan dasbor secara langsung ke dalam aplikasi web.

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

Referensi

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

  • https://developer.microsoft.com/en-us/windows/iot/win10/samples/blinky
  • https://create.arduino.cc/projecthub/mmackes/pool-controller-8dfa69?ref=tag&ref_id=relays&offset=0
  • https://azure.microsoft.com/en-us/documentation/articles/iot-hub-csharp-csharp-getstarted/
  • https://azure.microsoft.com/en-us/documentation/articles/iot-hub-csharp-csharp-c2d/
  • https://azure.microsoft.com/en-us/documentation/articles/web-sites-dotnet-rest-service-aspnet-api-sql-database/
  • https://azure.microsoft.com/en-us/documentation/articles/app-service-mobile-xamarin-forms-get-started/
  • https://msdn.microsoft.com/en-us/library/hh975357.aspx
  • https://www.arduino.cc/en/Guide/Windows
  • http://playground.arduino.cc/Learning/OneWire
  • http://milesburton.com/Dallas_Temperature_Control_Library
  • https://learn.sparkfun.com/tutorials/i2c

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

Kode

  • Format Payload Pesan JSON untuk Pesan Perangkat ke Cloud (D2C)
  • Skema Tabel "Kolam" Basis Data SQL
Format Payload Pesan JSON untuk Pesan Perangkat ke Cloud (D2C)JSON
Catatan:"IsPoolPowerOn" - 0 menunjukkan matikan; 1 menunjukkan daya hidup
{ "PoolName" :"IoTPool", "PoolWaterTempC" :30, "OutsideAirTempC" :27, "IsPoolPowerOn" :false, "SampleDateTime" :"2016-07-05T23:35:58.0882185Z" }
Skema Tabel "Kolam" Basis Data SQLSQL
BUAT TABEL [dbo].[Kolam] ( [Id] IDENTITAS INT (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 IoT Pool Git Hub
Semua kode sumberhttps://github.com/khilscher/iotpool

Skema

Raspberry Pi ke Arduino melalui I2C yang menghubungkan 2 Sensor DS18B20 RaspiArduinoTwoDS18B20.fzzDiagram arsitektur keseluruhan

Proses manufaktur

  1. Kolam Renang
  2. board Arduino menargetkan IoT industri
  3. Kit pengembang mendukung Azure RTOS
  4. IoT di Cloud:Azure vs AWS
  5. GPS Datalogger, Analisis Spasial, dan Azure IoT Hub.
  6. Menyelamatkan Kehidupan Akuatik &Memerangi Polusi Air dengan IoT &AI
  7. Pemantau Detak Jantung Menggunakan IoT
  8. Menggunakan IoT untuk Mengontrol Lengan Robot dari Jarak Jauh
  9. IOT - Smart Jar Menggunakan ESP8266, Arduino dan Sensor Ultrasonik
  10. Pelacak surya berbasis Internet of things (IoT)