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

UnifiedWater v1

Komponen dan persediaan

Arduino MKR GSM 1400
× 1
Adafruit NeoPixel Ring:WS2812 5050 RGB LED
× 1
Suhu dan Kelembaban GY21
× 1
Sensor Kekeruhan, Output Fototransistor
× 1
Adafruit Waterproof DS18B20 Sensor suhu digital
× 1
DFRobot Gravity:Sensor pH / Kit Meter Ujung Tombak Analog
× 1
Sakelar Tombol Tekan SparkFun 12mm
× 1
Kabel jumper (generik)
× 1
Resistor 220 ohm
× 1

Alat dan mesin yang diperlukan

Besi solder (generik)

Aplikasi dan layanan online

Editor Web Arduino
Platform Konektivitas SORACOM Air IoT
SORACOM Harvest
Lagu SORACOM

Tentang proyek ini

Ikhtisar

sungai. Penting untuk kelangsungan hidup kita, perdagangan dan sebagainya. Upaya besar telah dilakukan dalam dekade terakhir untuk mengurangi polusi kita dari badan air dunia. Sungai adalah sumber pencemaran, karena orang tidak pergi ke laut untuk membuang sampah mereka. Mereka membuangnya ke sungai.

Sungai-sungai ini kemudian tumpah ke laut, samudera, dan sikat gigi yang pernah dibuang ke sungai menyebar ke seluruh dunia dan mendarat di sisi yang lain.

Di dunia yang berusaha memerangi polusi, data sangat penting. Seharusnya mudah bagi perusahaan dan bisnis untuk berkolaborasi dalam proyek global untuk mengurangi polusi air. Di sinilah UnifiedWater masuk.

Perangkat yang cukup murah dan terukur yang dapat dengan mudah mengumpulkan dan menganalisis data ini, sehingga perlu diketahui seberapa tercemar sungai. WaterAid hadir dalam 2 mode, satu yang cocok untuk perusahaan dan satu lagi untuk individu.

Beberapa perangkat dapat berfungsi bersama, ditempatkan pada titik yang berbeda di seberang sungai atau di badan air yang berbeda. Perangkat ini mengumpulkan data pada interval waktu pengiriman ke database yang sama. Ini memungkinkan bisnis untuk memeriksa status sungai atau danau yang dipantau dengan mengklik tombol.

Versi portabel perangkat juga tersedia. Dalam versi ini, individu dapat membawa perangkat dan ketika mereka ingin mengambil sampel air, mereka menekan tombol pada perangkat dan menempatkannya di dalam air selama 30 detik. Data tersebut kemudian akan tersedia di dasbor online.

Dengan mengumpulkan suhu, pH, dan kelembapan air serta suhu dan kelembapan atmosfer, WaterAid dilengkapi dengan semua sensor yang Anda perlukan untuk memantau pencemaran sungai.

Video

Gambar

Fungsionalitas

WaterAid memungkinkan pengguna, perusahaan atau individu untuk mengumpulkan data dengan aman dan akurat dan memvisualisasikan semua data ini di satu tempat berkat cloud Soracom. Proyek ini terdiri dari ujung depan dan ujung belakang.

Depan Akhir

Ujung depan proyek adalah perangkat fisik yang digunakan untuk mengumpulkan data dan mengirimkannya ke cloud. Perangkat dapat diatur ke mode 1 atau 2. Dalam mode 1, perangkat merekam sekumpulan data dengan menekan tombol, berguna untuk pemantauan sesekali badan air. Mode 2 menyetel perangkat untuk melakukan pembacaan pada interval waktu yang ditentukan dan mendorong data ini ke cloud.

GSM MKR digunakan untuk ujung depan karena mudah digunakan dan dapat diandalkan. Itu juga dapat mengakses Soracom melalui GSM. Berikut adalah langkah-langkah yang dilakukan perangkat saat mengumpulkan data.

Baterai

Perangkat dapat diaktifkan melalui berbagai cara. Ini dapat ditenagai oleh baterai LiPo melalui port yang disediakan pada perangkat, oleh bank daya, atau dengan menghubungkan baterai melalui port VIN pada perangkat.

Masa pakai perangkat sangat bergantung pada kekuatan baterai. Perangkat beralih ke mode tidur di antara pembacaan untuk menghemat energi sebanyak mungkin.

LED Cincin

