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

MyRiver

Komponen dan persediaan

Arduino MKR1000
× 1
Sensor Ketinggian Air
× 1
Sensor Ph
× 1
LED (generik)
Putih jika Mungkin
× 1
Resistor 221 ohm
× 2
Resistor foto
× 1
Kabel jumper (generik)
× 1

Alat dan mesin yang diperlukan

Besi solder (generik)
Hacksaw

Aplikasi dan layanan online

Editor Web Arduino
Sigfox
Wia

Tentang proyek ini

Ikhtisar

Sungai atau danau bisa menjadi sumber kesenangan dan relaksasi. Tetapi jika sungai menjadi kotor dan tercemar, semua kesenangan itu hilang. Banyak orang bergantung pada air sungai untuk memberi makan ternak mereka dan tidak mampu memberikan air kotor kepada hewan mereka.

Bayangkan tinggal di sebelah sungai (jika tidak), Anda tidak ingin bangun di tengah malam dengan rumah Anda kebanjiran karena sungai. Atau bagaimana jika tetangga Anda memutuskan untuk membuang bensin ke sungai, Anda tidak ingin hewan Anda sakit.

MyRiver memecahkan semua masalah itu, ia dapat beroperasi di daerah terpencil berkat Sigfox sehingga setiap orang memiliki akses ke perangkat. Perangkat akan membaca pH air, tingkat polusinya menggunakan metode inovatif, dan ketinggian airnya. Anda akan dapat memantau sungai secara langsung di ponsel atau komputer Anda di mana saja berkat Wia. Dengan cara ini Anda dapat mengetahui jika ada masalah dengan aliran dan memungkinkan Anda untuk bertindak sebelum terlambat. Ini akan segera memberi tahu Anda jika ada masalah dengan sungai.

Video

Gambar

Fungsionalitas

Perangkat ini didasarkan pada Arduino MKR FOX, dirancang untuk penggunaan jarak jauh, pengguna dapat menempatkan perangkat di sungai atau danau dan memantaunya dari mana saja. Berkat mode daya rendah SAM D, perangkat dapat bekerja untuk waktu yang lama dengan baterai 2AA.

Perangkat membaca setiap 30 menit, tidur setelahnya, periode tidur dapat diatur ulang, meskipun waktu tidur minimum harus 20 menit.

MKR FOX membaca pH sungai menggunakan sensor pH, juga mendapatkan ketinggian airnya, menggunakan sensor ketinggian air, dan mendeteksi jika tercemar oleh zat yang tidak larut dengan menyinari LED pada fotoresistor, jika pembacaan fotoresistor adalah rendah, itu berarti ada zat padat (minyak, bensin, merkuri, dll.) di sungai. Perangkat kemudian mengirimkan semua data ke Sigfox, di mana data tersebut diteruskan ke Wia, diproses dan divisualisasikan. Pengguna diberitahu tentang keadaan sungai. Di bawah ini adalah gambar ikhtisar fungsionalitas.

Buffer akan dikirim ke Sigfox dikodekan sebagai HEX, Sigfox akan menyampaikan data ke Wia, data kemudian akan melewati aliran, data akan diubah kembali menjadi string dan kemudian menjadi nilai sensor. Nilai tersebut kemudian akan diproses dan pengguna akan diberi tahu jika nilainya di luar batas.

Di bawah ini adalah gambar lain yang mengilustrasikan ikhtisar kode proyek, yang dijelaskan di bawah ini.

  • Baca Sensor akan membaca nilai pH, ketinggian air, dan sensor fotoresistor dan menyimpannya dalam variabel.
  • Format Buffer akan menggabungkan semua nilai menjadi buffer 12 Byte yang dapat dikirim ke Sigfox.
  • Mengurai Data akan mengurai buffer ke Sigfox.

