Isi kandungan:
- Langkah 1: Komponen, Bekalan, Alat yang Diperlukan, Aplikasi dan Perkhidmatan Dalam Talian
- Langkah 2: Perkakasan
- Langkah 3: Senibina Penyelesaian
- Langkah 4: Perisian
- Langkah 5: Kesimpulannya
Video: MONITOR CLOUD Dengan AWS & ARDUINO - Electric Boy: 6 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:10
Ini adalah projek yang mudah - nyalakan apabila ada yang tidak kena … Menjadi semakin tidak senang dengan pemberitahuan dengan begitu banyak papan pemuka di komputer kita hari ini, bagaimana kita memastikan bahawa kita tidak ketinggalan yang penting. Jawapannya adalah petunjuk status fizikal. Atau lebih khusus untuk tugas, Monitor Cloud, yang boleh duduk di atas meja anda - selalu dilihat. Seperti namanya, monitor akan membantu mengawasi kesihatan perkhidmatan cloud anda (… atau apa-apa lagi, langit adalah hadnya, maafkan). Walaupun anda, seperti saya, perlu membuatnya? Walaupun tidak, anda mungkin mempunyai idea untuk projek IoT masa depan anda.
Sekiranya anda sudah bersedia, mari mulakan!
Langkah 1: Komponen, Bekalan, Alat yang Diperlukan, Aplikasi dan Perkhidmatan Dalam Talian
KOMPONEN DAN BEKALAN
_ Arduino Micro e Genuino Micro (1 unit) … atau Arduino kecil yang serasi - dalam kes saya freetronics LeoStick (https://www.freetronics.com.au/collections/arduino/products/leostick)
_ ThingM BlinkM - LED RGB terkawal I2C (1 unit)
_ Lampu awan mini (1 unit)… atau kapal lut cahaya pilihan anda
_ Kabel USB-A ke B (1 unit) … atau kabel USB lama dengan palam jenis-A
ALAT DIPERLUKAN
_ Pateri pematerian (generik)
PERKHIDMATAN APLIKASI & ONLINE
_ Perkhidmatan Web Amazon AWS Lambda (https://aws.amazon.com/it/lambda/)
_ Perkhidmatan Web Amazon AWS IoT (https://aws.amazon.com/it/iot/)
Langkah 2: Perkakasan
Lampu malam sudah dilengkapi dengan LED terpasang - putih sejuk dalam beg saya. Saya fikir akan menyenangkan untuk menunjukkan status yang berbeza dengan warna yang berbeza. Jadi saya hanya menyimpan selongsong berbentuk awan. Untuk otak operasi, saya memilih serasi Arduino terkecil yang saya ada: Freetronics LeoStick telah menjadi platform prototaip pilihan saya selama bertahun-tahun dan saya mempunyai banyak alat ganti. Ia dilengkapi dengan barang-barang yang baik: pembesar suara piezo, dua LED RGB (satu diikat dengan kuasa, walaupun RX dan TX) dan yang terbaik, anda hanya boleh memasangkannya ke port USB - tidak diperlukan FTDI atau kabel luaran. Ia juga serasi dengan papan roti kecil.
Mengapa saya tidak memilih ESP8266? Untuk benar-benar tanpa wayar, anda mungkin memotong kabel kuasa - yang menjadikan keadaan menjadi lebih rumit untuk menambahkan bateri dan ketidakcukupan pengisian. Oleh kerana monitor awan akan duduk di sebelah komputer saya, lebih mudah menggunakan kuasa USB. Menyiapkan sambungan Wi-Fi tidak selalu lurus ke hadapan. Berdasarkan ATmega32u4, Arduino Micro dan LeoStick berkongsi keanehan memiliki data I2C pada D2 dan jam pada D3. Ini menjadi relevan semasa menyambungkan BlinkM RGB LED. Tidak seperti papan Atmega328 biasa di mana anda hanya boleh memasang perisai BlinkM ke tajuk A2.. A5, ini tidak akan berfungsi di sini (saya tidak peduli dengan perpustakaan I2C yang lembut).
Dengan mematikan header lelaki VCC dan GND di BlinkM, saya kemudian dapat memanjangkannya dengan wayar dan menyimpan semuanya dalam pakej kecil yang boleh dipasang. BlinkM mempunyai pengawal mikro sendiri di atas kapal dan membolehkan aplikasi lanjutan: mis. main corak warna skrip tanpa disambungkan Arduino. Saya hampir merasakan WS2812 (Adafruits NeoPixels hebat) akan memberikan perkhidmatan yang lebih baik kepada saya - sayangnya saya tidak menyediakannya. Untuk menyelesaikan bit perkakasan, saya memotong hujung yang berlawanan dari palam USB jenis-A lelaki, memasukkannya melalui lubang pra-bor berhampiran pangkal cahaya awan dan menyisipkan wayar ke LeoStick (merah: 5V, putih: Data-, hijau: Data +, hitam: Tanah).
Langkah 3: Senibina Penyelesaian
Satu-satunya syarat kuat yang saya tetapkan pada diri saya, adalah agar monitor berjalan di belakang firewall. Walaupun ciri penting, ini menjadikan kait web untuk perubahan acara tidak praktikal. Mekanisme pengundian mahal dari segi lalu lintas TCP dan boleh menunda acara bergantung pada frekuensi pengundian.
Penyelesaiannya terdapat di WebSockets yang menyediakan komunikasi dupleks penuh. Perkhidmatan Amazon IoT menyediakan broker mesej yang menyokong MQTT melalui WebSockets. Ternyata, perkhidmatan boleh dipanggil tanpa perlu mengkonfigurasi Perkara, Bayangan, Dasar atau Peraturan.
Terdapat SDK peranti yang tersedia untuk Arduino Yún dan beberapa usaha dilakukan untuk memindahkan SDK ke platform lain seperti ESP8266. Tetapi kerana monitor akan selalu dihubungkan dengan antara muka bersiri, saya memutuskan sejak awal untuk mempunyai aplikasi NodeJS (dijalankan di komputer desktop) untuk menerapkan API klien dan menggunakan Arduino hanya untuk menerima dan memaparkan kod warna. Dengan cara itu perubahan dapat dilakukan dengan mudah dalam JavaScript, tanpa perlu bersusah payah dengan memuat naik firmware. Untuk menguji sedikit contoh infrastruktur diperlukan. Katakan kita mengaktifkan load balancer di zon ketersediaan yang melakukan pemeriksaan kesihatan pada contoh pelayan web dan dasar penskalaan automatik berdasarkan beban CPU. Templat CloudFormation yang sesuai boleh viewed ️ dilihat di Pereka atau ▶ ️ dibuat terus dari konsol. Catatan: beberapa perkhidmatan dalam timbunan ini mungkin dikenakan caj.
Saya memperluas templat dengan sifat untuk fungsi Lambda dan izin yang diperlukan. Nantinya memerlukan titik akhir API IoT REST dimasukkan sebagai parameter. Untuk mengotomatisasi ini, saya menulis skrip shell kecil yang menggunakan CLI untuk meminta ARN (> aws iot menggambarkan-endpoint) dan kemudian memanggil create-stack dengan parameter sebaris. Atau anda masih boleh 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} --Kapabiliti CAPABILITY_N
// DELETE STACK> aws cloudformation delete-stack --stack-nama MiniCloudMonitor
Sebaik-baiknya saya harus menggunakan ambang penggera yang sama yang mencetuskan penskalaan automatik, kerana juga memanggil fungsi Lambda dan dengan cara itu mengemas kini status monitor. Pada masa ini, ini hanya dapat dilakukan apabila menggunakan SNS sebagai perantaraan. Pada masa ini lapisan tambahan ini terasa berlebihan dan saya memutuskan untuk menggunakan Peraturan kitaran hidup CloudWatch EC2 untuk menghubungi Lambda secara langsung. Namun, saya ingin meneroka pilihan SNS → Lambda pada masa akan datang.
Langkah 4: Perisian
Saya mulakan dengan menulis Sketsa Arduino. Gelung utama () membaca Chars dari sambungan bersiri dan membina String sehingga menerima watak barisan baru. Kemudian diandaikan bahawa kod warna hex telah dikirim dan perintah I2C yang sesuai ditulis ke LED BlinkM. Ini bukan mengenai kecekapan dan kemudahan. Sumber lengkap untuk Sketsa ini dan fail lain boleh didapati di GitHub. Berikut adalah beberapa coretan kod yang berkaitan:
gelung kosong () {
sementara (Bersiri. tersedia ()) {
char inChar = (char) Serial.read ();
jika (dalamChar == '\ n') {
nombor panjang = strtol (inputString.c_str (), NULL, 16);
bait r = nombor >> 16;
bait g = nombor >> 8 & 0xFF;
bait b = nombor & 0xFF;
BlinkM_fadeToRGB (blinkm_addr, r, g, b);
inputString = "";
} lain {
inputString + = inChar;
}
}
}
Aplikasi NodeJS harus melaksanakan antara muka ke AWS dan Arduino. Kemudian dapat dicapai hanya dalam beberapa baris kod ketika menggunakan paket serialport yang sangat baik:
var serialport = memerlukan ('serialport'); port = serialport baru (PORT_COM_NAME, {
baudRate: SERIAL_BAUD_RATE
});
port.on ('buka', fungsi () {
});
port.on ('error', fungsi (err) {
});
Menyambung ke AWS IoT tidak memerlukan banyak usaha. Satu-satunya masalah adalah mengetahui bahawa menggunakan MQTT + WebSockets melalui port 443 memerlukan pengesahan melalui Kunci Akses. SDK akan membaca ini dari pemboleh ubah persekitaran. Mungkin perlu eksport AWS_ACCESS_KEY_ID dan AWS_SECRET_ACCESS_KEY secara eksplisit.
var awsiot = memerlukan ('aws-iot-device-sdk'); var device = awsiot.device ({
clientId: 'MiniCloudMonitor-' + (Math.floor ((Math.random () * 100000) + 1)), wilayah: AWS_REGION, protokol: 'wss', pelabuhan: 443, debug: benar
});
device.on ('connect', fungsi () {
device.subscribe (MQTT_TOPIC);
});
device.on ('message', fungsi (topik, muatan) {
jika (port && payload && topic == MQTT_TOPIC) {
var message = JSON.parse (muatan);
jika (message.hasOwnProperty (MQTT_JSON_KEY))
{kembali;
}
}
});
Fungsi Lambda menerima kod warna sebagai parameter input - tidak cantik, tetapi sangat fleksibel pada tahap ini. Untuk dapat menerbitkan ke topik MQTT, ia membuat objek IotData, yang memerlukan titik akhir API IoT REST. Templat CloudFormation menjaganya semasa membuat timbunan.
var AWS = memerlukan ('aws-sdk'); var mqtt = AWS. IotData baru ({
titik akhir: process.env. MQTT_ENDPOINT});
export.handler = fungsi (peristiwa, konteks, panggilan balik) {
var params = {
topic: process.env. MQTT_TOPIC, muatan: '{ "color \": / "' + event.colour + '\"}', qos: 0
};
mqtt.publish (params, function (err, data) {
panggilan balik (err);
});
};
Langkah 5: Kesimpulannya
Saya benar-benar menikmati membawa acara maya "dilahirkan" di awan ke dalam dunia fizikal. Dan sebagai projek haiwan kesayangan saya, ia sangat menyenangkan. Untuk membawa ini ke tahap seterusnya saya akan mempertimbangkan …
- meningkatkan kekuatan dan pengendalian pengecualian
- terokai kaedah yang lebih baik untuk mengintegrasikan metrik awan AWS
- bereksperimen dengan lebih banyak petunjuk fizikal seperti tolok, graf bar,…
- mempunyai pilihan untuk berpindah ke platform lain seperti Azure, Google, Heroku,…
- memantau acara khusus aplikasi untuk Jenkins, GitHub,…
Saya harap anda seronok membaca panduan ini dan mungkin juga mengambil sesuatu yang baru di sepanjang perjalanan. Sekiranya anda dapat memikirkan cara yang berbeza / lebih baik untuk melakukan sesuatu, sila kongsikannya di komen di bawah. Dan tentu saja, jika anda melihat kesalahan, perhatian akan sangat dihargai. Terima kasih kerana meluangkan masa anda.
Disyorkan:
Pemantauan Suhu & Kelembapan Bilik Dengan ESP32 dan AskSensors Cloud: 6 Langkah
Pemantauan Suhu & Kelembapan Bilik Dengan ESP32 dan AskSensors Cloud: Dalam tutorial ini anda akan belajar bagaimana memantau suhu dan kelembapan bilik atau meja anda menggunakan DHT11 dan ESP32 yang disambungkan ke awan. Kemas kini tutorial kami boleh didapati di sini. DHT11 Spesifikasi: Sensor DHT11 dapat mengukur suhu
Pemantauan Suhu & Kelembapan Menggunakan ESP-01 & DHT dan AskSensors Cloud: 8 Langkah
Pemantauan Suhu & Kelembapan Menggunakan ESP-01 & DHT dan AskSensors Cloud: Dalam arahan ini kita akan belajar bagaimana memantau suhu dan pengukuran kelembapan menggunakan papan IOT-MCU / ESP-01-DHT11 dan AskSensors IoT Platform . Saya memilih modul IOT-MCU ESP-01-DHT11 untuk aplikasi ini kerana
Monitor Cuaca M5Stack M5stick C Berbasis ESP32 Dengan DHT11 - Pantau Indeks Kelembapan & Haba Suhu pada M5stick-C Dengan DHT11: 6 Langkah
Monitor Cuaca Berasaskan ESP32 M5Stack M5stick C Dengan DHT11 | Pantau Indeks Kelembapan Suhu & Panas pada M5stick-C Dengan DHT11: Hai kawan-kawan, dalam instruksi ini kita akan belajar bagaimana menghubungkan antara sensor suhu DHT11 dengan m5stick-C (papan pengembangan oleh m5stack) dan memaparkannya pada paparan m5stick-C. Jadi dalam tutorial ini kita akan membaca suhu, kelembapan & panas saya
Jimat Air & Wang Dengan Monitor Air Mandi: 15 Langkah (dengan Gambar)
Jimat Air & Wang Dengan Monitor Air Mandi: Mana yang menggunakan lebih banyak air - mandi atau mandi? Saya baru-baru ini memikirkan soalan ini, dan saya menyedari bahawa saya sebenarnya tidak tahu berapa banyak air yang digunakan semasa saya mandi. Saya tahu ketika saya mandi kadang-kadang fikiran saya berkeliaran, memikirkan perasaan
Stesen Angin untuk Luncur Angin Berdasarkan MQTT & AWS: 3 Langkah (dengan Gambar)
Wind Station untuk Windsurfing Berdasarkan MQTT & AWS: Di Shenzhen, terdapat banyak pantai yang indah. Pada musim panas, sukan yang paling saya gemari ialah berlayar. Untuk sukan pelayaran, saya masih menjadi permulaan, saya suka perasaan air laut menyentuh wajah saya, dan banyak lagi, saya mendapat banyak kawan baru dengan sukan ini. Tetapi