Perangkat ini juga dilengkapi dengan cincin LED. Ini memberi pengguna umpan balik tentang apa yang dilakukan perangkat saat ini. Ada 3 mode yang dapat digunakan oleh cincin tersebut.

  • Beraneka Warna menunjukkan bahwa perangkat sedang menyiapkan atau sedang memproses data
  • Merah Berkedip peringatan, biasanya berarti perangkat harus dimasukkan ke dalam air meskipun itu juga bisa menunjukkan kesalahan
  • Maju Biru atau Hijau menunjukkan bahwa perangkat sedang mengambil sampel dan harus dimasukkan ke dalam air.

Mengambil Sampel

Semua sensor perangkat harus ditempatkan di dalam air saat perangkat mengambil sampel. Penundaan 6 detik ditempatkan sebelum sampel diambil untuk menghangatkan sensor. Untuk hasil terbaik, sensor harus terendam saat pemanasan berlangsung.

Mengurai Data

Data harus dikirim ke Soracom dalam bentuk string JSON. Ini memberikan semua kunci yang digunakan nilai. Data kemudian akan mudah diinterpretasikan oleh backend. Di bawah ini adalah contoh payload yang akan dikirim.

{ 
"Lintang":53.3474617,
"Bujur":-6.2514529,
"waterpH":7.30,
"waterTurbidity":94,
"waterTemp":12.10,
"atmoTemp":14.50,
"atmoHum":82,
"deviceID":1,
"deviceName":"device1",
"epoch":1559392636,
"mode":2
}

Yang Latar Belakang

Bagian belakang proyek mengacu pada Soracom. Data dikumpulkan dan divisualisasikan di backend di dasbor. Dasbor ini dibuat menggunakan Soracom Lagoon.

Dasbor

Dasbor merangkum semua data yang dikumpulkan dari perangkat. Ini memplot data tempat dikumpulkan dari pada peta, warnanya bervariasi sesuai dengan seberapa tercemar airnya. Data tersebut kemudian dibuat grafik pada grafik garis di bawahnya dan kemudian dijumlahkan seluruhnya dalam sebuah tabel.

Pengguna juga akan mendapatkan peringatan melalui email jika nilai pH atau kekeruhan air tidak normal. Di bawah ini adalah beberapa tangkapan layar dasbor.

Skalabilitas

Perangkat dapat dengan mudah diskalakan dan semua data dapat dikumpulkan dan diilustrasikan pada dasbor yang sama. Beberapa perangkat dapat mengalirkan data ke Soracom dan menampilkan data di dasbor.

Harga perangkat dan kemudahan yang luar biasa untuk membangun dan memprogramnya memudahkan armada perangkat untuk digunakan. Perangkat ini juga dapat dengan mudah didaftarkan ke Soracom menggunakan alat seperti Soracom Krypton.

Setiap perusahaan atau individu akan memiliki dasbor yang dipersonalisasi di mana data yang dikumpulkan oleh perangkat mereka akan divisualisasikan. Mudah-mudahan, orang-orang dapat berkolaborasi di dasbor yang sama dan berbagi data satu sama lain dalam waktu dekat.

Manfaat

Individu atau perusahaan yang menggunakan produk ini akan mendapatkan keuntungan dalam:

  • Mengurangi biaya operasional karena perangkat ini sangat mandiri.
  • Dapat diskalakan dengan mudah, perangkat dapat dengan mudah bekerja sendiri atau dalam puluhan armada lainnya.
  • Pengumpulan data yang cepat memungkinkan data dikirim ke cloud dan divisualisasikan secara real time.
  • Visualisasi yang mudah, data dapat divisualisasikan di mana saja dan kapan saja menggunakan dasbor online.

Membangun Proyek

Langkah 1:Aparat yang Diperlukan

Proyek ini membutuhkan banyak sensor yang akan memantau banyak parameter yang terkait dengan air dan atmosfer yang ditempatkan. Di bawah ini adalah daftar semua bahan yang dibutuhkan.

  • 1, Arduino MKR GSM
  • 1, 16 LED cincin LED RGB
  • 1, modul suhu dan kelembaban GY-21
  • 1, Sensor kekeruhan
  • 1, Sensor suhu tahan air
  • 1, sensor dan modul pH
  • 1, tombol tekan
  • 1, Resistor (220Ω)
  • Kabel Jumper

Langkah 2:Menghubungkan Sirkuit

