Pajisjet e projektit: si ndërtuam një dhomë me një kërkim hakeri

Pajisjet e projektit: si ndërtuam një dhomë me një kërkim hakeri
Para nja dy javësh kaluam kërkim në internet për hakerat: ndërtuan një dhomë, të cilën e mbushën me pajisje inteligjente dhe nisën një transmetim në YouTube prej saj. Lojtarët mund të kontrollojnë pajisjet IoT nga faqja e internetit e lojës; Qëllimi ishte të gjente një armë të fshehur në dhomë (një tregues i fuqishëm lazer), ta hakiste atë dhe të shkaktonte një qark të shkurtër në dhomë.

Për ta shtuar veprimin, vendosëm një grirëse në dhomë, në të cilën ngarkuam 200 rubla: grirësi hante një faturë në orë. Pasi të fitoni lojën, mund të ndaloni grirësin dhe të merrni të gjitha paratë e mbetura.

Ne kemi thënë tashmë rrugëdaljeDhe si u bë backend projekti. Është koha për të folur për pajisjen dhe mënyrën se si u montua.


Ka pasur shumë kërkesa për të treguar momentin e pastrimit të një dhome - tregojmë se si e ndajmë atë

Arkitektura e harduerit: Kontrolli i dhomës

Ne filluam të hartonim një zgjidhje harduerike kur skenari ishte kuptuar përafërsisht, pjesa e pasme ishte gati dhe kishim një dhomë bosh gati për të instaluar pajisjet.

Duke kujtuar shakanë e vjetër "S në IoT do të thotë Siguri" ("Shkronja S në shkurtesën IoT do të thotë Siguri"), vendosëm që këtë herë lojtarët në skenarin e lojës të ndërveprojnë vetëm me pjesën e përparme dhe të pasme. e faqes, por nuk merrni mundësinë për të shkuar direkt në hekur.

Kjo u bë për arsye sigurie dhe spektakël të asaj që po ndodhte në ekran: me akses të drejtpërdrejtë në pajisje nga lojtarët, do të ishte shumë më e vështirë të izoloheshin veprime të sigurta dhe potencialisht të rrezikshme, për shembull, lëvizja e shpejtë e një grirëse ose kontrolli. mjete piroteknike.

Para fillimit të dizajnit, ne formuluam disa parime për kontrollin e pajisjeve të lojërave, të cilat u bënë baza e dizajnit:

Mos përdorni zgjidhje me valë

E gjithë hapësira e lojës është në një kornizë, çdo cep i të cilit mund të arrihet. Nuk kishte nevojë reale për lidhje me valë dhe ato thjesht do të bëheshin një tjetër pikë dështimi.

Mos përdorni pajisje speciale inteligjente në shtëpi

Kryesisht për hir të fleksibilitetit të personalizimit. Është e qartë se ne mund të personalizojmë shumë versione të sistemeve të shtëpive inteligjente me administratorë dhe kontrolle të gatshme për detyrën tonë, por kostot e punës do të jenë të krahasueshme me krijimin e zgjidhjes suaj të thjeshtë.

Për më tepër, ishte e nevojshme të dilte me pajisje që do të tregonin qartë se ishin lojtarët ata që ndryshuan gjendjen e tij: ata e ndezën/fiknin ose vendosnin një dritë specifike në shkronjat FALCON.

Ne mblodhëm të gjithë elementët nga pajisjet e disponueshme publikisht që mund të blihen në dyqanet e rregullta të pjesëve të radios: ndërmjet dërgimit të picave dhe kola dietike, korrierët Chip dhe Dip dhe Leroy vinin vazhdimisht në sit.

Zgjedhja për të mbledhur gjithçka vetë thjeshtoi korrigjimin, shkallëzueshmërinë, megjithatë, kërkonte kujdes më të madh gjatë instalimit.

Të gjitha reletë dhe arudin nuk duhet të jenë të dukshme në kornizë

Ne vendosëm t'i sjellim të gjithë elementët e kontrollueshëm në një vend dhe t'i fshehim ato në prapaskenë, në mënyrë që të mund të monitorojmë performancën e tyre dhe, nëse është e nevojshme, të zvarritemi me kujdes nga diapazoni i dukshmërisë së kamerës dhe të zëvendësojmë njësinë e dështuar.

