Paar nĂ€dalat tagasi veetsime : nad ehitasid ruumi, mille tĂ€itsid nutiseadmetega ja kĂ€ivitasid sellest YouTube'i ĂŒlekande. MĂ€ngijad said juhtida asjade interneti seadmeid mĂ€ngu veebisaidilt; EesmĂ€rgiks oli leida tuppa peidetud relv (vĂ”imas laserpointer), seda hĂ€kkida ja tekitada ruumis lĂŒhis.
Aktsiooni lisamiseks paigutasime tuppa purustaja, millesse laadisime 200 000 rubla: purustaja sĂ”i ĂŒhe arve tunnis. PĂ€rast mĂ€ngu vĂ”itmist vĂ”id purustaja peatada ja kogu ĂŒlejÀÀnud raha vĂ”tta.
Oleme juba öelnud ning projekt. On aeg rÀÀkida riistvarast ja selle kokkupanemisest.

Palju oli soove nÀidata ruumi koristamise hetke - nÀitame, kuidas me selle lahti vÔtame
Riistvara arhitektuur: ruumi juhtimine
Riistvaralahenduse projekteerimisega alustasime siis, kui stsenaarium oli juba laias laastus arusaadav, taustaprogramm valmis ja meil oli seadmete paigaldamiseks valmis tĂŒhi ruum.
Meenutades vana nalja "The S in IoT tĂ€histab turvalisust" ("S-tĂ€ht IoT lĂŒhendis tĂ€histab turvalisust") otsustasime, et seekord suhtlevad mĂ€ngustsenaariumi mĂ€ngijad ainult esi- ja tagaosaga. saidilt, kuid ei saa vĂ”imalust otse triikraua juurde pÀÀseda.
Seda tehti ohutuse ja ekraanil toimuva vaatemĂ€ngulisuse huvides: mĂ€ngijate otsese juurdepÀÀsu korral riistvarale oleks palju keerulisem eraldada ohutuid ja potentsiaalselt ohtlikke toiminguid, nĂ€iteks purustaja kiiret kerimist vĂ”i juhtimist. pĂŒrotehnika.
Enne disaini alustamist sÔnastasime mÀnguseadmete juhtimiseks mitu pÔhimÔtet, millest sai disaini aluseks:
Ărge kasutage traadita lahendusi
Kogu mĂ€nguruum on ĂŒhes kaadris, mille igasse nurka pÀÀseb. Traadita ĂŒhenduste jĂ€rele polnud tegelikku vajadust ja need muutusid lihtsalt jĂ€rjekordseks tĂ”rkepunktiks.
Ărge kasutage spetsiaalseid nutikodu seadmeid
Peamiselt kohandamise paindlikkuse huvides. Selge on see, et saame oma ĂŒlesande jaoks kohandada paljusid nutikodu sĂŒsteemide karbis olevaid versioone koos valmis administraatori ja juhtelementidega, kuid tööjĂ”ukulu oleks vĂ”rreldav oma lihtsa lahenduse loomisega.
Lisaks oli vaja vĂ€lja mĂ”elda seadmed, mis nĂ€itaksid selgelt, et mĂ€ngijad muutsid selle olekut: lĂŒlitasid selle sisse/vĂ€lja vĂ”i panid tĂ€htedele FALCON konkreetse valgusti.
Kogusime kokku kÔik elemendid avalikult kÀttesaadavast riistvarast, mida saab osta tavalistest raadioosade poodidest: pitsa ja dieetkoola tarnimise vahel tulid kohapeale pidevalt kullerid Chip and Dip ja Leroy.
Valik kÔik ise kokku panna lihtsustas silumist, skaleeritavus nÔudis aga paigaldamisel suuremat hoolt.
KÔik releed ja arudiinid ei tohiks kaadris nÀha olla
Otsustasime tuua kĂ”ik juhitavad elemendid ĂŒhte kohta ja peita need kulisside taha, et saaksime jĂ€lgida nende jĂ”udlust ning vajadusel hoolikalt kaamera nĂ€htavusalast vĂ€lja roomata ning rikkis seadet vĂ€lja vahetada.

LĂ”puks peideti kĂ”ik laua alla ja kaamera paigaldati nii, et laua all ei paistnud midagi. See oli meie "pime nurk", mille insener pidi ĂŒles hiilima
Selle tulemusena saime tegelikult ĂŒhe nutiseadme: see sai iga oma osa oleku taustaprogrammist ja muutis seda vastava kĂ€suga.
Riistvara rakendamise seisukohast kontrollis see seade 6 elementi:
- Mitu laualampi, neil on sees/vÀljas olek ja neid juhivad mÀngijad
- TÀhed seinal, nad saavad mÀngijate kÀsul oma vÀrvi muuta
- FÀnnid, mis pöörlevad ja avavad pabertahvel, kui server on koormatud
- Laserjuhtimine PWM-i kaudu
- Purustaja, kes sÔi graafikujÀrgselt raha
- Suitsumasin, mis lÀks enne iga laserlaskmist lahti

Suitsumasina katsetamine laseriga
Hiljem lisati lavavalgusti, mis seisis raami taga ja mida juhiti tĂ€pselt nagu lampe punktist 1. Lavavalgusti töötas kahel juhul: valgustas laserit, kui sellele toide pandi, ja valgustas raskust enne Laser kĂ€ivitati lahingureĆŸiimis.
Mis see nutiseade oli?

Meie riistvaramees Yura pĂŒĂŒdis kogu tee asju mitte keeruliseks ajada ja leida vĂ”imalikult lihtsa ja minimalistliku lahenduse.
Eeldati, et VPS kĂ€ivitab lihtsalt skripti, mis vĂ”tab jsoni vastu seadmete olekuga ja saadab selle USB kaudu ĂŒhendatud Arduinosse.
Ăhendatud portidega:
- 16 tavalist releed (need tegid seda klÔpsutavat hÀÀlt, mis videos kuulda oli. Peamiselt valisime need just selle heli pÀrast)
- 4 pooljuhtreleed PWM-kanalite, nÀiteks ventilaatorite, juhtimiseks,
- eraldi PWM vÀljund laserile
- vÀljund, mis genereerib signaali LED-ribale
Siin on nÀide jsoni kÀsust, mis saabus serverist releele
{"power":false,"speed":0,"period":null,"deviceIdentifier":"FAN"}Ja see on nÀide funktsioonist, millega kÀsk jÔudis Arudinosse
def callback(ch, method, properties, body):
request = json.loads(body.decode("utf-8"))
print(request, end="n")
send_to_serial(body)Et jĂ€lgida hetke, mil laser lĂ”puks nöörist lĂ€bi pĂ”leb ja raskus akvaariumile lendab, tegime vĂ€ikese nupu, mis kĂ€ivitus raskuse langemisel ja andis sĂŒsteemile signaali.

Nupp raskuse liikumise jÀlgimiseks
Selle signaali peale pidid sĂŒttima lauatennisepallidest valmistatud suitsupommid. Panime 4 suitsuraketti otse serveri korpusesse ja ĂŒhendasime need nikroomniidiga, mis pidi kuumenema ja töötama nagu sĂŒĂŒtaja.

Korpus suitsupommide ja Hiina vanikuga

Arduino
Algse plaani kohaselt toimus Arduinol kaks aktsiooni.
Esiteks, kui saadeti uus taotlus, sÔeluti taotlus ArduinoJsoni teegi abil. SeejÀrel vÔrreldi iga hallatavat seadet selle kahe omadusega.
- toiteolek "sees" vÔi "vÀljas" (standardolek)
- periood, milleks seade on sisse lĂŒlitatud - aeg mikrosekundites tahvli algusest, mil on aeg see vĂ€lja lĂŒlitada, st viia olek standardile
Viimati mÀÀrati see JSON-is vastava parameetri vastuvÔtmisel, kuid seda ei saanud edastada, siis mÀÀrati vÀÀrtuseks 0 ja lÀhtestamist ei toimunud.
Teine toiming, mida Arduino iga tsĂŒkli jooksul sooritas, oli olekute vĂ€rskendamine, st kontrollimine, kas midagi on vaja sisse lĂŒlitada vĂ”i on aeg mĂ”ni seade vĂ€lja lĂŒlitada.
Laserpointer - seesama Megatron 3000

See on tavaline LSMVR450-3000MF 3000mW 450nm kÀsitsi teravustamise laserlÔikamise ja mÀrgistamise moodul.
Kirjad Falcon
Need olid tehtud vĂ€ga lihtsalt - lihtsalt kopeerisime logolt tĂ€hed, lĂ”ikasime papist vĂ€lja ja katsime siis LED-teibiga. Sel juhul pidin teibi tĂŒkid kokku jootma, igal Ă”mblusel 4 kontakti, kuid tulemus oli seda vÀÀrt. Meie tagamees Pasha nĂ€itas oskuste imesid, tehes seda vĂ€hem kui mĂ”ne tunniga.

Iot seadme esimesed katsetused ja viimistlus
Tegime Ă€ra esimesed katsed ja samal ajal saabusid meile uued ĂŒlesanded. Fakt on see, et protsessi keskel liitus meeskonnaga tĂ”eline filmiprodutsent ja operaator VGIK-ist Ilja Serov - ta ehitas kaadri, lisas kinole tĂ€iendava valgustuse ja muutis veidi mĂ€ngu stsenaariumi, et sĂŒĆŸee oleks emotsionaalsem. pilt dramaatilisem ja teatraalsem.
See tĂ”stis oluliselt kvaliteeti, kuid ilmusid elemendid, mis vajasid samuti releega ĂŒhendamist ja ette nĂ€htud tööalgoritmi.
Teine probleem oli laser: tegime mitu katset erinevat tĂŒĂŒpi köite ja erineva vĂ”imsusega laseritega. Katse jaoks riputasime raskuse lihtsalt vertikaalselt köie kĂŒlge.
TestmÀrgiga joostes oli PWM-i kaudu reguleeritud vÔimsus alla 10% ega kahjustanud köit isegi pikal kokkupuutel.
LahingureĆŸiimi jaoks defokuseeriti laser umbes 10 mm lĂ€bimÔÔduga punktini ja see pĂ”les enesekindlalt umbes meetri kauguselt koormaga lĂ€bi trossi.

Nii et laser töötas testides ideaalselt
Kui hakkasime toas kÔike otse rippraskuse peal katsetama, selgus, et laserit polegi nii lihtne kindlalt kinnitada. SeejÀrel, kui köis pÔleb, siis see sulab, venib ja liigub oma algsest fookusest vÀlja.

Kuid see ei töötanud enam nii: köis nihkus
Ilja nihutas laseri köie vastas oleva ruumi otsa, et laserkiir lĂ€heks ĂŒle kogu lava ja nĂ€eks kaadris ilus vĂ€lja, mis kahekordistas vahemaa.
PĂ€rast veel mitmeid katseid köie pĂ”letamisega juba lahingus, otsustasime saatust mitte piinata ja kindlustasime köie lĂ€bilĂ”ikamise nikroomtraadiga. See hĂ€vitas niidi 120 sekundit pĂ€rast laseri lahingureĆŸiimis sisselĂŒlitamist. Otsustasime selle, samuti juhtme lahtiĂŒhendamise ja suitsupommide sĂŒĂŒtamise eralduskontakti kĂ€ivitamisel kĂ”vasti kodeerida otse mikrokontrolleri riistvarasse.

LÔng, mis lÔpuks ekraanilt lÀbi trossi pÔles
Nii ilmnes kolmas ĂŒlesanne, mille Arduino lahendas â töötada vĂ€lja nende kĂ€skude tĂ€itmisega seotud jadad.
Samuti otsustasime anda Arduinole vajaduse teleris raha lugeda ja purustajat kĂ€ivitada. Esialgu eeldati, et seda teeb taustaprogramm ja jooksev saldo on kodulehel nĂ€ha ning teleris nĂ€itame tĂ€iendava interaktiivse elemendina YouTube'i kommentaare, mis annavad vaatajatele teada, et ruumis toimuvad sĂŒndmused pĂ€riselt. aega.
Kuid proovisÔidu ajal vaatas Ilja stseeni ja soovitas nÀidata suurimal ekraanil mÀngu saldo: kui palju raha on veel alles, kui palju on söödud ja loendus jÀrgmise purustaja kÀivitamiseni.
Arduino sidusime praeguse ajaga: igal tÀistunnil pandi purustaja kÀima. Pilt kuvati teleris rasberry abil, mis sel hetkel juba serverilt pÀringuid vastu vÔttis ja arduinosse tÀitmiseks saatis. Rahaliste nÀitajatega pildid joonistati nii, et konsooli utiliiti fim nimetati midagi sellist
image = subprocess.Popen(["fim", "-q", "-r", "1920Ă1080", fim_str]), гЎД fim_str
Ja see moodustati vajaliku koguse vÔi aja jÀrgi.
Tegime pildid ette: tegime lihtsalt taimeriga valmis video ja eksportisime 200 pilti.
See on mehaanika, mis oli risti sisse programmeeritud. Selleks ajaks, kui viimane loendus algas, lÀksime kÔik kohapeale, relvastasime end tulekustutitega ja istusime tuld ootama (mis oli lahkhelis alles tÀies hoos)
Kuidas teha ĂŒlekanne, mis töötab nĂ€dalas: kaamera valimine
Ălesande jaoks vajasime YouTube'is pidevat ĂŒlekannet 7 pĂ€eva jooksul â tĂ€pselt nii mÀÀrasime mĂ€ngu maksimaalseks kestuseks. Kaks asja vĂ”isid meid peatada:
- Kaamera ĂŒlekuumenemine pideva töö tĂ”ttu
- Interneti katkestus
Kaamera pidi pakkuma vÀhemalt Full HD pilti, et toas mÀngimine ja vaatamine oleks mugav.
Esialgu vaatasime veebikaamerate poole, mida toodetakse striimijate jaoks. Me kÀrpisime oma eelarvet, nii et me ei tahtnud kaamerat osta, kuid nagu selgus, nad ei rendi neid. Samal hetkel leidsime imekombel minu kodust lebava Xbox Kinecti kaamera, paigaldasime selle minu tuppa ja alustasime nÀdalast testsaadet.
Kaamera töötas hĂ€sti ja ei kuumene ĂŒle, kuid Ilja mĂ€rkas peaaegu kohe, et sellel puuduvad sĂ€tted, eriti sĂ€ritust oli vĂ”imatu seadistada.
Ilja pĂŒĂŒdis lĂ€hendada ĂŒlekande tĂŒĂŒpi filmi- ja videotootmise standarditele: edastada dĂŒnaamiliselt muutuvat valgusstseeni eredate valgusallikate, tumeda tausta ja kaadris olevate objektidega. Samas tahtsin sĂ€ilitada pildi viimistletust nii eredas kui varjus, minimaalse digitaalse mĂŒraga.
SeetĂ”ttu, kuigi Kinect osutus testides usaldusvÀÀrseks ega vajanud videohĂ”ivekaarti (veel ĂŒks tĂ”rkepunkt), otsustasime sellest loobuda. PĂ€rast kolmepĂ€evast erinevate kaamerate testimist valis Ilja Sony FDR-AX53 â vĂ€ikese ja töökindla videokaamera, mille rentimine on odav, kuid millel on samal ajal piisav töökindlus ja visuaalsed omadused.
Rentisime kaamera, lĂŒlitasime selle nĂ€dalaks sisse koos videosalvestuskaardiga ja mĂ”istsime, et sellega saame loota pidevale ĂŒlekandele kogu otsingu vĂ€ltel.
Filmi tegemine: lava lavastamine ja valgustus
Valgustuse kallal töötamine nÔudis teatud graatsilisust; tuli koostada valgustusskoor minimaalsete vahenditega:
1. Esemete valgustamine, kui mĂ€ngijad need leiavad (laser, kaal), samuti purustaja pidev valgus. Siin kasutasime dedolight 150 â töökindlaid ja kompaktseid madalpinge halogeenlampidega kilevalgustusseadmeid, mis vĂ”imaldavad fokuseerida kiiret konkreetsele objektile ilma tausta ja muid objekte mĂ”jutamata.
2. Praktiline mÀnguvalgusti - laualamp, pÔrandalamp, tÀht, vanik. Kogu praktiline valgus oli pildiala valgustamiseks kaadris harmooniliselt jaotatud, sees olid LED-lambid vÀrvitemperatuuriga 3200K, pÔrandalambi lamp oli kaetud punase Rosco fooliumfiltriga, et tekitada ebatavaline vÀrviaktsent.

Olen oma ema juures insener vÔi lansseerimine toimub homme
Kuidas me interneti ja elektri broneerisime
Nad lĂ€henesid tĂ”rketaluvuse kĂŒsimusele peaaegu nagu andmekeskuses: otsustasid pĂ”hiprintsiipidest mitte kĂ”rvale kalduda ja reserveeriti tavapĂ€rase N+1 skeemi jĂ€rgi.
Kui ĂŒlekanne YouTube'is peatub, tĂ€hendab see, et sama lingi abil ei saa uuesti ĂŒhendust luua ja voogu jĂ€tkata. See oli kriitiline hetk ja ruum asus tavalises kontoris.
Selleks kasutasime OpenWRT-pĂ”hist ruuterit ja mwan3 paketti. See testis automaatselt iga 5 sekundi jĂ€rel kanali saadavust ja lĂŒlitus pausi korral Yotaga varumodemile. Selle tulemusena toimus varukanalile ĂŒmberlĂŒlitumine vĂ€hem kui minutiga.

Sama oluline oli ka elektrikatkestuste likvideerimine, sest isegi lĂŒhiajaline voolutĂ”us pĂ”hjustaks kĂ”igi arvutite taaskĂ€ivitamise.
SeetĂ”ttu vĂ”tsime ippon innova g2 3000 katkematu toiteallika, mis varundaks kĂ”iki mĂ€nguseadmeid: meie sĂŒsteemi koguenergiatarve oli umbes 300 vatti. See kestaks 75 minutit, meie eesmĂ€rkide jaoks tĂ€iesti piisav.
Otsustasime ohverdada lisavalgustuse juhuks, kui toas elekter Ă€ra peaks minema - see polnud ĂŒhendatud katkematu vooluga.
TÀnusÔnad
- Kogu meeskonnale , kes mÀngu vÀlja mÔtles ja ellu viis.
- Eraldi RUVDS-i administraatoritele serverite töö jÀlgimiseks oli koormus vastuvÔetav ja kÔik toimis nagu tavaliselt.
- Parimale ĂŒlemusele selle eest, et vastuseks kĂ”nele: âMul on idee: vĂ”tame serveri, paneme akvaariumi ja riputame selle kohale raskuse, buum, pĂ”mm, kĂ”ik on veega ĂŒle ujutatud, lĂŒhis, tulekahju !â ta ĂŒtleb alati enesekindlalt "tee seda!"
- TÀnan ja eraldi Mihhail Karpovile selle eest, et ta mitte ainult ei saanud poolel teel kokku ja lubas meil kasutustingimusi rikkuda, vaid andis meile isegi aastaks Àrikonto, kui projektist rÀÀkisime.
- Ilja Serov liitumise ja projekti kaasprodutsendiks saamise eest, valmis pool ööd roomama, LED-riba liimima, tehnilisi lahendusi otsima ja tegema kÔik selleks, et saaksime tÔelise filmi.
- selle eest, et olete alati valmis pÀÀstma olukorda, kui teised kÀed viskasid, borƥi, moraalset tuge ja vestlusi hommikuni.
- selle eest, et ĂŒhendasite meid vabariigi parima pentesteriga, kes meid nĂ”ustas ja ĂŒlesannetega aitas.
- kÔigi videote lahedaks videotootmiseks.
- kindla kÀe ja viimse töötahte eest.
- Noh peaaegu alati sooja pitsa jaoks.
Ja suurim tĂ€nu kuulub mĂ€ngijatele kĂ”igi nende emotsioonide eest, mida kogesime sel ajal, kui te kaks pĂ€eva ilma magamata ja isegi tööd edasi lĂŒkates otsingule tormasid.
Muud artiklid serveri hĂ€vitamise pĂŒĂŒdluste kohta
Allikas: www.habr.com