Komponen harus disolder bersama. Untuk memudahkan pemahaman skema, papan tempat memotong roti telah digunakan. skemanya ada di bawah.

Menyiapkan MKR GSM

Setelah sensor disolder ke perangkat, kartu SIM, antena GSM, dan baterai harus dipasang ke perangkat. Saya menyalakan papan dengan 2 baterai AA melalui port VIN. Langkah-langkahnya ada di bawah.

Langkah 3:Mengenali Kode

Ada 4 bagian utama dalam kode proyek.

  • Kumpulkan Data Sensor
  • Dapatkan waktu dan tanggal
  • Proses Data
  • Kirim Data

Semua bagian ini dijelaskan dan dirinci di bawah ini.

Kumpulkan Data Sensor

Serial.println("Mengambil Sampel");
Serial.println("____________________________");
Serial.println("Mengambil Sampel");
Serial.println (" OK - Pemanasan");
delay(6000); // penundaan untuk kalibrasi sensor
colorLED(50);
Serial.println(" OK - Pengambilan Sampel");
Serial.print(" ");
for (int i =0; i <16; i++)
{
if (mode ==1)
{
strip.setPixelColor(i, strip.Color(0, 255, 0 ));
strip.show();
}
else
{
strip.setPixelColor(i, strip.Color(0, 0, 255));
strip.show();
}
// akan mengambil beberapa sampel air - sensor tidak begitu tepat
waterTurbidity +=getWaterTurbidity();
waterPh +=getWaterPh();
if (i> 14)
{
// ambil satu sampel untuk sensor presisi tinggi
waterTemperature =getWaterTemp();
atmoTemperature =getAtmoTemp ();
atmoHumidity =getAtmoHumidity();
}
Serial.print(".");
delay(500);
}
Serial .println("");
Serial.println(" Berhasil - Sampel Diambil");
for (int i =0; i <=16; i++)
{
strip.setPixelColor(i, strip.Color(0, 0, 0));
strip.show();
delay(30);
}
Serial.println("____________________________");
Serial.println("");
delay(500);

Bagian kode di atas dimulai dengan menunggu 6 detik hingga sensor mengkalibrasi di dalam air. Perangkat kemudian berputar 16 kali, LED baru akan menyalakan dering setiap putaran.

Data dari sensor yang memiliki nilai fluktuatif dikumpulkan sebanyak 16 kali dan kemudian dicari rata-ratanya. Sensor presisi tinggi dibaca pada loop terakhir.

Dapatkan Waktu dan Tanggal

void getCredentials()
{
Serial.println(" [1/2] Time");
Serial.println(" OK - Mendapatkan Waktu dari RTC");
currentEpoch =processTime();
colorLED(50);
Serial.println(" [2/2] Geolocation");
Serial.println(" OK - Mendapatkan Geolokasi dari GPRS");
while (!getLocation());
Serial.print(" Berhasil - Geolokasi adalah "); Serial.print(lintang, 7); Serial.print(", "); Serial.println(bujur, 7);
colorLED(50);
}

bool getLocation()
{
if (location.available( ))
{
latitude =location.latitude();
longitude =location.longitude();
delay(500);
return true;
}
else
{
delay(500);
return false;
}
}

Loop pertama menangani kredensial. Waktu diekstraksi dari RTC onboard saat disinkronkan ke jaringan GSM dalam pengaturan. Geolokasi diambil dari GPRS.

Proses Data

void processData()
{
Serial.println(" OK - Mendapatkan Rata-rata pH dan Kekeruhan Air");
waterPh =(waterPh / 16);
waterTurbidity =(waterTurbidity / 16);
Serial.println(" OK - Membuang Data ke Serial");
Serial.println("");
Serial.print(" [ Air] pH "); Serial.println(waterPh);
Serial.print(" [Air] Kekeruhan "); Serial.println(Kekeruhan air);
Serial.print("Suhu [Air]"); Serial.println(Suhu air);
Serial.print("Suhu [Atmo] "); Serial.println(atmoTemperature);
Serial.print("[Atmo] Kelembaban "); Serial.println(atmoHumidity);
Serial.println("");
Serial.println(" Berhasil - Data Diproses");
colourLED(50);
}

