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

SmartAgro

Komponen dan persediaan

Arduino MKR GSM 1400
× 1
SORACOM Air Global IoT SIM
× 1
Arduino MKR MEM Shield
× 1
Suhu dan Kelembaban GY21
× 1
Sensor Sinar UV SI1145 Adafruit
× 1
Sensor Kelembaban Tanah SparkFun (dengan Terminal Sekrup)
× 1
Adafruit Waterproof DS18B20 Sensor suhu digital
× 1
Kabel jumper (generik)
× 1

Alat dan mesin yang diperlukan

Besi solder (generik)

Tentang proyek ini

Ikhtisar

Lahan pertanian adalah sumber daya yang berharga, diperlukan untuk kelangsungan hidup masyarakat modern. Namun begitu banyak tantangan yang dihadapi dalam pertanian pertanian, Anda perlu mendapatkan suhu, kelembaban, dan sinar matahari yang tepat untuk tanaman, dan kemudian Anda harus memastikan tidak ada yang merusak tanaman.

Konsep bertani cerdas telah terbentuk dalam beberapa tahun terakhir, gagasan untuk mengawasi keadaan tanaman Anda dari jarak jauh. Tetapi revolusi dalam pertanian ini membutuhkan biaya yang besar, sebagian besar sistem yang tersedia terlalu mahal untuk diterapkan di pertanian kecil dan sistem mungkin tidak mencakup pertanian besar.

SmartAgro bermaksud untuk membuat jaringan perangkat, mudah digunakan yang dapat ditempatkan di lapangan yang sedang dipantau. Perangkat mengumpulkan data atmosfer, parameter terkait tanah, dan nilai cahaya, mengirimkan semua data ke awan yang ditampilkan di dasbor.

Hal ini memungkinkan pertanian apa pun, ukuran apa pun untuk memasuki era baru pertanian, menerapkan armada perangkat yang dapat diskalakan di seluruh lahan mereka yang dapat memperingatkan mereka jika kekeringan mendekat.

Video

Gambar

Fungsionalitas

SmartAgro memungkinkan pengguna untuk dengan mudah mengimplementasikan armada perangkat di lapangan yang dipantau. Perangkat ini mengambil sampel dari sensor pada interval waktu yang ditentukan.

Data kemudian masuk ke file a.csv pada kartu SD dan dikirim ke backend tempat data divisualisasikan di dasbor. Proyek ini terdiri dari front-end dan backend.

Front-End

Bagian depan proyek mengacu pada perangkat fisik yang ditempatkan di lapangan. Perangkat ini mengambil sampel data dari sensornya, membakarnya ke kartu SD dan mengirimkan data ke backend. Di bawah ini adalah ikhtisar fungsionalitas proyek.

GSM MKR digunakan untuk front-end, perangkat mengumpulkan data dan kemudian mengirimkannya ke Soracom, di mana itu divisualisasikan. Berikut adalah langkah-langkah yang dilakukan perangkat saat mengumpulkan data.

Kartu SD

Perangkat akan mencatat data yang diperoleh dari sensor ke kartu SD yang terpasang padanya. Data akan ditambahkan ke file a.csv yang kemudian dapat diunduh.

Dalam pengaturan, perangkat akan mencari apakah file a.csv untuk menulis tersedia dan akan menambahkannya jika sudah ada. Ini akan membuat file baru jika tidak ada. Di bawah ini adalah beberapa gambar dari file tersebut.

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.

Pengiriman Data

Data dikirim ke Soracom melalui koneksi GSM ke server. Data dikirim sebagai payload JSON. Data ini kemudian diterima oleh backend dan kemudian diproses. Di bawah ini adalah contoh payloadnya.

{ "Lintang":53.3570404, "Bujur":-6.2609935, "soilTemp":20.56, "soilHumidity":40, "atmoTemp":22.12, "atmoHumidity":62, "uvLight":0.00, "irLight":257, "deviceName":"device1"} 