Pajisjet e projektit: si ndërtuam një dhomë me një kërkim hakeri
Në fund, gjithçka u fsheh nën tavolinë, dhe kamera u instalua në mënyrë që asgjë të mos dukej poshtë tryezës. Kjo ishte "pika jonë e verbër" që inxhinieri të zvarritej

Si rezultat, ne në fakt morëm një pajisje inteligjente: ajo mori gjendjen e secilës prej pjesëve të saj nga pjesa e pasme dhe e ndryshoi atë me komandën e duhur.

Nga pikëpamja e zbatimit të harduerit, kjo pajisje kontrollonte 6 elementë:

  1. Disa llamba tavoline, ato kanë një gjendje ndezëse/fikje dhe kontrollohen nga lojtarët
  2. Shkronjat në mur, ato mund të ndryshojnë ngjyrën e tyre me komandën e lojtarëve
  3. Tifozët që rrotullohen dhe hapin tabelën kur serveri është nën ngarkesë
  4. Lazer i kontrolluar nëpërmjet PWM
  5. Grirësi që hante para në orar
  6. Një makinë tymi që dilte para çdo shkrepjeje lazer


Testimi i një makinerie tymi me lazer

Më vonë, u shtua një dritë skene, e cila qëndronte pas kornizës dhe kontrollohej tamam si llambat nga pika 1. Drita e skenës funksiononte në dy raste: ndriçonte lazerin kur i vihej fuqia dhe ndriçonte peshën përpara lazeri u lëshua në modalitetin luftarak.

Çfarë ishte kjo pajisje inteligjente?

Pajisjet e projektit: si ndërtuam një dhomë me një kërkim hakeri

Gjatë gjithë rrugës, Yura, djali ynë i harduerit, u përpoq të mos i ndërlikonte gjërat dhe të dilte me zgjidhjen më të thjeshtë, minimaliste të mundshme.

Supozohej se VPS thjesht do të ekzekutonte një skript që merr json me gjendjen e pajisjeve dhe e dërgon atë në Arduino të lidhur përmes USB.

Lidhur me portet:

  • 16 stafetë të rregullta (ishin ata që bënin zhurmën e klikimit që u dëgjua në video. Ne i zgjodhëm kryesisht për shkak të këtij tingulli)
  • 4 rele të gjendjes së ngurtë për kontrollin e kanaleve PWM, të tilla si tifozët,
  • dalje e veçantë PWM për lazer
  • dalje që gjeneron një sinjal në shiritin LED

Këtu është një shembull i një komande json që erdhi në stafetë nga serveri

{"power":false,"speed":0,"period":null,"deviceIdentifier":"FAN"}

Dhe ky është një shembull i një funksioni me të cilin komanda arriti në Arudino

def callback(ch, method, properties, body):    
request = json.loads(body.decode("utf-8"))    
print(request, end="n")     
send_to_serial(body)

Për të gjurmuar momentin kur lazeri më në fund digjet përmes litarit dhe pesha fluturon në akuarium, ne bëmë një buton të vogël që u aktivizua kur pesha binte dhe i dha një sinjal sistemit.

Pajisjet e projektit: si ndërtuam një dhomë me një kërkim hakeri
Butoni për monitorimin e lëvizjes së peshës

Në këtë sinjal, bombat tymi të bëra nga topat e ping-pongut supozohej të ndizeshin. Vendosëm 4 flakë tymi direkt në kutinë e serverit dhe i lidhëm me një fije nikrom, e cila supozohej të nxehej dhe të funksiononte si një ndezës.

Pajisjet e projektit: si ndërtuam një dhomë me një kërkim hakeri
Strehimi me bomba tymi dhe kurorë kineze

Pajisjet e projektit: si ndërtuam një dhomë me një kërkim hakeri

Arduino

Sipas planit origjinal, në Arduino u zhvilluan dy veprime.

Së pari, kur u mor një kërkesë e re, kërkesa u analizua duke përdorur bibliotekën ArduinoJson. Më pas, çdo pajisje e menaxhuar u përputh me dy vetitë e saj:

  • gjendja e energjisë "ndezur" ose "off" (gjendja standarde)
  • periudha për të cilën pajisja është ndezur - koha në mikrosekonda nga fillimi i tabelës, kur është koha për ta fikur, domethënë për ta sjellë gjendjen në standard

Herën e fundit u caktua gjatë marrjes së parametrit përkatës në JSON, por nuk mund të transmetohej, më pas vlera u vendos në 0 dhe nuk ndodhi rivendosje.

Veprimi i dytë që kryente Arduino çdo cikël ishte përditësimi i gjendjeve, domethënë kontrolli nëse kishte nevojë për të ndezur diçka ose nëse ishte koha për të fikur ndonjë pajisje.

Treguesi lazer - i njëjti Megatron 3000

Pajisjet e projektit: si ndërtuam një dhomë me një kërkim hakeri

Ky është një modul i rregullt LSMVR450-3000MF 3000mW 450nm për prerjen dhe shënimin me lazer me fokus manual.

Letrat Skifter

Ato u bënë shumë thjesht - thjesht kopjuam shkronjat nga logoja, i premë nga kartoni dhe më pas i mbuluam me shirit LED. Në këtë rast, më duhej të bashkoja copat e shiritit, 4 kontakte në secilën shtresë, por rezultati ia vlente. Mbështetësi ynë Pasha tregoi mrekulli, duke e bërë atë në më pak se pak orë.

Testet e para të pajisjes iot dhe përfundimi

Bëmë testet e para dhe në të njëjtën kohë na erdhën detyra të reja. Fakti është se në mes të procesit, një producent i vërtetë filmi dhe kameraman nga VGIK, Ilya Serov, iu bashkua ekipit - ai ndërtoi kornizën, shtoi ndriçimin shtesë të kinemasë dhe ndryshoi pak skenarin e lojës për ta bërë komplotin më emocionues, dhe fotografia më dramatike dhe teatrale.

Kjo rriti ndjeshëm cilësinë, por u shfaqën elementë që gjithashtu duhej të lidheshin me stafetën dhe algoritmin e funksionimit të përshkruar.

Një problem tjetër ishte lazeri: ne bëmë disa eksperimente me lloje të ndryshme litari dhe lazer me fuqi të ndryshme. Për provën, ne thjesht varëm një peshë vertikalisht në një litar.

Kur punoni me një shenjë prove, fuqia e rregulluar përmes PWM ishte më pak se 10% dhe nuk e dëmtoi litarin edhe me një ekspozim të gjatë.

Për modalitetin luftarak, lazeri u defokusua afërsisht në një vend me një diametër prej 10 mm dhe u dogj me siguri përmes një litari me një ngarkesë nga një distancë prej rreth një metër.

Pajisjet e projektit: si ndërtuam një dhomë me një kërkim hakeri
Pra, lazeri funksionoi në mënyrë të përsosur në prova

Kur filluam të testonim gjithçka në dhomë me një peshë të varur, doli se sigurimi i lazerit nuk ishte aq i lehtë. Pastaj, kur litari digjet, ai shkrihet, shtrihet dhe largohet nga fokusi i tij origjinal.

Pajisjet e projektit: si ndërtuam një dhomë me një kërkim hakeri
Por nuk funksionoi më kështu: litari u zhvendos

Ilya e zhvendosi lazerin në fund të dhomës përballë litarit, në mënyrë që rrezja e lazerit të kalonte në të gjithë skenën dhe të dukej bukur në kornizë, gjë që dyfishoi distancën.

Pasi kryem disa eksperimente të tjera me djegien e litarit tashmë në betejë, vendosëm të mos e torturojmë fatin dhe të siguronim prerjen e litarit duke përdorur tela nikrom. Ai shkatërroi fillin 120 sekonda pas ndezjes së lazerit në modalitetin luftarak. Ne vendosëm ta kodojmë këtë, si dhe shkëputjen e telit dhe ndezjen e bombave të tymit kur aktivizohet kontakti i ndarjes, direkt në harduerin e mikrokontrolluesit.

Pajisjet e projektit: si ndërtuam një dhomë me një kërkim hakeri
Fije që përfundimisht u dogj përmes litarit jashtë ekranit

Kështu, u shfaq një detyrë e tretë që Arduino e zgjidhi - të përpunojë sekuencat që lidhen me ekzekutimin e këtyre komandave.

Ne gjithashtu vendosëm t'i japim Arduino nevojën për të numëruar paratë në televizor dhe për të drejtuar grirësin. Fillimisht, supozohej se backend do ta bënte këtë dhe bilanci aktual do të ishte i dukshëm në faqen e internetit, dhe në TV do të shfaqnim komentet nga YouTube si një element shtesë interaktiv, duke u thënë shikuesve se ngjarjet në dhomë po ndodhnin realisht. koha.

