Projekta aparataro: kiel ni konstruis ĉambron kun retpirato-serĉo

Projekta aparataro: kiel ni konstruis ĉambron kun retpirato-serĉo
Antaŭ kelkaj semajnoj ni pasigis interreta serĉado de retpiratoj: ili konstruis ĉambron, kiun ili plenigis per inteligentaj aparatoj kaj lanĉis jutuban elsendon el ĝi. Ludantoj povus kontroli IoT-aparatojn de la ludo retejo; La celo estis trovi armilon kaŝitan en la ĉambro (potenca lasermontrilo), haki ĝin kaj kaŭzi fuŝkontakton en la ĉambro.

Por aldoni al la agado, ni metis shredder en la ĉambro, en kiun ni ŝarĝis 200 rubloj: la shredder manĝis unu bileton hore. Post gajno de la ludo, vi povus haltigi la shredder kaj preni la tutan restantan monon.

Ni jam diris promenadoKaj kiel la malantaŭo estis farita projekto. Estas tempo paroli pri la aparataro kaj kiel ĝi estis kunmetita.


Estis multaj petoj por montri la momenton de purigado de ĉambro - ni montras kiel ni disigas ĝin

Aparataro Arkitekturo: Ĉambra Kontrolo

Ni komencis desegni aparatan solvon kiam la scenaro jam estis proksimume komprenita, la backend estis preta, kaj ni havis malplenan ĉambron preta por instali la ekipaĵon.

Memorante la malnovan ŝercon "La S en IoT signifas Sekurecon" ("La litero S en la IoT-mallongigo signifas Sekurecon"), ni decidis, ke ĉi-foje la ludantoj en la ludscenaro interagas nur kun la fronto kaj malantaŭo. de la retejo, sed ne ricevas la ŝancon atingi rekte la feron.

Ĉi tio estis farita pro kialoj de sekureco kaj spektaklo de kio okazis sur la ekrano: kun rekta aliro al la aparataro de ludantoj, estus multe pli malfacile izoli sekurajn kaj eble danĝerajn agojn, ekzemple, rapida movo de shredder aŭ kontrolado. pirotekniko.

Antaŭ ol komenci la dezajnon, ni formulis plurajn principojn por kontroli videoludajn aparatojn, kiuj fariĝis la bazo de la dezajno:

Ne uzu sendratajn solvojn

La tuta ludspaco estas en unu kadro, kies ĉiu angulo estas atingebla. Ne estis vera bezono de sendrataj konektoj kaj ili simple fariĝus alia punkto de fiasko.

Ne uzu iujn ajn specialajn inteligentajn hejmajn aparatojn

Ĉefe pro personigo-fleksebleco. Estas klare, ke ni povas personecigi multajn boksitajn versiojn de inteligentaj hejmaj sistemoj kun pretaj administrantoj kaj kontroloj por nia tasko, sed la laborkostoj estus kompareblaj al krei vian propran simplan solvon.

Krome, necesis elpensi aparatojn, kiuj klare montrus, ke estas la ludantoj, kiuj ŝanĝis ĝian staton: ili ŝaltis/malŝaltis aŭ metis specifan lumon sur la literojn FALCON.

Ni kolektis ĉiujn elementojn de publike disponebla aparataro aĉetebla en regulaj radiopartaĵoj: inter liverado de pico kaj dieta kolao, kurieroj Chip and Dip kaj Leroy konstante venis al la retejo.

La elekto por kunveni ĉion mem simpligis senararigon, skaleblo tamen postulis pli grandan zorgon dum instalado.

Ĉiuj relajsoj kaj arudino ne devus esti videblaj en la kadro

Ni decidis alporti ĉiujn kontroleblajn elementojn en unu lokon kaj kaŝi ilin malantaŭ la scenoj por povi kontroli ilian agadon kaj, se necese, zorge rampi ekster la vido de la fotilo kaj anstataŭigi la malsukcesan unuon.

Projekta aparataro: kiel ni konstruis ĉambron kun retpirato-serĉo
Fine ĉio estis kaŝita sub la tablo, kaj la fotilo estis instalita tiel ke nenio estis videbla sub la tablo. Ĉi tio estis nia "blinda punkto" por ke la inĝeniero ŝteliru

