Daftar Isi:
- Langkah 1: Komponen, Perlengkapan, Alat yang Dibutuhkan, Aplikasi, dan Layanan Online
- Langkah 2: Perangkat Keras
- Langkah 3: Arsitektur Solusi
- Langkah 4: Perangkat Lunak
- Langkah 5: Kesimpulan
Video: CLOUD MONITOR Dengan AWS & ARDUINO - Electric Boy: 6 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:57
Ini adalah proyek sederhana - nyalakan lampu saat ada yang tidak beres… Menjadi semakin mati rasa terhadap notifikasi dengan begitu banyak dasbor di komputer kita akhir-akhir ini, bagaimana kita bisa memastikan bahwa kita tidak melewatkan yang sangat penting. Jawabannya adalah indikator status fisik. Atau lebih spesifik untuk tugas tersebut, Cloud Monitor, yang dapat diletakkan di meja Anda - selalu terlihat. Seperti namanya, monitor akan membantu mengawasi kesehatan layanan cloud Anda (…atau apa pun, langit adalah batasnya, maafkan permainan kata-kata). Bahkan Anda, seperti saya, perlu membuatnya? Bahkan jika tidak, Anda mungkin memiliki ide untuk proyek IoT masa depan Anda.
Nah, jika Anda sudah siap, mari kita mulai!
Langkah 1: Komponen, Perlengkapan, Alat yang Dibutuhkan, Aplikasi, dan Layanan Online
KOMPONEN DAN PERSEDIAAN
_ Arduino Micro e Genuino Micro (1 unit) …atau Arduino bertubuh kecil yang kompatibel - dalam kasus saya freetronics LeoStick (https://www.freetronics.com.au/collections/arduino/products/leostick)
_ ThingM BlinkM - LED RGB Terkendali I2C (1 unit)
_ Mini cloud light (1 unit) …atau bejana tembus pandang lainnya sesuai pilihan Anda
_ Kabel USB-A ke B (1 unit) …atau kabel USB lama apa pun dengan colokan tipe-A
ALAT YANG DIBUTUHKAN
_ Besi solder (generik)
APLIKASI & LAYANAN ONLINE
_ Layanan Web Amazon AWS Lambda (https://aws.amazon.com/it/lambda/)
_ Amazon Web Services AWS IoT (https://aws.amazon.com/it/iot/)
Langkah 2: Perangkat Keras
Lampu malam sudah dilengkapi dengan LED built-in - putih dingin dalam kasus saya. Saya pikir akan lebih baik untuk menunjukkan status yang berbeda dengan warna yang berbeda. Jadi saya hanya menyimpan casing berbentuk awan. Untuk otak operasi saya memilih Arduino terkecil yang kompatibel yang saya miliki: Freetronics LeoStick telah menjadi platform prototyping pilihan saya selama bertahun-tahun dan saya memiliki banyak cadangan. Muncul dengan barang-barang bagus: speaker piezo, dua LED RGB (satu terhubung ke daya, RX dan TX) dan yang terbaik, Anda cukup mencolokkannya ke port USB - tidak perlu FTDI atau kabel eksternal. Ini juga kecil namun kompatibel dengan papan tempat memotong roti.
Mengapa saya tidak memilih ESP8266? Agar benar-benar nirkabel, Anda sebaiknya memotong kabel daya - yang membuat segalanya sedikit lebih rumit untuk menambahkan baterai dan ketidaknyamanan pengisian ulang. Karena monitor cloud akan berada di sebelah komputer saya, jauh lebih mudah menggunakan daya USB. Juga mengatur koneksi Wi-Fi tidak selalu lurus ke depan. Berdasarkan ATmega32u4, Mikro Arduino dan LeoStick berbagi keanehan memiliki data I2C pada D2 dan jam pada D3. Ini menjadi relevan saat menghubungkan LED RGB BlinkM. Berbeda dengan papan Atmega328 umum di mana Anda cukup mencolokkan pelindung BlinkM ke header A2.. A5, ini tidak akan berfungsi di sini (saya tidak peduli dengan perpustakaan I2C yang lembut).
Dengan melepas solder header laki-laki VCC dan GND pada BlinkM, saya kemudian dapat memperpanjangnya dengan kabel dan menyimpan semuanya dalam paket kecil yang dapat dicolokkan. BlinkM memiliki pengontrol mikro sendiri dan memungkinkan untuk aplikasi tingkat lanjut: mis. bermain pola warna scripted tanpa Arduino terhubung. Saya hampir merasa WS2812 (Adafruits NeoPixels hebat) akan melayani saya lebih baik - sayangnya saya tidak memilikinya. Untuk menyelesaikan bit perangkat keras, saya memotong ujung yang berlawanan dari colokan USB tipe-A laki-laki, memasangnya melalui lubang yang sudah dibor di dekat dasar cahaya awan dan menyolder kabel ke LeoStick (merah: 5V, putih: Data-, hijau:Data+, hitam:Ground).
Langkah 3: Arsitektur Solusi
Satu-satunya persyaratan kuat yang saya terapkan pada diri saya sendiri, adalah membuat monitor berjalan di belakang firewall. Meskipun merupakan fitur penting, ini membuat kait web untuk perubahan acara menjadi tidak praktis. Mekanisme polling mahal dalam hal lalu lintas TCP dan dapat menunda acara tergantung pada frekuensi polling.
Solusinya ditemukan di WebSockets yang menyediakan komunikasi dupleks penuh. Layanan Amazon IoT menyediakan broker pesan yang mendukung MQTT melalui WebSockets. Ternyata, layanan dapat dipanggil tanpa harus mengonfigurasi Hal, Bayangan, Kebijakan, atau Aturan.
Ada perangkat SDK yang tersedia untuk Arduino Yún dan beberapa upaya dilakukan untuk porting SDK ke platform lain seperti ESP8266. Tetapi karena monitor akan selalu terhubung dengan antarmuka serial, saya memutuskan sejak awal untuk memiliki aplikasi NodeJS (dijalankan di komputer desktop) untuk mengimplementasikan API klien dan menggunakan Arduino hanya untuk menerima dan menampilkan kode warna. Dengan begitu perubahan dapat dilakukan dengan mudah di JavaScript, tanpa harus repot dengan upload firmware. Untuk pengujian diperlukan sedikit contoh infrastruktur. Katakanlah kita memiliki penyeimbang beban yang diaktifkan di seluruh zona ketersediaan yang melakukan pemeriksaan kesehatan pada instance server web dan kebijakan penskalaan otomatis berdasarkan beban CPU. Template CloudFormation yang sesuai dapat ️ dilihat di Perancang atau ️ dibuat langsung dari konsol. Catatan: beberapa layanan dalam tumpukan ini mungkin dikenakan biaya.
Saya memperluas templat dengan properti untuk fungsi Lambda dan izin yang diperlukan. Kemudian memerlukan titik akhir IoT REST API untuk dimasukkan sebagai parameter. Untuk mengotomatisasi ini, saya menulis skrip shell kecil yang menggunakan CLI untuk meminta ARN (> aws iot explain-endpoint) dan kemudian memanggil create-stack dengan parameter in-line. Atau Anda masih bisa melakukannya dengan tangan:
// RETRIVE IoT REST API ENDPOINT
aws iot menggambarkan-titik akhir
// CREATE STACK> aws cloudformation create-stack --stack-name MiniCloudMonitor --template-body file://cfn-template.json --parameters ParameterKey=IotRestApiEndpoint, ParameterValue={IoT_REST_API_ENDPOINT} --capabilities CAPABILITY_NAMED_IAM
// DELETE STACK> aws cloudformation delete-stack --stack-name MiniCloudMonitor
Idealnya saya harus menggunakan ambang alarm yang sama yang memicu penskalaan otomatis, untuk juga memanggil fungsi Lambda dan dengan cara itu memperbarui status monitor. Saat ini ini hanya mungkin bila menggunakan SNS sebagai perantara. Pada saat lapisan ekstra ini terasa berlebihan dan saya memutuskan untuk menggunakan Aturan siklus hidup CloudWatch EC2 untuk memanggil Lambda secara langsung. Namun, saya ingin menjelajahi opsi SNS → Lambda di masa mendatang.
Langkah 4: Perangkat Lunak
Saya mulai dengan menulis Arduino Sketch. Loop utama() membaca Karakter dari koneksi serial dan membangun sebuah String hingga menerima karakter baris baru. Kemudian diasumsikan kode warna hex telah dikirim dan perintah I2C yang sesuai ditulis ke LED BlinkM. Ini bukan tentang efisiensi sebagai kenyamanan. Sumber lengkap untuk Sketch ini dan file lainnya dapat diperoleh di GitHub. Berikut adalah beberapa cuplikan kode yang relevan:
lingkaran kosong() {
while (Serial.available()) {
char inChar = (char)Serial.read();
if (inChar == '\n') {
angka panjang = strtol(inputString.c_str(), NULL, 16);
byte r = angka >> 16;
byte g = angka >> 8 & 0xFF;
byte b = angka & 0xFF;
BlinkM_fadeToRGB(blinkm_addr, r, g, b);
inputString = "";
} lain {
inputString += inChar;
}
}
}
Aplikasi NodeJS harus mengimplementasikan antarmuka ke AWS dan Arduino. Nanti dapat diselesaikan hanya dalam beberapa baris kode saat menggunakan paket serialport yang sangat baik:
var serialport = membutuhkan('serialport');port = serialport baru(PORT_COM_NAME, {
baudRate: SERIAL_BAUD_RATE
});
port.on('buka', fungsi() {
});
port.on('kesalahan', fungsi(err) {
});
Menghubungkan ke AWS IoT juga tidak membutuhkan banyak usaha. Satu-satunya perangkap adalah mengetahui bahwa menggunakan MQTT+WebSockets melalui port 443 memerlukan otentikasi melalui Access Keys. SDK akan membaca ini dari variabel lingkungan. Mungkin perlu mengekspor AWS_ACCESS_KEY_ID dan AWS_SECRET_ACCESS_KEY secara eksplisit.
var awsiot = membutuhkan('aws-iot-device-sdk');var perangkat = awsiot.device({
clientId: 'MiniCloudMonitor-' + (Math.floor((Math.random() * 100000) + 1)), wilayah: AWS_REGION, protokol: 'wss', pelabuhan: 443, debug: benar
});
device.on('koneksi', function() {
perangkat.berlangganan(MQTT_TOPIC);
});
device.on('pesan', fungsi(topik, muatan) {
if (port && payload && topik == MQTT_TOPIC) {
var pesan = JSON.parse(payload);
jika (message.hasOwnProperty(MQTT_JSON_KEY))
{ kembali;
}
}
});
Fungsi Lambda menerima kode warna sebagai parameter input - tidak cantik, tetapi sangat fleksibel pada tahap ini. Untuk dapat memublikasikan ke topik MQTT, itu membuat instance objek IotData, yang memang memerlukan titik akhir IoT REST API. Template CloudFormation menanganinya selama pembuatan tumpukan.
var AWS = membutuhkan('aws-sdk');var mqtt = new AWS. IotData({
titik akhir: process.env. MQTT_ENDPOINT});
export.handler = function(acara, konteks, panggilan balik) {
parameter var = {
topik: process.env. MQTT_TOPIC, payload: '{"color\":\"' + event.color + '\"}', qos: 0
};
mqtt.publish(params, function(err, data) {
panggilan balik(err);
});
};
Langkah 5: Kesimpulan
Saya benar-benar menikmati membawa acara virtual "lahir" di awan ke dunia fisik. Dan sebagai proyek hewan peliharaan kecil saya, itu sangat menyenangkan. Untuk membawa ini ke tingkat berikutnya saya akan mempertimbangkan …
- meningkatkan ketahanan dan penanganan pengecualian
- jelajahi cara yang lebih baik untuk mengintegrasikan metrik cloud AWS
- bereksperimen dengan lebih banyak indikator fisik seperti pengukur, grafik batang, …
- memiliki opsi untuk pindah ke platform lain seperti Azure, Google, Heroku, …
- pantau acara khusus aplikasi untuk Jenkins, GitHub, …
Saya harap Anda menikmati membaca panduan ini dan bahkan mungkin mengambil sesuatu yang baru di sepanjang jalan. Jika Anda dapat memikirkan cara yang berbeda/lebih baik untuk melakukan sesuatu, silakan bagikan di komentar di bawah. Dan tentu saja, jika Anda melihat kesalahan, peringatan akan sangat dihargai. Terima kasih atas waktunya.
Direkomendasikan:
Pemantauan Suhu & Kelembaban Ruangan Dengan ESP32 dan AskSensors Cloud: 6 Langkah
Pemantauan Suhu & Kelembaban Ruangan Dengan ESP32 dan AskSensors Cloud: Dalam tutorial ini Anda akan mempelajari cara memantau suhu dan kelembaban ruangan atau meja Anda menggunakan DHT11 dan ESP32 yang terhubung ke cloud. Pembaruan tutorial kami dapat ditemukan di sini.DHT11 Spesifikasi:Sensor DHT11 mampu mengukur suhu
Pemantauan Suhu & Kelembaban Menggunakan ESP-01 & DHT dan AskSensors Cloud: 8 Langkah
Pemantauan Suhu & Kelembaban Menggunakan ESP-01 & DHT dan AskSensors Cloud: Dalam instruksi ini kita akan mempelajari cara memantau pengukuran suhu dan kelembaban menggunakan papan IOT-MCU/ESP-01-DHT11 dan Platform IoT AskSensors .Saya memilih modul IOT-MCU ESP-01-DHT11 untuk aplikasi ini karena
Monitor Cuaca M5Stack M5stick C Berbasis ESP32 Dengan DHT11 - Pantau Suhu Kelembaban & Indeks Panas pada M5stick-C Dengan DHT11: 6 Langkah
Monitor Cuaca M5Stack M5stick C Berbasis ESP32 Dengan DHT11 | Memantau Suhu Kelembaban & Indeks Panas pada M5stick-C Dengan DHT11: Hai teman-teman, dalam instruksi ini kita akan belajar bagaimana menghubungkan sensor suhu DHT11 dengan m5stick-C (papan pengembangan oleh m5stack) dan menampilkannya di layar m5stick-C. Jadi dalam tutorial ini kita akan membaca suhu, kelembaban & panas aku
Hemat Air & Uang Dengan Pancuran Air Monitor: 15 Langkah (dengan Gambar)
Hemat Air & Uang Dengan Pancuran Air Monitor: Mana yang menggunakan lebih banyak air - mandi atau pancuran? Saya baru-baru ini memikirkan pertanyaan ini, dan saya menyadari bahwa saya sebenarnya tidak tahu berapa banyak air yang digunakan ketika saya mandi. Saya tahu ketika saya di kamar mandi kadang-kadang pikiran saya mengembara, memikirkan sesuatu yang keren
Stasiun Angin untuk Selancar Angin Berbasis MQTT& AWS: 3 Langkah (dengan Gambar)
Stasiun Angin untuk Selancar Angin Berdasarkan MQTT& AWS: Di Shenzhen, ada banyak pantai yang indah. Di musim panas, olahraga yang paling saya sukai adalah berlayar. Untuk olahraga berlayar, saya masih pemula, saya suka perasaan air laut yang menyentuh wajah saya, dan lebih banyak lagi, saya mendapat banyak teman baru dengan olahraga ini