Tentang proyek ini
Bayangkan ini Anda akan berlibur selama seminggu atau lebih dan khawatir tentang tanaman rumah Anda di rumah. Ini adalah proyek yang bagus untuk dikerjakan seminggu sebelum Anda pergi berlibur.
Buat sendiri sistem pemantauan dan pemberitahuan pabrik dengan fitur berikut
- Pantau Suhu, Nilai Cahaya dan Nilai Kelembaban Tanah menggunakan dweet.io
- ATAU menggunakan layanan Amazon IoT baru untuk mencatat data ke AWS - DynamoDB
- Gunakan notifikasi AWS -SNS, untuk mengirim email ke diri Anda sendiri, sehingga Anda dapat memberi tahu sepupu/tetangga Anda untuk segera menyirami tanaman atau memeriksa termostat di rumah.
Selain itu, saya telah merancang enklosur cetak 3D, untuk menampung Arduino Yun , pelindung hutan, dan sensor.
Jika Anda tertarik untuk melihat bagaimana tanaman saya lakukan di sini adalah tautannya
http://dweet.io/follow/PlantMonitorTorontoON
Berikut adalah langkah-langkah yang perlu Anda lakukan untuk menyelesaikan build
#1 Bangun sirkuit menggunakan pelindung konektor Grove seperti yang ditunjukkan di bagian skema proyek, pada dasarnya hubungkan
- Sensor suhu ke A0
- Sensor Kelembaban Tanah ke A1
- Sensor cahaya ke A2
- Dan menggunakan resistor 220 Ohm, sambungkan LED ke pin#2
#2 Cetak 3D file STL , terlampir di bagian kustom dan bagian enklosur , di sini Anda memiliki 3 file STL untuk dicetak, setel perangkat lunak pengiris Anda ke tinggi lapisan 0,3 mm dan kepadatan isi setidaknya 25% atau lebih tinggi
Pencetakan 3D akan memakan waktu sekitar 2 jam , jadi unduh file STL dan nyalakan printer 3D Anda sambil menyelesaikan langkah-langkah lain di bawah
#3 Menentukan Nilai Kelembaban Tanah
Unggah kode yang terlampir di bawah (nilai kelembaban tanah) ke Arduino Yun Anda dan tentukan tooDryValue dalam kode di bawah ini. Pada dasarnya jika nilai kelembaban tanah turun di bawah terlaluDryValue, Anda perlu menyirami tanaman. (dan nilai ini adalah nilai yang Anda akan digunakan dalam kondisi AWS-SNS untuk mengirim email)
Berikut adalah video yang menunjukkan metode yang saya gunakan untuk menentukan toodryvalue
#4 Unggah kode Arduino ke Yun untuk mengeposkan data ke dweet.io
Sekarang setelah Anda memutuskan toodryvalue , unggah file ArduinoYunDweetIO.ino ke Yun, Dan sebagai bagian dari kode juga ganti "PlantMonitorTorontoON" menjadi sesuatu yang lebih bermakna untuk Anda.
Berikut adalah video pengujian Upload data sensor ke dweet.io
#5 Menyiapkan AWS CLI di komputer Anda (di sini saya menggunakan Mac)
Sekarang untuk mencatat data menggunakan AWS IoT di DyanamoDB , Anda harus membuat akun di https://aws.amazon.com/free, di sini Anda juga harus memberikan detail kartu kredit Anda, tetapi untuk tutorial di bawah ini Anda tidak boleh dikenakan biaya apa pun (sekali lagi ini tergantung pada wilayah penyiapan AWS)
Setelah selesai buat folder "AWS " di mac Anda dan ikuti tautan di bawah untuk mengunduh dan menginstal AWS CLI
http://docs.aws.amazon.com/iot/latest/developerguide/installing-aws-cli.html
Saya menggunakan mac , berikut adalah instruksi yang saya ikuti
$ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"$ unzip awscli-bundle.zip$ sudo ./awscli -bundle/install -i /usr/local/aws -b /usr/local/bin/aws
Catatan:di terminal Anda harus berada di folder AWS yang baru saja Anda buat
#6 Membuat sesuatu menggunakan CLI yang seharusnya ditampilkan di konsol AWS IoT
Sekarang kita akan membuat sesuatu di AWS IoT menggunakan perintah berikut
aws iot create-thing --thing-name "plantSystem"
Untuk info lebih lanjut lihat link
http://docs.aws.amazon.com/iot/latest/developerguide/create-thing.html
#7 Membuat Sertifikat
Untuk membuat dan mengaktifkan sertifikat yang Anda perlukan, berikan perintah berikut
aws iot create-keys-and-certificate --set-as-active --certificate-pem-outfile cert.pem --public-key-outfile publicKey.pem --private-key-outfile privateKey .pem
perintah ini akan membuat sertifikat(3 file pem) untuk Anda di folder AWS seperti yang ditunjukkan pada tangkapan layar di bawah
#8 Buat dan Lampirkan kebijakan AWS IoT ke Sertifikat Anda
Mulailah dengan membuat file json di folder AWS, menggunakan editor teks favorit Anda (saya lebih suka teks luhur 2) - beri nama file policy.json
{ "Versi":"2012-10-17", "Pernyataan":[{ "Efek":"Izinkan", "Tindakan":["iot:*"], "Sumber Daya":[ "*"] }]}
Kemudian salin tempel perintah berikut di editor teks Anda
aws iot create-policy --policy-name "PubSub" --policy-document file://./policy.json
#9 Lampirkan kebijakan ke sertifikat diikuti dengan melampirkan sertifikat ke perangkat
Berikan perintah di bawah ini satu demi satu
$aws iot attach-principal-policy --principal "arn:aws:iot:xxxxxxxxxxxxxxxxxxxxxxxxxxx" --policy-name "PubSub"$ aws iot attach-thing-principal --thing-name "PlantSystem" --prinsip "arn:aws:iot:xxxxxxxxxxxxxxxxxxxxxxxx"
Di sini cara mudah untuk mendapatkan sertifikat Anda jika Anda belum mencatatnya adalah pergi ke konsol AWS IoT, klik sertifikat Anda dan buka detail di sisi kanan layar Anda. Dari sini Anda dapat menyalin tempel arn ke teminal
Untuk info lebih lanjut, lihat dokumentasi di
http://docs.aws.amazon.com/iot/latest/developerguide/secure-communication.html
# 10 Memverifikasi/menguji penyiapan di komputer Anda dan mengujinya menggunakan MQTT.fx
Sekarang untuk mengklaim bahwa penyiapan telah selesai di komputer Anda, unduh dan instal MQTT.fx dari tautan di bawah untuk menguji apakah penyiapan berfungsi dan kami dapat menerbitkan dan berlangganan data melalui AWS IoT
http://mqttfx.jfx4ee.org/index.php/download
Untuk info pengaturan lebih lanjut dan untuk mengunduh sertifikat root, gunakan tautan di bawah ini
http://docs.aws.amazon.com/iot/latest/developerguide/verify-pub-sub.html
- di sini, di MQTT.fx Anda harus menyiapkan profil koneksi Anda
- dan tautkan sertifikat yang Anda unduh sebagai bagian dari langkah-langkah di atas
Berikut adalah video singkat yang menunjukkan bagaimana Anda dapat menguji penyiapan di komputer Anda yang dalam kasus saya adalah MAC menggunakan alat MQTT.fx.
Setelah Anda menyelesaikan dan menguji bahwa pengaturan Anda baik-baik saja, ikuti langkah-langkah di bawah ini untuk mengunggah sertifikat ke Arduino Yun
#11 Menyiapkan Arduino Yun untuk berkomunikasi dengan AWS IoT cloud
Download versi terbaru Arduino Yun SDK dari github dan unzip ke folder "Libraries" Arduino Anda
https://github.com/aws/aws-iot-device-sdk-arduino-yun
Jika Anda menggunakan Arduino Yun untuk pertama kalinya, ikuti petunjuk penyiapan di
https://www.arduino.cc/en/Guide/ArduinoYun
Pada dasarnya dengan menggunakan tautan, Anda akan mempelajari cara mengatur Arduino Yun untuk terhubung ke jaringan WiFi rumah.
Kemudian muat sketsa Contoh Proses Arduino IDE ke YUN Anda (File->Examples->Bridge -> Process), ini akan mengonfirmasi bahwa Yun memiliki akses ke internet
Masukkan file rootCA, kunci pribadi, dan sertifikat Anda ke dalam folder sertifikat seperti yang ditunjukkan pada tangkapan layar di bawah ini
Selanjutnya ubah codebase_upload.sh dan environment_setup.sh dan ganti [your_boards_IP] dengan alamat IP board Anda dan [your_boards_IP] dengan kata sandi Anda
Di terminal Anda jalankan perintah berikut untuk memberikan izin ke file .sh, ini akan memakan waktu sekitar 5-10 menit, yang memindahkan sertifikat dan menginstal mendistribusikan, python-openssl, pip, paho-mqtt di Yun. Ini adalah paket yang Anda perlukan untuk berkomunikasi dengan cloud AWS dari Yun Anda (alias disebut PlantSystem dalam kasus kami)
$chmod 755 codebase_upload.sh$./codebase_upload.sh$chmod 755 environment_setup.sh$./environment_setup.sh
Untuk penginstalan di Linux/Windows, ikuti tautan di
https://github.com/aws/aws-iot-device-sdk-arduino-yun#installation
Sekarang sebagai bagian dari pasangan berikutnya yang menggunakan AWS CLI, kita akan membuat tabel di DynamoDB untuk memposting data sensor
#12 Membuat peran IAM dan memberikan izin
Pada dasarnya untuk memasukkan data ke dalam tabel sensor DynamoDB yang akan kita buat sebagai bagian dari langkah berikutnya, kita perlu membuat aturan IoT yang akan bertindak atas pesan MQTT yang diterima oleh AWS, untuk ini kita perlu membuat peran dan memberikan itu perlu izin
Buat file json rolePolicy.json
{"Versi":"2012-10-17", "Pernyataan":[{ "Sid":"", "Effect":"Izinkan", "Principal":{ "Layanan":" iot.amazonaws.com" }, "Action":"sts:AssumeRole" }]}
dan untuk membuat peran, jalankan perintah berikut di terminal
aws iam create-role --role-name iot-actions-role --assume-role-policy-document file://./rolePolicy.json
Buat file json lain policy.json
{ "Versi":"2012-10-17", "Pernyataan":[{ "Efek":"Izinkan", "Tindakan":[ "dynamodb:*", "lambda:InvokeFunction"] , "Sumber Daya":["*"] }]}
lalu panggil create-policy dan tentukan dokumen kebijakan IAM
aws iam create-policy --policy-name iot-actions-policy --policy-document file://./policy.json
Dan terakhir lampirkan kebijakan ke peran menggunakan - ubah kebijakan-ARN ke ARN yang Anda terima sebagai bagian dari langkah sebelumnya
aws iam attach-role-policy --role-name iot-actions-role --policy-arn "arn:aws:xxxxxxxxxxxxx:policy/iot-action-policy"
http://docs.aws.amazon.com/iot/latest/developerguide/config-and-test-rules.html
#13 Menyiapkan tabel di DynamoDB di konsol AWS
Sebagai bagian dari langkah ini, kita akan membuat DynamoDB di konsol AWS
Nama Tabel :plantSensor
Kunci partisi :kunci
Sortir kunci :stempel waktu
dan juga atur unit kapasitas Baca dan Tulis Anda ke 1.
#14 Membuat aturan untuk memasukkan data ke dalam Tabel PlantSensor
Buat file json - plantdatarule.json (di sini ubah nilai roleArn di bagian bawah, buka IAM->Roles->iot-action-role untuk mendapatkan arn)
{ "sql":"SELECT * FROM 'topic/plantdata'", "ruleDisabled":false, "actions":[{ "dynamoDB":{ "tableName":"plantSensor", "hashKeyField" :"key", "hashKeyValue":"${topic(2)}", "rangeKeyField":"timestamp", "rangeKeyValue":"${timestamp()}", "roleArn":"arn:aws:iam ::XXXXXXXXXXXX:role/iot-actions-role" } }]}
kemudian jalankan perintah berikut di terminal Anda
aws iot create-topic-rule --rule-name plantDataToDynamoDB --topic-rule-payload file://./plantdatarule.json
Sekarang jika Anda membuka konsol AWS IoT, Anda akan melihat aturan yang dibuat bernama "PlantDataToDynamoDB" seperti yang ditunjukkan pada tangkapan layar di bawah ('' abaikan aturan pengiriman email ini sebagai bagian dari langkah-langkah di bawah ini.)
menggunakan MQTT.FX menjalankan tes cepat untuk melihat apakah catatan dibuat di tabel yang dibuat.
#15 Unggah sketsa Arduino untuk mempublikasikan data ke AWS IoT dari Yun
Di sini pertama-tama mulai dengan mengunduh library ArduinoJSON dari github di
https://github.com/bblanchon/ArduinoJson
Sekarang unduh file YunAWSIoTDynamoDB,ino, dan aws_iot_config.h dari bagian kode di bawah dan unggah ke Yun.
Buka monitor Serial Anda dan Anda akan melihat suhu, Nilai Cahaya, dan nilai kelembaban tanah yang diposting ke DynamoDB.
Jika Anda pernah menjadi AWS, Anda dapat melakukan semua hal yang luar biasa dengan menyiapkan fungsi Lambda dan memposting data kinesis ...
Catatan: Jika Anda berencana menjadikan ini sebagai penyiapan permanen, jangan lupa untuk meningkatkan penundaan di akhir loop , untuk menambah interval waktu pengeposan ke DynamoDB sehingga Anda tidak dikenakan biaya tambahan . Untuk informasi lebih lanjut tentang harga, lihat https://aws.amazon.com/iot/pricing/
#16 Menyiapkan aturan SNS AWS-IoT untuk menerima dan mengirim email jika nilai kelembapan tanah Anda berada di bawah ambang batas.
Pada dasarnya langkah ini mencakup penyiapan basis notifikasi SNS sederhana berdasarkan aturan AWS IoT.
Mulailah dengan menetapkan kebijakan berikut ke peran AWS (iot-action-role) yang Anda buat pada langkah sebelumnya di konsol IAM
-AmazonSNSRole
-AmazonSNSFullAccess
Setelah selesai di konsol SNS, buat Topik yang disebut sendMail dan buat langganan dan berikan konfigurasi email di ponsel Anda untuk mendapatkan pemberitahuan saat nilai kelembapan tanah RENDAH.
Sekarang kembali ke konsol AWS IoT dan menggunakan tombol +Buat Sumber Daya, buat aturan yang disebut Kirim Email dan berikan info berikut
- Nama :Kirim Email
- Atribut :mositValue(ini harus cocok dengan nilai json yang Anda posting sebagai bagian dari topik Anda dalam kode Arduino)
- Filter topik : topik/plantdata
- Kondisi :as moistval <250 (ini adalah nilai yang Anda tentukan dalam beberapa langkah pertama tutorial)
- Pilih Tindakan :kirim pesan sebagai SNS pemberitahuan push
- Target SNS :sendEmail
- Peran:iot-action-role
Setelah selesai, konsol Anda akan terlihat seperti tangkapan layar di bawah
Berikut adalah contoh email yang saya terima ketika saya melepas sensor kelembaban tanah dari segelas air
Untuk membaca lebih lanjut tentang AWS-SNS
https://aws.amazon.com/sns/faqs/
#15 Menyatukan bagian cetakan 3D dan menambahkannya ke pot.
Anda memerlukan sekrup dan mur 4x40 untuk memasang bagian cetak 3D poker tanah hitam ke bagian dasar Arduino Yun
Bagian atas cukup pas , di sini ingat untuk mengarahkan bukaan atas ke arah jendela Anda dan menyodok kelembapan Tanah di dalam pot. Dan aktifkan Yun dengan colokan kabel micro usb ke stopkontak.
Harap dicatat, saya masih menjelajahi dan belajar tentang dunia AWS yang luar biasa, dan kagum dengan fitur-fitur di konsol AWS, jadi jika Anda telah menggunakan AWS cukup lama, kirimkan komentar atau saran untuk fitur yang akan Anda miliki suka melihat/berlaku untuk proyek pemantauan pabrik. Terima kasih ..
Kode
- Nilai Kelembaban Tanah
- ArduinoYunDweetio
- ArduinoYunAWSIoTDynamodb
- aws_iot_config.h
NilaiKelembaban TanahArduino
Sketsa Arduino untuk menentukan nilai kelembaban tanah yang ideal untuk tanaman rumah Anda//@CarmelitoA -Proyek Pemantauan Tanaman Rumah menentukan nilai kelembaban tanahconst int moisturePin =A1; // Sensor kelembaban Grove terhubung ke A1 pada Grove Shieldconst int ledPin =2;int moistureValue =0;int tooDryValue =250;//ubah nilai ini berdasarkan apa yang Anda dapatkan denganvoid setup() {Serial.begin(9600); pinMode(ledPin,OUTPUT);digitalWrite(ledPin,LOW);}void loop() {moisturValue =analogRead(moisturePin);Serial.print("Sensor kelembapan =" );Serial.println(MoisturValue); //Periksa Nilainya dengan Pasir Kering lalu dengan Pasir Basah(Nilai Kelembaban ArduinoYunDweetioArduino
Memposting data Sensor ke dweet.io menggunakan Arduino Yun//Dibuat oleh @CarmelitoA untuk proyek Pemantauan Tanaman Rumah - mengunggah data ke dweet.io. (CC BY-SA https://creativecommons.org/licenses/by-sa/4.0/)#include #include #define SITE_URL "www.dweet.io"#include