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

Komunikasi Tanaman

Komponen dan persediaan

Arduino MKR IoT Bundle
× 1

Aplikasi dan layanan online

Zpier
ThingSpeak API

Tentang proyek ini

Catatan:Tutorial ini mungkin sudah usang, silakan buka di sini untuk versi yang lebih baru.

Pendahuluan

Seperti yang pernah dikatakan penyair Inggris William Wordsworth:

"Pikiranmu adalah tamannya, pikiranmu adalah benihnya, panennya bisa berupa bunga atau rumput liar."

Menjaga tanaman Anda tetap hidup bisa menjadi tantangan karena mereka sangat buruk dalam komunikasi.

Salah satu cara untuk membuat mereka senang adalah dengan membawa tanaman Anda, tetapi mungkin Anda tidak ingin membawa kaktus besar atau pakis yang mencuat dari saku jaket musim dingin Anda. Juga, sebagian besar tanaman tidak menyukai dingin.

Setelah menghabiskan waktu berbulan-bulan untuk mencoba berkomunikasi dengan Spider Plant kami, kami menyerah dan menggunakan komponen MKR IoT Bundle untuk membuat perangkat yang mensurvei kesejahteraan pabrik apa pun dari jarak jauh.

Singkatnya:

Dalam percobaan ini Anda akan belajar bagaimana melindungi tanaman Anda dan memastikan mereka bertahan hidup serta menggunakan sihir Arduino.

Dengan memantau kelembaban, suhu dan cahaya, Anda dapat memastikan bahwa tanaman Anda bahagia. Itu dapat mengirim email dan grafik setiap hari dan memberi tahu Anda tentang kebutuhannya.

Komponen

  • Sensor suhu TMP36
  • Fototransistor
  • Sensor kelembapan buatan sendiri

Tujuan Pembelajaran

  • Memperkenalkan layanan internet Zapier
  • Mengirim permintaan HTTP
  • Mengelola Jam dan alarm Waktu Nyata
  • Membuat sensor kelembapan DIY
  • Merencanakan nilai dengan thingSpeak #ProTips
  • Gaya email Anda dengan HTML dan CSS #ProTips
  • Uji API dengan PostMan #ProTips

Ingin Tahu Lebih Banyak?

Tutorial ini adalah bagian dari serangkaian eksperimen yang membiasakan Anda dengan MKR1000 dan IoT. Semua eksperimen dapat dibuat menggunakan komponen yang terdapat dalam Bundel MKR IoT.

  • Love You Pillow
  • Kotak Teka-teki
  • Kucing Pavlov
  • Si kutu buku
  • Komunikasi Tumbuhan

Siapkan Zapier

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

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

Ikuti beberapa langkah sederhana ini untuk membuat zap Anda sendiri!

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

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

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

Anda akan melihat respons seperti ini:

Selamat! Anda baru saja mengirim permintaan http!

Inilah yang akan kami lakukan dengan papan Arduino kami. Tetapi alih-alih menempelkan URL itu ke halaman browser, kami akan mengirimkannya langsung ke server Zapier. Kami juga akan mengubah nilai parameter yang sekarang disetel ke nol dengan nilai sensor kami.

Untuk cara yang lebih canggih dalam menguji dan bekerja dengan API, lihat #Kiat Pro di bagian bawah halaman.

Setelah Anda menguji permintaan Anda, Anda dapat melanjutkan membuat Zap.

Lanjutkan di Edit dengan Lakukan Ini...

Periksa kotak surat Anda untuk melihat email yang dihasilkan dari Zapier. Itu akan dari akun yang Anda gunakan pada langkah pertama konfigurasi gmail.

Siapkan Papan

Untuk mengimplementasikan semua fungsi, kita akan menggunakan perpustakaan berikut:

  • WiFi101 // untuk menyambung ke internet dan memindai jaringan
  • RTCZero // untuk mengelola peristiwa yang dipicu oleh waktu

Anda dapat mengunduhnya dari pengelola perpustakaan seperti yang dijelaskan dalam panduan ini.

Untuk menggunakan API Zapier, pertama-tama kita harus mengunggah sertifikat di MKR1000. Ini berlaku untuk sebagian besar layanan online dan API!

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

> contoh> WiFi101> FirmwareUpdater  

Jika Anda menggunakan Arduino Web Editor, fitur ini belum diterapkan dan Anda perlu melakukannya melalui Aplikasi Desktop Arduino.

Mengirim permintaan HTTP

Kami sekarang siap untuk mengirim permintaan HTTP dari papan Arduino.