String makeLine()
{
Serial.println(" OK - Membuat String");
String dataReturned; dataDikembalikan +="{"; dataReturned +=" \n";
dataReturned +="\"Lintang\":" + String(lintang, 7); dataReturned +=", \n";
dataReturned +="\"Bujur\":" + String(bujur, 7); dataReturned +=", \n";
dataReturned +="\"waterpH\":" + String(waterPh); dataReturned +=", \n";
dataReturned +="\"waterTurbidity\":" + String(waterTurbidity); dataReturned +=", \n";
dataReturned +="\"waterTemp\":" + String(waterTemperature); dataReturned +=", \n";
dataReturned +="\"atmoTemp\":" + String(atmoTemperature); dataReturned +=", \n";
dataReturned +="\"atmoHum\":" + String(atmoHumidity); dataReturned +=", \n";
dataReturned +="\"deviceID\":" + String(deviceID); dataReturned +=", \n";
dataReturned +="\"deviceName\":"; dataReturned +=String("\""); dataReturned +=String(DeviceName); dataReturned +=String("\""); dataReturned +=", \n";
dataReturned +="\"Epoch\":" + String(currentEpoch); dataReturned +=", \n";
dataReturned +="\"mode\":" + String(mode); dataReturned +=" \n";
dataReturned +="}";
Serial.println(" OK - Data ada di bawah");
Serial.println("");
Serial.println(dataReturned);
Serial.println("");
Serial.println(" Berhasil - String Siap");
colourLED(50);
mengembalikan dataDikembalikan;
}

processData() mendapatkan rata-rata data yang dikumpulkan dari sensor yang cenderung berfluktuasi dan kemudian membuang semua data ke Serial Monitor.

makeLine() mengkompilasi semua data ke dalam string JSON yang dikirim ke Soracom. Semua nilai diurai menjadi buffer JSON yang siap dikirim ke backend.

Kirim Data

void parseData(String dataToSend)
{
Serial.println(" OK - Menyiapkan Koneksi");
if(client.connect(url, 80))
{
Serial.println(" OK - Koneksi Dibuat, Parsing Data");
client.println("POST / HTTP/1.1");
client.println("Host :harvest.soracom.io");
client.println("User-Agent:Arduino/1.0");
client.println("Connection:close");
client.print ("Panjang Konten:");
client.println(dataToSend.length());
client.println("");
client.println(dataToSend);
Serial.println(" OK - Data Diurai");
}
Serial.println(" OK - Mendapatkan Respon");
Serial.println("");
while(1)
{
if(client.available())
{
char c =client.read();
Serial.print(c);
}
if(!client.connected())
{
break;
}
}
Serial.println(" Berhasil - Data Diurai");
}

Akhirnya, data dikirim ke Soracom. Perangkat membuat koneksi dengan server dan kemudian menyiapkan kredensial. Data tersebut kemudian dikirim ke server dan tanggapannya dicetak ke Serial Monitor.

Perangkat kemudian tidur sampai pemicu membangunkannya dengan mengulangi langkah-langkah tersebut lagi.

Langkah 4:Menyiapkan Variabel

Ada variabel tertentu yang harus diedit sebelum proyek dapat digunakan. Ini tercantum di bawah ini. Petunjuk untuk menyiapkannya juga ada di bawah.

  • modus mode perangkat menentukan apakah itu mengambil sampel secara berkala atau jika mengambil sampel dengan menekan tombol. Jika variabel ini disetel ke 1, perangkat perlu ditindaklanjuti melalui tombol. Jika mode disetel ke 2, perangkat akan mengambil sampel secara berkala.
  • ID perangkat dan Nama Perangkat ini adalah variabel khusus yang digunakan untuk mengidentifikasi perangkat jika armada perangkat sedang digunakan. Setiap perangkat yang digunakan harus diberi ID dan Nama unik agar dapat dengan mudah diidentifikasi.
  • waktu tidur menyimpan jumlah waktu tidur perangkat di antara pembacaan, itu diatur ke 5 detik dalam kode yang sesuai untuk pengujian tetapi harus diubah saat menggunakannya di lapangan. Sampel dapat diambil dengan interval 15 menit.
  • proDebug digunakan saat debugging, itu disetel ke false dalam kode tetapi jika monitor serial diperlukan saat debugging, itu harus disetel ke true. Perhatikan bahwa perangkat akan tetap mencetak ke serial meskipun debug dimatikan. Jika debug aktif, perangkat tidak akan berjalan kecuali monitor serial menyala.

Langkah 5:Mengunggah Kode