MKR FOX hanya dapat mengirim 12 byte melalui Sigfox, ini berarti bahwa semua nilai sensor harus digabungkan menjadi 12 byte, nilai mentah maksimum setiap sensor adalah 1024 (karena semuanya analog), jadi setiap sensor mewakili sepertiga dari penyangga (4 byte). Arduino harus menggabungkan nilai-nilai dan menambahkan nol ke awal setiap nilai hingga nilainya memiliki 4 byte. Gambar di bawah mengilustrasikan proses ini.

Arduino menerima nilai sensor sebagai bilangan bulat, kemudian mengubah bilangan bulat menjadi string dan menambahkan nol ke awal setiap nilai hingga memiliki 4 byte, misalnya, jika nilai fotoresistor adalah 620, satu nol akan ditambahkan, 0 620. Tetapi jika sensor ketinggian air sama dengan 24, dua angka nol ditambahkan, 00 24. Perangkat kemudian menggabungkan nilai-nilai tersebut menjadi buffer 12 byte dan mengirimkan data ke SigFox.

Perangkat Beraksi

Di bawah ini adalah sejumlah foto yang menampilkan fungsionalitas proyek, untuk tampilan yang lebih baik, lihat video di atas.

Manfaat

Yang pengguna beroperasi ini proyek akan manfaat di:

  • Memantau ketinggian air sungai, ph, dan tingkat polusi dengan mudah dari mana saja dan kapan saja
  • Menerima pemberitahuan jika sungai tercemar oleh zat terlarut atau tidak larut atau banjir
  • Kemudahan penggunaan dan pemasangan
  • Berfungsi di negara mana pun yang dilindungi oleh Sigfox

Membangun Proyek

Langkah 1:Aparat yang Diperlukan

Proyek ini membutuhkan semua komponen untuk disolder bersama, tidak banyak hal selain sensor. Daftar bahan dicatat di bawah ini.

  • 1, Arduino MKR FOX 1200
  • 1, Sensor pH
  • 1, Sensor Ketinggian Air
  • 1, Fotoresistor
  • 1, LED Putih
  • 2, Resistor (220Ω)
  • Kabel Jumper

Langkah 2:Menghubungkan Sirkuit

Diagram sirkuit proyek dapat sedikit membingungkan karena komponen tidak ditempatkan pada papan tempat memotong roti, jika Anda mengalami kesulitan dengan itu, coba unduh file Fritzing di bawah dan pindahkan kabel di komputer Anda.

  • Ikhtisar Sirkuit

Gambar di bawah ini akan mengilustrasikan bagaimana rangkaian akan terlihat saat selesai.

  • Mempersiapkan yang MKR FOX

Gambar di bawah ini akan memandu Anda menghubungkan kotak baterai dan antena ke MKR FOX. Perhatikan bahwa kotak baterai harus terhubung setelah sensor terhubung. Pengkabelan dan pengaturan lainnya dapat ditemukan di bawah membuat proyek / Final.

Langkah 3:Mengenali Kode

Ada 3 bagian utama dari kode:

  • Membaca Sensor
  • Format Penyangga
  • Mengurai Data

Bagian ini dijelaskan di bawah.

  • Membaca Sensor
struct GetValue // membuat Struktur untuk memudahkan perulangan{ int riverLevel() // mendapatkan level sungai { const int val =analogRead(A2); if(proDebug) { Serial.print("Level Sungai"); Serial.println(val); } nilai kembali; } int riverPh() // dapatkan ph sungai { const int val =(analogRead(A1) / 5 * 3.3); if(proDebug) { Serial.print(" Ph Sungai "); Serial.println(val); } nilai kembali; } int riverPol() // mendapatkan tingkat pencemaran sungai { const int val =analogRead(A3); if(proDebug) { Serial.print("Pencemaran Sungai"); Serial.println(val); } nilai kembali; }}; 

Struktur di atas berisi loop yang membaca setiap nilai sensor, ada loop terpisah untuk setiap nilai.

  • Format Buffer
