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

Komunikator Tanaman Cerdas: Arduino MKR IoT Bundle untuk Pertanian Otomatis

Komponen dan Perlengkapan

Arduino MKR IoT Bundle1

Aplikasi dan Layanan Online

Zapier
ThingSpeak API

Tentang Proyek

Catatan: Tutorial ini mungkin sudah ketinggalan zaman, silakan pergi disini untuk versi yang lebih terkini.

Pengantar

Seperti yang pernah dikatakan oleh penyair Inggris William Wordsworth:

"Pikiranmu adalah taman, pikiranmu adalah benih, panen dapat berupa bunga atau gulma."

Menjaga tanaman agar tetap hidup bisa menjadi tantangan karena mereka sangat buruk dalam berkomunikasi.

Salah satu cara untuk membuatnya bahagia adalah membawa tanaman Anda bersama Anda, namun mungkin Anda tidak ingin membawanya dengan kaktus besar atau pakis yang menempel di saku jaket dingin Anda. Selain itu, sebagian besar tanaman tidak suka dingin.

Setelah menghabiskan berbulan-bulan mencoba berkomunikasi dengan Spider Plant kami, kami menyerah dan menggunakan komponen MKR IoT Bundle untuk membuat perangkat yang memantau kesejahteraan tanaman secara jarak jauh sebagai gantinya.

Secara singkat:

Dalam eksperimen ini Anda akan mempelajari cara melindungi tanaman Anda dan memastikan mereka bertahan serta menggunakan sihir Arduino.

Dengan memantau kelembaban, suhu dan cahaya, Anda dapat memastikan tanaman Anda bahagia. Ini dapat mengirim email dan grafik setiap hari serta memberi tahu Anda akan kebutuhannya.

Komponen

Tujuan Pembelajaran

Ingin Mengetahui Lebih Banyak?

Tutorial ini adalah bagian dari serangkaian eksperimen yang memperkenalkan Anda dengan MKR1000 dan IoT. Semua eksperimen dapat dibuat menggunakan komponen yang terkandung dalam MKR IoT Bundle.

Siapkan Zapier

Zapier adalah alat otomatisasi online yang dapat dengan mudah mengelola API aplikasi lain untuk kita. Ini adalah alat yang hebat untuk menggabungkan beberapa tugas atau jika aplikasi yang ingin kita gunakan memiliki API yang kompleks yang tidak dapat dikelola oleh Arduino.

Dalam kasus kita kita akan menggunakannya untuk mengirim email dengan data yang diambil dari Arduino.

Ikuti langkah-langkah sederhana ini untuk membuat zap Anda sendiri!

Komunikator Tanaman Cerdas: Arduino MKR IoT Bundle untuk Pertanian Otomatis
Komunikator Tanaman Cerdas: Arduino MKR IoT Bundle untuk Pertanian Otomatis
Komunikator Tanaman Cerdas: Arduino MKR IoT Bundle untuk Pertanian Otomatis
Komunikator Tanaman Cerdas: Arduino MKR IoT Bundle untuk Pertanian Otomatis

Untuk melanjutkan kita perlu menguji hook pertama dengan menyalin URL yang diberikan, lalu memilih tombol Test and Review yang muncul ketika Anda menekan Continue. Tambahkan parameter ini ke URL:

custom_webhook_URL?temperature=0&moisture=0&light=0&warning=0

Sekarang cukup salin dan tempelkan URL ini di halaman browser baru.

Anda seharusnya melihat respons seperti ini:

Komunikator Tanaman Cerdas: Arduino MKR IoT Bundle untuk Pertanian Otomatis
Komunikator Tanaman Cerdas: Arduino MKR IoT Bundle untuk Pertanian Otomatis

Selamat! Anda baru saja mengirim permintaan http!

Ini persis apa yang akan kita lakukan dengan papan Arduino kita. Namun alih-alih menempelkan URL tersebut ke halaman browser kita akan mengirimnya langsung ke server Zapier. Juga kita akan mengubah nilai parameter yang sekarang diatur ke nol dengan nilai sensor kita.

Untuk cara yang lebih canggih untuk menguji dan bekerja dengan API lihat #ProTip di bagian bawah halaman.