Sebelum menyiapkan backend, data harus dikirim ke sana.

Untuk melakukan ini, sambungkan MKR GSM Anda ke komputer Anda dan unggah kode ke perangkat, pastikan mode perangkat diatur ke 1 untuk pengaturan ini. Setelah kode diunggah, letakkan semua sensor di dalam air.

Sekarang tekan tombol pada perangkat dan tunggu data dikumpulkan dan dikirim. Ulangi ini beberapa kali untuk mengisi Soracom Air.

Langkah 6:Menyiapkan Soracom

Langkah ini dibagi menjadi 2 bagian, yang pertama akan mencakup pembuatan akun dengan Soracom dan mendaftarkan SIM Anda sementara yang lain akan mencakup pengaturan Soracom Harvest untuk mengumpulkan data dari Air. Jika Anda sudah memiliki akun di Soracom, lewati bagian pertama.

Bagian 1:Membuat Akun

Bagian 2:Kelompok dan Panen

Langkah 7:Menyiapkan Laguna

Hal terakhir yang harus disiapkan di Soracom adalah Lagoon, ini adalah alat yang akan kita gunakan untuk memvisualisasikan data kita dan membuat peringatan email jika datanya tidak bagus. Ikuti langkah-langkah di bawah ini.

Calibration Problems

The turbidity and pH sensors have to be calibrated to be used precisely, you might find that when running the code, the turbidity might by 105% or the pH of water 3. In this case, the sensors have to be calibrated. A quick guide into calibrating them is below.

  • pH Sensor The pH sensor can be calibrated using the potentiometers on the module, place the probe in still bottled water of pH 7 and wait for 5 minutes, now develop a code that prints the pH from the sensor to the serial monitor. Twist the potentiometer until the pH is 7.
  • Turbidity Sensor The turbidity sensor is not very precise and so a relative percentage, compared to pure water is taken. To refine the value of pure water, if your readings exceed 100% turbidity, you will need to place the turbidity sensor in pure water and develop a code that prints the voltage on the analog pin of the pH sensor to the serial monitor. A variable named calibration is found in sensors.h , change the value of that variable to the voltage received when the probe was placed in pure water.

Libraries

  • ArduinoLowPower (c) 2016 Arduino LLC GNU Lesser General Public Licence this library is in the public domain
  • Adafruit_Neopixel (c) Phil Burges Lesser General Public Licence this library is in the public domain
  • MKRGSM (c) 2016 Arduino AG GNU Lesser General Public Licence this library is in the public domain
  • Wire (c) 2006 Nicholas Zambetti GNU Lesser General Public Licence this library is in the public domain
  • OneWire (c) 2007 Jim Studt GNU General Public Licence this library is in the public domain
  • DallasTemperature GNU General Public Licence this library is in the public domain
  • RTCZero (c) 2015 Arduino LLC GNU Lesser General Public Licence this library is in the public domain

Final

Finally, I got an enclosure done for the project that could be easily portable but be fixed to collect samples both in mode 1 and 2. Steps are below.

Finally, ensure that the mode is set accordingly and start using the device on the field. Check out your local river or lake and see how clean it is. Play around with the dashboard and see what other widgets it has.

Background

Today, data is the new currency and collecting it easily and efficiently is key to a better environment. By measuring the pollution of rivers and lakes collectively, we can raise awareness that the waters are getting dirtier and something has to be done.

I was thinking of an idea for the Soracom contest and I felt like I had to make something beneficial for the environment, the idea of people and companies working together on collective dashboards to visualise the status of rivers and lakes globally inspired me to take this project on.

What will you do to stop water pollution? Because action has to be taken today, and tomorrow is a day too late.


Kode

Code
The repo for the projecthttps://github.com/Andrei-Florian/UnifiedWater-v1

Skema

schematics_e7TRP6KJKI.fzz

Proses manufaktur

  1. Apa itu Sensor O2?
  2. Sensor Gerak menggunakan Raspberry Pi
  3. Sensor Kelembaban Tanah Raspberry Pi
  4. Uji sensor DS18B20
  5. Sensor Suhu Raspberry Pi
  6. Sensor Telemetri 2.0.1
  7. Sensor Emosi / EEG
  8. Windows 10 IoT Core pada Raspberry Pi 2 – Data Adafruit Sensor
  9. MyRiver
  10. Arduino Cloud Sensor Tower