Data string(int level, int ph, int pol) // menggabungkan nilai sensor ke dalam buffer { nilai int[3] ={level, ph, pol}; String nilai baru; for(int i =0; i <3; i++) // akan menjalankan semua nilai, menambahkan 0 ke awal { if(values[i] <10) { newValues ​​+="000"; Serial.println("Opsi 1"); } else if(nilai[i] <100) { nilai baru +="00"; Serial.println("Opsi 2"); } else if(nilai[i] <1000) { nilai baru +="0"; Serial.println("Opsi 3"); } kalau tidak {}; newValues ​​+=nilai[i]; Serial.print("Jalankan"); Serial.print(i); Serial.print("/3"); Serial.println(Nilai baru); } mengembalikan newValues; }  

Loop di atas memasukkan 3 nilai sensor dan kemudian menempatkannya ke dalam array. Kemudian loop melalui setiap nilai, menambahkan nol ke awal setiap nilai hingga nilainya berukuran 4 byte, kemudian menambahkan setiap nilai ke string yang kemudian dikembalikan.

  • Mengurai Data
void parseData(Data string) // kirim buffer ke SigFox { SigFox.beginPacket(); SigFox.print(data); int ret =SigFox.endPacket(); } 

Bagian ini mengambil string untuk diurai dan kemudian mengirimkan nilainya ke Sigfox.

Langkah 4:Menyiapkan Integrasi Wia Sigfox

Langkah ini akan menggambarkan cara mengatur Wia untuk menerima pesan dari Sigfox, Wia adalah platform IoT profesional yang memungkinkan pengguna untuk memvisualisasikan data menggunakan widget di web atau di aplikasi seluler, juga memungkinkan pengguna untuk membuat kode blok yang disebut aliran, yang memungkinkan pengguna untuk memproses data. Data diwakili oleh suatu peristiwa.

Untuk memulai, pastikan Anda memiliki akun Sigfox dan akun Wia. Unduh juga aplikasi Wia di iOS atau Android untuk memungkinkan Anda menerima notifikasi. Gambar di bawah ini akan mengilustrasikan menghubungkan Sigfox dan Wia.

  • Setel Jenis ke Data Uplink
  • Setel Saluran ke URL
  • Tidak perlu mengisi Konfigurasi Payload Kustom
  • Setel URL Pola ke "https://api.wia.io/v1/events"
  • Setel Metode HTTP ke POST
  • Buat header dengan nama Otorisasi dengan nilai Pembawa (nilai ini akan diedit nanti)
  • Setel Jenis Konten ke application/json
  • Salin kode dari tautan ini ke badan webhook.
  • Terakhir, klik OK dan selesai.

Langkah 5:Menyiapkan Aliran Wia

Bagian ini akan memakan waktu sedikit lebih lama untuk diselesaikan, aliran akan mengubah data yang diterima dari HEX menjadi String, kemudian akan mengurai string menjadi 3 nilai sensor dan kemudian mengubahnya menjadi bilangan bulat, kemudian akan mengubah nilai pencemaran sungai dan tingkat sungai ke deskriptor Tinggi atau Ok dan nilai ph mentah ke nilai ph aktual, kemudian akan memberi tahu pengguna jika nilainya di luar batas.

Panduan di bawah ini akan mengilustrasikan proses ini selangkah demi selangkah. Anda akan diinstruksikan untuk memasukkan potongan kode tertentu di Wia Functions, potongan kode ini disisipkan di bawah, cukup salin dan tempel kode tersebut ke dalam fungsi. Data yang akan disertakan dalam email juga disisipkan di bawah, bekerja dengannya seperti dengan fungsinya.

Fungsi Wia

  • prosesPayload
if(input.body){ output.body.name ="nilai"; output.body.data =toByteArrayStr(input.body.data.sigfoxData);}fungsi toByteArrayStr(sigfoxData){ biarkan hasil =Buffer(sigfoxData, 'hex'); kembalikan result.toString('utf8');} 
  • prosesPencemaran