Por gjatë provës, Ilya shikoi skenën dhe sugjeroi të tregonte bilancin e lojës në ekranin më të madh: sa para kanë mbetur ende, sa është ngrënë dhe numërimi mbrapsht për fillimin tjetër të grirëses.

Ne e lidhëm Arduino me orën aktuale: çdo orë të plotë fillonte grirësi. Fotografia u shfaq në televizor duke përdorur rasberry, i cili në atë moment po merrte tashmë kërkesa nga serveri dhe i dërgonte ato në arduino për ekzekutim. Fotot me tregues monetarë janë tërhequr duke thirrur konsol utility fim diçka të tillë

image = subprocess.Popen(["fim", "-q", "-r", "1920×1080", fim_str]), где fim_str

Dhe u formua në bazë të sasisë ose kohës së kërkuar.

Ne i krijuam fotografitë paraprakisht: thjesht bëmë një video të gatshme me një kohëmatës dhe eksportuam 200 fotografi.

Kjo është mekanika që u programua në kryq. Në kohën kur filloi numërimi përfundimtar, të gjithë shkuam në vend, u armatosëm me zjarrfikës dhe u ulëm të prisnim zjarrin (i cili ishte vetëm në lëvizje të plotë në mosmarrëveshje)

Si të bëni një transmetim që funksionon për një javë: zgjedhja e një kamere

Për kërkimin, na duhej një transmetim i vazhdueshëm në YouTube për 7 ditë - kjo është pikërisht ajo që vendosëm si kohëzgjatjen maksimale të lojës. Dy gjëra mund të na ndalonin:

  1. Mbinxehja e kamerës për shkak të funksionimit të vazhdueshëm
  2. Ndërprerje e internetit

Kamera duhej të siguronte të paktën një pamje Full HD për ta bërë të rehatshme lojën dhe shikimin e dhomës.

Fillimisht, ne shikuam kamerat e internetit që janë prodhuar për transmetues. Ne po shkurtonim buxhetin, kështu që nuk donim të blinim një aparat fotografik, por, siç doli, ata nuk i japin me qira. Në të njëjtin moment, gjetëm për mrekulli një kamerë Xbox Kinect të shtrirë në shtëpinë time, e instaluam në dhomën time dhe filluam një transmetim testues për një javë.

Kamera funksionoi mirë dhe nuk u nxeh, por Ilya pothuajse menjëherë vuri re se i mungonin cilësimet, në veçanti ishte e pamundur të vendosej ekspozimi.

Ilya u përpoq të afronte llojin e transmetimit me standardet e prodhimit të filmit dhe videove: për të përcjellë një skenë drite në ndryshim dinamik me burime të ndritshme drite, një sfond të errët dhe objekte në kornizë. Në të njëjtën kohë, doja të ruaja përpunimin e imazhit si në pikat kryesore ashtu edhe në hije, me zhurmë minimale dixhitale.

Prandaj, megjithëse Kinect rezultoi i besueshëm në teste dhe nuk kërkonte një kartë për kapjen e videos (një pikë tjetër dështimi), vendosëm ta braktisnim atë. Pas tre ditësh testimi të kamerave të ndryshme, Ilya zgjodhi Sony FDR-AX53 - një videokamerë e vogël dhe e besueshme që është e lirë për t'u marrë me qira, por në të njëjtën kohë ka besueshmëri të mjaftueshme dhe karakteristika vizuale.

Morëm me qira një aparat fotografik, e ndezëm për një javë së bashku me një kartë për kapjen e videove dhe kuptuam se me të mund të mbështeteshim në transmetimin e vazhdueshëm gjatë gjithë kërkimit.

Bërja e një filmi: vënia në skenë dhe ndriçimi

Puna në ndriçim kërkonte një hir të caktuar; na duhej të ndërtonim një pikë ndriçimi me mjete minimale:

1. Ndriçimi i objekteve kur lojtarët i gjejnë (lazer, peshë), si dhe dritë konstante në grirësin. Këtu kemi përdorur dedolight 150 - pajisje ndriçimi filmi të besueshëm dhe kompakt me llamba halogjene të tensionit të ulët, të cilat ju lejojnë të fokusoni rrezen në një objekt specifik pa ndikuar në sfond dhe objekte të tjera.

2. Dritë lojë praktike - llambë tavoline, llambë dyshemeje, yll, kurorë. E gjithë drita praktike u shpërnda në mënyrë harmonike në kornizë për të ndriçuar zonën e imazhit, brenda kishte llamba LED me një temperaturë ngjyrash 3200K, llamba në llambën e dyshemesë ishte e mbuluar me një filtër të kuq me fletë Rosco për të krijuar një theks të pazakontë ngjyrash.

Pajisjet e projektit: si ndërtuam një dhomë me një kërkim hakeri
Unë jam inxhinier tek mamaja ime ose nisja është nesër

Si rezervuam internetin dhe energjinë elektrike

Ata iu afruan çështjes së tolerancës së gabimeve pothuajse si në një qendër të dhënash: vendosën të mos devijojnë nga parimet bazë dhe rezervuan sipas skemës së zakonshme N+1.

Nëse transmetimi në YouTube ndalon, kjo do të thotë se do të jetë e pamundur të rilidheni duke përdorur të njëjtën lidhje dhe të vazhdoni transmetimin. Ishte një moment kritik dhe dhoma ndodhej në një zyrë të rregullt.

Për këtë kemi përdorur një ruter të bazuar në OpenWRT dhe paketën mwan3. Ai testoi automatikisht disponueshmërinë e kanalit çdo 5 sekonda dhe, në rast pushimi, kalonte në modemin rezervë me Yota. Si rezultat, kalimi në kanalin rezervë ndodhi në më pak se një minutë.
Pajisjet e projektit: si ndërtuam një dhomë me një kërkim hakeri
Po aq e rëndësishme ishte eliminimi i ndërprerjeve të energjisë, sepse edhe një rritje afatshkurtër e energjisë do të shkaktonte një rindezje të të gjithë kompjuterëve.

Prandaj, morëm një furnizim me energji të pandërprerë ippon innova g2 3000, i cili do të rezervonte të gjitha pajisjet e lojërave: konsumi total i energjisë i sistemit tonë ishte rreth 300 Watts. Do të zgjaste 75 minuta, mjaftueshëm për qëllimet tona.

Ne vendosëm të sakrifikonim ndriçimin shtesë në rast se energjia elektrike në dhomë do të fiket - ajo nuk ishte e lidhur me një furnizim të pandërprerë me energji elektrike.

Mirënjohje

  • Për të gjithë ekipin RUVDS, i cili shpiku dhe zbatoi lojën.
  • Më vete, për administratorët e RUVDS, për monitorimin e punës së serverëve, ngarkesa ishte e pranueshme dhe gjithçka funksionoi si zakonisht.
  • Tek shefi më i mirë ntsaplin për faktin se në përgjigje të thirrjes, "Kam një ide: do të marrim një server, do të vendosim një akuarium dhe do të varim një peshë sipër tij, bum, zhurmë, gjithçka është e përmbytur me ujë, qark i shkurtër, zjarr. !” Ai gjithmonë thotë me besim "bëje!"
  • Falënderim Publishing Tilda dhe veçmas për Mikhail Karpov për jo vetëm takimin në gjysmë të rrugës dhe na lejoi të shkelim Kushtet e përdorimit, por edhe na dha një llogari biznesi për një vit kur folëm për projektin.
  • Ilya Serov S_ILya për t'u bashkuar dhe për t'u bërë bashkëprodhues i projektit, gati për të zvarritur gjysmën e natës, duke ngjitur shirit LED, duke kërkuar zgjidhje teknike dhe duke bërë gjithçka që të kemi një film të vërtetë.
  • zhovner për të qenë gjithmonë gati për të shpëtuar situatën kur të tjerët hidhnin duart lart, borscht, mbështetje morale dhe biseda deri në mëngjes.
  • samat për lidhjen me pentesterin më të mirë në vend, i cili na këshillonte dhe na ndihmonte në detyrat.
  • daniemilk për prodhimin e lezetshëm të videove të të gjitha videove.
  • delphe për dorën e fortë dhe gatishmërinë për të punuar deri në fund.
  • mirë Dodo Pizza Engineering për pica pothuajse gjithmonë të ngrohta.

Dhe mirënjohja më e madhe shkon për lojtarët për të gjitha emocionet që përjetuam, ndërsa ju sulmuat kërkimin për dy ditë pa gjumë dhe madje duke shtyrë punën.

Artikuj të tjerë në lidhje me kërkimin për të shkatërruar serverin

Pajisjet e projektit: si ndërtuam një dhomë me një kërkim hakeri

Burimi: www.habr.com

Shto një koment