Untuk saat ini kita akan menetapkan nilai arbitrer pada parameter kita yang nantinya akan diganti dengan nilai sensor yang sebenarnya.

 suhu float =22; int kelembaban =150; int cahaya =40; String warning ="Ini adalah pesan peringatan"; warning.replace(" ", "%20");  

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

Setelah mengatur parameter kami, kami akan memanggil send_email() fungsi, yang akan mengubah semuanya menjadi String dan akan membangun kembali 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  #include const char* ssid =SECRET_SSID; // SSID jaringan Anda (nama) const char* kata sandi =SECRET_PSWD; // kata sandi jaringan Anda String httpsRequest =SECRET_REQUEST; // URL Zapier const char* host ="hooks.zapier.com"; Klien WiFiSSLClien; void setup() { Serial.begin(9600); while (!Serial); penundaan(2000); Serial.print("Menghubungkan Wifi:"); Serial.println(ssid); while (WiFi.begin(ssid, password) !=WL_CONNECTED) { Serial.print("."); penundaan (500); } Serial.println(""); Serial.println("WiFi terhubung"); } void loop() { suhu float =22; int kelembaban =150; int cahaya =40; String warning ="Ini adalah pesan peringatan"; warning.replace(" ", "%20"); send_email(suhu, kelembapan, cahaya, peringatan ); delay(20000) } void send_email(suhu mengambang, kelembapan int, cahaya int, peringatan String) { // mengubah nilai menjadi String String _temperature =String(suhu); String _kelembaban =String(kelembaban); String _light =String(cahaya); String _warning =peringatan; 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("Koneksi:tutup"); klien.println(); penundaan (1000); while (client.available()) { // Cetak di konsol jawaban server char c =client.read(); Serial.tulis(c); } klien.stop(); // Putus dari server } else { Serial.println("Gagal terhubung ke klien"); } }  

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

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

RTC dan Alarm

Kita dapat menggunakan jam Real Time dari MKR1000 untuk mengirim email setiap hari pada jam tertentu.

Sketsa ini akan menyetel waktu dan tanggal pada 16:00 tanggal 4 Desember 2017 lalu memicu alarm setiap hari pada pukul 16:01.

Perhatikan bahwa karena alarm terpasang ke interupsi fungsi kami tidak dapat menyertakan penundaan , tetapi kita dapat menggunakan variabel boolean untuk memicu tindakan di loop()

#include  RTCZero rtc; // buat objek RTC /* Ubah nilai ini untuk mengatur waktu awal saat ini */ const byte detik =0; const byte menit =0; const byte jam =16; /* Ubah nilai ini untuk mengatur tanggal awal saat ini */ const byte hari =4; const byte bulan =12; const byte tahun =17; bool email_already_sent =salah; void setup() { Serial.begin(9600); while (!Serial); penundaan(2000); rtc.mulai(); // inisialisasi format RTC 24H rtc.setTime(jam, menit, detik); rtc.setDate(hari, bulan, tahun); rtc.setAlarmTime(16, 1, 0); // Atur waktu Arduino untuk mengirim email rtc.enableAlarm(rtc.MATCH_HHMMSS); rtc.attachInterrupt(alarmMatch); } void loop() { if (!email_already_sent) { // kirim_email(); email_already_sent =benar; } } void alarmMatch() { // terpicu saat alarm menyala Serial.println("Alarm Match!"); email_already_sent =salah; }  

Sensor Kelembaban Tanah DIY

Dua kabel yang ditempatkan di pot tanah membentuk resistor variabel, yang resistansinya bervariasi tergantung pada kelembaban tanah .

Resistor variabel ini terhubung dalam konfigurasi pembagi tegangan, dan Arduino mengumpulkan tegangan yang sebanding dengan resistansi antara 2 kabel.

Artinya semakin lembab tanah, semakin sedikit tegangan yang akan diukur dari Arduino.

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

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

Nilai tersebut akan digunakan untuk menetapkan ambang sehingga Arduino akan mengetahui kapan tanaman Anda membutuhkan air dan mengirimkan email darurat kepada Anda.

int moisturePin =A2; // Atur threeshold ini sesuai dengan resistansi yang Anda gunakan // Cara termudah untuk mengkalibrasi nilai ini adalah dengan menguji sensor di tanah kering dan basah int threeshold =800; void setup() { Serial.begin(9600); while (!Serial); penundaan(2000); } void loop() { Serial.println(get_average_moisture()); penundaan(5000); } int get_average_moisture() { // buat rata-rata 10 nilai agar lebih akurat int tempValue =0; // variabel untuk sementara menyimpan nilai kelembapan untuk (int a =0; a <10; a++) { tempValue +=analogRead(moisturePin); penundaan(100); } mengembalikan tempValue / 10; }  

