Orodha ya maudhui:

Ufuatiliaji wa Barabara: Hatua 15
Ufuatiliaji wa Barabara: Hatua 15

Video: Ufuatiliaji wa Barabara: Hatua 15

Video: Ufuatiliaji wa Barabara: Hatua 15
Video: Дочка СТРАШНОГО КЛОУНА ФАНАТКА Сиреноголового! Сиреноголовый ИЩЕТ ДЕВУШКУ! Реалити Шоу! 2024, Novemba
Anonim
Ufuatiliaji wa Barabara
Ufuatiliaji wa Barabara

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

Kuweka Wingu
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

Sanidi AWS Lambda
Sanidi AWS Lambda

Tutaonyesha hatua zinazohitajika kuanzisha miundombinu hii, tukianza na Lambda.

  1. Ingia na akaunti yako ya AWS, na kutoka kwa ukurasa kuu wa kiweko na nenda kwa Lambda
  2. Bonyeza kwenye Unda Kazi
  3. Katika sehemu ya juu ya ukurasa inapaswa kuchaguliwa Mwandishi kutoka mwanzo. Kisha kamilisha sehemu zingine kama kwenye picha na kisha bonyeza Unda Kazi
  4. 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

Sanidi Mkondo wa Takwimu wa AWS Kinesis Firehose
Sanidi Mkondo wa Takwimu wa AWS Kinesis Firehose
  1. Rudi sasa kwenye ukurasa kuu wa dashibodi ya AWS, na kwenye Huduma nenda kwa Kinesis
  2. 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'
  3. Katika 'Jina la mkondo wa Uwasilishaji' andika 'barabara-ufuatiliaji-mkondo'. Acha sehemu zingine kuwa chaguomsingi na bonyeza ijayo
  4. 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
  5. 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
  6. 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

Sanidi Jukumu la IAM kwa Kinesis
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

  1. 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
  2. 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

Sanidi AWS EC2
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.

  1. Kutoka kwa ukurasa kuu wa dashibodi ya AWS, nenda kwa huduma ya EC2
  2. Bonyeza kwenye Kituo cha Uzinduzi
  3. 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
  4. 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

Sanidi Jukumu la Usalama la IAM kwa EC2
Sanidi Jukumu la Usalama la IAM kwa EC2
  1. 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
  2. Bonyeza tena 'Pitia na Uzindue'. Sasa angalia kuwa vigezo vyote vimewekwa. Ukimaliza bonyeza Uzinduzi
  3. 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

Fikia Kituo chako cha EC2
Fikia Kituo chako cha 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

git clone --recursive

Hatua ya 10: Rejesha API ya Ramani za Google

Pata API ya Ramani za Google
Pata 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:

  1. Ingia kwenye akaunti yako ya Google na nenda kwa
  2. Bonyeza 'Anza' upande wa kushoto wa ukurasa
  3. Chagua 'Ramani' kwenye menyu na kisha bonyeza kuendelea
  4. Kama jina la mradi ingiza 'ufuatiliaji wa barabara' na bonyeza Ijayo
  5. Ingiza maelezo yako ya malipo na bonyeza Endelea
  6. Sasa mradi wako uko tayari na tutapata ufunguo wa API kwa kubofya kwa API na Huduma -> Hati za Utambulisho

Hatua ya 11: Anzisha Seva

Anzisha Seva
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

Fanya ujumuishaji wa HTTP kwenye Mtandao wa Vitu
Fanya ujumuishaji wa HTTP kwenye Mtandao wa Vitu

Sasa kwa kuwa tuna miundombinu yote ya nyuma na inayoendelea tunaweza kusindika kutekeleza ujumuishaji wa

  1. Unda programu mpya na uandikishe kifaa chako. Tunafikiria maarifa ya kimsingi ya TTN, ikiwa sio rejelea mwongozo wa kuanza haraka
  2. Kwenye menyu ya programu yako chagua 'Ujumuishaji' kisha 'ongeza ujumuishaji'
  3. Chagua ujumuishaji wa
  4. 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:

  1. 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.
  2. 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
  3. Kokotoa mkengeuko wa mraba uliopangwa. Katika pseudocode: std = jumla ([(x. Z_accel ** 2 - maana) ** 2 kwa x karibu]
  4. 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:

  1. Ukosefu mdogo, labda hauna maana
  2. Ukosefu wa kati
  3. Uharibifu mbaya

Hatua ya 14: Taswira

Taswira
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: