Sisukord:
- Samm: komponendid, tarvikud, vajalikud tööriistad, rakendused ja võrguteenus
- Samm: riistvara
- 3. samm: lahenduse ülesehitus
- 4. samm: tarkvara
- 5. samm: järeldus
Video: PILVEMONITOR AWS ja ARDUINO - elektriline poiss: 6 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:49
See on lihtne projekt - lülitage tuli põlema, kui midagi läheb valesti … Kuidas muutume üha tuimaks ja saada märguandeid, millel on tänapäeval meie arvutites nii palju armatuurlaudu, kuidas saaksime veenduda, et me ei jätaks tähelepanuta tõeliselt olulisi. Vastus on füüsilise seisundi näitaja. Või täpsemalt selle ülesande jaoks, pilvemonitor, mis võib teie laual istuda - alati nähtaval. Nagu nimigi ütleb, aitab monitor teie pilveteenuste tervisel silma peal hoida (… või miski muu, taevas on piir, vabandage sõnamängu). Isegi sina, nagu mina, pead selle tegema? Isegi kui mitte, võib teil olla idee oma tulevase IoT -projekti jaoks.
Noh, kui olete valmis, alustame!
Samm: komponendid, tarvikud, vajalikud tööriistad, rakendused ja võrguteenus
KOMPONENDID JA TARVIKUD
_ Arduino Micro ja Genuino Micro (1 ühik)… või mõni muu Arduinoga ühilduv - minu puhul freetronics LeoStick (https://www.freetronics.com.au/collections/arduino/products/leostick)
_ ThingM BlinkM - I2C juhitav RGB LED (1 ühik)
_ Minipilvvalgusti (1 ühik)… või mõni muu teie valitud poolläbipaistev anum
_ USB-A kuni B kaabel (1 ühik)… või mis tahes vana USB-kaabel, millel on A-tüüpi pistik
VAJALIKUD TÖÖRIISTAD
_ Jootekolb (üldine)
Rakendused ja võrguteenus
_ Amazon Web Services AWS Lambda (https://aws.amazon.com/it/lambda/)
_ Amazon Web Services AWS IoT (https://aws.amazon.com/it/iot/)
Samm: riistvara
Öövalgusega on juba sisse ehitatud LED - minu puhul külm valge. Mõtlesin, et oleks tore näidata erinevat olekut erinevate värvidega. Seega hoidsin ainult pilvekujulist ümbrist. Operatsiooni ajude jaoks valisin väikseima Arduino ühilduva, mis mul saadaval oli: Freetronics LeoStick on olnud minu eelistatud prototüüpimisplatvorm juba aastaid ja mul on palju varuosi. Kaasas on head kraami: piesokõlar, kaks RGB LED -i (üks on ühendatud toiteallikaga, RX ja TX) ja mis kõige parem - saate selle lihtsalt USB -porti ühendada - välist FTDI -d ega kaablit pole vaja. See on ka väike, kuid leivaplaadiga ühilduv.
Miks ma ei valinud ESP8266? Et olla tõeliselt juhtmevaba, võite ka toitejuhtme katkestada - see muudab aku lisamise ja laadimise ebamugavused pisut keerulisemaks. Kuna pilvemonitor asub minu arvuti kõrval, on USB -toite kasutamine palju lihtsam. Wi-Fi-ühenduse seadistamine ei ole alati lihtne. ATmega32u4 põhjal jagavad Arduino Micro ja LeoStick kummalisust, et D2-l on I2C-andmed ja D3-l kell. See muutub aktuaalseks BlinkM RGB LED -i ühendamisel. Erinevalt tavalistest Atmega328 tahvlitest, kus saate lihtsalt ühendada BlinkM -i kilbi päistega A2.. A5, ei tööta see siin (ma ei vaevunud pehme I2C raamatukoguga).
BlinkM-i meessoost päiste VCC ja GND desoldeerimisega saaksin neid juhtmetega pikendada ja hoida kõike ühendatavas väikeses pakendis. BlinkM-il on pardal oma mikrokontroller ja see võimaldab täiustatud rakendusi: nt mängida skriptitud värvimustreid ilma Arduino ühendamiseta. Ma peaaegu tunnen, et WS2812 (Adafruits NeoPixels on suurepärased) oleks mind paremini teeninud - kahjuks polnud mul ühtegi neist saadaval. Riistvaraosa lõpetamiseks lõikasin välja A-tüüpi USB-pistiku teise otsa, keerasin selle läbi pilvavalguse aluse lähedal asuva eelnevalt puuritud augu ja jootsin juhtmed LeoSticki külge (punane: 5V, valge: Andmed, roheline: andmed+, must: maapind).
3. samm: lahenduse ülesehitus
Ainus tugev nõue, mille ma endale seadsin, oli see, et monitor töötaks tulemüüri taga. Kuigi see on ülioluline omadus, muutis see sündmuste muutmise veebikonksud ebapraktiliseks. Küsitlusmehhanism on TCP liikluse seisukohalt kulukas ja võib sõltuvalt küsitluste sagedusest sündmusi edasi lükata.
Lahendus on saadaval WebSocketsis, mis pakub täisdupleksühendust. Amazoni IoT -teenus pakub sõnumimaaklerit, mis toetab MQTT -d WebSocketsi kaudu. Nagu selgub, saab teenust helistada ilma asju, varje, eeskirju või reegleid seadistamata.
Arduino Yúni jaoks on saadaval seadme SDK ja mõningaid jõupingutusi tehakse SDK teisaldamiseks teistele platvormidele, näiteks ESP8266. Kuid kuna monitor ühendatakse alati jadaliidese kaudu, otsustasin juba varakult, et mul on kliendi API rakendamiseks NodeJS -rakendus (töötab lauaarvutis) ja kasutan Arduino ainult värvikoodide vastuvõtmiseks ja kuvamiseks. Nii saab JavaScriptis hõlpsasti muudatusi teha, ilma et peaksite püsivara üleslaadimisega vaeva nägema. Testimiseks on vaja väikest näidistaristut. Oletame, et meil on kättesaadavuse tsoonides lubatud koormuse tasakaalustaja, mis kontrollib veebiserveri eksemplari seisundit ja protsessori koormusel põhinevaid automaatse skaleerimise reegleid. Vastavat CloudFormationi malli saab ▶ ️ vaadata Disaineris või ▶ ️ luua otse konsoolist. Märkus. Mõned selle virna teenused võivad olla tasulised.
Laiendasin malli Lambda funktsiooni omaduste ja vajalike õigustega. Hiljem nõutakse parameetrina IoT REST API lõpp -punkti sisestamist. Selle automatiseerimiseks kirjutasin väikese kestaskripti, mis kasutab CLI-d ARN-i taotlemiseks (> aws iot description-endpoint) ja kutsub seejärel parameetriga in-line looma-stack. Või saate seda siiski käsitsi teha:
// RETRIVE IoT REST API ENDPOINT
aws iot kirjeldada-lõpp-punkt
// CREATE STACK> aws cloudformation create-stack --stack-name MiniCloudMonitor --template-body file: //cfn-template.json --parameters ParameterKey = IotRestApiEndpoint, ParameterValue = {IoT_REST_API_ENDPOINT}-võimalused CAPABILITY
// Kustuta virn> aws cloudformation delete-stack-stack-name MiniCloudMonitor
Ideaalis peaksin kasutama samu häirelävesid, mis käivitavad automaatse skaleerimise, samuti Lambda funktsiooni helistamiseks ja sel viisil monitori oleku värskendamiseks. Praegu on see võimalik ainult siis, kui SNS -i kasutatakse vaheühendina. Tol ajal tundus see lisakiht ülearune ja otsustasin kasutada Lambda otse helistamiseks CloudWatch EC2 elutsükli reegleid. Sellegipoolest tahan tulevikus uurida võimalust SNS → Lambda.
4. samm: tarkvara
Alustasin Arduino visandi kirjutamisega. Põhisilmus () loeb jadaühendusest märke ja ehitab stringi, kuni saab uue rea märgi. Seejärel eeldatakse, et saadeti kuusnurkne värvikood ja BlinkM LED -ile kirjutatakse vastav käsk I2C. See ei puuduta niivõrd tõhusust kui mugavust. Selle visandi ja muude failide täielikud allikad on saadaval GitHubis. Siin on mõned asjakohased koodilõigud:
void loop () {
while (Serial.available ()) {
char inChar = (char) Serial.read ();
kui (inChar == '\ n') {
pikk number = strtol (inputString.c_str (), NULL, 16);
bait r = arv >> 16;
bait g = arv >> 8 & 0xFF;
bait b = arv & 0xFF;
BlinkM_fadeToRGB (blinkm_addr, r, g, b);
inputString = "";
} muud {
inputString += inChar;
}
}
}
Rakendus NodeJS peab rakendama liideseid AWS -i ja Arduinoga. Hiljem saab suurepärase jadapaketi kasutamisel seda teha vaid mõne koodiridaga:
var serialport = nõuda ('serialport'); port = new serialport (PORT_COM_NAME, {
baudRate: SERIAL_BAUD_RATE
});
port.on ('avatud', function () {
});
port.on ('viga', function (err) {
});
Ka AWS IoT -ga ühenduse loomine ei nõua palju pingutusi. Ainus lõks on teada, et MQTT+WebSocketsi kasutamine üle pordi 443 nõuab autentimist juurdepääsuvõtmete kaudu. SDK loeb need keskkonnamuutujatest. AWS_ACCESS_KEY_ID ja AWS_SECRET_ACCESS_KEY võib osutuda vajalikuks selgesõnaliselt eksportida.
var awsiot = nõuda ('aws-iot-device-sdk'); var seade = awsiot.device ({
clientId: 'MiniCloudMonitor-' + (Math.floor ((Math.random () * 100000) + 1)), piirkond: AWS_REGION, protokoll: 'wss', sadam: 443, silumine: tõsi
});
device.on ('ühenda', function () {
device.subscribe (MQTT_TOPIC);
});
device.on ('sõnum', funktsioon (teema, kasulik koormus) {
if (port && payload && topic == MQTT_TOPIC) {
var message = JSON.parse (kasulik koormus);
kui (message.hasOwnProperty (MQTT_JSON_KEY))
{tagasipöördumine;
}
}
});
Funktsioon Lambda aktsepteerib sisendparameetrina värvikoodi - mitte ilus, kuid praeguses etapis väga paindlik. MQTT -teema avaldamiseks saab see luua IotData objekti, mis nõuab IoT REST API lõpp -punkti. CloudFormationi mall hoolitses selle eest virna loomise ajal.
var AWS = nõuda ('aws-sdk'); var mqtt = uus AWS. IotData ({
lõpp -punkt: process.env. MQTT_ENDPOINT});
export.handler = funktsioon (sündmus, kontekst, tagasihelistamine) {
var params = {
teema: process.env. MQTT_TOPIC, kasulik koormus: '{ "color \": / "' + event.colour + '\"}', qos: 0
};
mqtt.publish (parameetrid, funktsioon (viga, andmed) {
tagasihelistamine (viga);
});
};
5. samm: järeldus
Mulle meeldis tõeliselt tuua virtuaalne sündmus pilves "sündinud" füüsilisse maailma. Ja minu väikese lemmikloomaprojektina oli see hunnik lõbu. Selle järgmisele tasemele viimiseks kaaluksin…
- töökindluse ja erandjuhtimise parandamine
- uurige paremaid viise AWS -i pilvemõõdikute integreerimiseks
- katsetage rohkem füüsiliste näitajatega, nagu näidikud, tulpdiagrammid,…
- on võimalus liikuda teistele platvormidele, nagu Azure, Google, Heroku,…
- jälgida rakendusespetsiifilisi sündmusi Jenkins, GitHub,…
Loodan, et teile meeldis seda juhendit lugeda ja võib -olla isegi võtsite teelt midagi uut. Kui leiate mõne muu/parema viisi asjade tegemiseks, jagage seda allolevates kommentaarides. Ja muidugi, kui märkate vigu, oleks kõrgelt hinnatud. Täname teie aja eest.
Soovitan:
MagicBiti andmete visualiseerimine AWS -is: 5 sammu
MagicBiti andmete visualiseerimine AWSis: Magicbitiga ühendatud anduritelt kogutud andmed avaldatakse AWS IOT tuuma kaudu MQTT kaudu, et neid saaks reaalajas graafiliselt visualiseerida. Selles projektis, mis põhineb ESP32 -l, kasutame arendusplaadina magicbitit. Seetõttu on iga ESP32 d
Temperatuuri ja niiskuse hoiatus AWS ja ESP32 abil: 11 sammu
Temperatuuri ja niiskuse hoiatus AWS ja ESP32 abil: selles õpetuses mõõdame temperatuuri ja niiskuse anduri abil erinevaid temperatuuri ja niiskuse andmeid. Samuti saate teada, kuidas neid andmeid AWS -ile saata
Alexa hääljuhtimisega Raspberry Pi droon IoT ja AWS -iga: 6 sammu (koos piltidega)
Alexa hääljuhtimisega Raspberry Pi droon IoT ja AWS -iga: Tere! Minu nimi on Armaan. Olen 13-aastane Massachusettsi poiss. See õpetus näitab, nagu saate pealkirjast järeldada, kuidas Raspberry Pi drooni ehitada. See prototüüp näitab, kuidas droonid arenevad, ja ka seda, kui suurt osa nad võivad mängida
Kuidas seadistada Mosquitto MQTT AWS -i: 8 sammu
Kuidas seadistada Mosquitto MQTT AWS -i: Tere! Seadistan oma IOT -projektide jaoks oma AWS -i (amazoni veebiteenuse) kontole privaatse MQTT -maakleri parooliga. Selleks tegin AWS -is tasuta konto, mis sobib 1 aastaks, minnes siia:
Temperatuuri ja niiskuse jälgimine-AWS-ESP32 abil: 8 sammu
Temperatuuri ja niiskuse jälgimine AWS-ESP32 abil: selles õpetuses mõõdame temperatuuri ja niiskuse anduri abil erinevaid temperatuuri ja niiskuse andmeid. Samuti saate teada, kuidas neid andmeid AWS -ile saata