Tambahkan Sensor Suhu dan Cahaya

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

float get_temperature(){ int membaca =analogRead(A1); tegangan float =membaca * 3.3; tegangan /=1024.0; // Cetak suhu dalam Celcius float temperatureC =(tegangan - 0,5) * 100; //mengonversi dari 10 mv per derajat dengan offset 500 mV // Mengonversi ke Fahrenheit float temperatureF =(temperatureC * 9.0 / 5.0) + 32.0; suhu kembaliC; } int get_light(){ int light_value=analogRead(A0); mengembalikan nilai_cahaya; }  

Perhatikan bahwa Anda dapat menggunakan satuan Fahrenheit dengan mengembalikan temperatureF bukannya temperatureC

#ProTip:Plot Nilai Menggunakan ThingSpeak

Untuk Anda semua, mengontrol orang aneh, berikut adalah petunjuk untuk memplot semua data yang dikumpulkan dalam grafik yang indah seperti ini:

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

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

#include  #include #include "ThingSpeak.h" const char* ssid =SECRET_SSID; // SSID jaringan Anda (nama) const char* kata sandi =SECRET_PSWD; // kata sandi jaringan Anda WiFiClient ThingSpeakClient; myChannelNumber panjang yang tidak ditandatangani =356392; const char * myWriteAPIKey =SECRET_WRITE_API; int lightPin =A0; //pin analog sensor cahaya terhubung ke int tempPin =A1; //pin analog pin Vout (sense) TMP36 terhubung ke int moisturePin =A2; void setup() { Serial.begin(9600); while (!Serial); penundaan(2000); Serial.print("Menghubungkan Wifi:"); Serial.println(ssid); while (WiFi.begin(ssid, password) !=WL_CONNECTED) { Serial.print("."); penundaan (500); } Serial.println(""); Serial.println("WiFi terhubung"); 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("pesan terkirim ke awan"); penundaan(60000); // kirim nilai setiap 1 menit } float get_temperature() { int reading =analogRead(tempPin); tegangan float =membaca * 3.3; tegangan /=1024.0; // Cetak suhu dalam Celcius float temperatureC =(tegangan - 0,5) * 100; //mengonversi dari 10 mv per derajat dengan offset 500 mV // Mengonversi ke Fahrenheit float temperatureF =(temperatureC * 9.0 / 5.0) + 32.0; suhu kembaliC; }int get_average_moisture() { // buat rata-rata 10 nilai agar lebih akurat int tempValue =0; // variabel untuk sementara menyimpan nilai kelembapan untuk (int a =0; a <10; a++) { tempValue +=analogRead(moisturePin); penundaan (10); } mengembalikan tempValue / 10; } int get_light() { int light_value =analogRead(A0); mengembalikan nilai_cahaya; }  

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

Sayangnya Gmail tidak mengizinkan kami menyematkan grafik dan iframe di badan email, tetapi kami dapat mengirimkan tautan melalui email di tombol yang indah, lihat tip di bawah ini.

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

#ProTip:Atur Gaya Email Anda

Zapier memungkinkan kita untuk menyematkan beberapa kode html dan css di badan dari email. Kita dapat menggunakannya untuk mengirim email yang cukup bergaya seperti ini:

Untuk mencapai hasil ini, cukup ubah tipe tubuh menjadi html pada antarmuka Zapier dan tambahkan HTML dan CSS khusus Anda.

Salin dan tempel template ini:

       

HALO !

Berikut pembaruan harian Anda tentang taman ☘

♨ Suhu:{{querystring__temperature}} C
☔ Kelembaban:{{_querystring__moisture}}
☀ Cahaya:{{querystring__light}}
{{querystring__warning}}
LIHAT GRAFIK

#ProTip:Uji API dengan PostMan

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

Tukang pos adalah contoh yang bagus:

Cukup rekatkan URL awal yang diberikan oleh Zapier, tambahkan parameter dan kirimkan. Ini akan mencetak tanggapan dari server dan membuat URL untuk Anda.

Kode

Sketsa lengkap
#ProTips menyelesaikan sketsa

Skema


Proses manufaktur

  1. Komponen Sirkuit
  2. Pupuk
  3. Sirkuit Terintegrasi
  4. Memperkenalkan Pabrik Tepercaya
  5. MOSMusic
  6. Apa itu Pemeliharaan Pabrik?
  7. Mendapatkan hasil maksimal dari pabrik kimia curah
  8. Komponen mesin bor
  9. Memahami perawatan tanaman
  10. Komponen mesin pembakaran dalam