Tentang proyek ini
I. Tujuan
Tujuan utama proyek ini adalah menggunakan Samsung ARTIK Cloud untuk memantau tingkat pH dan suhu kolam renang.
II. Pengaturan Awan ARTIK
Langkah 1. Membuat perangkat baru Anda
Daftar dengan ARTIK Cloud. Buka situs pengembang dan buat "jenis perangkat" baru.
Masukkan tampilan dan nama unik yang Anda inginkan.
Buat Manifes baru
Masukkan nama bidang dan deskripsi lainnya
Klik Simpan dan kemudian arahkan ke Aktifkan Tab Manifes
Klik Tombol ACTIVE MANIFEST untuk menyelesaikan dan Anda akan diarahkan ke sini
Selesai membuat jenis perangkat!
Sekarang mari buat aplikasi Anda yang akan menggunakan perangkat itu.
Langkah 2. Membuat aplikasi Anda
Navigasikan ke Aplikasi Cloud ARTIK.
Klik aplikasi baru
Masukkan nama aplikasi yang Anda inginkan dan url pengalihan otentikasi.
Perhatikan bahwa url pengalihan otentikasi diperlukan. Ini digunakan untuk mengautentikasi pengguna aplikasi ini sehingga akan mengarahkan ulang ke url ini jika perlu login.
Kami menggunakan http://localhost/index/ untuk sampel.
Sekarang atur izin aplikasi Anda untuk membaca dan menulis, navigasikan ke perangkat Anda lalu simpan.
Selamat Anda sekarang memiliki aplikasi Anda!
Sekarang mari kita hubungkan aplikasi itu.
Langkah 3. Hubungkan perangkat Anda
Navigasikan ke perangkat saya dan klik sambungkan perangkat lain.
Klik jenis perangkat baru yang Anda buat sebelumnya, lalu klik sambungkan perangkat.
Klik setelan perangkat Anda yang terhubung.
Catat info ini karena Anda akan membutuhkannya di program.
Sekarang navigasikan ke perangkat Anda yang terhubung
Selesai untuk penyiapan ARTIK Cloud. Setelah perangkat keras Anda siap, bagan akan memiliki data.
AKU AKU AKU. Pengaturan Sensor Perangkat Keras
Langkah 1. Hubungkan Sensor Suhu dan pH ke MKR1000.
Berikut diagramnya:
- Temperatur GND ke MRK1000 GND
- Temp OUT ke MKR1000 Digital pin 1
- Hubungkan resistor 4,7K ke Temp VCC dan Temp OUT
- pH GND hingga MRK1000 GND
- pH OUT ke MKR1000 pin Analog 1
Ini contoh kabel saya
Jika Anda perhatikan kami menambahkan Jack Audio untuk memudahkan pelepasan sensor suhu. Tapi ini opsional.
Berikut koneksi sensor suhu ke jack.
Langkah 2. Siapkan perangkat lunak yang diperlukan
Buka Arduino IDE dan tambahkan papan MKR1000.
Cari mkr1000 dan klik instal
Tambahkan perpustakaan yang diperlukan
Cari perpustakaan untuk dipasang:
- ArduinoJson - kami akan menggunakan ini untuk mengirim data JSON ke ARTIK Cloud
- ArduinoHttpClient - host untuk menghubungkan ke API
- OneWire - diperlukan untuk membaca input digital dari sensor Suhu
- DallasTemperature - Perpustakaan wajib sensor suhu Dallas
Selesai menambahkan perangkat lunak yang diperlukan!
Langkah 3. Unggah program
Sekarang pasang MKR1000 ke PC/Laptop Anda.
Unduh perangkat lunak di GitHub di sini
Ubah info berikut:
Kemudian Unggah Kode Perangkat Lunak ke MKR1000 dan mulai pemantauan.
Catatan:WiFi Anda harus memiliki koneksi internet.
IV. Uji Lapangan
Kami telah menguji hardware sensor ke Kolam Renang Swasta, Umum dan Sekolah. Mengumpulkan data dari kumpulan responden ini memungkinkan kami menganalisis kemampuan perangkat keras.
Anda dapat menempatkan MKR1000 dan sensor pada kotak dan meletakkannya di kolam renang Anda jauh dari kontaminasi air. Dengan melakukan ini, Anda dapat memantau kualitas air Anda dan menormalkannya dengan menempatkan bahan kimia yang diinginkan.
Segera kami akan mengunggah tutorial tentang cara meletakkan semua sirkuit di dalam kotak ini dan cuplikan pengujian yang sebenarnya.
V. Hasil
Semoga tutorial ini membantu orang membuat perangkat pemantauan kualitas air kolam renang DIY mereka sendiri. Semoga akan ada peningkatan kesadaran mengenai penurunan kualitas air kolam renang yang terus menerus karena orang cenderung lebih fokus pada fasilitas yang ditawarkan daripada memeriksa seberapa amannya. Mereka juga bermaksud untuk berkontribusi kepada masyarakat dengan menyediakan sarana untuk membuat pengujian kualitas air lebih efisien dan efektif tanpa mengorbankan sumber daya yang tidak perlu.
Selamat membangun! :)
Kode
Kode Arduino MKR1000C/C++
Unggah kode ini ke Arduino MKR1000 Anda
Kunjungi ini di GitHub> https://github.com/imjeffparedes/iot-water-quality-artik/*********************Ini Kode saya untuk Pemantauan Perangkat Kualitas Air diterbitkan di https://www.hackster.io/animo/water-quality-moniroting-840fea*********************/#include #include #include #include #include #include #include /**Sensor Suhu Inisialisasi**/#define ONE_WIRE_BUS 1 // Kabel data dicolokkan ke port digital 1 ArduinoOneWire oneWire(ONE_WIRE_BUS); // Siapkan instance oneWire untuk berkomunikasi dengan OneWire //perangkat (bukan hanya IC suhu Maxim/Dallas)Sensor suhu Dallas(&oneWire); // Berikan referensi oneWire kami ke Suhu Dallas. /** Inisialisasi ARTIK Cloud REST **/char server[] ="api.artik.cloud"; // Port Hostin Samsung ARTIK Cloud API =443; // 443 untuk HTTPS char buf[200]; // body data untuk menyimpan JSON untuk dikirim ke ARTIK cloud String deviceID ="artik cloud device id"; // letakkan id perangkat Anda di sini yang dibuat dari tutorial String deviceToken ="artik cloud device token"; // letakkan token perangkat Anda di sini yang dibuat dari tutorial/**inisialisasi pH meter**/#define SensorPin A1 // pH meter Output analog ke Arduino Analog Input 1#define Offset 0,00 // deviasi kompensasi#define samplingInterval 20#define ArrayLenth 40 // waktu pengumpulan di pHArray[ArrayLenth]; // Simpan nilai rata-rata dari umpan balik sensorint pHArrayIndex=0; int status =-1;int millis_start;/**Pengaturan Wifi**/#define WIFI_AP "ssid wifi Anda"#define WIFI_PWD "password wifi"WiFiSSLClient wifi; HttpClient client =HttpClient(wifi, server, port);void setup(void) { millis_start =millis(); Serial.begin(9600); mulaiWifi(); //mulai terhubung ke wifi}void loop(void) { /*Mendapatkan suhu saat ini*/ float celsius =0; sensor.requestTemperatures(); // Kirim perintah untuk mendapatkan suhu celsius =sensor.getTempCByIndex(0); sensor.requestTemperatures(); // Kirim perintah untuk mendapatkan suhu celsius =sensor.getTempCByIndex(0); /*Mendapatkan nilai pH saat ini*/ static unsigned long samplingWaktu =milis(); static unsigned long printTime =milis(); nilai pH float statis, tegangan; if(millis()-samplingTime> samplingInterval) { pHArray[pHARrayIndex++]=analogRead(SensorPin); if(pHARrayIndex==ArrayLenth)pHARrayIndex=0; tegangan =rata-rata(pHARray, ArrayLenth)*5.0/1024; pHNilai =3,5*tegangan+Offset; samplingWaktu=milis(); } Serial.println("===========================================" ); Serial.println("Data json ini akan kami kirimkan"); //cetak ke format json Serial.println("data:{ "); Serial.print("p:"); Serial.print(pHValue); Serial.print(" , suhu:"); Serial.print(celsius); Serial.println("} "); Serial.println(""); Serial.println("Mulai mengirim data"); String contentType ="aplikasi/json"; String AuthorizationData ="Pembawa" + deviceToken; //Device Token int len =loadBuffer(celsius,pHValue); Serial.println("Suhu pengiriman:"+String(celsius) +" dan ph:"+String(pHValue) ); Serial.println("Kirim POST ke ARTIK Cloud API"); klien.beginRequest(); client.post("/v1.1/pesan"); //, contentType, buf client.sendHeader("Authorization", AuthorizationData); client.sendHeader("Tipe-Konten", "aplikasi/json"); client.sendHeader("Panjang Konten", len); klien.endRequest(); klien.print(buf); // print respon dari api int statusCode =client.responseStatusCode(); String respon =client.responseBody(); Serial.println(""); Serial.print("Kode Status:"); Serial.println(Kode status); Serial.print("Jawaban:"); Serial.println(tanggapan); penundaan (1000); // delay of update }/*Init Connection ke Wifi*/void startWifi(){ Serial.println("Menghubungkan MKR1000 ke jaringan..."); // WiFi.mulai(); // mencoba menyambung ke jaringan Wifi:while ( status !=WL_CONNECTED ) { Serial.print("Mencoba menyambung ke SSID WPA:"); Serial.println(WIFI_AP); WiFi.begin(WIFI_AP, WIFI_PWD); // tunggu 10 detik untuk koneksi:delay(10000); status =WiFi.status(); }}/*DfRobot pH Meter Source*/double avergearray(int* arr, int number){ int i; int maks,min; rata-rata ganda; jumlah panjang =0; if(number<=0){ Serial.println("Nomor kesalahan untuk array rata-rata!/n"); kembali 0; } if(angka<5){ //kurang dari 5, dihitung langsung statistik untuk(i=0;imaks){ jumlah+=maks; //arr>maks maks=arr[i]; }else{ jumlah+=arr[i]; //min<=arr<=max } }//if }//for avg =(dua kali lipat)jumlah/(angka-2); }//if return avg;}/*Buffer untuk dikirim pada REST*/int loadBuffer(float temp, float ph ) { StaticJsonBuffer<200> jsonBuffer; // simpan tempat di memori JsonObject&root =jsonBuffer.createObject(); // buat objek root root["sdid"] =deviceID; root["tipe"] ="pesan"; JsonObject&dataPair =root.createNestedObject("data"); // membuat objek bersarang dataPair["temp"] =temp; dataPair["ph"] =ph; root.printTo(buf, sizeof(buf)); // JSON-print ke buffer kembali (root.measureLength()); // juga mengembalikan panjang }
Skema
Koneksi papan tempat memotong roti dari MKR1000 dan sensor