Latar Belakang

Bagian belakang aplikasi mengacu pada Soracom. Data tersebut diterima oleh Soracom, diproses dan kemudian ditampilkan di dashboard.

Dasbor

Dasbor untuk proyek ini di-host di Soracom Lagoon. Data diterima oleh Soracom Air di backend, Soracom Harvest mengumpulkan data dan kemudian Lagoon menanyakannya dari Harvest.

Lokasi setiap perangkat di armada dan semua data sensor diplot di dasbor. Tangkapan layar dasbor ada di bawah.

Peringatan

Pengguna juga dapat mengatur backend untuk menerima pemberitahuan email jika indeks UV atau kelembaban tanah yang dikumpulkan oleh perangkat tidak normal. Dengan cara ini, pengguna akan tahu jika tanaman membutuhkan perhatian.

Manfaat

Pengguna yang mengoperasikan proyek ini akan mendapatkan banyak manfaat:

  • Visualisasikan Data di mana saja kapan saja, di mana saja menggunakan dasbor.
  • Skalakan perangkat dengan mudah dan gunakan beberapa perangkat.
  • Biaya lebih rendah dari solusi biasa yang ada di pasaran.

Membangun Proyek

Langkah 1:Aparat yang Diperlukan

Proyek ini membutuhkan daftar sensor dan bahan lainnya. Daftar lengkap bahan yang dibutuhkan ada di bawah ini.

  • 1, Arduino MKR GSM
  • 1, Perisai MEM Arduino
  • 1, modul suhu dan kelembaban GY-21
  • 1, Sensor suhu tahan air
  • 1, Sensor Sinar UV SI-1145
  • 1, Sensor Kelembaban Tanah
  • 1, Kotak Baterai 2AA (dengan baterai) atau baterai LiPo
  • 1, Kartu Sim Soracom
  • 1, Kartu SD
  • Kabel Jumper

Langkah 2:Menghubungkan Sirkuit

Besi solder akan dibutuhkan untuk menyolder semua komponen bersama-sama. Skema diilustrasikan dalam file fritzing di bawah ini.

Ingatlah untuk memasang pelindung MEM ke papan!

Menyiapkan MKR GSM

Arduino MKR GSM perlu disiapkan. Saya memberi daya pada papan dengan 2 baterai AA melalui port VIN. Langkah-langkahnya ada di bawah.

Langkah 3:Mengenali Kode

Ada 4 bagian utama dari kode yang digunakan untuk proyek.

  • Siapkan SD
  • Kumpulkan Data
  • Membakar Data ke SD
  • Kirim Data ke Soracom

Semua bagian ini dijelaskan dan dirinci di bawah ini.

Siapkan SD