Setelah Anda menguji permintaan Anda Anda dapat melanjutkan membuat Zap.

Lanjutkan di Edit dengan Do This...

Komunikator Tanaman Cerdas: Arduino MKR IoT Bundle untuk Pertanian Otomatis
Komunikator Tanaman Cerdas: Arduino MKR IoT Bundle untuk Pertanian Otomatis
Komunikator Tanaman Cerdas: Arduino MKR IoT Bundle untuk Pertanian Otomatis
Komunikator Tanaman Cerdas: Arduino MKR IoT Bundle untuk Pertanian Otomatis
Komunikator Tanaman Cerdas: Arduino MKR IoT Bundle untuk Pertanian Otomatis
Komunikator Tanaman Cerdas: Arduino MKR IoT Bundle untuk Pertanian Otomatis
Komunikator Tanaman Cerdas: Arduino MKR IoT Bundle untuk Pertanian Otomatis
Komunikator Tanaman Cerdas: Arduino MKR IoT Bundle untuk Pertanian Otomatis

Periksa kotak masuk Anda untuk melihat email yang dihasilkan dari Zapier. Ini akan dari akun yang Anda gunakan di langkah pertama konfigurasi gmail.

Siapkan Papan

Untuk mengimplementasikan semua fungsionalitas kami akan menggunakan pustaka berikut:

Anda dapat mengunduhnya dari manajer pustaka seperti yang dijelaskan dalam panduan ini.

Untuk menggunakan API Zapier kita pertama perlu mengunggah sertifikat pada MKR1000. Ini berlaku untuk sebagian besar layanan dan API online!

Unggah contoh Firmware Updater dari pustaka WiFi101 dan tambahkan hooks.zapier.com ke domain.

> examples > WiFi101 > FirmwareUpdater 

Jika Anda menggunakan Arduino Web Editor fitur ini belum diimplementasikan dan Anda perlu melakukan ini melalui Arduino Desktop Application.

Komunikator Tanaman Cerdas: Arduino MKR IoT Bundle untuk Pertanian Otomatis
Komunikator Tanaman Cerdas: Arduino MKR IoT Bundle untuk Pertanian Otomatis
Komunikator Tanaman Cerdas: Arduino MKR IoT Bundle untuk Pertanian Otomatis

Mengirim Permintaan HTTP

Kami sekarang siap untuk mengirim permintaan HTTP dari papan Arduino.

Untuk saat ini kita akan menetapkan nilai acak ke parameter kita yang nantinya akan diganti dengan nilai sensor nyata.

 float temperature = 22; int moisture = 150; int light = 40; String warning = "This is a warning message"; warning.replace(" ", "%20"); 

Perhatikan bahwa string harus dienkode, karena spasi tidak dapat dikirim dalam permintaan HTTP. Semua spasi diganti dengan setara kode %20

Setelah menyiapkan parameter kita kita akan memanggil fungsi send_email(), yang akan mengonversi semuanya menjadi String dan akan membangun ulang URL yang sama yang kita gunakan sebelumnya untuk kemudian mempostingnya ke server Zapier.

Isi sketsa ini dengan kredensial WiFi Anda dan potongan URL yang Anda terima dari Zapier dan unggah.

#include <WiFi101.h> #include<WiFiSSLClient.h> const char* ssid = SECRET_SSID; // your network SSID (name) const char* password = SECRET_PSWD; // your network password String httpsRequest = SECRET_REQUEST; // your Zapier URL const char* host = "hooks.zapier.com"; WiFiSSLClient client; void setup() { Serial.begin(9600); while (!Serial); delay(2000); Serial.print("Connecting Wifi: "); Serial.println(ssid); while (WiFi.begin(ssid, password) != WL_CONNECTED) { Serial.print("."); delay(500); } Serial.println(""); Serial.println("WiFi connected"); } void loop() { float temperature = 22; int moisture = 150; int light = 40; String warning = "This is a warning message"; warning.replace(" ", "%20"); send_email(temperature, moistue, light, warning ); delay(20000) } void send_email(float temperature, int moisture, int light, String warning) { // convert values to String String _temperature = String(temperature); String _moisture = String(moisture); String _light = String(light); String _warning = warning; if (client.connect(host, 443)) { client.println("POST " + httpsRequest + "?temperature=" + _temperature + "&moisture=" + _moisture + "&light=" + _light + "&warning=" + _warning + " HTTP/1.1"); client.println("Host: " + String(host)); client.println("Connection: close"); client.println(); delay(1000); while (client.available()) { // Print on the console the answer of the server char c = client.read(); Serial.write(c); } client.stop(); // Disconnect from the server } else { Serial.println("Failed to connect to client"); } } 

