Orodha ya maudhui:
- Hatua ya 1: Mahitaji
- Hatua ya 2: Kuunda na Kuangaza Firmware ya Sensor
- Hatua ya 3: Kuweka Wingu
- Hatua ya 4: Sanidi AWS Lambda
- Hatua ya 5: Sanidi Mkondo wa Takwimu wa AWS Kinesis Firehose
- Hatua ya 6: Sanidi Jukumu la IAM kwa Kinesis
- Hatua ya 7: Sanidi AWS EC2
- Hatua ya 8: Sanidi Jukumu la Usalama la IAM kwa EC2
- Hatua ya 9: Fikia hali yako ya EC2
- Hatua ya 10: Rejesha API ya Ramani za Google
- Hatua ya 11: Anzisha Seva
- Hatua ya 12: Fanya ujumuishaji wa HTTP kwenye Mtandao wa Vitu
- Hatua ya 13: Usindikaji wa Takwimu
- Hatua ya 14: Taswira
- Hatua ya 15: Mikopo na Viungo vya nje
Video: Ufuatiliaji wa Barabara: Hatua 15
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:52
Leo tutakuonyesha jinsi tunavyoweka mfumo wa ufuatiliaji wa makosa ya barabara kulingana na accelerometers, LoRaWAN, Huduma za Wavuti za Amazon na API ya Wingu la Google.
Hatua ya 1: Mahitaji
- Bodi ya DISCO-L072CZ-LRWAN1
- X-NUCLEO-IKS01A2 moduli ya upanuzi (kwa kipaza sauti)
- X-NUCLEO-GNSS1A1 (kwa ujanibishaji)
- Akaunti ya AWS
- Akaunti ya Jukwaa la Wingu la Google
Hatua ya 2: Kuunda na Kuangaza Firmware ya Sensor
Unganisha IKS01A2 na GNSS1A1 juu ya ubao kupitia pini za GPIO. Pakua nambari ya firmware kutoka GitHub. Unda (ikiwa huna moja tayari) akaunti kwenye ARM Mbed na uingize nambari kwenye repo kwenye mkusanyaji wa mkondoni. Weka jukwaa lengwa kwa DISCO-L072CZ-LRWAN1 na uhifadhi mradi. Sasa nenda kwenye Mtandao wa Vitu na unda akaunti ikiwa huna tayari. Unda programu, tengeneza kifaa kipya ndani ya programu na weka hali ya unganisho kwa OTAA. Shika vigezo vinavyofaa kujaza sehemu zifuatazo kwenye faili ya mbed_app.json: "lora.appskey", "lora.nwkskey", "lora.device-address".
Sensor itarekodi mara kwa mara data ya accelerometer na data ya GNSS na kuzituma kupitia unganisho la LoRa kwa lango la karibu, ambalo litawapeleka kwenye programu yetu kwenye Mtandao wa Vitu. Hatua inayofuata ni kuanzisha seva ya wingu, na ujumuishaji wa HTTP kwenye TTN.
Hatua ya 3: Kuweka Wingu
Sasa tuko tayari kuanzisha miundombinu ya wingu ambayo itakusanya na kujumlisha data kutoka kwa bodi zote zilizotumika. Miundombinu hii imeonyeshwa kwenye takwimu hapa chini na imeundwa na:
- Kinesis, kushughulikia mkondo wa data unaoingia;
- Lambda, kuchuja na kutabiri data kabla ya kuihifadhi;
- S3, kuhifadhi data zote;
- EC2, kuchambua data na kuwa mwenyeji wa mwisho wetu.
Hatua ya 4: Sanidi AWS Lambda
Tutaonyesha hatua zinazohitajika kuanzisha miundombinu hii, tukianza na Lambda.
- Ingia na akaunti yako ya AWS, na kutoka kwa ukurasa kuu wa kiweko na nenda kwa Lambda
- Bonyeza kwenye Unda Kazi
- Katika sehemu ya juu ya ukurasa inapaswa kuchaguliwa Mwandishi kutoka mwanzo. Kisha kamilisha sehemu zingine kama kwenye picha na kisha bonyeza Unda Kazi
- Sasa kwa kuwa umeunda kazi ya AWS Lambda, nenda kwa https://github.com/roadteam/data-server na nakili yaliyomo kwenye faili ya aws_lambda.py ndani ya mhariri ambayo unapata nusu ya pili ya ukurasa. Kazi yako ya Lambda sasa iko tayari:)
Hatua ya 5: Sanidi Mkondo wa Takwimu wa AWS Kinesis Firehose
- Rudi sasa kwenye ukurasa kuu wa dashibodi ya AWS, na kwenye Huduma nenda kwa Kinesis
- Sasa uko katika ukurasa kuu wa Kinesis. Kulia kwa ukurasa, chini ya 'mito ya uwasilishaji wa Moto wa Kinesis', chagua 'Unda mkondo mpya wa uwasilishaji'
- Katika 'Jina la mkondo wa Uwasilishaji' andika 'barabara-ufuatiliaji-mkondo'. Acha sehemu zingine kuwa chaguomsingi na bonyeza ijayo
- Sasa chini ya 'Badilisha rekodi za chanzo na AWS Lambda' chagua Imewezeshwa, na kama kazi ya Lambda bonyeza "barabara-ufuatiliaji-lambda" mpya. Usiwe na wasiwasi ikiwa onyo kuhusu muda wa kumaliza kazi litajitokeza, kwani operesheni ambayo tunafanya sio ghali kwa hesabu. Acha sehemu zingine kuwa chaguomsingi na bonyeza inayofuata
- Kama marudio chagua Amazon S3, na kama marudio ya S3 chagua Unda Mpya. Kama jina la ndoo ingiza 'barabara-ufuatiliaji-ndoo' na kisha nenda. Sasa acha sehemu zingine ziwe chaguomsingi na bonyeza Ijayo
- Unaweza kutaka kuweka ukubwa wa Bafu kwa 1MB na muda wa Bafa hadi sekunde 60. Bafa itasafirishwa hadi S3 wakati wowote moja ya hali hizi mbili imeridhika. Usiache ukurasa, angalia hatua inayofuata
Hatua ya 6: Sanidi Jukumu la IAM kwa Kinesis
Sasa tunaanzisha ruhusa za usalama kwa Kinesis, kwani ni lazima iite kazi ya Lambda kwa utayarishaji na kisha itaandika kwenye S3
- Chini ya ukurasa ambao uko katika 'jukumu la IAM' chagua "Unda mpya ya kuchagua", tengeneza jukumu mpya la IAM kama kwenye picha na bonyeza Ruhusu
- Sasa umerudi kwenye ukurasa uliopita, bonyeza inayofuata. Sasa unaweza kutaka kuangalia mara mbili vigezo vyote. Ukimaliza bonyeza 'Unda Mtiririko wa Uwasilishaji'
Bomba la Kinesis-Lambda-S3 liko juu na linafanya kazi!
Hatua ya 7: Sanidi AWS EC2
Sasa tutaanzisha mfano wa EC2 na APIs zingine ambazo zitaturuhusu kushinikiza na kuvuta data kutoka kwa wingu la AWS na pia seva ambapo tutaandaa mbele yetu ya maombi. Katika mazingira ya uzalishaji, unaweza kutaka kuchapisha API ukitumia njia hatari zaidi ya AWS API.
- Kutoka kwa ukurasa kuu wa dashibodi ya AWS, nenda kwa huduma ya EC2
- Bonyeza kwenye Kituo cha Uzinduzi
- Kwenye upau wa juu wa utafta weka nambari hii: 'ami-08935252a36e25f85', hiyo ndiyo nambari inayotambulisha ya mashine halisi iliyotengenezwa tayari kutumia. Bonyeza Chagua upande wa kulia
- Chagua t2.micro kutoka safu ya 'Aina' na ubonyeze 'Pitia na uzindue'. Usizindue mfano bado, nenda kwa hatua inayofuata
Hatua ya 8: Sanidi Jukumu la Usalama la IAM kwa EC2
- Kabla ya kuzindua tunataka kurekebisha kikundi cha usalama cha mfano wetu. Ili kufanya hivyo, kulia kwa sehemu ya "Vikundi vya Usalama" bonyeza "Hariri vikundi vya usalama'Sanidi kikundi kipya cha usalama kama ifuatavyo. Hii kimsingi inasanidi firewall ya mfano wako unaofunua bandari 22 ya unganisho la SSH na bandari 80 kwa huduma za
- Bonyeza tena 'Pitia na Uzindue'. Sasa angalia kuwa vigezo vyote vimewekwa. Ukimaliza bonyeza Uzinduzi
- Kwenye bonyeza dirisha jipya litaibuka ili kusanidi jozi muhimu kwa unganisho la ssh kwa mfano. Chagua 'Unda jozi mpya muhimu na kama jina ingiza' ec2-barabara-ufuatiliaji '. Bonyeza Pakua jozi kuu. Ni muhimu sana kwamba faili hii ipotee au (mbaya zaidi) imehifadhiwa kwa usalama: hautaweza kupakua kitufe tena. Mara tu unapopakua kitufe cha.pem mfano uko tayari kuzinduliwa
Hatua ya 9: Fikia hali yako ya EC2
Mfano wako mpya wa EC2 uko juu katika wingu la AWS. Unaweza kuungana nayo na faili muhimu iliyopakuliwa hapo awali (kwa mafunzo haya tunadhani kuwa unajua misingi ya ssh). Unaweza kupata IP ya mfano kwa kuichagua kwenye dashibodi katika sehemu ya 'Maelezo' kama ifuatavyo: Unaweza kutumia IP yako ya umma au DNS yako ya umma ni sawa. Na mteja wa ssh sasa ingiza amri:
ssh -i ec2-barabara-ya kufuatilia.pem ec2-user @ YAKO-IP-ADDR-AU-DNS
ambapo ec2-road-monitoring.pem ni ufunguo wako uliozalishwa hapo awali.
Sasa endelea kuvuta nambari ya upande wa seva kupitia
Hatua ya 10: Rejesha API ya Ramani za Google
Tunakaribia kumaliza. Sasa inabidi tuweke API ya ramani za google katika ukurasa wetu wa html ili kuonyesha ramani na njia za njia kwa mtumiaji:
- Ingia kwenye akaunti yako ya Google na nenda kwa
- Bonyeza 'Anza' upande wa kushoto wa ukurasa
- Chagua 'Ramani' kwenye menyu na kisha bonyeza kuendelea
- Kama jina la mradi ingiza 'ufuatiliaji wa barabara' na bonyeza Ijayo
- Ingiza maelezo yako ya malipo na bonyeza Endelea
- Sasa mradi wako uko tayari na tutapata ufunguo wa API kwa kubofya kwa API na Huduma -> Hati za Utambulisho
Hatua ya 11: Anzisha Seva
Na hapo ni ufunguo wako wa API. Jambo la mwisho kufanya ni kwenda kwenye data_visualization / anomalies_map.html na nakili kitufe chako hadi mwisho wa faili kama hivyo, ukibadilisha 'YAKO-MUHIMU-HAPA'
Sasa yote yamewekwa na iko tayari kwenda! Ili kuifanya kuanza kutekeleza katika mfano wa EC2: 'cd data-server' 'python flask_app.py'
Ingiza kwenye kivinjari chako anwani ya ip au dns ya mfano wako wa EC2, unapaswa kuona ramani ya shida na data zingine za dummy.
Hatua ya 12: Fanya ujumuishaji wa HTTP kwenye Mtandao wa Vitu
Sasa kwa kuwa tuna miundombinu yote ya nyuma na inayoendelea tunaweza kusindika kutekeleza ujumuishaji wa
- Unda programu mpya na uandikishe kifaa chako. Tunafikiria maarifa ya kimsingi ya TTN, ikiwa sio rejelea mwongozo wa kuanza haraka
- Kwenye menyu ya programu yako chagua 'Ujumuishaji' kisha 'ongeza ujumuishaji'
- Chagua ujumuishaji wa
- Ingiza sehemu zifuatazo picha na kuchukua nafasi ya EC2 ip au DNS ya umma
Hatua ya 13: Usindikaji wa Takwimu
Kwa kila Tuple ya data T iliyokusanywa kutoka kwa sensorer lazima ufanye hatua zifuatazo:
- Pata seti ya viboreshaji ambavyo vina viwianishi vya GPS vinaanguka katika eneo la T. eneo la eneo ni vifurushi vyote vilivyo mita 100 karibu na T.
- Kwa kila Jarida la karibu la N huhesabu maana ya mraba ya eksima ya Z-mhimili katika N. Katika pseudocode: maana = jumla ([x. Z_accel ** 2 kwa x katika karibu]) / near.size
- Kokotoa mkengeuko wa mraba uliopangwa. Katika pseudocode: std = jumla ([(x. Z_accel ** 2 - maana) ** 2 kwa x karibu]
- Pato katika muundo huu: lat, mrefu, Z_accel ** 2, maana, std
Kuhesabu eneo la karibu tumia umbali wa GPS kwa mita. Katika C ++:
#fafanua D2R (M_PI / 180.0)
#fafanua EARTH_RAY 6371 umbali mara mbili (lat1 mara mbili, long1 ndefu, lat2 mara mbili, long2 ndefu2) {double dlong = (long2 - long1) * D2R; dlat mbili = (lat2 - lat1) * D2R; mara mbili a = poda (dhambi (dlat / 2.0), 2) + cos (lat1 * D2R) * cos (lat2 * D2R) * pow (dhambi (dlong / 2.0), 2); mara mbili c = 2 * atan2 (sqrt (a), sqrt (1-a));
Sasa, ukitumia data ya kati iliyozalishwa katika hatua ya awali, gundua kasoro na ufanye uainishaji wa kijinga ukitumia hii iliyopigwa iliyotumika kwa kila mstari:
line = ramani (kuelea, line.split (","))
v = line [2] maana = line [3] std = line [4] ikiwa v (mean + std * 3): if v (mean + std * 2): if v (mean + std): o.append ([1, mstari [0], mstari [1]) mwingine: o.append ([2, line [0], line [1])) mwingine: o.append ([3, line [0], line [1])
Makosa yameainishwa kwa kutumia kanuni ya 68-95-999.7
Sasa una mkusanyiko na muundo huu [aina, lat, mrefu].
Aina ya maana ni yafuatayo:
- Ukosefu mdogo, labda hauna maana
- Ukosefu wa kati
- Uharibifu mbaya
Hatua ya 14: Taswira
Ili kuelewa na labda kubadilisha sehemu ya taswira lazima tujifunze jinsi ya kutumia alama maalum, huduma ya API ya Ramani za Google
Kwanza, ramani inapaswa kuwezeshwa kwa kupigiwa simu:
kazi initMap () {
data = swalaData (); ramani = google.maps mpya. Map (document.getElementById ('ramani'), {zoom: 15, kituo: {lat: data [0] [1], lng: data [0] [2]}}); maoni (); }
Bainisha jina la upigaji simu hii kwenye url (tuliingiza hapa kabla ya kifunguo chetu cha API) kwenye tepe la HTML:
hati async kuahirisha src = "https://maps.googleapis.com/maps/api/js?key = [KEY]&callback=initMap"
Alama inaweza kuingizwa kwenye ramani wakati kitu kimeundwa:
google.maps mpya. Marker ({nafasi: {lat: LATITUDE, lng: LONGITUDE}, ramani: ramani, ikoni: “/ path/to/icon.png”})
Unaweza kuona katika nambari ambayo kwa kila data kwenye mkusanyiko wa data alama imeingizwa (tazama maoni () kazi) na ikoni inategemea darasa la kasoro hiyo. Wakati wa kutumia hii kwenye kivinjari tunaweza kukagua ramani ambayo makosa yanaweza kuchujwa kwa kutumia visanduku vya kuangalia, kama inavyoonekana kwenye picha.
Hatua ya 15: Mikopo na Viungo vya nje
Mradi huu ulifanywa na Giovanni De Luca, Andrea Fioraldi na Pietro Spadaccino, mwaka wa kwanza MSc katika Uhandisi katika wanafunzi wa Sayansi ya Kompyuta katika Chuo Kikuu cha Sapienza cha Roma.
-
Slides waandishi walitumia kuwasilisha uthibitisho huu wa dhana:
www.slideshare.net/PietroSpadaccino/road-m…
-
Mapumziko ya GitHub na nambari yote:
github.com/roadteam
Ilipendekeza:
Ufuatiliaji wa Nguo / Ufuatiliaji wa Kavu na ESP8266 & Sensor ya Kuongeza kasi: Hatua 6
Ufuatiliaji wa Nguo / Kavu ya Ufuatiliaji na ESP8266 & Sensor ya Kuongeza kasi: Washa nguo / dryer iko kwenye basement, na wewe, kama sheria, weka lundo la nguo ndani yake na baada ya hapo, unashiriki katika kazi yako nyingine ya nyumba. Unapuuza mavazi ambayo yalibaki yamejaa na kufyonza kwenye basement kwenye mashine yako
Uzito wa Ujenzi wa Barabara Semarang: Hatua 8
Ujenzi wa Barabara Nyepesi Semarang: Mradi wa shuleKama mradi wa shule kwa Chuo Kikuu cha Sayansi Iliyotumiwa ya Rotterdam ilibidi tupate suluhisho la kiwango cha maji kilichoinua na upungufu wa ardhi huko Semarang, Indonesia. Bidhaa zifuatazo zimetengenezwa wakati wa ukurasa huu
Ufuatiliaji wa faragha umechukuliwa kutoka kwa Ufuatiliaji wa zamani wa LCD: Hatua 7 (na Picha)
Ufuatiliaji wa faragha umedukuliwa Kutoka kwa Ufuatiliaji wa Zamani wa LCD: Mwishowe unaweza kufanya kitu na mfuatiliaji huyo wa zamani wa LCD ulio na karakana. Unaweza kuibadilisha kuwa mfuatiliaji wa faragha! Inaonekana kuwa nyeupe kwa kila mtu isipokuwa wewe, kwa sababu umevaa " uchawi " glasi! Unachotakiwa kuwa nacho ni pa
Ufuatiliaji wa Chassis ya Ufuatiliaji wa Kijijini cha Rugged: Hatua 7 (na Picha)
Ufuatiliaji wa Chassis Remote Tracked Bot: Utangulizi: Kwa hivyo huu ulikuwa mradi ambao mwanzoni nilitaka kuanza na kukamilisha nyuma mnamo 2016, hata hivyo kwa sababu ya kazi na wingi wa vitu vingine nimeweza tu kuanza na kukamilisha mradi huu katika mwaka mpya 2018! Ilichukua kama wee 3
Ufuatiliaji wa Joto la Chumba cha Raspberry Pi na Ufuatiliaji wa Picha ya Gnuplot na Uwezo wa Tahadhari ya Barua pepe: Hatua 7
Ufuatiliaji wa Chumba cha Raspberry Pi Udhibiti wa Joto na Pato la Picha ya Gnuplot na Uwezo wa Tahadhari ya Barua Pepe: Pale ninapofanya kazi, kuna chumba muhimu sana ambacho kina kompyuta nyingi. Joto la kawaida la chumba hiki lazima liwe baridi sana ili kuongeza utendaji wa mifumo hii. Niliulizwa kuja na mfumo wa ufuatiliaji ambao una uwezo wa