Kiel rezulto, ni efektive ricevis unu inteligentan aparaton: ĝi ricevis la staton de ĉiu el siaj partoj de la backend kaj ŝanĝis ĝin per la taŭga komando.

El vidpunkto de aparataro efektivigo, ĉi tiu aparato kontrolis 6 elementojn:

  1. Pluraj tablolampoj, ili havas on/off staton kaj estas kontrolitaj de ludantoj
  2. Leteroj sur la muro, ili povas ŝanĝi sian koloron laŭ ordono de la ludantoj
  3. Adorantoj, kiuj turnas kaj malfermas la paperfolion kiam la servilo estas ŝarĝita
  4. Lasero kontrolita per PWM
  5. Shredder kiu manĝis monon laŭhoraro
  6. Fummaŝino kiu eksplodis antaŭ ĉiu laserpafo


Provante fummaŝinon per lasero

Poste, scenlumo estis aldonita, kiu staris malantaŭ la kadro kaj estis kontrolita ekzakte kiel la lampoj de la punkto 1. La sceneja lumo funkciis en du kazoj: ĝi lumigis la laseron kiam potenco estis aplikita al ĝi, kaj ĝi lumigis la pezon antaŭ la lasero estis lanĉita en batalreĝimo.

Kio estis ĉi tiu inteligenta aparato?

Projekta aparataro: kiel ni konstruis ĉambron kun retpirato-serĉo

Dum la tuta vojo, Yura, nia aparataro, provis ne kompliki aferojn kaj elpensi la plej simplan, minimumisman solvon ebla.

Oni supozis, ke la VPS simple rulus skripton, kiu ricevas json kun la stato de la aparatoj kaj sendas ĝin al la Arduino konektita per USB.

Konektita al la havenoj:

  • 16 regulaj relajsoj (ili estis tiuj, kiuj faris la klakan bruon, kiu aŭdiĝis en la video. Ni ĉefe elektis ilin pro ĉi tiu sono)
  • 4 solidsubstancaj relajsoj por kontroli PWM-kanalojn, kiel ventumiloj,
  • aparta PWM-eligo por lasero
  • eligo kiu generas signalon al la LED-strio

Jen ekzemplo de json komando kiu venis al la relajso de la servilo

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

Kaj ĉi tio estas ekzemplo de funkcio kun kiu la komando alvenis al Arudino

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

Por spuri la momenton, kiam la lasero finfine brulas tra la ŝnuro kaj la pezo flugas sur la akvarion, ni faris malgrandan butonon, kiu estis ekigita kiam la pezo falis kaj donis signalon al la sistemo.

Projekta aparataro: kiel ni konstruis ĉambron kun retpirato-serĉo
Butono por kontroli la movadon de la pezo

Ĉe tiu signalo, fumbomboj faritaj el ping-pongo-pilkoj laŭsupoze lumiĝis. Ni metis 4 fumflamojn rekte en la servilon kaj konektis ilin per nichrome fadeno, kiu laŭsupoze varmiĝis kaj funkciis kiel ŝaltilo.

Projekta aparataro: kiel ni konstruis ĉambron kun retpirato-serĉo
Loĝejo kun fumbomboj kaj ĉina girlando

Projekta aparataro: kiel ni konstruis ĉambron kun retpirato-serĉo

Arduino

Laŭ la origina plano, du agoj okazis sur la Arduino.

Unue, kiam nova peto estis ricevita, la peto estis analizita uzante la bibliotekon ArduinoJson. Poste, ĉiu administrita aparato estis komparita kun siaj du propraĵoj:

  • potenca stato "ŝaltita" aŭ "malŝaltita" (norma ŝtato)
  • la periodo por kiu la aparato estas ŝaltita - la tempo en mikrosekundoj de la komenco de la tabulo, kiam estas tempo malŝalti ĝin, tio estas, alporti la staton al norma

La lastan fojon estis agordita kiam oni ricevis la respondan parametron en JSON, sed ĝi ne povis esti transdonita, tiam la valoro estis agordita al 0 kaj neniu rekomenciĝo okazis.

La dua ago, kiun la Arduino faris ĉiun ciklon, estis ĝisdatigi statojn, tio estas, kontroli ĉu necesas ŝalti ion aŭ ĉu estas tempo malŝalti iun aparaton.

Lasermontrilo - la sama Megatron 3000

Projekta aparataro: kiel ni konstruis ĉambron kun retpirato-serĉo

Ĉi tio estas regula LSMVR450-3000MF 3000mW 450nm mana fokusa lasera kortego kaj markado-modulo.

Leteroj Falko

Ili estis faritaj tre simple - ni simple kopiis la literojn de la emblemo, tranĉis ilin el kartono, kaj poste kovris ilin per LED-bendo. En ĉi tiu kazo, mi devis kunludi la pecojn de bendo, 4 kontaktojn sur ĉiu kudro, sed la rezulto valoris ĝin. Nia subtenanto Paŝao montris miraklojn de lerteco, farante ĝin en malpli ol kelkaj horoj.

Unuaj provoj de la iot-aparato kaj finado

Ni faris la unuajn provojn kaj samtempe alvenis al ni novaj taskoj. La fakto estas, ke meze de la procezo, reala filmproduktanto kaj kameraisto de VGIK, Ilja Serov, aliĝis al la teamo - li konstruis la kadron, aldonis plian kinematografian lumigadon kaj iomete ŝanĝis la ludskripton por fari la intrigon pli emocia, kaj la bildo pli drama kaj teatra.

Ĉi tio signife pliigis la kvaliton, sed aperis elementoj, kiuj ankaŭ devis esti konektitaj al la relajso kaj la preskribita operacio-algoritmo.

Alia problemo estis la lasero: ni faris plurajn eksperimentojn kun malsamaj specoj de ŝnuro kaj laseroj de malsamaj potencoj. Por la testo, ni simple pendigis pezon vertikale sur ŝnuro.

Kurante kun testa ĵetono, la potenco reguligita per la PWM estis malpli ol 10% kaj ne damaĝis la ŝnuron eĉ kun longa ekspozicio.

Por batalreĝimo, la lasero estis malfokusita al proksimume punkto kun diametro de 10 mm kaj ĝi memfide brulis tra ŝnuro kun ŝarĝo de distanco de proksimume metro.

Projekta aparataro: kiel ni konstruis ĉambron kun retpirato-serĉo
Do la lasero funkciis perfekte en provoj

Kiam ni komencis testi ĉion ĝuste en la ĉambro sur suspendita pezo, montriĝis, ke ne estis tiel facile sekure munti la laseron. Tiam, kiam la ŝnuro brulas, ĝi degelas, etendiĝas kaj moviĝas el sia origina fokuso.

Projekta aparataro: kiel ni konstruis ĉambron kun retpirato-serĉo
Sed ĝi ne plu funkciis tiel: la ŝnuro moviĝis

Ilja movis la laseron al la fino de la ĉambro kontraŭ la ŝnuro, por ke la lasera radio trairu la tutan scenejon kaj aspektu bele en la kadro, kio duobligis la distancon.

Farinte plurajn pliajn eksperimentojn pri bruligo de la ŝnuro jam en batalo, ni decidis ne torturi la sorton kaj certigi la tranĉon de la ŝnuro per nikroma drato. Ĝi detruis la fadenon 120 sekundojn post ŝaltado de la lasero en batalreĝimo. Ni decidis malkodigi ĉi tion, same kiel la malkonekton de la drato kaj la ekbruligo de fumbomboj kiam la disiga kontakto estas ekigita, rekte en la aparataron de la mikroregilo.

Projekta aparataro: kiel ni konstruis ĉambron kun retpirato-serĉo
La fadeno kiu fine brulis tra la ŝnuro ekster-ekrano

Tiel aperis tria tasko, kiun Arduino solvis - ellabori la sekvencojn asociitajn kun la plenumo de ĉi tiuj komandoj.

Ni ankaŭ decidis doni al la Arduino la bezonon kalkuli monon sur la televidilo kaj funkciigi la shredder. Komence, oni supozis, ke la backend farus tion kaj la nuna ekvilibro estus videbla en la retejo, kaj en la televido ni montrus komentojn de Jutubo kiel aldonan interaga elemento, dirante al spektantoj, ke la eventoj en la ĉambro okazas reale. tempo.

Sed dum la provkuro, Ilya rigardis la scenon kaj proponis montri la ludekvilibron sur la plej granda ekrano: kiom da mono restas ankoraŭ, kiom multe estis manĝita, kaj la retronombradon ĝis la sekva ekfunkciigo de la shredder.

Ni ligis Arduinon al la nuna tempo: ĉiun plenan horon oni ekfunkciigis la shredder. La bildo estis montrita sur la televido uzante rasberry, kiu en tiu momento jam ricevis petojn de la servilo kaj sendis ilin al la arduino por ekzekuto. Bildoj kun monaj indikiloj estis desegnitaj nomante la konzola ilo fim io tia

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

Kaj ĝi estis formita surbaze de la bezonata kvanto aŭ tempo.

Ni generis la bildojn anticipe: ni simple faris pretan filmeton per tempigilo kaj eksportis 200 bildojn.

Ĉi tio estas la mekaniko, kiu estis programita en la krucon. Kiam la fina retronombrado komenciĝis, ni ĉiuj iris al la ejo, armis nin per fajroestingiloj kaj sidiĝis por atendi la fajron (kiu estis nur en plena svingo en la malkonkordo)

Kiel fari elsendon kiu funkcias dum semajno: elektante fotilon

Por la serĉo, ni bezonis daŭran elsendon en Jutubo dum 7 tagoj - ĝuste tion ni fiksis kiel maksimuman daŭron de la ludo. Estis du aferoj, kiuj povus malhelpi nin:

  1. Trovarmiĝo de la fotilo pro daŭra funkciado
  2. Interreta malfunkcio

La fotilo devis provizi almenaŭ Full HD-bildon por komfortigi ludi kaj rigardi la ĉambron.

Komence, ni rigardis al retkameraoj kiuj estas produktitaj por streamers. Ni tranĉis nian buĝeton, do ni ne volis aĉeti fotilon, sed, kiel montriĝis, ili ne luas ilin. En la sama momento, ni mirakle trovis Xbox Kinect fotilon kuŝanta en mia domo, instalis ĝin en mia ĉambro kaj komencis provan elsendon por semajno.

La fotilo funkciis bone kaj ne trovarmiĝis, sed Ilya preskaŭ tuj rimarkis, ke mankas al ĝi agordoj, precipe neeblis agordi la ekspozicion.

Ilya serĉis alproksimigi la specon de elsendo al la normoj de filmo kaj videoproduktado: transdoni dinamike ŝanĝantan luman scenon kun helaj lumfontoj, mallumigita fono kaj objektoj en la kadro. Samtempe, mi volis konservi la ellaboron de la bildo kaj en lumaĵoj kaj ombroj, kun minimuma cifereca bruo.

Tial, kvankam la Kinect pruvis esti fidinda en testoj kaj ne postulis videokaptan karton (alia punkto de fiasko), ni decidis forlasi ĝin. Post tri tagoj de testado de malsamaj fotiloj, Ilya elektis la Sony FDR-AX53 - malgrandan fidindan videokameraon, kiu estas malmultekosta lui, sed samtempe havas sufiĉajn fidindecon kaj vidajn trajtojn.

Ni luis fotilon, ŝaltis ĝin dum semajno kune kun vid-kaptkarto, kaj rimarkis, ke per ĝi ni povas fidi je daŭra elsendo dum la tuta serĉo.

Fari filmon: enscenigado de la scenejo kaj lumigado

Labori pri la lumigado postulis certan gracon; ni bezonis konstrui lumpartituron kun minimumaj rimedoj:

1. Lumigo de objektoj kiam ludantoj trovas ilin (lasero, pezo), same kiel konstanta lumo sur la shredder. Ĉi tie ni uzis dedolight 150 - fidindajn kaj kompaktajn filmajn lumajn aparatojn kun malalttensiaj halogenaj lampoj, kiuj ebligas al vi fokusigi la trabon sur specifa objekto sen tuŝi la fonon kaj aliajn objektojn.