Ini akan mengirim email ke alamat yang Anda pilih setiap 20 detik.

Hati-hati dengan permintaan, Zapier hanya mengizinkan 100 permintaan gratis per bulan.

RTC dan Alarm

Kami dapat menggunakan Real Time clock MKR1000 untuk mengirim email setiap hari pada jam tertentu.

Sketsa ini akan mengatur waktu dan tanggal pada 16:00 pada 4 Desember 2017 dan kemudian memicu alarm setiap hari pada 16:01.

Perhatikan bahwa karena alarm terpasang pada fungsi interrupt kami tidak dapat menyertakan jeda apa pun, namun kita dapat menggunakan variabel boolean untuk memicu tindakan dalam loop()

#include <RTCZero.h> RTCZero rtc; // create RTC object /* Change these values to set the current initial time */ const byte seconds = 0; const byte minutes = 0; const byte hours = 16; /* Change these values to set the current initial date */ const byte day = 4; const byte month = 12; const byte year = 17; bool email_already_sent = false; void setup() { Serial.begin(9600); while (!Serial); delay(2000); rtc.begin(); // initialize RTC 24H format rtc.setTime(hours, minutes, seconds); rtc.setDate(day, month, year); rtc.setAlarmTime(16, 1, 0); // Set the time for the Arduino to send the email rtc.enableAlarm(rtc.MATCH_HHMMSS); rtc.attachInterrupt(alarmMatch); } void loop() { if (!email_already_sent) { // send_email(); email_already_sent = true; } } void alarmMatch() { // triggered when the alarm goes on Serial.println("Alarm Match!"); email_already_sent = false; } 

Sensor Kelembaban Tanaman DIY

Dua kabel yang ditempatkan dalam pot tanah membentuk variabel resistor, yang resistensinya bervariasi tergantung pada kelembaban tanah.

Variabel resistor ini dihubungkan dalam konfigurasi pembagi tegangan, dan Arduino mengumpulkan tegangan yang proporsional terhadap resistensi antara 2 kabel.

Artinya semakin lembab tanahnya, semakin sedikit tegangan yang diukur dari Arduino.

Menggunakan resistor 1 Mega Ohm dan dua kabel, kita dapat membuat sensor kelembaban tanah DIY kita!

Komunikator Tanaman Cerdas: Arduino MKR IoT Bundle untuk Pertanian Otomatis

Mengunggah sketsa berikut Anda dapat mulai membaca nilai sensor, kami menyarankan Anda mulai mengujinya terlebih dahulu di tanah kering dan catat nilai yang Anda baca.

Nilai itu akan digunakan untuk mengatur ambang batas sehingga Arduino akan tahu kapan tanaman Anda butuh air dan akan mengirim Anda email darurat.

int moisturePin = A2; // Set this threeshold accordingly to the resistance you used // The easiest way to calibrate this value is to test the sensor in both dry and wet soil int threeshold = 800; void setup() { Serial.begin(9600); while (!Serial); delay(2000); } void loop() { Serial.println(get_average_moisture()); delay(5000); } int get_average_moisture() { // make an average of 10 values to be more accurate int tempValue = 0; // variable to temporarly store moisture value for (int a = 0; a < 10; a++) { tempValue += analogRead(moisturePin); delay(100); } return tempValue / 10; } 

Tambahkan Sensor Suhu dan Cahaya

Lihat skematik di bawah untuk merangkaikan dua sensor. Kami akan menggunakan dua fungsi ini untuk membaca nilai dari sensor:

float get_temperature(){ int reading = analogRead(A1); float voltage = reading * 3.3; voltage /= 1024.0; // Print tempeature in Celsius float temperatureC = (voltage - 0.5) * 100 ; //converting from 10 mv per degree wit 500 mV offset // Convert to Fahrenheit float temperatureF = (temperatureC * 9.0 / 5.0) + 32.0; return temperatureC; } int get_light(){ int light_value=analogRead(A0); return light_value; } 

Perhatikan bahwa Anda dapat menggunakan satuan Fahrenheit dengan mengembalikan temperatureF alih-alih temperatureC

#ProTip: Memplot Nilai Menggunakan ThingSpeak

Untuk semua pengontrol freak di sini ini adalah instruksi untuk memplot semua data yang dikumpulkan dalam grafik yang indah seperti ini:

Komunikator Tanaman Cerdas: Arduino MKR IoT Bundle untuk Pertanian Otomatis

Kami akan menggunakan platform ThingSpeak untuk memplot grafik, ikuti langkah-langkah ini untuk memulai.

Komunikator Tanaman Cerdas: Arduino MKR IoT Bundle untuk Pertanian Otomatis
Komunikator Tanaman Cerdas: Arduino MKR IoT Bundle untuk Pertanian Otomatis
Komunikator Tanaman Cerdas: Arduino MKR IoT Bundle untuk Pertanian Otomatis

Unduh pustaka ThingSpeak dan mari kita mulai. Sketsa di bawah ini akan mengunggah nilai sensor ke cloud setiap menit, cukup isi kredensial WiFi Anda dan kunci API channel Anda dan unggah.

#include <WiFi101.h> #include<WiFiSSLClient.h> #include "ThingSpeak.h" const char* ssid = SECRET_SSID; // your network SSID (name) const char* password = SECRET_PSWD; // your network password WiFiClient ThingSpeakClient; unsigned long myChannelNumber = 356392; const char * myWriteAPIKey = SECRET_WRITE_API; int lightPin = A0; //the analog pin the light sensor is connected to int tempPin = A1; //the analog pin the TMP36's Vout (sense) pin is connected to int moisturePin = A2; void setup() { Serial.begin(9600); while (!Serial); delay(2000); Serial.print("Connecting Wifi: "); Serial.println(ssid); while (WiFi.begin(ssid, password) != WL_CONNECTED) { Serial.print("."); delay(500); } Serial.println(""); Serial.println("WiFi connected"); ThingSpeak.begin(ThingSpeakClient); } void loop() { ThingSpeak.setField(1, get_light()); ThingSpeak.setField(2, get_temperature()); ThingSpeak.setField(3, get_average_moisture()); ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey); Serial.println("message sent to cloud"); delay(60000); // send values every 1 minute } float get_temperature() { int reading = analogRead(tempPin); float voltage = reading * 3.3; voltage /= 1024.0; // Print tempeature in Celsius float temperatureC = (voltage - 0.5) * 100 ; //converting from 10 mv per degree wit 500 mV offset // Convert to Fahrenheit float temperatureF = (temperatureC * 9.0 / 5.0) + 32.0; return temperatureC; } int get_average_moisture() { // make an average of 10 values to be more accurate int tempValue = 0; // variable to temporarly store moisture value for (int a = 0; a < 10; a++) { tempValue += analogRead(moisturePin); delay(10); } return tempValue / 10; } int get_light() { int light_value = analogRead(A0); return light_value; } 

Dalam sketsa Pro lengkap di bawah ini Anda dapat melihat cara melampirkan pengunggahan ini ke alarm RTC yang dipicu setiap menit.

Sayangnya Gmail tidak membiarkan kami menyematkan grafik dan iframes dalam tubuh email, namun kita dapat mengirim tautan melalui email dalam tombol yang indah, lihat tips di bawah.

Kami memilih ThingSpeak, namun ada banyak alternatif lain di luar sana! Lihat Dweet.io dan freeboard.io misalnya.

#ProTip: Stail Email Anda

Zapier memungkinkan kami untuk menyematkan beberapa kode html dan css dalam tubuh email. Kita dapat menggunakannya untuk mengirim email yang dipahat indah seperti ini:

Komunikator Tanaman Cerdas: Arduino MKR IoT Bundle untuk Pertanian Otomatis

Untuk mencapai hasil ini cukup ubah jenis tubuh menjadi html di antarmuka Zapier dan tambahkan HTML dan CSS kustom Anda.

Komunikator Tanaman Cerdas: Arduino MKR IoT Bundle untuk Pertanian Otomatis
Komunikator Tanaman Cerdas: Arduino MKR IoT Bundle untuk Pertanian Otomatis

Salin dan tempel templat ini:

<!doctype html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <style> .container{ margin-left: 10%; margin-right: 10%; background-color: #ECF1F1; min-height: 100%; padding-top: 5%; padding-bottom: 10%; font-family: monospace; letter-spacing: 2px; } .title{ text-align: center; color: #0CA1A6; font-size: 1.5em; padding-top: 0.2vh; } .subtitle{ text-align: center; color: #0CA1A6; font-size: 1.1em; padding-bottom: 4%; padding-left: 4%; padding-right: 4%; } .data{ padding-bottom: 2%; padding-top: 2%; padding-left: 5%; margin-left: 15%; margin-right: 15%; background-color: #F7F9F9; text-align: left; color: #4E5B61; font-size: 1em; font-weight: bold; } .bttn{ padding-bottom: 3%; padding-top: 3%; margin-left: 25%; margin-right: 25%; margin-top: 10%; background-color: #00979D; text-align: center; color: #F7F9F9; font-size: 1.4em; } .disclaimer{ text-align:center; color:#DA5B4A; font-size: 1.1em; font-weight: bold; margin-top: 10%; } .bttn:hover{ background-color: #008184; } a{ text-decoration: none; } </style> </head> <body> <div class="container"> <h2 class="title">HELLO !</h2> <h4 class="subtitle">Here's your daily update about your garden &#9752;</h4> <div class="data"> &#9832; Temperature: {{querystring__temperature}} C </div> <div id="humidity" class="data"> &#9748; Moisture: {{_querystring__moisture}}</div> <div class="data"> &#9728; Light: {{querystring__light}}</div> <div class="disclaimer">{{querystring__warning}}</div> <a href="your_link_to_thingSpeak"> <div class="bttn">SEE THE GRAPH</div> </a> </div> </body> </html> 

#ProTip: Uji API dengan PostMan

Bekerja dengan permintaan HTTP bisa sulit, untungnya ada banyak alat yang dapat membantu kita membangun URL yang kita butuhkan.

Postman adalah contoh yang bagus:

Komunikator Tanaman Cerdas: Arduino MKR IoT Bundle untuk Pertanian Otomatis

Cukup tempel URL awal yang diberikan oleh Zapier, tambahkan parameter dan kirim. Ini akan mencetak respons dari server dan menyusun URL untuk Anda.

Kode

Sketsa lengkap
Sketsa lengkap #ProTips

Skematik

Komunikator Tanaman Cerdas: Arduino MKR IoT Bundle untuk Pertanian Otomatis

Proses manufaktur

  1. Menguasai Sintaks Netlist SPICE: Penamaan Komponen, Elemen Pasif & Aktif, dan Definisi Sumber
  2. Pupuk: Ilmu, Produksi, dan Masa Depan Berkelanjutan
  3. Sirkuit Terpadu (IC): Chip Kompak dan Canggih yang Menggerakkan Elektronik Modern
  4. Peluncuran Reliable Plant: Panduan Terpercaya Anda Menuju Keunggulan Pemeliharaan
  5. Kit Proyek MOSMusic: MOSFET, Arduino, dan Lainnya
  6. Pemeliharaan Pabrik Dibongkar: Praktik Terbaik untuk Industri Modern
  7. Membuka Nilai di Pabrik Kimia Besar: Strategi Pertumbuhan
  8. Komponen Esensial Mesin Bor: Gambaran Umum Komprehensif
  9. Menguasai Pemeliharaan Pabrik: Praktik Terbaik untuk Produksi Energi yang Terpercaya
  10. Komponen Utama Mesin Pembakaran Dalam