Perkakasan projek: cara kami membina bilik dengan usaha penggodam

Perkakasan projek: cara kami membina bilik dengan usaha penggodam
Beberapa minggu yang lalu kami habiskan pencarian dalam talian untuk penggodam: mereka membina sebuah bilik, yang mereka isi 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 menyebabkan litar pintas di dalam bilik.

Untuk menambah tindakan, kami meletakkan mesin pencincang di dalam bilik, di mana kami memuatkan 200 rubel: mesin pencincang makan satu bil sejam. Selepas 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.


Terdapat banyak permintaan untuk menunjukkan detik membersihkan bilik - kami menunjukkan cara kami memisahkannya

Seni Bina Perkakasan: Kawalan Bilik

Kami mula mereka bentuk penyelesaian perkakasan apabila senario itu sudah difahami secara kasar, bahagian belakang telah sedia, dan kami mempunyai bilik kosong yang sedia untuk memasang peralatan.

Mengingati jenaka lama "S dalam IoT bermaksud Keselamatan" ("Huruf S dalam singkatan IoT bermaksud Keselamatan"), kami memutuskan bahawa kali ini pemain dalam senario permainan hanya berinteraksi dengan bahagian depan dan belakang. tapak, tetapi tidak mendapat peluang untuk mendapatkan terus ke besi.

Ini dilakukan atas sebab keselamatan dan tontonan apa yang berlaku pada skrin: dengan akses terus kepada perkakasan oleh pemain, ia akan menjadi lebih sukar untuk mengasingkan tindakan yang selamat dan berpotensi berbahaya, contohnya, menatal pantas mesin pencincang atau mengawal piroteknik.

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

Jangan gunakan penyelesaian tanpa wayar

Keseluruhan ruang permainan berada dalam satu bingkai, setiap sudut boleh dicapai. Tidak ada keperluan sebenar untuk sambungan wayarles dan mereka hanya akan menjadi satu lagi titik kegagalan.

Jangan gunakan sebarang peranti rumah pintar khas

Terutamanya demi fleksibiliti penyesuaian. Adalah jelas bahawa kami boleh menyesuaikan banyak versi kotak sistem rumah pintar dengan pentadbir dan kawalan sedia untuk tugas kami, tetapi kos buruh akan setanding dengan mencipta penyelesaian mudah anda sendiri.

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

Kami mengumpulkan semua elemen daripada perkakasan yang tersedia secara umum yang boleh dibeli di kedai alat ganti radio biasa: antara penghantaran piza dan diet cola, kurier Chip dan Dip dan Leroy sentiasa datang ke tapak tersebut.

Pilihan untuk memasang semuanya sendiri memudahkan penyahpepijatan, kebolehskalaan, bagaimanapun, memerlukan penjagaan yang lebih semasa pemasangan.

Semua geganti dan arudin tidak sepatutnya kelihatan dalam bingkai

Kami memutuskan untuk membawa semua elemen yang boleh dikawal ke satu tempat dan menyembunyikannya di sebalik tabir agar dapat memantau prestasi mereka dan, jika perlu, merangkak dengan berhati-hati dari pandangan kamera dan menggantikan unit yang gagal.

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

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

Dari sudut pelaksanaan perkakasan, peranti ini mengawal 6 elemen:

  1. Beberapa lampu meja, ia mempunyai keadaan hidup/mati dan dikawal oleh pemain
  2. Surat 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 melalui PWM
  5. Mesin pencincang yang makan wang mengikut jadual
  6. Mesin asap yang berbunyi sebelum setiap tembakan laser


Menguji mesin asap dengan laser

Kemudian, lampu pentas ditambah, yang berdiri di belakang bingkai dan dikawal betul-betul seperti lampu dari titik 1. Lampu pentas berfungsi dalam dua kes: ia menerangi laser apabila kuasa digunakan padanya, dan ia menerangi berat sebelum laser dilancarkan dalam mod pertempuran.

Apakah peranti pintar ini?

Perkakasan projek: cara kami membina bilik dengan usaha penggodam

Sepanjang jalan, Yura, lelaki perkakasan kami, cuba untuk tidak merumitkan perkara dan menghasilkan penyelesaian paling mudah dan minimalis yang mungkin.

Adalah diandaikan bahawa VPS hanya akan menjalankan skrip yang menerima json dengan keadaan peranti dan menghantarnya ke Arduino yang disambungkan melalui USB.

Disambungkan ke port:

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

Berikut ialah contoh arahan json yang datang ke geganti dari pelayan

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

Dan ini adalah contoh fungsi yang arahannya sampai 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 akuarium, kami membuat butang kecil yang dicetuskan apabila berat jatuh dan memberi isyarat kepada sistem.

Perkakasan projek: cara kami membina bilik dengan usaha penggodam
Butang untuk memantau pergerakan berat

Pada isyarat ini, bom asap yang diperbuat daripada bola ping-pong sepatutnya menyala. Kami meletakkan 4 suar asap terus ke dalam bekas pelayan dan menyambungkannya dengan benang nichrome, yang sepatutnya menjadi panas dan berfungsi seperti penyalaan.

Perkakasan projek: cara kami membina bilik dengan usaha penggodam
Perumahan 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, permintaan itu dihuraikan menggunakan perpustakaan ArduinoJson. Seterusnya, setiap peranti terurus dibandingkan dengan dua sifatnya:

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

Kali terakhir ia ditetapkan apabila menerima parameter yang sepadan dalam JSON, tetapi ia tidak dapat dihantar, maka nilai itu ditetapkan kepada 0 dan tiada tetapan semula 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 - 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 biasa.

Surat Falcon

Ia dibuat dengan sangat mudah - kami hanya menyalin huruf dari logo, memotongnya daripada kadbod, dan kemudian menutupnya dengan pita LED. Dalam kes ini, saya terpaksa menyolder kepingan pita bersama-sama, 4 kenalan pada setiap jahitan, tetapi hasilnya berbaloi. Pasha backender kami menunjukkan keajaiban kemahiran, melakukannya dalam masa kurang daripada beberapa jam.

Ujian pertama peranti iot dan kemasan

Kami melakukan ujian pertama dan pada masa yang sama tugas baru tiba kepada kami. Hakikatnya ialah di tengah-tengah proses, pengeluar filem dan jurukamera sebenar dari VGIK, Ilya Serov, menyertai pasukan - dia membina bingkai, menambah pencahayaan pawagam tambahan dan sedikit mengubah skrip permainan untuk menjadikan plot lebih emosional, dan gambar lebih dramatik dan teater.

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

Masalah lain ialah laser: kami melakukan beberapa eksperimen dengan pelbagai jenis tali dan laser dengan kuasa yang berbeza. Untuk ujian, kami hanya menggantungkan beban secara menegak pada tali.

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

Untuk mod tempur, laser dinyahfokus pada kira-kira tempat dengan diameter 10 mm dan ia dengan yakin terbakar melalui tali dengan beban dari jarak kira-kira satu meter.

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

Apabila kami mula menguji segala-galanya di dalam bilik pada berat yang digantung, ternyata mengamankan laser dengan selamat tidak begitu mudah. Kemudian, apabila tali itu terbakar, ia cair, meregang dan bergerak keluar dari fokus asalnya.

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

Ilya mengalihkan laser ke hujung bilik bertentangan dengan tali supaya pancaran laser melintasi seluruh pentas dan kelihatan cantik dalam bingkai, yang menggandakan jarak.

Selepas menjalankan beberapa lagi eksperimen dengan membakar tali yang sudah ada dalam pertempuran, kami memutuskan untuk tidak menyeksa nasib dan mengamankan pemotongan tali menggunakan wayar nichrome. Ia memusnahkan benang 120 saat selepas menghidupkan laser dalam mod pertempuran. Kami memutuskan untuk mengekod ini, serta memutuskan sambungan wayar dan penyalaan bom asap apabila sesentuh pemisah dicetuskan, terus ke dalam perkakasan mikropengawal.

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

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

Kami juga memutuskan untuk memberi Arduino keperluan untuk mengira wang di TV dan menjalankan mesin pencincang. Pada mulanya, diandaikan bahawa bahagian belakang akan melakukan ini dan baki semasa akan kelihatan di tapak web, dan di TV kami akan menunjukkan ulasan daripada YouTube sebagai elemen interaktif tambahan, memberitahu penonton bahawa acara dalam bilik itu berlaku secara nyata. masa.

Tetapi semasa ujian dijalankan, Ilya melihat tempat kejadian dan mencadangkan untuk menunjukkan baki permainan pada skrin terbesar: berapa banyak wang yang masih tinggal, berapa banyak yang telah dimakan, dan undur ke permulaan mesin pencincang seterusnya.

Kami mengikat Arduino dengan masa semasa: setiap jam penuh mesin pencincang dimulakan. Gambar itu dipaparkan di TV menggunakan rasberry, yang pada masa itu sudah menerima permintaan daripada pelayan dan menghantarnya ke arduino untuk dilaksanakan. Gambar dengan penunjuk monetari telah dilukis dengan memanggil utiliti konsol fim sesuatu 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 gambar lebih awal: kami hanya mengambil video siap pakai dengan pemasa dan mengeksport 200 gambar.

Ini adalah mekanik yang telah diprogramkan ke dalam salib. Pada masa pengiraan detik terakhir bermula, kami semua pergi ke tapak, bersenjatakan diri dengan alat pemadam api dan duduk menunggu api (yang hanya berlaku dalam perselisihan)

Cara membuat siaran yang berfungsi selama seminggu: memilih kamera

Untuk usaha itu, kami memerlukan siaran berterusan di YouTube selama 7 hari - itulah yang kami tetapkan sebagai tempoh maksimum permainan. Terdapat dua perkara yang boleh menghalang kita:

  1. Terlalu panas kamera kerana operasi berterusan
  2. Internet terputus

Kamera perlu menyediakan sekurang-kurangnya gambar HD Penuh untuk menjadikan bermain dan menonton bilik selesa.

Pada mulanya, kami melihat ke arah kamera web yang dihasilkan untuk penstrim. Kami memotong belanjawan kami, jadi kami tidak mahu membeli kamera, tetapi, ternyata, mereka tidak menyewanya. Pada masa yang sama, kami secara ajaib menemui kamera Xbox Kinect terletak di rumah saya, memasangnya di bilik saya dan memulakan siaran ujian selama seminggu.

Kamera berfungsi dengan baik dan tidak terlalu panas, tetapi Ilya hampir serta-merta menyedari bahawa ia tidak mempunyai tetapan, khususnya adalah mustahil untuk menetapkan pendedahan.

Ilya berusaha untuk membawa jenis penyiaran lebih dekat dengan piawaian pengeluaran filem dan video: untuk menyampaikan adegan cahaya yang berubah secara dinamik dengan sumber cahaya terang, latar belakang gelap dan objek dalam bingkai. Pada masa yang sama, saya ingin mengekalkan penghuraian imej dalam sorotan dan bayang-bayang, dengan bunyi digital yang minimum.

Oleh itu, walaupun Kinect terbukti boleh dipercayai dalam ujian dan tidak memerlukan kad tangkapan video (satu lagi titik kegagalan), kami memutuskan untuk meninggalkannya. Selepas tiga hari menguji kamera yang berbeza, Ilya memilih Sony FDR-AX53 - camcorder kecil yang boleh dipercayai yang tidak mahal untuk disewa, tetapi pada masa yang sama mempunyai kebolehpercayaan dan ciri visual yang mencukupi.

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

Membuat filem: mementaskan pentas dan pencahayaan

Mengusahakan pencahayaan memerlukan keanggunan tertentu; kami perlu membina skor pencahayaan dengan cara yang minimum:

1. Pencahayaan objek apabila pemain menemuinya (laser, berat), serta cahaya berterusan pada mesin pencincang. Di sini kami menggunakan dedolight 150 - peranti pencahayaan filem yang boleh dipercayai dan padat dengan lampu halogen voltan rendah, yang membolehkan anda memfokuskan rasuk pada objek tertentu tanpa menjejaskan latar belakang dan objek lain.

2. Lampu permainan praktikal - lampu meja, lampu lantai, bintang, kalungan. Semua cahaya praktikal diagihkan secara harmoni dalam bingkai untuk menerangi kawasan imej, terdapat lampu LED dengan suhu warna 3200K di dalam, lampu di lampu lantai ditutup dengan penapis foil 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 pelancaran adalah esok

Bagaimana kami menempah internet dan elektrik

Mereka mendekati isu toleransi kesalahan hampir seperti di pusat data: mereka memutuskan untuk tidak menyimpang daripada prinsip asas dan terpelihara mengikut skema N+1 biasa.

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

Untuk ini kami menggunakan penghala berasaskan OpenWRT dan pakej mwan3. Ia secara automatik menguji ketersediaan saluran setiap 5 saat dan, sekiranya berlaku rehat, beralih kepada modem sandaran dengan 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 penting untuk menghapuskan gangguan bekalan elektrik, kerana lonjakan kuasa jangka pendek akan menyebabkan but semula semua komputer.

Oleh itu, kami mengambil bekalan kuasa tanpa gangguan ippon innova g2 3000, yang akan menyandarkan semua peranti permainan: jumlah penggunaan kuasa sistem kami adalah sekitar 300 Watt. Ia akan bertahan selama 75 minit, cukup untuk tujuan kita.

Kami memutuskan untuk mengorbankan pencahayaan tambahan sekiranya elektrik di dalam bilik padam - ia tidak disambungkan kepada bekalan kuasa yang tidak terganggu.

Ucapan terima kasih

  • Kepada seluruh pasukan RUVDS, yang mencipta dan melaksanakan permainan itu.
  • Secara berasingan, kepada pentadbir RUVDS, untuk memantau kerja pelayan, beban boleh diterima dan semuanya berfungsi seperti biasa.
  • Kepada bos yang terbaik ntsaplin untuk fakta bahawa sebagai tindak balas kepada panggilan, "Saya mempunyai idea: kami akan mengambil pelayan, meletakkan akuarium di atasnya, dan menggantung beban di atasnya, ledakan, bang, semuanya dibanjiri dengan air, litar pintas, api !” dia sentiasa yakin berkata "lakukan!"
  • Terima kasih Penerbitan Tilda dan secara berasingan kepada Mikhail Karpov kerana bukan sahaja bertemu separuh jalan dan membenarkan kami melanggar Syarat Penggunaan, malah memberi kami akaun perniagaan selama setahun apabila kami bercakap tentang projek itu.
  • Ilya Serov S_ILya kerana menyertai dan menjadi pengeluar bersama projek, bersedia untuk merangkak separuh malam, melekatkan jalur LED, mencari penyelesaian teknikal dan melakukan segala-galanya supaya kami mendapat filem sebenar.
  • zhovner kerana sentiasa bersedia untuk menyelamatkan keadaan apabila orang lain membuang tangan, borscht, sokongan moral dan perbualan sehingga pagi.
  • samat kerana menghubungkan kami dengan pentester terbaik di negara ini, yang menasihati kami dan membantu kami dengan tugasan.
  • daniemilk untuk penghasilan video yang menarik untuk semua video.
  • delphe untuk tangan yang tegas dan kesanggupan untuk bekerja sehingga akhir.
  • Baiklah Kejuruteraan Pizza Dodo untuk pizza yang hampir selalu hangat.

Dan setinggi-tinggi penghargaan ditujukan kepada para pemain untuk semua emosi yang kami alami semasa anda menyerbu pencarian selama dua hari 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

Tambah komen