ProHoster > Blogi > antaminen > Projektilaitteisto: kuinka rakensimme huoneen hakkeritehtävän kanssa
Projektilaitteisto: kuinka rakensimme huoneen hakkeritehtävän kanssa
Pari viikkoa sitten vietimme online-etsintä hakkereille: he rakensivat huoneen, jonka he täyttivät älylaitteilla ja aloittivat siitä YouTube-lähetyksen. Pelaajat voivat ohjata IoT-laitteita pelisivustolta; Tavoitteena oli löytää huoneeseen piilotettu ase (tehokas laserosoitin), murskata se ja aiheuttaa oikosulku huoneeseen.
Toiminnan lisäämiseksi laitoimme huoneeseen silppurin, johon latasimme 200 000 ruplaa: silppuri söi laskun tunnissa. Pelin voittamisen jälkeen voit pysäyttää silppurin ja ottaa kaikki jäljellä olevat rahat.
Huoneen siivoamisen hetken näyttämistä pyydettiin paljon - näytämme kuinka se puretaan
Laitteistoarkkitehtuuri: Huoneohjaus
Aloitimme laitteistoratkaisun suunnittelun, kun skenaario oli jo suunnilleen ymmärretty, backend oli valmis ja meillä oli tyhjä huone valmiina laitteiden asentamiseen.
Muistaen vanhan vitsin "IoT:n S tarkoittaa turvallisuutta" ("S-kirjain IoT-lyhenteessä tarkoittaa turvallisuutta") päätimme, että tällä kertaa pelin skenaarion pelaajat ovat vuorovaikutuksessa vain etu- ja takapään kanssa. sivustosta, mutta et saa mahdollisuutta päästä suoraan silitysrautaan.
Tämä tehtiin turvallisuussyistä ja näytöllä tapahtuvan näkyvyyden vuoksi: jos pelaajat pääsevät suoraan laitteistoon, olisi paljon vaikeampaa eristää turvallisia ja mahdollisesti vaarallisia toimia, kuten silppurin nopeaa vieritystä tai ohjaamista. pyrotekniikka.
Ennen suunnittelun aloittamista muotoilimme useita pelilaitteiden ohjauksen periaatteita, joista tuli suunnittelun perusta:
Älä käytä langattomia ratkaisuja
Koko pelitila on yhdessä kehyksessä, jonka jokaiseen nurkkaan pääsee käsiksi. Langattomille yhteyksille ei ollut todellista tarvetta, ja niistä tulisi yksinkertaisesti toinen epäonnistumispiste.
Älä käytä mitään erityisiä älykodin laitteita
Lähinnä räätälöinnin joustavuuden vuoksi. On selvää, että voimme räätälöidä monia laatikkoversioita älykodin järjestelmistä valmiilla järjestelmänvalvojilla ja ohjaimilla tehtäväämme varten, mutta työvoimakustannukset olisivat verrattavissa oman yksinkertaisen ratkaisun luomiseen.
Lisäksi piti keksiä laitteita, jotka osoittaisivat selvästi, että pelaajat muuttivat sen tilaa: laittoivat sen päälle/pois tai laittoivat erityisen valon kirjaimiin FALCON.
Keräsimme kaikki elementit julkisesti saatavilla olevista laitteistoista, joita voi ostaa tavallisista radio-osakaupoista: pizzan ja dieetticolan toimittamisen välissä kuriirit Chip and Dip ja Leroy tulivat jatkuvasti paikalle.
Valinta koota kaikki itse yksinkertaisti virheenkorjausta, skaalautuvuus vaati kuitenkin suurempaa huolellisuutta asennuksen aikana.
Kaikki releet ja arudin eivät saa olla näkyvissä kehyksessä
Päätimme tuoda kaikki ohjattavat elementit yhteen paikkaan ja piilottaa ne kulissien taakse, jotta voimme seurata niiden suorituskykyä ja tarvittaessa ryömiä varovasti pois kameran näkyvistä ja vaihtaa viallisen yksikön.
Lopulta kaikki piilotettiin pöydän alle ja kamera asennettiin niin, että pöydän alle ei näkynyt mitään. Tämä oli "sokea pisteemme", jonka insinööri hiipi
Tuloksena saimme itse asiassa yhden älylaitteen: se vastaanotti jokaisen osansa tilan taustajärjestelmästä ja muutti sen sopivalla komennolla.
Laitteiston toteutuksen kannalta tämä laite ohjasi kuutta elementtiä:
Useita pöytälamppuja, ne ovat päällä/pois-tilassa ja niitä ohjaavat pelaajat
Kirjaimet seinällä, he voivat vaihtaa väriään pelaajien käskystä
Fanit, jotka pyörivät ja avaavat fläppitaulun, kun palvelin on kuormitettuna
Laserohjattu PWM:n kautta
Silppuri, joka söi rahaa aikataulussa
Savukone, joka sammui ennen jokaista laserlaukausta
Savukoneen testaus laserilla
Myöhemmin lisättiin lavavalo, joka seisoi rungon takana ja jota ohjattiin täsmälleen kuten lamppuja kohdasta 1. Lavavalo toimi kahdessa tapauksessa: se valaisi laserin, kun siihen kytkettiin virta, ja se valaisi painon ennen laser laukaistiin taistelutilassa.
Mikä tämä älylaite oli?
Koko matkan Yura, laitteistokaverimme, yritti olla mutkistamatta asioita ja keksiä yksinkertaisimman, minimalistisen ratkaisun.
Oletettiin, että VPS yksinkertaisesti ajaisi skriptin, joka vastaanottaa jsonin laitteiden tilan kanssa ja lähettää sen USB:n kautta kytkettyyn Arduinoon.
Kytketty portteihin:
16 tavallista relettä (ne pitivät videossa kuuluvaa naksahdusääntä. Valitsimme ne pääasiassa tämän äänen takia)
4 puolijohderelettä PWM-kanavien, kuten tuulettimien, ohjaamiseen,
erillinen PWM-lähtö laserille
lähtö, joka tuottaa signaalin LED-nauhalle
Tässä on esimerkki json-komennosta, joka tuli releeseen palvelimelta
Seurataksemme hetkeä, jolloin laser vihdoin polttaa köyden läpi ja paino lentää akvaarioon, teimme pienen painikkeen, joka laukesi painon putoamisen jälkeen ja antoi signaalin järjestelmälle.
Painin liikkeen seurantapainike
Tästä signaalista pingispalloista valmistettujen savupommien piti syttyä. Laitoimme 4 savusoihketta suoraan palvelinkoteloon ja liitimme ne nikromilangalla, jonka piti kuumentua ja toimia kuin sulake.
Asunto savupommeilla ja kiinalaisella seppeleellä
Arduino
Alkuperäisen suunnitelman mukaan Arduinolla tapahtui kaksi toimenpidettä.
Ensin, kun uusi pyyntö vastaanotettiin, pyyntö jäsennettiin ArduinoJson-kirjaston avulla. Seuraavaksi jokainen hallittu laite yhdistettiin sen kahdella ominaisuudella:
virtatila "on" tai "off" (vakiotila)
aika, jonka laite on kytketty päälle - aika mikrosekunteina kortin alusta, jolloin on aika sammuttaa se, eli tuoda tila standardiin
Viimeksi se asetettiin vastaanotettaessa vastaavaa parametria JSONissa, mutta sitä ei voitu lähettää, sitten arvoksi asetettiin 0, eikä nollausta tapahtunut.
Toinen toiminto, jonka Arduino suoritti joka syklissä, oli tilojen päivittäminen, eli sen tarkistaminen, onko jotain syytä kytkeä päälle vai oliko aika sammuttaa jokin laite.
Laserosoitin - sama Megatron 3000
Tämä on tavallinen LSMVR450-3000MF 3000mW 450nm manuaalitarkennus laserleikkaus- ja merkintämoduuli.
Kirjeet Falcon
Ne tehtiin hyvin yksinkertaisesti - kopioimme kirjaimet logosta, leikkasimme ne pahvista ja peitimme ne sitten LED-teipillä. Tässä tapauksessa minun piti juottaa teippipalat yhteen, 4 kontaktia jokaisessa saumassa, mutta tulos oli sen arvoinen. Taustakumppanimme Pasha osoitti taitojen ihmeitä ja teki sen alle muutamassa tunnissa.
Iot-laitteen ensimmäiset testit ja viimeistely
Teimme ensimmäiset testit ja samalla meille saapui uusia tehtäviä. Tosiasia on, että prosessin keskellä todellinen elokuvatuottaja ja kameramies VGIK:stä, Ilja Serov, liittyi tiimiin - hän rakensi kehyksen, lisäsi elokuvateatterin lisävalaistusta ja muutti hieman pelin käsikirjoitusta tehdäkseen juonen tunteellisemmasta, ja kuva on dramaattisempi ja teatraalisempi.
Tämä paransi laatua merkittävästi, mutta ilmaantui elementtejä, jotka myös piti liittää releeseen ja määrätty toiminta-algoritmi.
Toinen ongelma oli laser: teimme useita kokeita erityyppisillä köysillä ja eri tehoisilla lasereilla. Testiä varten ripustimme painon pystysuoraan köyteen.
Testimerkillä juostessa PWM:n kautta säädelty teho oli alle 10 %, eikä se vaurioittanut köyttä pitkälläkään altistuksella.
Taistelutilassa laser defokusoitiin noin 10 mm:n halkaisijaltaan olevaan kohtaan ja se poltti luotettavasti köyden läpi kuormalla noin metrin etäisyydeltä.
Joten laser toimi täydellisesti testeissä
Kun aloimme testata kaikkea huoneessa ripustetulla painolla, kävi ilmi, että laserin kiinnittäminen turvallisesti ei ollutkaan niin helppoa. Sitten kun köysi palaa, se sulaa, venyy ja siirtyy pois alkuperäisestä painopisteestään.
Mutta se ei enää toiminut niin: köysi siirtyi
Ilja siirsi laserin köyttä vastapäätä olevan huoneen päähän, jotta lasersäde kulkisi koko lavan poikki ja näyttäisi kauniilta kehyksessä, mikä kaksinkertaisti etäisyyden.
Suoritettuamme useita lisää kokeita köyden polttamiseen jo taistelussa, päätimme olla kiduttamatta kohtaloa ja varmistaa köyden leikkaaminen nikromilangalla. Se tuhosi langan 120 sekuntia laserin käynnistämisen jälkeen taistelutilassa. Päätimme koodata tämän, samoin kuin johdon katkaisun ja savupommien syttymisen, kun erotuskosketin laukeaa, suoraan mikro-ohjaimen laitteistoon.
Lanka, joka lopulta paloi köyden läpi näytön ulkopuolella
Siten ilmestyi kolmas tehtävä, jonka Arduino ratkaisi - selvittää näiden komentojen suorittamiseen liittyvät sekvenssit.
Päätimme myös antaa Arduinolle tarpeen laskea rahaa televisiossa ja käyttää silppuria. Aluksi oletettiin, että taustaosa tekee tämän ja nykyinen saldo näkyy verkkosivuilla, ja televisiossa näytämme YouTuben kommentteja interaktiivisena lisäelementtinä, joka kertoo katsojille, että huoneessa tapahtuvat tapahtumat tapahtuvat todellisuudessa. aika.
Mutta testiajon aikana Ilja katsoi kohtausta ja ehdotti pelin saldon näyttämistä suurimmalla näytöllä: kuinka paljon rahaa on vielä jäljellä, kuinka paljon on syöty ja lähtölaskenta silppurin seuraavaan käynnistykseen.
Sitoimme Arduinon nykyiseen aikaan: joka täysi tunti käynnistettiin silppuri. Kuva näytettiin televisiossa Rasberryn avulla, joka tuolloin jo vastaanotti pyyntöjä palvelimelta ja lähetti ne arduinoon suoritettavaksi. Kuvat rahallisilla indikaattoreilla piirrettiin kutsumalla konsoliapuohjelmaa fim jotenkin näin
image = subprocess.Popen(["fim", "-q", "-r", "1920×1080", fim_str]), где fim_str
Ja se muodostettiin vaaditun määrän tai ajan perusteella.
Luomme kuvat etukäteen: otimme vain valmiin videon ajastimella ja vietimme 200 kuvaa.
Tämä on mekaniikka, joka ohjelmoitiin ristiin. Kun viimeinen lähtölaskenta alkoi, menimme kaikki paikalle, aseistautuimme sammuttimilla ja istuimme odottamaan tulipaloa (joka oli vasta täydessä vauhdissa ristiriidassa)
Kuinka tehdä lähetys, joka toimii viikon ajan: kameran valinta
Tehtävää varten tarvitsimme jatkuvan lähetyksen YouTubessa 7 päivän ajan – juuri sen asetimme pelin enimmäiskestoksi. Kaksi asiaa saattoi pysäyttää meidät:
Kameran ylikuumeneminen jatkuvan käytön vuoksi
Internet-katkos
Kameran oli tarjottava vähintään Full HD -kuva, jotta huoneessa pelaaminen ja katselu olisi mukavaa.
Aluksi tarkastelimme verkkokameroita, jotka on valmistettu streamereille. Leikkasimme budjettia, joten emme halunneet ostaa kameraa, mutta kuten kävi ilmi, he eivät vuokraa niitä. Samaan aikaan löysimme ihmeen kaupalla kotoani makaavan Xbox Kinect -kameran, asensimme sen huoneeseeni ja aloitimme testilähetyksen viikon ajan.
Kamera toimi hyvin eikä ylikuumentunut, mutta Ilja huomasi melkein heti, että siitä puuttui asetuksia, erityisesti valotuksen asettaminen oli mahdotonta.
Ilja pyrki tuomaan lähetystyyppiä lähemmäksi elokuva- ja videotuotannon standardeja: välittämään dynaamisesti muuttuvaa valokohtausta kirkkailla valonlähteillä, tummennetulla taustalla ja kehyksessä olevilla kohteilla. Samalla halusin säilyttää kuvan hienostuneisuuden sekä valo- että varjokohdissa minimaalisella digitaalisella kohinalla.
Siksi, vaikka Kinect osoittautui luotettavaksi testeissä eikä vaatinut videokaappauskorttia (toinen vikakohta), päätimme luopua siitä. Kolmen päivän eri kameroiden testaamisen jälkeen Ilja valitsi Sony FDR-AX53:n - pienen, luotettavan videokameran, joka on edullinen vuokrata, mutta jolla on samalla riittävä luotettavuus ja visuaaliset ominaisuudet.
Vuokrasimme kameran, laitoimme sen päälle viikoksi videokaappauskortin kanssa ja tajusimme, että sen avulla voimme luottaa jatkuvaan lähetykseen koko matkan ajan.
Elokuvan tekeminen: näyttämö ja valaistus
Valaistuksen työstäminen vaati tiettyä armoa; meidän piti rakentaa valaistuspisteet mahdollisimman pienin keinoin:
1. Esineiden valaistus, kun pelaajat löytävät ne (laser, paino), sekä jatkuva valo silppurissa. Täällä käytimme dedolight 150 - luotettavia ja kompakteja filmivalolaitteita pienjännitehalogeenilampuilla, joiden avulla voit kohdistaa säteen tiettyyn kohteeseen vaikuttamatta taustaan ja muihin esineisiin.
2. Käytännöllinen leikkivalo - pöytälamppu, lattiavalaisin, tähti, seppele. Kaikki käytännöllinen valo jakautui kehykseen harmonisesti kuva-alueen valaisemiseksi, sisällä oli LED-lamppuja, joiden värilämpötila oli 3200K, lattiavalaisimen lamppu peitettiin punaisella Rosco-foliosuodattimella epätavallisen värikorosteen luomiseksi.
Olen insinööri äitini luona tai lanseeraus on huomenna
Kuinka varasimme internetin ja sähkön
He lähestyivät vikasietoasioita melkein kuin konesalissa: päättivät olla poikkeamatta perusperiaatteista ja varattiin tavanomaisen N+1-järjestelmän mukaan.
Jos lähetys YouTubessa pysähtyy, on mahdotonta muodostaa yhteyttä uudelleen käyttämällä samaa linkkiä ja jatkaa suoratoistoa. Se oli kriittinen hetki, ja huone sijaitsi tavallisessa toimistossa.
Tätä varten käytimme OpenWRT-pohjaista reititintä ja mwan3-pakettia. Se testasi automaattisesti kanavan saatavuuden 5 sekunnin välein ja vaihtoi tauon sattuessa Yotan varamodeemiin. Tämän seurauksena vaihto varakanavalle tapahtui alle minuutissa.
Yhtä tärkeää oli myös sähkökatkojen eliminointi, sillä lyhytaikainenkin virtapiike aiheuttaisi kaikkien tietokoneiden uudelleenkäynnistyksen.
Siksi otimme ippon innova g2 3000 keskeytymättömän virtalähteen, joka varmuuskopioi kaikki pelilaitteet: järjestelmämme kokonaisvirrankulutus oli noin 300 wattia. Se kestäisi 75 minuuttia, aivan tarpeeksi meidän tarkoituksiin.
Päätimme uhrata lisävalaistuksen siltä varalta, että huoneesta katkesi sähkö - sitä ei ollut kytketty keskeytymättömään virtalähteeseen.
Kiitokset
Koko joukkueelle RUVDS, joka keksi ja toteutti pelin.
Erikseen RUVDS-järjestelmänvalvojille, palvelimien toiminnan seurantaan, kuormitus oli hyväksyttävää ja kaikki toimi normaalisti.
Parhaalle pomolle ntsaplin siitä, että vastauksena kutsuun: "Minulla on idea: otamme palvelimen, laitamme siihen akvaarion ja ripustamme sen päälle painon, puomi, pama, kaikki on veden tulvaa, oikosulku, tuli !” hän sanoo aina luottavaisesti "tee se!"
Kiitos Tilda Publishing ja erikseen Mikhail Karpoville siitä, että ei vain tapasi puolivälissä ja antoi meidän rikkoa käyttöehtoja, vaan jopa antoi meille yritystilin vuodeksi, kun puhuimme projektista.
Ilja Serov S_ILya liittymisestä ja projektin yhteistuottajaksi, valmiina ryömimään puoli yötä, liimaamaan LED-nauhaa, etsimään teknisiä ratkaisuja ja tekemään kaikkensa, jotta saamme oikean elokuvan.
zhovner siitä, että olet aina valmis pelastamaan tilanteen, kun muut oksentavat kätensä, borssia, moraalista tukea ja keskusteluja aamuun asti.
samat siitä, että olet yhdistänyt meidät maan parhaaseen pentesteriin, joka neuvoi ja auttoi meitä tehtävissä.
daniemilk kaikkien videoiden viileään videotuotantoon.
delphe lujasta kädestä ja halusta työskennellä viimeiseen asti.