2. Praktika ludlumo - tablolampo, planka lampo, stelo, girlando. Ĉiu praktika lumo estis harmonie distribuita en la kadro por lumigi la bildan areon, estis LED-lampoj kun kolortemperaturo de 3200K interne, la lampo en la planka lampo estis kovrita per ruĝa Rosco-folia filtrilo por krei nekutiman kolorakcenton.

Projekta aparataro: kiel ni konstruis ĉambron kun retpirato-serĉo
Mi estas inĝeniero ĉe mia panjo aŭ la lanĉo estas morgaŭ

Kiel ni rezervis interreton kaj elektron

Ili tuŝis la temon de erartoleremo preskaŭ kiel en datumcentro: ili decidis ne deflankiĝi de la bazaj principoj kaj rezervis laŭ la kutima skemo N+1.

Se la elsendo ĉe Jutubo ĉesas, tio signifas, ke estos neeble rekonekti per la sama ligilo kaj daŭrigi la fluon. Estis kritika momento, kaj la ĉambro situis en regula oficejo.

Por tio ni uzis OpenWRT-bazitan enkursigilon kaj la pakaĵon mwan3. Ĝi aŭtomate testis la haveblecon de la kanalo ĉiujn 5 sekundojn kaj, en kazo de paŭzo, ŝanĝis al la rezerva modemo kun Yota. Kiel rezulto, ŝanĝi al la rezerva kanalo okazis en malpli ol minuto.
Projekta aparataro: kiel ni konstruis ĉambron kun retpirato-serĉo
Ankaŭ estis same grave forigi elektropaneojn, ĉar eĉ mallongdaŭra elektra ŝpruco kaŭzus rekomencon de ĉiuj komputiloj.

Sekve, ni prenis ippon innova g2 3000 seninterrompan elektroprovizon, kiu sekurigus ĉiujn videoludajn aparatojn: la totala energikonsumo de nia sistemo estis ĉirkaŭ 300 Vatoj. Ĝi daŭrus 75 minutojn, sufiĉe sufiĉe por niaj celoj.

Ni decidis oferi plian lumigadon, se la elektro en la ĉambro estingiĝis - ĝi ne estis konektita al seninterrompa elektroprovizo.

Dankoj

  • Al la tuta teamo RUVDS, kiu inventis kaj efektivigis la ludon.
  • Aparte, al la administrantoj de RUVDS, por kontroli la laboron de la serviloj, la ŝarĝo estis akceptebla kaj ĉio funkciis kiel kutime.
  • Al la plej bona estro ntsaplin pro tio, ke responde al la voko, “Mi havas ideon: ni prenos servilon, metos sur ĝin akvarion kaj pendigos pezon super ĝi, bum, bang, ĉio estas inundita de akvo, kurta cirkvito, fajro. !” li ĉiam memfide diras "faru ĝin!"
  • Спасибо Eldonejo Tilda kaj aparte al Miĥail Karpov pro ne nur renkontiĝi duonvoje kaj permesi al ni malobservi la Uzkondiĉojn, sed eĉ doni al ni komercan konton dum jaro kiam ni parolis pri la projekto.
  • Ilja Serov S_ILja por aliĝi kaj fariĝi kunproduktanto de la projekto, preta rampi duonon de la nokto, glui LED-strion, serĉi teknikajn solvojn kaj fari ĉion, por ke ni ricevu veran filmon.
  • ĵovner ĉar ĉiam pretas savi la situacion, kiam aliaj levis la manojn, borŝton, moralan subtenon kaj konversaciojn ĝis la mateno.
  • samat pro ligi nin kun la plej bona pentester en la lando, kiu konsilis nin kaj helpis nin kun taskoj.
  • daniemilk por la malvarmeta videoproduktado de ĉiuj videoj.
  • delphe pro firma mano kaj preteco labori ĝis la lasta.
  • Nu Dodo Pico-Inĝenieristiko por preskaŭ ĉiam varma pico.

Kaj la plej granda dankemo estas al la ludantoj pro ĉiuj emocioj, kiujn ni travivis dum vi sturmis la serĉon dum du tagoj sen dormo kaj eĉ prokrastante laboron.

Aliaj artikoloj pri la serĉo por detrui la servilon

Projekta aparataro: kiel ni konstruis ĉambron kun retpirato-serĉo

fonto: www.habr.com

Aldoni komenton