Perkakasan projek: cara kami membina bilik dengan usaha penggodam

Perkakasan projek: cara kami membina bilik dengan usaha penggodam
Beberapa minggu lalu kami mengadakan pencarian dalam talian untuk penggodamMereka membina bilik yang dipenuhi dengan peranti pintar dan melancarkan siaran YouTube daripadanya. Pemain boleh mengawal peranti IoT daripada tapak web permainan; matlamatnya adalah untuk mencari senjata yang tersembunyi di dalam bilik (penunjuk laser yang kuat), menggodamnya dan membuat litar pintas bilik.

Untuk menambahkan sentuhan keterujaan, kami meletakkan mesin pencincang di dalam bilik dan memuatkannya dengan 200,000 rubel. Mesin pencincang makan satu bil sejam. Dengan memenangi permainan, anda boleh menghentikan mesin pencincang dan mengambil semua baki wang.

Kami sudah beritahu walkthroughDan bagaimana bahagian belakang dibuat projek. Sudah tiba masanya untuk bercakap tentang perkakasan dan cara ia dipasang.

Mainkan video

Terdapat banyak permintaan untuk menunjukkan saat membersihkan bilik - kami menunjukkan cara kami membongkarnya

Seni Bina Besi: Pengurusan Bilik

Kami mula mereka bentuk penyelesaian perkakasan apabila senario sudah jelas, bahagian belakang telah sedia, dan kami mempunyai bilik kosong yang sedia untuk pemasangan peralatan.

Mengimbas kembali jenaka lama "S dalam IoT bermaksud Keselamatan," kami memutuskan bahawa kali ini, pemain dalam senario permainan hanya berinteraksi dengan bahagian hadapan dan bahagian belakang tapak, tetapi tidak mempunyai peluang untuk mengakses perkakasan itu sendiri.

Ini dilakukan untuk keselamatan dan untuk meningkatkan pengalaman visual: jika pemain mempunyai akses terus kepada perkakasan, ia akan menjadi lebih sukar untuk mengasingkan tindakan yang selamat dan berpotensi berbahaya, seperti memajukan mesin pencincang atau mengawal piroteknik.

Sebelum kami mula mereka bentuk, kami merumuskan beberapa prinsip untuk mengawal peranti permainan, yang menjadi asas untuk reka bentuk:

Jangan gunakan penyelesaian tanpa wayar

Keseluruhan ruang permainan terkandung dalam satu bingkai, dengan setiap sudut mudah dicapai. Sambungan wayarles tidak diperlukan dan hanya akan menjadi satu lagi titik kegagalan.

Jangan gunakan sebarang peranti rumah pintar khas

Terutamanya demi fleksibiliti penyesuaian. Walaupun jelas bahawa kami boleh menyesuaikan banyak sistem rumah pintar di luar rak dengan panel pentadbir siap sedia dan kawalan untuk keperluan kami, kos buruh akan setanding dengan mencipta penyelesaian mudah kami sendiri.

Di samping itu, adalah perlu untuk menghasilkan peranti yang akan menunjukkan dengan jelas bahawa pemain yang menukar keadaannya: menghidupkan/mematikan atau menetapkan lampu khusus pada huruf SOKOL.

Kami memasang semua komponen daripada perkakasan sedia ada yang boleh dibeli di kedai elektronik biasa: antara penghantaran piza dan Diet Coke, kurier Chip & Dip dan Leroy sentiasa tiba di tapak.

Pilihan untuk memasang segala-galanya sendiri memudahkan penyahpepijatan; kebolehskalaan, bagaimanapun, memerlukan penjagaan yang lebih tinggi semasa pemasangan.

Semua geganti dan arudino tidak boleh kelihatan dalam bingkai.

Kami memutuskan untuk menyatukan semua elemen terkawal ke satu tempat dan menyembunyikannya di luar kamera, supaya kami boleh memantau fungsinya dan, jika perlu, merangkak keluar dari paparan kamera dengan teliti dan menggantikan unit yang rosak.

Perkakasan projek: cara kami membina bilik dengan usaha penggodam
Akhirnya, semuanya disembunyikan di bawah meja, dan kamera diletakkan supaya tiada apa-apa di bawah meja dapat dilihat. Ini adalah "titik buta" kami untuk jurutera merangkak di bawah.

Akibatnya, kami pada dasarnya berakhir dengan satu peranti pintar: ia menerima keadaan setiap bahagiannya dari bahagian belakang dan menukarnya dengan arahan yang sesuai.

Dari sudut perkakasan, peranti ini mengawal 6 elemen:

  1. Beberapa lampu meja, ia mempunyai keadaan hidup/mati dan dikawal oleh pemain
  2. Huruf di dinding, mereka boleh menukar warna mereka atas arahan pemain
  3. Peminat yang berputar dan membuka carta selak apabila pelayan sedang dimuatkan
  4. Laser dikawal oleh PWM
  5. Pencincang Yang Makan Wang mengikut Jadual
  6. Mesin asap yang berbunyi sebelum setiap tembakan laser.

Mainkan video

Menguji mesin asap dengan laser

Kemudian, lampu pentas ditambah, terletak di belakang kamera dan dikawal betul-betul seperti lampu dari titik 1. Lampu pentas diaktifkan dalam dua situasi: ia menerangi laser apabila kuasa dibekalkan kepadanya, dan ia menerangi berat sebelum laser dilancarkan ke mod pertempuran.

Apakah peranti pintar ini?

Perkakasan projek: cara kami membina bilik dengan usaha penggodam

Sepanjang perjalanan, Yura, lelaki perkakasan kami, cuba memastikan perkara mudah dan menghasilkan penyelesaian paling mudah dan paling minimalis yang mungkin.

Ideanya adalah untuk hanya menjalankan skrip pada VPS yang akan menerima JSON dengan status peranti dan memajukannya ke Arduino yang disambungkan melalui USB.

Port berikut telah disambungkan:

  • 16 geganti biasa (merekalah yang membuat bunyi klik yang anda dengar dalam video. Kami memilihnya terutamanya untuk bunyi itu)
  • 4 geganti keadaan pepejal untuk mengawal saluran PWM, seperti kipas,
  • output PWM berasingan untuk laser
  • output yang menjana isyarat untuk jalur LED

Berikut ialah contoh arahan JSON yang datang ke geganti daripada pelayan.

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

Dan ini adalah contoh fungsi yang digunakan oleh pasukan ke Arudino

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

Untuk menjejaki detik apabila laser akhirnya terbakar melalui tali dan beratnya terbang ke dalam akuarium, kami membuat butang kecil yang akan mencetuskan kejatuhan berat dan menghantar isyarat kepada sistem.

Perkakasan projek: cara kami membina bilik dengan usaha penggodam
Butang pemantauan pergerakan Kettlebell

Isyarat ini sepatutnya menyalakan bom asap yang diperbuat daripada bola ping-pong. Kami memasukkan empat bom asap terus ke dalam bekas pelayan dan menyambung wayar nichrome kepadanya, yang sepatutnya menjadi panas dan bertindak sebagai fius.

Perkakasan projek: cara kami membina bilik dengan usaha penggodam
Kes dengan bom asap dan kalungan Cina

Perkakasan projek: cara kami membina bilik dengan usaha penggodam

Arduino

Mengikut rancangan asal, dua tindakan berlaku pada Arduino.

Pertama, apabila permintaan baharu diterima, ia telah dihuraikan menggunakan perpustakaan ArduinoJson. Kemudian, dua sifat dikaitkan dengan setiap peranti terkawal:

  • keadaan kuasa "hidup" atau "mati" (keadaan lalai)
  • tempoh peranti dihidupkan - masa dalam mikrosaat dari permulaan papan, apabila tiba masanya untuk mematikannya, iaitu, membawa keadaan ke standard

Kali terakhir ditetapkan apabila menerima parameter yang sepadan dalam JSON, tetapi ia juga boleh ditinggalkan, dalam hal ini nilai akan ditetapkan kepada 0 dan tiada tetapan semula akan berlaku.

Tindakan kedua yang Arduino lakukan setiap kitaran ialah mengemas kini keadaan, iaitu, menyemak sama ada terdapat keperluan untuk menghidupkan sesuatu atau sama ada sudah tiba masanya untuk mematikan mana-mana peranti.

Penunjuk laser adalah Megatron 3000 yang sama.

Perkakasan projek: cara kami membina bilik dengan usaha penggodam

Ini ialah modul pemotongan dan penandaan laser fokus manual LSMVR450-3000MF 3000mW 450nm standard.

Surat Falcon

Ia dibuat dengan sangat mudah—kami hanya menyalin huruf daripada logo, memotongnya daripada kadbod, dan kemudian menutupnya dengan jalur LED. Kami terpaksa memateri jalur bersama-sama, empat kenalan pada setiap jahitan, tetapi hasilnya berbaloi. Pembangun bahagian belakang kami, Pasha, menunjukkan kemahirannya, menyelesaikannya dalam masa kurang daripada beberapa jam.

Mainkan video

Ujian pertama peranti IoT dan pemuktamadan

Kami menyelesaikan ujian pertama, dan sepanjang perjalanan, kami berhadapan dengan cabaran baharu. Di tengah-tengah proses itu, penerbit filem dan sinematografer sebenar dari VGIK, Ilya Serov, menyertai pasukan itu. Dia membingkai syot, menambah pencahayaan sinematik tambahan, dan mengubah suai sedikit skrip permainan untuk menjadikan plot lebih emosional dan imejan lebih dramatik dan teater.

Ini meningkatkan kualiti dengan ketara, tetapi elemen muncul yang juga perlu disambungkan ke geganti dan algoritma operasi yang ditetapkan.

Cabaran lain ialah laser: kami menjalankan beberapa eksperimen dengan pelbagai jenis tali dan laser dengan kuasa yang berbeza-beza. Untuk ujian, kami hanya menggantung beban secara menegak dari tali.

Apabila berjalan dengan token ujian, kuasa yang dikawal melalui PWM adalah kurang daripada 10% dan tidak merosakkan tali walaupun selepas pendedahan yang lama.

Untuk mod tempur, laser telah dinyahfokus ke tempat yang berdiameter kira-kira 10 mm, dan ia pasti terbakar melalui tali dan beban dari jarak kira-kira satu meter.

Perkakasan projek: cara kami membina bilik dengan usaha penggodam
Jadi laser berfungsi dengan sempurna dalam ujian.

Sebaik sahaja kami mula menguji semuanya betul-betul di dalam bilik pada berat yang digantung, ternyata mengamankan laser dengan selamat tidaklah begitu mudah. Kerana apabila tali itu terbakar, ia meleleh, meregang, dan beralih dari fokus asalnya.

Perkakasan projek: cara kami membina bilik dengan usaha penggodam
Tetapi ia tidak berfungsi seperti itu lagi: tali itu beralih

Ilya mengalihkan laser ke hujung bilik yang bertentangan dari tali supaya pancaran laser akan memanjang ke seluruh pemandangan dan kelihatan bagus dalam bingkai, yang menggandakan jarak.

Selepas menjalankan beberapa lagi eksperimen dengan membakar tali dalam pertempuran, kami memutuskan untuk tidak mengambil sebarang peluang dan sebaliknya menyandarkan pemotongan tali dengan wayar nichrome. Kawat ini memusnahkan tali 120 saat selepas laser dihidupkan dalam mod pertempuran. Kami memutuskan untuk mengekod ini, serta penyahaktifan wayar dan penyalaan bom tangan asap apabila hubungan pemisah dicetuskan, terus ke dalam perkakasan mikropengawal.

Perkakasan projek: cara kami membina bilik dengan usaha penggodam
Benang yang akhirnya terbakar melalui tali di luar kamera

Oleh itu, tugas ketiga muncul yang diselesaikan oleh Arduino: untuk menyelesaikan urutan yang berkaitan dengan pelaksanaan arahan ini.

Kami juga memutuskan untuk memberi Arduino tugas mengira wang di TV dan memulakan mesin pencincang. Pada mulanya, kami membayangkan bahagian belakang mengendalikan ini, dengan baki semasa boleh dilihat di tapak web. Kami juga akan memaparkan ulasan YouTube di TV sebagai elemen interaktif tambahan, mengingatkan penonton bahawa acara di dalam bilik berlaku dalam masa nyata.

