Mundarija:
- 1 -qadam: Komponentlar, materiallar, kerakli vositalar, ilovalar va onlayn xizmat
- 2 -qadam: Uskuna
- 3 -qadam: Yechim arxitekturasi
- 4 -qadam: dasturiy ta'minot
- 5 -qadam: Xulosa
Video: AWS & ARDUINO bilan CLOUD MONITOR - Elektr bola: 6 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:26
Bu oddiy loyiha - biror narsa noto'g'ri ketganda, chiroqni yoqing … Hozirgi kunda kompyuterlarimizda juda ko'p boshqaruv paneli bo'lgan bildirishnomalar tobora xiralashib borayotganida, biz haqiqatan ham muhimlarini o'tkazib yubormasligimizga qanday ishonch hosil qilishimiz mumkin. Javob jismoniy holat ko'rsatkichidir. Yoki vazifangizga aniqroq, ish stolida o'tirishi mumkin bo'lgan Cloud Monitor - har doim ko'z oldida. Nomidan ko'rinib turibdiki, monitor sizning bulutli xizmatlaringizning sog'lig'ini kuzatishga yordam beradi (yoki boshqa biror narsa, osmon - bu chegara, uzrni uzr). Hatto siz ham, menga o'xshab, buni qilishingiz kerakmi? Hatto bo'lmasa ham, siz kelajakdagi IoT loyihasi haqida tasavvurga ega bo'lishingiz mumkin.
Xo'sh, agar siz tayyor bo'lsangiz, boshlaylik!
1 -qadam: Komponentlar, materiallar, kerakli vositalar, ilovalar va onlayn xizmat
KOMPONENTLAR VA TA'MINOTLAR
_ Arduino Micro e Genuino Micro (1 birlik)… yoki Arduino -ga mos keladigan har qanday mayda -chuyda - mening holatimda LeoStick freetronics (https://www.freetronics.com.au/collections/arduino/products/leostick)
_ ThingM BlinkM - I2C boshqariladigan RGB LED (1 birlik)
_ Mini bulutli yorug'lik (1 birlik)… yoki siz tanlagan boshqa shaffof idish
_ USB-A-B kabeli (1 dona)… yoki A tipidagi vilkasi bo'lgan har qanday eski USB kabeli
QUROLLARGA KERAK
_ Lehimlash temir (umumiy)
Ilovalar va ONLAYN XIZMAT
_ Amazon Web Services AWS Lambda (https://aws.amazon.com/it/lambda/)
_ Amazon Web Services AWS IoT (https://aws.amazon.com/it/iot/)
2 -qadam: Uskuna
Tungi yorug'lik allaqachon o'rnatilgan LED bilan keladi - mening holatimda sovuq oq. Men har xil rangdagi maqomni ko'rsatish yaxshi bo'lardi deb o'yladim. Shunday qilib, men faqat bulut shaklidagi korpusni saqladim. Miya operatsiyasi uchun men mavjud bo'lgan eng kichik Arduino moslamasini tanladim: Freetronics LeoStick ko'p yillar davomida mening afzal ko'rgan prototiplash platformam bo'lib kelgan va menda zaxiralar ko'p. U yaxshi narsalar bilan ta'minlangan: piezo karnay, ikkita RGB LED (bittasi quvvatga ulangan, RX va TX) va eng yaxshisi, uni USB portiga ulashingiz mumkin - tashqi FTDI yoki kabel kerak emas. Bundan tashqari, u kichik, ammo non paneli bilan mos keladi.
Nega men ESP8266 ni tanlamadim? Haqiqatan ham simsiz bo'lish uchun siz elektr simini kesib qo'yishingiz mumkin - bu batareyani qo'shish va zaryadlashda noqulaylik tug'diradi. Bulutli monitor mening kompyuterim yonida joylashgani uchun USB quvvatidan foydalanish ancha oson. Armeino Micro va LeoStick ATmega32u4-ga asoslanib, D2-da I2C ma'lumotlarini va D3-da soatni ishlatishning g'alati tomonlarini bo'lishadi. Bu BlinkM RGB LEDini ulashda dolzarb bo'lib qoladi. A2.. A5 sarlavhalariga BlinkM qalqonini ulashingiz mumkin bo'lgan oddiy Atmega328 platalaridan farqli o'laroq, bu erda ishlamaydi (men yumshoq I2C kutubxonasi bilan bezovta qilmaganman).
BlinkM-da erkak VCC va GND sarlavhalarini ajratib, men simli simlarni uzaytira olaman va hamma narsani ulanadigan kichik paketda saqlay olaman. Arduino ulanmagan holda skriptli rang naqshlarini o'ynang. Men deyarli WS2812 (Adafruits NeoPixels ajoyib) menga yaxshiroq xizmat qilganini his qilardim - afsuski, menda yo'q edi. Uskuna bitini tugatish uchun men erkak A tipidagi USB vilkasining qarama-qarshi uchini kesib, bulut nuri tagida oldindan ochilgan teshikdan o'tkazdim va simlarni LeoStickga lehimladim (qizil: 5V, oq: Ma'lumotlar-, yashil: Ma'lumotlar+, qora: Zamin).
3 -qadam: Yechim arxitekturasi
Men o'zimga qo'ygan yagona kuchli talab - bu monitorni xavfsizlik devori orqasida ishlashi edi. Garchi bu muhim xususiyat bo'lsa -da, bu voqealarni o'zgartirish uchun veb -kancalarni amaliy bo'lmagan holga keltirdi. Ovoz berish mexanizmi TCP trafigi uchun qimmatga tushadi va so'rov chastotasiga qarab voqealarni kechiktirishi mumkin.
Yechim to'liq dupleks aloqani ta'minlaydigan WebSockets-da mavjud. Amazons IoT xizmati WebSockets orqali MQTT -ni qo'llab -quvvatlaydigan xabarlar brokerini taqdim etadi. Ma'lum bo'lishicha, xizmatni narsalar, soyalar, siyosatlar yoki qoidalarni sozlashsiz chaqirish mumkin.
Arduino Yún uchun SDK qurilmasi mavjud va SDKni ESP8266 kabi boshqa platformalarga ko'chirishga harakat qilinadi. Ammo monitor har doim ketma -ket interfeys orqali ulanishi sababli, men mijoz API -ni amalga oshirish va Arduino -dan faqat rang kodlarini qabul qilish va ko'rsatish uchun NodeJS dasturini (ish stolida ishlaydigan kompyuter) o'rnatishga erta qaror qildim. Shunday qilib, dasturiy ta'minotni yuklash bilan ovora bo'lmasdan, JavaScript -ga o'zgartirishlar kiritish mumkin. Aytaylik, bizda yuklarni muvozanatlash vositasi mavjud bo'lib, u veb -server misolida sog'lig'ini tekshiradi va protsessor yuklanishiga asoslangan avtomatik o'lchov siyosatini bajaradi. Tegishli CloudFormation shablonini ▶ ️ Dizaynerda ko'rish yoki ▶ ️ to'g'ridan -to'g'ri konsoldan yaratish mumkin. Eslatma: bu to'plamdagi ba'zi xizmatlar uchun haq olinishi mumkin.
Men shablonni Lambda funktsiyasi va kerakli ruxsatnomalar bilan kengaytirdim. Keyinchalik IoT REST API so'nggi nuqtasini parametr sifatida kiritish talab qilinadi. Buni avtomatlashtirish uchun men CLI yordamida ARN (> aws iot description-endpoint) so'rovini yuborish uchun kichik qobiq skriptini yozdim va keyin in-line parametri bilan create-stack-ni chaqiraman. Yoki siz hali ham qo'l bilan qilishingiz mumkin:
// IoT REST API NUQTASINI RETRIVE
aws iot tavsif-oxirgi nuqta
// CREATE STACK> aws bulutli ma'lumot yaratish-stack-stack-nomi MiniCloudMonitor --template-body fayl: //cfn-template.json --parameters ParameterKey = IotRestApiEndpoint, ParameterValue = {IoT_REST_API_ENDPOINT}-imkoniyatlar imkoniyatlari.
// STAKNI O'CHIRISH> aws bulutli ma'lumotlarni o'chirish-stack-stack-nomi MiniCloudMonitor
Ideal holda, Lambda funktsiyasini chaqirish va shu tarzda monitor holatini yangilash uchun avtomatik miqyosni ishga tushiradigan signal chegaralarini ishlatishim kerak. Hozirgi vaqtda bu faqat SNSni qidiruv vositasi sifatida ishlatganda mumkin. O'sha paytda bu qo'shimcha qatlam keraksiz bo'lib qoldi va men Lambda -ga to'g'ridan -to'g'ri qo'ng'iroq qilish uchun CloudWatch EC2 hayot aylanish qoidalarini ishlatishga qaror qildim. Shunga qaramay, men kelajakda SNS → Lambda variantini o'rganmoqchiman.
4 -qadam: dasturiy ta'minot
Men Arduino eskizini yozishni boshladim. Asosiy tsikl () - Charsni ketma -ket ulanishdan o'qish va yangi satr belgisini olmaguncha String yaratish. Keyin o'n oltilik rang kodi yuborilgan deb taxmin qilinadi va tegishli I2C buyrug'i BlinkM LED -ga yoziladi. Bu qulaylik emas, balki samaradorlik haqida emas. Ushbu eskiz va boshqa fayllarning to'liq manbalarini GitHub -da olish mumkin. Quyida tegishli kod parchalari keltirilgan:
void loop () {
while (Serial.available ()) {
char inChar = (char) Serial.read ();
agar (inChar == '\ n') {
uzun raqam = strtol (inputString.c_str (), NULL, 16);
bayt r = raqam >> 16;
bayt g = raqam >> 8 & 0xFF;
bayt b = raqam & 0xFF;
BlinkM_fadeToRGB (blinkm_addr, r, g, b);
inputString = "";
} boshqa {
inputString += inChar;
}
}
}
NodeJS ilovasi AWS va Arduino interfeyslarini amalga oshirishi kerak. Keyinchalik mukammal ketma -ket paketdan foydalanganda bir nechta kod satrlarida bajarish mumkin:
var serialport = talab ('serialport'); port = yangi serialport (PORT_COM_NAME, {
baudRate: SERIAL_BAUD_RATE
});
port.on ("ochiq", function () {
});
port.on ('xato', funktsiya (xato) {
});
AWS IoT -ga ulanish ham ko'p harakat talab qilmaydi. 443 -port orqali MQTT+WebSockets -dan foydalanish kirish kalitlari orqali autentifikatsiyani talab qilishini bilishning yagona yo'li. SDK ularni atrof -muhit o'zgaruvchilaridan o'qiydi. AWS_ACCESS_KEY_ID va AWS_SECRET_ACCESS_KEY -ni aniq eksport qilish kerak bo'lishi mumkin.
var awsiot = talab ('aws-iot-device-sdk'); var device = awsiot.device ({
clientId: 'MiniCloudMonitor-' + (Math.floor ((Math.random () * 100000) + 1)), mintaqa: AWS_REGION, protokol: "wss", port: 443, disk raskadrovka: rost
});
device.on ("ulanish", function () {
device.subscribe (MQTT_TOPIC);
});
device.on ('xabar', funktsiya (mavzu, yuk) {
agar (port va& yuk yuki && mavzu == MQTT_TOPIC) {
var message = JSON.parse (yuk);
agar (message.hasOwnProperty (MQTT_JSON_KEY))
{qaytish;
}
}
});
Lambda funktsiyasi rang kodini kirish parametri sifatida qabul qiladi - bu bosqichda juda chiroyli emas, lekin juda moslashuvchan. MQTT mavzusida nashr qilish uchun u IotData ob'ektini yaratadi, buning uchun IoT REST API so'nggi nuqtasi kerak bo'ladi. CloudFormation shabloni, bu to'plamni yaratishda bunga e'tibor qaratdi.
var AWS = talab ('aws-sdk'); var mqtt = yangi AWS. IotData ({
oxirgi nuqta: process.env. MQTT_ENDPOINT});
export.handler = funktsiya (voqea, kontekst, qayta qo'ng'iroq) {
var params = {
mavzu: process.env. MQTT_TOPIC, yuk: '{ "color \": / "' + event.colour + '\"}', Qos: 0
};
mqtt.publish (parametrlar, funktsiya (xato, ma'lumotlar) {
qayta qo'ng'iroq qilish (xato);
});
};
5 -qadam: Xulosa
Menga bulutda "tug'ilgan" virtual voqeani jismoniy dunyoga olib kelish juda yoqdi. Va mening kichkina uy hayvonlari loyihasi juda kulgili edi. Buni keyingi bosqichga olib chiqish uchun men o'ylardim …
- mustahkamlik va istisnolardan foydalanishni yaxshilash
- AWS bulutli ko'rsatkichlarini birlashtirishning yaxshiroq usullarini o'rganing
- o'lchagichlar, chiziqli grafikalar va boshqa jismoniy ko'rsatkichlar bilan tajriba o'tkazing.
- Azure, Google, Heroku kabi boshqa platformalarga o'tish imkoniyati bor …
- Jenkins, GitHub uchun maxsus dasturlarni kuzatish …
Umid qilamanki, sizga ushbu qo'llanmani o'qish yoqdi va ehtimol siz yo'lda yangi narsalarni oldingiz. Agar siz boshqacha/yaxshiroq yo'lni o'ylab topsangiz, uni quyidagi izohlarda baham ko'ring. Va, albatta, agar siz xatolarni ko'rsangiz, boshingizni yuqoriga ko'targaningiz yuqori baholanadi. Vaqtingiz uchun rahmat.
Tavsiya:
UD-ogohlantirish. Autizmli bola uchun: 7 qadam (rasmlar bilan)
UD-ogohlantirish. Otizmli bola uchun: Ud-Alert yoki yaxshiroq echinish haqida ogohlantirish, lekin nima uchun? Bizning o'g'limiz, Skott, 13 yoshda, autizmdan aziyat chekmoqda. U og'zaki gapirmaydi va hojatxonaga kirishi kerak bo'lgan paytda bizga ko'rsatadigan muammolari bor, chunki u cheklangan muloqot tufayli kiyimlarini echib tashlaydi
DHT11 bilan ESP32 asosidagi M5Stack M5stick C ob -havo monitor - M5stick-C dagi namlik va issiqlik indeksini DHT11: 6 qadam bilan kuzatib boring
DHT11 bilan ESP32 asosidagi M5Stack M5stick C ob -havo monitor | DHT11 yordamida M5stick-C dagi namlik va issiqlik indeksini kuzatib boring: Salom bolalar, bu ko'rsatmalarda biz DHT11 harorat sensori bilan m5stick-C (m5stack ishlab chiqish taxtasi) bilan ishlashni o'rganamiz va uni m5stick-C displeyida ko'rsatamiz. Shunday qilib, bu darslikda biz harorat, namlik va ampni o'qiymiz; issiqlik men
O'g'il bola o'quvchi tekshiruvi: 17 qadam (rasmlar bilan)
Game Boy Reader Controller: Bu yo'riqnomada men qurilmani qanday yaratganimni tushuntirishga harakat qilaman, u Game Boy kartrij o'quvchisi vazifasini bajaradi, u ROMni o'qishi va Game Boy o'yinining RAMini o'qishi/yozishi mumkin. avtomatik ravishda yuklanadi, shunda siz uni yoqishingiz mumkin
Java Viewer bilan Arduino Baby Monitor: 8 qadam (rasmlar bilan)
Java Viewer bilan Arduino Baby Monitor: Xonadagi sharoitni kuzatish uchun Arduino-ga asoslangan ko'p sensorli qurilmani yarating. Bu qurilma namlik, harorat, harakat va tovushni sezishi mumkin. Arduino -dan ketma -ket ma'lumotlarni oladigan java -ga asoslangan tomoshabin biriktirilgan
E-Bola: 5 qadam (rasmlar bilan)
E-Bola: Bolas yoki boleadoralar o'ljani tuzoqqa tushirish uchun ishlatiladigan qurollarni tashlaydilar. An'anaviy bolalar shnurning uchta bog'langan uchining uchiga biriktirilgan og'irliklardan tayyorlanadi. Uloqtirilganda, og'irliklar bolaga tegmaguncha tarang simlar atrofida aylanadi