if(input.body.data){ biarkan data =input.body.data; if(data =="POLLUTED") { output.body.name ="waterLevel"; output.body.data =data; } lain { sementara(1); }} 
  • prosesPh
biarkan minVal =6.5;biarkan maxVal =8.5;if(input.body.data){ let data =input.body.data; if(data> maxVal || data  
  • tingkat proses
if(input.body.data){ biarkan data =input.body.data; if(data =="TINGGI") { output.body.name ="waterLevel"; output.body.data =data; } lain { sementara(1); }} 
  • polusi sungai
biarkan minVal =200;biarkan maxVal =0;if(input.body.data.sigfoxData){ biarkan data =input.body.data.sigfoxData; biarkan diprosesData =toByteArrayStr(data); biarkan newData =cutString(processedData); output.body.name ="airPolusi"; output.body.data =processData(newData);}fungsi toByteArrayStr(sigfoxData){ biarkan hasil =Buffer(sigfoxData, 'hex'); return result.toString('utf8');}fungsi cutString(data){ biarkan newVal =data[8]; newVal +=data[9]; newVal +=data[10]; newVal +=data[11]; biarkan finalVal =parseInt(newVal); return finalVal;}function processData(data){ if(data  
  • riverPh
biarkan minVal =300;biarkan maxVal =600;if(input.body.data.sigfoxData){ biarkan data =input.body.data.sigfoxData; biarkan diprosesData =toByteArrayStr(data); biarkan newData =cutString(processedData); biarkan finalVal =(data baru / 73.1428571); biarkan nilaiToSend =finalVal.toFixed(2); output.body.name ="waterPh"; output.body.data =valueToSend;}fungsi toByteArrayStr(sigfoxData){ biarkan hasil =Buffer(sigfoxData, 'hex'); return result.toString('utf8');}fungsi cutString(data){ biarkan newVal =data[4]; newVal +=data[5]; newVal +=data[6]; newVal +=data[7]; biarkan finalVal =parseInt(newVal); kembalikan newVal;} 
  • Level sungai
biarkan minVal =0;biarkan maxVal =200;if(input.body.data.sigfoxData){ biarkan data =input.body.data.sigfoxData; biarkan diprosesData =toByteArrayStr(data); biarkan newData =cutString(processedData); output.body.name ="tingkat air"; output.body.data =processData(newData);}fungsi cutString(data){ biarkan newVal =data[0]; newVal +=data[1]; newVal +=data[2]; newVal +=data[3]; biarkan finalVal =parseInt(newVal); return finalVal;}fungsi toByteArrayStr(sigfoxData){ biarkan hasil =Buffer(sigfoxData, 'hex'); return result.toString('utf8');}function processData(data){ if(data> maxVal) { mengembalikan "TINGGI"; } else { kembalikan "Oke"; }} 

Email Wia

  • riverPollutionEmail
Automatic Messaging SystemDataWarning - perangkat myWater ${trigger.source.device.id} mendeteksi masalah di aliran.Peringatan - Air Tercemar oleh Zat yang Tidak Dapat Dilarutkan.InformationDevice ${trigger.source.device.id}Mentah Data ${input.body.data} 
  • riverPhEmail
Sistem Perpesanan OtomatisDataWarning - perangkat myWater ${trigger.source.device.id} mendeteksi masalah di aliran.Peringatan - Ph Air Tidak Sesuai. Air Terkontaminasi.InformationDevice ${trigger.source.device.id}Data Mentah ${input.body.data} 
  • riverLevelEmail
Automatic Messaging SystemDataWarning - perangkat myWater ${trigger.source.device.id} mendeteksi masalah di aliran.Peringatan - Ketinggian air terlalu Tinggi, Sungai mungkin banjir.InformationDevice ${trigger.source.device .id}Data Mentah ${input.body.data} 

Menyiapkan Variabel

Saat data diterima Wia harus diproses, jika data berada di antara nilai minimum dan maksimum, nilai aman, batas sensor pH dan ketinggian air telah diatur, tetapi pengguna harus mengatur fotoresistor secara manual. batas, tes harus dilakukan untuk menentukan nilai ini, langkah-langkah di bawah ini akan menginstruksikan Anda bagaimana melakukannya.

pengaturan batal(){ pinMode(1, OUTPUT); Serial.begin(9600); while(!Serial) {}; digitalWrite(1, HIGH);} void loop(){ const int val =analogRead(A3); Serial.println(val); delay(5000);} 

Ada variabel lain yang harus disetel pengguna, proDebug , jika diaktifkan, Arduino membutuhkan koneksi melalui USB ke komputer dan Serial Monitor harus terbuka, Arduino mencetak ke Serial Monitor dalam mode ini, sangat ideal untuk pemecahan masalah. proDebug default ke false untuk beroperasi di lapangan.

Perpustakaan

  • Sigfox - hak cipta (c) 2016 Arduino LLC GNU Lisensi Publik Umum Lebih Rendah perpustakaan ini berada dalam domain publik
  • ArduinoLowPower (c) 2016 Arduino LLC GNU Lisensi Publik Umum Lebih Rendah perpustakaan ini berada dalam domain publik

Akhir

Langkah terakhir adalah menghubungkan Arduino Anda ke PC / Mac dan mengunggah sketsa, pastikan kotak baterai terhubung ke Arduino dan sirkuitnya baik-baik saja. Langkah selanjutnya akan memandu Anda dalam membuat enklosur untuk proyek.

Saya telah memutuskan untuk membuat kandang saya dari sebotol air, saya pikir ini adalah cara yang bagus dan ekologis untuk merangkul proyek. Perangkat terlihat seperti gambar di bawah.

Jika Anda menyukai ide enklosur, Anda dapat menelusuri gambar di bawah ini, yang mengilustrasikan bagaimana enklosur dibuat, jangan ragu untuk membuatnya sendiri.

The last thing to do is place the device in the river. To do this, go to the river you wish to implement MyRiver on during High Tide , this is essential to ensure that the device is not alerting that the river is flooding when it is actually just the tide.

Place some tape on the top of the water bottle to prevent water from seeping into the bottle and destroying everything.

We went to a local, dirty river to test the project out, all the alarms went off correctly.

When placing the probe in the water, ensure that the water is at the bottom of the water level sensor but is covering the photoresistor entirely. Secure the project to the shore using tape or a hammer and screws, and it should look like this (or better).

Background

Relaxing in your house, looking out the window at the once beautiful and delightful river rushing in front of you. But instead of the beautiful fresh river, you see a green slimy one, you might want to move house in that case.

And if the river decides to flood into your house in the middle of the night while you are sleeping, you will certainly decide to move.

I thought of these problems and how to solve them all in one device, and I came up with MyRiver.

If you are in the city and living beside a river, it will warn you in time if the river decides to ruin your day in any way or if your neighbour is dumping oil in the river. Or if you are on a farm, MyRiver will warn you that the river is dirty before you give the water to your animals, and will give you time to bring the animals in before the river floods.

But just reading the pH of the river was not enough, as insoluble substances like mercury or other metals do not effect the Ph of the water. So we came up with a new method to detect those substances, unique to this project, a photoresistor reading the amount of light from an LED penetrating the water. This way any water impurity can be detected.

Kode

MyRiver
The Full Code

Skema

schematics_lXO5SiusZO.fzz

Proses manufaktur

  1. Apa itu Sensor O2?
  2. Sensor Suhu Raspberry Pi
  3. Sensor Emosi / EEG
  4. Perangkat Pengukur Aliran Udara Tekanan dengan Sensor Analog
  5. Sensor DHT11 dengan LED dan Speaker Piezo
  6. UnifiedWater v1
  7. Arduclock RGB 3D
  8. Sensor Kendala Sederhana dengan Arduino
  9. Game Joystick
  10. Temukan Saya