Tetapi semasa larian ujian, Ilya melihat adegan itu dan mencadangkan untuk memaparkan baki permainan pada skrin terbesar: berapa banyak wang yang tinggal, berapa banyak yang telah dimakan, dan kira detik untuk larian mesin pencincang seterusnya.

Kami mengikat Arduino dengan masa semasa: setiap jam penuh, mesin pencincang dimulakan. Imej itu dipaparkan pada TV menggunakan Raspberry Pi, yang sudah menerima permintaan daripada pelayan dan memajukannya ke Arduino untuk dilaksanakan. Imej dengan nilai kewangan dilukis dengan memanggil utiliti baris arahan fim, seperti ini:

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

Dan ia dibentuk berdasarkan jumlah atau masa yang diperlukan.

Kami menjana imej lebih awal: kami hanya mengambil video siap dengan pemasa dan mengeksport 200 imej.

Ini adalah mekanik yang diprogramkan ke dalam salib. Pada masa kira detik terakhir bermula, kami semua memandu keluar ke tapak, bersenjatakan diri dengan alat pemadam api, dan duduk menunggu api (yang marak hanya di Discord).

Cara Membuat Strim Langsung Seminggu: Memilih Kamera

Untuk pencarian itu, kami memerlukan strim YouTube berterusan selama tujuh hari—itulah panjang maksimum yang telah kami rancang untuk permainan itu. Terdapat dua perkara yang boleh menghalang kami daripada berbuat demikian:

  1. Kamera terlalu panas kerana operasi berterusan
  2. Internet terputus

Kamera perlu menyediakan sekurang-kurangnya imej HD Penuh untuk menjadikan permainan dan pemantauan bilik selesa.

Pada mulanya, kami melihat kamera web yang dibuat untuk penstrim. Kami mempunyai bajet, jadi kami tidak mahu membeli satu, dan ternyata mereka tidak menyewanya. Kemudian, secara ajaib, kami menjumpai kamera Xbox Kinect terletak di sekeliling rumah saya, memasangnya di bilik saya dan melancarkan aliran ujian selama seminggu.

Kamera berfungsi dengan baik dan tidak terlalu panas, tetapi Ilya perasan hampir serta-merta bahawa ia kehilangan beberapa tetapan, khususnya kawalan pendedahan.

Ilya berusaha untuk membawa siaran lebih dekat kepada piawaian pengeluaran filem dan video: untuk menyampaikan adegan pencahayaan yang berubah secara dinamik dengan sumber cahaya terang, latar belakang gelap dan objek dalam bingkai. Pada masa yang sama, dia mahu mengekalkan butiran imej dalam kedua-dua sorotan dan bayang-bayang, dengan bunyi digital yang minimum.

Jadi, walaupun Kinect terbukti boleh dipercayai dalam ujian dan tidak memerlukan kad tangkapan video (satu lagi titik kegagalan), kami memutuskan untuk tidak melakukannya. Selepas tiga hari menguji pelbagai kamera, Ilya memilih Sony FDR-AX53—camcorder kecil yang boleh dipercayai yang mampu disewa, namun menawarkan kebolehpercayaan dan kualiti imej yang mencukupi.

Kami menyewa kamera, menyediakannya selama seminggu bersempena dengan kad tangkapan video dan menyedari bahawa kami boleh mengharapkan penyiaran berterusan sepanjang keseluruhan pencarian.

Membuat filem: pementasan dan pencahayaan

Kerja pencahayaan memerlukan kehalusan tertentu; kami perlu mencipta skor pencahayaan dengan sumber yang minimum:

1. Pencahayaan objek apabila pemain menemuinya (laser, berat), serta cahaya berterusan pada mesin pencincang. Dedolight 150s digunakan di sini—lekapan lampu filem yang boleh dipercayai dan padat dengan lampu halogen voltan rendah yang membolehkan pemfokusan rasuk yang tepat pada objek tertentu tanpa menjejaskan latar belakang atau objek lain.

2. Pencahayaan permainan praktikal—lampu meja, lampu lantai, bintang dan kalungan. Semua pencahayaan praktikal diagihkan secara harmoni di seluruh bingkai untuk menerangi kawasan masing-masing. Di dalam, lampu LED dengan suhu warna 3200K dipasang. Lampu di lampu lantai ditutup dengan penapis kerajang Rosco merah untuk mencipta aksen warna yang luar biasa.