bool createFile(){ // buat file .csv di kartu SD Serial.println("Membuat File"); Serial.println("OK - Membuat dan Membuka File"); File dataFile =SD.open("datalog.csv", FILE_WRITE); if(dataFile) { Serial.println("OK - File Dibuat"); Serial.println("OK - Menambahkan Legenda ke File"); Serial.print("OK - Menambahkan "); Serial.println(legenda); dataFile.println(legenda); dataFile.close(); Serial.println("Berhasil - Data Ditambahkan"); } else { Serial.println("Kesalahan - File Tidak Terdeteksi"); Serial.println("OK - Mencoba Lagi dalam 5 detik"); Serial.println("___________________________"); Serial.println(""); dataFile.close(); penundaan(5000); kembali salah; } Serial.println("____________________________"); Serial.println(""); return true;} void checkFile(){ Serial.println("Memeriksa .csv"); Serial.println("___________________________"); Serial.println("Menyiapkan File"); Serial.println("OK - Memeriksa Keberadaan File"); if(SD.exists("datalog.csv")) // periksa apakah file .csv sudah ada { // tambahkan ke file yang ada apakah ada Serial.println(" OK - File Exists"); Serial.println("OK - Akan Menambahkan File yang Ada"); Serial.println("___________________________"); Serial.println(""); } else { // buat file baru untuk ditambahkan ke Serial.println(" OK - File Tidak Ada"); Serial.println("OK - Membuat File"); Serial.println(""); while(!createFile()) {}; }} 

checkFile() fungsi memeriksa apakah file .csv yang seharusnya ditambahkan perangkat ada. Jika file ada, fungsi akan berakhir, jika tidak maka akan memanggil createFile() yang membuat file new.csv untuk ditambahkan.

KumpulkanData

void collectData(){ Serial.println("Mengumpulkan Data"); Serial.println("___________________________"); Serial.println("Mendapatkan Data dari Sensor"); Serial.println("OK - Menghubungi semua Sensor"); // mengumpulkan data dari semua sensor soilSens.requestTemperatures(); soilTemp =soilSens.getTempCByIndex(0); kelembaban tanah =analogBaca(A1); kelembaban tanah =peta(Kelembaban tanah, 1023, 0, 0, 100); atmoTemp =gy21.readTemperature(); atmoHumidity =gy21.readHumidity(); visibleLight =uv.readVisible(); irLight =uv.readIR(); rawUVLight =uv.readUV(); uvLight =(rawUVLight / 100); Serial.println("Oke - Data Terkumpul"); Serial.println("OK - Membuang Data"); Serial.print("[Cahaya] Terlihat "); Serial.println(Cahaya terlihat); Serial.print("[Cahaya] Inframerah "); Serial.println(irLight); Serial.print("[Cahaya] Ultraviolet "); Serial.println(uvLight); Serial.print("[Atmo] Suhu "); Serial.println(atmoTemp); Serial.print("[Atmo] Kelembaban "); Serial.println(atmoHumidity); Serial.print("Suhu [Tanah] "); Serial.println(soilTemp); Serial.print("[Tanah] Kelembaban "); Serial.println(kelembaban tanah); Serial.println("Berhasil - Data Dibuang"); Serial.println("___________________________"); Serial.println("");} 

Bagian kode ini mengumpulkan data dari semua sensor yang terpasang. Ini menghubungi sensor untuk suhu dan kelembaban atmosfer, kelembaban dan suhu tanah dan indeks UV, nilai cahaya IR, dan cahaya tampak.

Membakar Data ke SD

bool burnData(Data string){ Serial.println("Membakar Data"); Serial.println("___________________________"); Serial.println("Membakar Data ke Kartu SD"); Serial.println("Oke - Membuka File"); File dataFile =SD.open("datalog.csv", FILE_WRITE); if(dataFile) { Serial.println("OK - File Ada"); Serial.print("OK - Menambahkan "); Serial.println(data); Serial.println("OK - Membakar data"); dataFile.println(data); // membakar data ke kartu SD dataFile.close(); Serial.println("Berhasil - Data Ditambahkan"); Serial.println("___________________________"); Serial.println(""); } else { Serial.println("Kesalahan - File Tidak Ada"); Serial.println("OK - Mencoba Lagi dalam 5 Detik"); Serial.println("___________________________"); Serial.println(""); penundaan(5000); } Serial.println("");} 

Fungsi ini membakar data yang sebelumnya dikompilasi ke dalam baris file a.csv ke kartu SD. Data ditambahkan ke file di kartu.

Kirim Data ke Soracom

void parseData(String dataToSend){ Serial.println("Mengirim Data"); Serial.println("___________________________"); Serial.println("Mengirim Data ke Soracom"); Serial.println("OK - Mengatur Koneksi"); if(client.connect(url, 80)) // siapkan koneksi dan format kirim { Serial.println(" OK - Koneksi Dibuat, Parsing Data"); client.println("POST/HTTP/1.1"); client.println("Host:panen.soracom.io"); client.println("User-Agent:Arduino/1.0"); client.println("Koneksi:tutup"); client.print("Panjang Konten:"); client.println(dataToSend.length()); klien.println(""); klien.println(dataToSend); Serial.println("Oke - Data Diurai"); } Serial.println("OK - Mendapatkan Respon"); Serial.println(""); // membaca kembali dari server while(1) { if(client.available()) { char c =client.read(); Serial.print(c); } if(!client.connected()) { istirahat; } } Serial.println("Berhasil - Data Diurai"); Serial.println("___________________________"); Serial.println("");} 

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 selama waktu yang ditentukan dengan mengulangi langkah-langkah tersebut lagi.

Langkah 4:Menyiapkan Variabel

Beberapa variabel harus diedit oleh pengguna sebelum proyek dapat digunakan. Variabel yang dapat diedit berada di file utama kode. Ini dijelaskan di bawah ini.

  • namaperangkat mewakili nama kustom perangkat. Ini dikirim bersama dengan muatan ke Soracom, berguna untuk mengidentifikasi perangkat secara terpisah saat mengelola armada perangkat.
  • waktu tidur adalah jumlah waktu (dalam milidetik) perangkat akan tidur di antara pembacaan. Perangkat akan tidur di antara pembacaan untuk mengurangi konsumsi baterai.
  • proDebug disetel ke true jika mengganggu dan ke false jika tidak. Jika proDebug diaktifkan, perangkat harus terhubung ke komputer dengan monitor serial agar berfungsi. Setel ke true saat men-debug tetapi pastikan disetel ke false jika ada di lapangan. Perhatikan bahwa perangkat akan tetap mencetak ke serial meskipun proDebug salah;

Langkah 5:Menyiapkan Kartu SD

Kartu SD harus disiapkan sebelum dapat digunakan dengan perangkat. Kartu SD harus diformat sebagai FAT 32. Ikuti langkah-langkah di bawah ini untuk menyiapkan kartu SD.

Langkah 6:Unggah 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 7: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 8:Menyiapkan Soracom Lagoon

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.

Perpustakaan

  • ArduinoLowPower (c) 2016 Arduino LLC GNU Lisensi Publik Umum Lebih Rendah perpustakaan ini berada dalam domain publik
  • 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
  • SPI (c) 2015 Hristo Gochkov Lesser GNU Lesser General Public Licence this library is in the public domain
  • SD (C) 2010 SparkFun Electronics GNU General Public Licence this library is in the public domain

Final

Finally I designed an enclosure for the project, it would be preferable if the top of the enclosure would be transparent so that the UV sensor can be placed within the enclosure, I placed my sensor outside the enclosure to prevent any interference.

Finally, ensure that all the variables are set and then place the device on the field, it should be ready to monitor all parameters now.

Using an SD Card Module

I have chosen to use the Arduino MKR MEM shield as it is easy to use and quite compact. An SD card module can also be used though most operate with 5v while the MKR GSM can only provide 3.3v, therefore a level convertor is needed to step up the 3.3v to 5v.

Background

I came up with this idea while going on a bus past fields. I remembered reading about new devices used to monitor agricultural fields but I was made aware of the costs which are mostly not affordable for farmers.

So I decided to use the low cost Arduino to monitor multiple parameters on the farm and allow any farm, big or small to step into the age of IoT and smart farming.

Kode

SmartAgro
The Full Code

Skema

schematics_rrBJ3HiIfc.fzz

Proses manufaktur

  1. Sensor Arduino – Jenis dan Aplikasi
  2. Membangun Jaringan Sensor Nirkabel di Rumah Anda
  3. Pemantauan CO2 dengan Sensor K30
  4. Berapa Tinggi Anda?
  5. Sensor Kendala Sederhana dengan Arduino
  6. Sensor Sidik Jari Kapasitif dengan Arduino atau ESP8266
  7. Arduino Cloud Sensor Tower
  8. Sensor Gerakan Pistol Air
  9. Cara membuat situs web yang mengomunikasikan Arduino dengan menggunakan PHP
  10. Radar Mini dengan Arduino