Perkakasan projek: cara kami membina bilik dengan usaha penggodam
Saya seorang jurutera di ibu saya, atau adakah pelancaran esok?

Bagaimana kami membuat sandaran internet dan elektrik

Pendekatan kepada toleransi kesalahan hampir sama dengan pusat data: mereka memutuskan untuk berpegang pada prinsip asas dan menggunakan skema sandaran N+1 biasa.

Jika siaran YouTube berhenti, ini bermakna mustahil untuk menyambung semula menggunakan pautan yang sama dan meneruskan strim. Ini adalah saat yang kritikal, terutamanya kerana bilik itu berada di pejabat biasa.

Untuk ini, kami menggunakan penghala berasaskan OpenWRT dan pakej mwan3. Ia secara automatik menguji ketersediaan saluran setiap 5 saat dan, jika sambungan gagal, beralih kepada modem sandaran yang menjalankan Yota. Akibatnya, penukaran kepada saluran sandaran berlaku dalam masa kurang daripada satu minit.
Perkakasan projek: cara kami membina bilik dengan usaha penggodam
Ia juga sama pentingnya untuk menghapuskan gangguan bekalan elektrik, kerana lonjakan kuasa jangka pendek akan menyebabkan semua komputer but semula.

Jadi kami menggunakan UPS Ippon Innova G2 3000 untuk menyandarkan semua peranti permainan: jumlah penggunaan kuasa sistem kami adalah sekitar 300 watt. Ia akan berlangsung selama 75 minit, yang banyak untuk tujuan kami.

Kami memutuskan untuk mengorbankan pencahayaan tambahan sekiranya kuasa padam di dalam bilik - kami tidak menyambungkannya ke bekalan kuasa yang tidak terganggu.

Ucapan terima kasih

  • Kepada seluruh pasukan RUVDS, yang menyusun dan melaksanakan permainan itu.
  • Terima kasih khas kepada pentadbir RUVDS kerana memantau prestasi pelayan, memastikan beban dapat diurus dan semuanya berfungsi seperti biasa.
  • Kepada bos yang terbaik ntsaplin Kerana apabila seseorang memanggilnya dan berkata, "Saya ada idea: kami akan mengambil pelayan, meletakkan akuarium di atasnya, dan menggantung beban di atasnya. Boom, bang, semuanya dibanjiri dengan air, litar pintas, api!" dia sentiasa yakin berkata, "Pergilah!"
  • Terima kasih Penerbitan Tilda Dan terima kasih khas kepada Mikhail Karpov kerana bukan sahaja menerima dan membenarkan kami melanggar Syarat Penggunaan, malah menghadiahkan kami akaun perniagaan selama setahun apabila kami mengumumkan projek itu.
  • Kepada Ilya Serov S_ILya untuk menyertai dan menjadi pengeluar bersama projek itu, bersedia untuk merangkak sekitar separuh malam merekatkan jalur LED, mencari penyelesaian teknikal dan melakukan segala-galanya untuk menjadikan kita filem sebenar.
  • zhovner kerana sentiasa bersedia untuk menyelamatkan keadaan apabila orang lain akan membuang tangan mereka, untuk borscht, sokongan moral dan perbualan sehingga pagi.
  • samat kerana menghubungkan kami dengan penguji penembusan terbaik di negara ini, yang berunding dengan kami dan membantu kami dengan tugasan.
  • daniemilk untuk penghasilan video yang keren untuk semua video.
  • delfphe untuk tangan yang tegas dan kesanggupan untuk bekerja sehingga akhir.
  • Baiklah Kejuruteraan Pizza Dodo untuk pizza yang hampir selalu hangat.

Dan ucapan terima kasih yang tidak terhingga kami tujukan kepada pemain atas semua emosi yang kami alami semasa anda menghabiskan dua hari menyerbu pencarian tanpa tidur, malah menangguhkan kerja.

Artikel lain tentang usaha untuk memusnahkan pelayan

Perkakasan projek: cara kami membina bilik dengan usaha penggodam

Sumber: www.habr.com