Cara cepat membuat prototipe perangkat dan mengapa itu penting. Laporkan Yandex.Taxi

Setiap proyek perangkat keras yang rumit secara teknis selalu merupakan persamaan dengan banyak hal yang tidak diketahui: platform, komponen, teknologi, produksi, fungsionalitas, kelayakan. Anda dapat "merasakan" apa yang terjadi ketika tahapan mahal selesai: R&D, pemilihan komponen, pengembangan program, dan mencari pabrik untuk produksi.



Saya sudah memberi tahu secara rinci tentang HabrΓ© bagaimana kami membuat kamera untuk menentukan kelelahan pengemudi. Hari ini saya ingin fokus pada apa yang kami pelajari saat membuat prototipe perangkat ini, bagaimana cara cepat menguji hipotesis menggunakan prototipe dan platform dan komponen mana yang paling baik digunakan untuk ini.

- Ketika kami pergi ke pengembangan produk ini, kami harus membuat banyak prototipe. Saya ingin membagi sebagian pengalaman kami, memberi tahu apa dan bagaimana kami melakukannya. Mungkin seseorang akan menemukan banyak kisah dangkal. Sebagian besar dari Anda, kemungkinan besar, melewati tahap-tahap ini dan juga memiliki pencapaian mereka sendiri. Saya tidak berpura-pura menjadi contoh terakhir dari kebenaran, tetapi itu akan menarik.

Mari kita lihat bagaimana perangkat dibuat sebelum kita sampai ke prototipe, karena sangat menentukan. Ini adalah proyek abstrak, tidak terikat dengan keadaan tertentu, saya berikan hanya sebagai contoh.



Pertama, Anda menyiapkan input dan mendekati R&D. Biasanya ini dilakukan untuk Anda oleh perusahaan pihak ketiga, atau mungkin Anda sendiri. Tetapi bagaimanapun juga, ini adalah proses yang agak panjang, periode minimum adalah tiga hingga delapan minggu. Pada tahap ini, mereka membuat papan, memilih komponen elektronik, dan perangkat melakukan perwujudan material.

Selanjutnya, sampel EVT diproduksi, perangkat uji yang sudah ada di papan yang Anda butuhkan tentang dimensi ini, tentang komponen-komponen tersebut. Tujuannya adalah untuk membuat Anda mengerti, sepertinya apa yang ingin Anda terima, atau tidak, apakah sesuatu perlu diubah. Anda memiliki kesempatan untuk mengujinya.

Kemudian sampel DVT diproduksi. Ini adalah tes verifikasi desain, ketika semua cacat yang ditemukan di EVT atau kebanyakan dari mereka dihilangkan. Setelah itu, perangkat ditempatkan dalam kasing akhir, di desain akhir, sehingga Anda memahami bagaimana rasanya di tangan Anda, bagaimana Anda akan terus menggunakannya.

Langkah selanjutnya adalah merilis batch percobaan PVT. Itu bisa seratus atau seribu keping, tergantung bagaimana semuanya berjalan dengan Anda. Dan kemudian produksi massal dimulai.

Kesimpulan utama dari keseluruhan cerita ini adalah bahwa sampai Anda mendapatkan prototipe pertama, maksud saya EVT, minimal dua hingga tiga bulan akan berlalu. Ini waktu yang cukup lama, dan risiko selalu muncul. Mungkin tidak semua fungsi akan diimplementasikan. Mungkin Anda akan mengambil komponen tidak berhasil, dan Anda harus kembali ke tahap awal R&D. Mungkin Anda tidak memperhitungkan beberapa kondisi pengoperasian perangkat ini. Mungkin panas, dingin, getaran, kotoran, debu, air di sekitar. Apa saja.



Anda juga bisa melebih-lebihkan kemampuan Anda. Anda ingin membuat perangkat yang sesuai dengan kisaran harga tertentu, tetapi gagal, ternyata lebih mahal. Dan sesuatu yang lumrah dapat terjadi - saat Anda telah mengembangkan perangkat selama setengah tahun, persyaratannya telah berubah, dan Anda harus pergi dan melakukannya lagi. Itu terjadi.



Berdasarkan skema sebelumnya, ini membawa kita pada fakta bahwa sekarang orang biasanya menggunakan semacam pendekatan tangkas dalam pengembangan perangkat lunak. Semuanya berputar-putar, dalam iterasi singkat. Pada setiap tahap ada prototipe yang berfungsi, dan semuanya normal, berulang. Dalam pengembangan perangkat keras ini tidak cocok. Jika Anda mengubah persyaratan, maka ini bukan tahap pertama, Anda lagi memiliki tujuh hingga delapan minggu, dan Anda menghasilkan EVT baru. Itulah sebabnya Anda tidak dapat membuat beberapa produk minimum yang tersedia, dan suatu hari nanti memperbaikinya. Tidak bisa dilakukan dengan buruk. Anda mungkin dapat meningkatkan sesuatu secara terprogram, tetapi jika Anda melakukannya dengan buruk, maka produk Anda akan menjadi buruk.

Setiap situasi seperti itu adalah buang-buang waktu, karena waktu terbuang untuk riset baru, perbaikan dan produksi sampel EVT baru yang Anda pesan. Anda hanya duduk dan menunggu hasilnya.



Oleh karena itu, mari kita tambahkan skema ini, di mana saya berbicara tentang produksi perangkat, bagaimana memetakan pengembangan perangkat lunak.

Bagaimana biasanya perkembangan ini terjadi? Ada versi pengembangan. Sebagai bagian dari R&D, Anda merilis versi alfa, Anda harus memiliki beta yang siap untuk sampel EVT pertama, maka beta kedua akan muncul dan Anda akan mempersiapkannya untuk rilis. Di dunia yang ideal, semuanya terjadi, seperti dalam diagram ini.

Kenyataannya, kenyataannya adalah bahwa versi alpha tidak perlu diuji, jadi Anda berisiko besar. Seorang beta-pertama mungkin tidak memulai sama sekali pada apa yang telah Anda diberitahu. Pada titik ini, Anda telah kehilangan waktu. Tanggal dan rencana hancur, dan tidak ada yang baik akan datang darinya.

Namun, ada cheat kecil, Anda semua tahu tentang itu. Anda bisa membuat prototipe di tahap awal. Itu tidak harus sepenuhnya konsisten dengan perangkat akhir, tidak harus memiliki dimensi. Secara umum dapat berbeda, dibuat dari sesuatu yang lain. Tetapi itu akan membantu Anda memahami dengan tepat apa yang Anda lakukan, bagaimana Anda melakukannya dan apa yang Anda hadapi.



Anda dapat dengan cepat menentukan jenis perangkat keras apa yang Anda butuhkan. Anda dapat menguji ide Anda dalam kondisi nyata, karena sementara itu di kepala Anda, tampaknya bagi Anda itu berhasil. Di dunia nyata, kebutuhan lain.

Hal yang sama berlaku untuk desain. Perangkat ini mungkin terlihat baik bagi Anda, tetapi ketika Anda meletakkannya dalam kondisi nyata - di kaca mobil atau di setir sepeda - itu tidak akan berfungsi sesuai kebutuhan. Jadi validasi desain juga merupakan aspek yang sangat penting.

Anda juga dapat menulis perangkat lunak dengan cepat, karena Anda menguji setiap tindakan Anda pada sampel langsung atau pada serangkaian sampel. Baik jika mereka masih beroperasi sekitar waktu ini.

Selain itu, kita semua tahu bahwa pemasar dan pakar produk menguasai dunia. Mereka berlari dan memberi tahu Anda, "Dan kami masih menginginkannya seperti itu dan seperti itu." Persyaratan ini sulit diklarifikasi ketika Anda tidak memiliki apa-apa di tangan. Ketika Anda memiliki sesuatu, Anda dapat menerapkannya, Anda dapat mencoba dan memberi tahu mereka: ini adalah skenario Anda yang akan berfungsi, tetapi ini tidak akan.

Saat Anda membuat perangkat, paling sering Anda membuatnya untuk beberapa tugas bisnis. Jika Anda perlu menarik investor, datang kepadanya dengan potongan kertas, proyek, gambar dan cerita - itu keren dan perlu. Tetapi ketika Anda datang dan berkata: "Lihat, kami datang dengan ini, tetapi ini adalah prototipe yang berfungsi," maka investor segera lebih tertarik.

Anda memiliki banyak risiko yang mungkin tidak Anda pikirkan. Jika Anda, seperti kami, membuat perangkat dengan kamera, mungkin tidak terpikir oleh Anda bahwa daya di dalam mobil tidak sebaik, misalnya, di stopkontak listrik rumah Anda. Mungkin ada jutaan risiko semacam itu, dan risiko itu hanya akan muncul saat Anda mengambil perangkat dan menempatkannya di lingkungan nyata.

Ini juga akan memungkinkan Anda untuk mengumpulkan data nyata. Satu hal ketika Anda meletakkan kamera di depan Anda dan merekam diri Anda sendiri. Lain adalah ketika kamera menghadap pengendara sepeda motor, pengemudi mobil, montir. Semua ini memungkinkan kami untuk menyajikan persyaratan teknis baru dan batasan perangkat keras, meminimalkan risiko.



Sekarang mari kita lihat apa risikonya. Saya ingin mengelompokkan mereka dalam tiga bagian. Atau Anda tidak yakin sama sekali tentang apa pun. Anda tidak memiliki pemahaman tentang jenis perangkat keras apa yang Anda butuhkan, Anda tidak memiliki pemahaman tentang cara menulis perangkat lunak. Dalam hal ini, semuanya menyedihkan, dan, menurut saya, yang terbaik adalah melakukan semacam pembuktian konsep, dan kemudian meluncur ke bawah ke salah satu metode di sebelah kiri. Atau Anda yakin dengan perangkat keras dan tidak yakin pada perangkat lunak, maka semua upaya Anda dihabiskan untuk perangkat lunak, dan Anda memberikan besi kepada kontraktor pihak ketiga, bahkan jika dia melakukannya secara normal. Atau Anda benar-benar yakin dengan perangkat lunak, tetapi tidak yakin dengan perangkat kerasnya, maka Anda sangat membutuhkan prototipe. Anda akan mencoba pada perangkat lunak Anda pada prototipe ini. Anda mungkin perlu menyesuaikannya, tetapi Anda akan berhasil juga.

Dan kemudian kita sampai pada prototipe apa yang akan dibuat. Di sini pendapat saya, mungkin itu tidak sesuai dengan pendapat Anda, Anda harus selalu memilih platform yang bisa lebih dari yang Anda inginkan. Jika Anda membutuhkan ekstensi kecil, ambil lebih banyak sebagai cadangan. Jika Anda membutuhkan kinerja terbatas, ambil sesuatu yang memberi Anda lebih banyak. Jika Anda membutuhkan sedikit memori, ambil dua kali lebih banyak. Jika Anda membutuhkan sesuatu yang bekerja secara eksklusif dalam lingkup tugas Anda, ambil sesuatu yang bahkan lebih maju, dengan semacam alat maksimum, ini akan selalu membantu Anda. Mengapa Karena ketika Anda melakukan prototipe ini, ahli produk yang sama, pemasar, akan datang dan berkata: "Ya, lihat, ada cara lain untuk melakukannya dan menghubungkannya." Dan apa yang terjadi?



Mari kita sedikit lebih dekat dengan kenyataan. Dari mana Anda bisa melakukan ini? Platform yang jelas adalah Arduino. Mari kita lakukan pada Arduino, semua orang menyukai Arduino. Sebenarnya ya dan tidak. Dalam Arduino, Anda dapat melakukan, menurut pendapat saya, hal-hal yang sangat sederhana. Artinya, Arduino lebih cocok untuk beberapa node. Apakah Anda perlu membuat manipulator? Ok, ambil Arduino dan lakukan itu. Apakah Anda perlu membuat termometer? Hebat, ada satu juta dari mereka. Hal lain adalah jika Anda perlu melakukan sesuatu yang kompleks yang membutuhkan daya pemrosesan, visi komputer, pembelajaran mesin.

Arduino adalah sebuah simpul. Anda dapat membuat roda, mobil yang dikendalikan radio, dan Arduino akan melakukannya. Tetapi jika Anda perlu memasang kamera di mesin Anda ini, entah bagaimana itu tidak terlalu baik.



Ini meminta opsi lain - Raspberry PI. Semua orang menyukainya. Kecil, bagus, populer, dijual ratusan juta keping di dunia. Dan, pada kenyataannya, mungkin ya, mungkin tidak. Di satu sisi, tidak mahal, produktif, memiliki banyak modul yang dapat dilampirkan. Ini memiliki konektor empat puluh pin yang cukup standar. Tapi ada masalah.

Pertama, dipanaskan, terutama model terakhir, yang keempat. Dan jika Anda melihat gambar, prosesor dikelilingi oleh banyak periferal, dan sangat sulit untuk menghasilkan heatsink yang akan memutarnya secara normal, karena Anda akan bersandar pada port HDMI, USB, ekstensi empat puluh pin, dan Anda akan memiliki area radiator, mungkin mungkin maksimum empat kali empat sentimeter.

Namun tidak ada Android, hanya ada Linux. Ada beberapa variasi pada tema, tetapi beberapa proyek, mereka membutuhkan Android. Misalnya, Anda membuat beberapa jenis perangkat yang awalnya ditujukan untuk platform Android. Dan di sini entah bagaimana Raspberry PI bukan penolong yang hebat untuk Anda.

Dan masalah selanjutnya, menurut saya, adalah sistem operasi media yang bisa dipindahkan. Anda menggunakan kartu SD, masing-masing, minus, semua kasus penggunaan otomotif dan lainnya. Mobil Anda bergetar, kartu SD tidak dapat diandalkan, mungkin jatuh, itu akan bergetar. Jika Anda memiliki embun beku, sesuatu yang lain, akan ada kondensasi, secara umum, akan ada masalah.

Sebenarnya, ada banyak hal, saya bisa menunjukkannya kepada Anda, kami telah mencobanya dengan cara yang berbeda. Ada pai pisang. Ini hampir sama dengan Raspberry Pi. Itu normal, berfungsi, itu kompatibel dengan itu pada konektor. Bukan platform Allwinner terburuk. Ada solusi yang sedikit lebih baik, misalnya, Khadas Vim pada prosesor Amlogic. Setelah cerita saya, akan mungkin untuk datang kepada saya nanti selama istirahat, saya akan siap untuk menceritakan dan menunjukkan semuanya.

Semua hal ini memiliki kekurangan. Saya, pada kenyataannya, tidak datang ke sini untuk mengiklankan potongan-potongan besi, tetapi, bagaimanapun, saya akan berhenti. Ada perangkat yang sesuai dengan kita untuk keperluan kita jauh lebih baik.



Ini adalah NanoPi, produsen Cina, yang disebut FriendlyElec, FriendlyARM. Mereka memiliki beberapa nama. Dan kebetulan dia tidak memiliki kekurangan dari Raspberry Pi, sementara dia memiliki banyak keuntungan.

Baik Linux dan Android ada di sana, semua dengan kode sumber, semua ini dapat dikumpulkan saat bepergian. Ada modul eMMC, yaitu, Anda memisahkan sistem operasi dari media eksternal, dan berfungsi dalam kondisi suhu yang baik. Kami mencoba untuk membekukan Raspberry Pi dan itu tidak berhasil dengan baik, ketika meluncurkan model ketiga, itu hanya meledak, prosesornya berantakan. Kami tidak melakukan eksperimen lagi. Tapi kami mencoba membekukan benda ini dan memanaskannya di oven. Tidak ada masalah.

Pada saat yang sama, ada bus PCI Express yang lengkap, dengan 2x, dan secara umum semuanya baik-baik saja. Itu juga bisa didinginkan, prosesornya terletak di sisi sebaliknya, saya akan tunjukkan sekarang, saya juga memilikinya. Begitulah tampilannya, sama seperti milik Anda. Bawah prosesor. Radiator tebal diletakkan di atasnya, dan radiator ini menghilangkan semua panas ini dengan sempurna.



Sedikit lagi. Ada apa disana Bahkan, saya sangat menyukai platform ini. Selama enam bulan terakhir saya telah membuat prototipe segala sesuatu yang dengannya, dan karena itu saya berbagi dengan Anda. Ada prosesor enam inti. Dia sangat kuat, dia pemanasan. Pada puncaknya, dapat mengkonsumsi 15 watt, kadang-kadang bahkan lebih. Tetapi ada kartu video normal, kompresi video perangkat keras, dan, yang paling penting, semuanya meluas dengan baik dan biaya kira-kira seperti Raspberry Pi. Ini $ 50, ditambah sedikit untuk eMMC dan radiator.



Dia memiliki adik laki-laki. Ukurannya persis sama, mungil. Berita baiknya: jika Anda mengambil modul eMMC ini dari sini dan menancapkannya ke modul ini, maka Anda tidak perlu membangun kembali firmware, ubah perangkat lunaknya. Mereka sepenuhnya kompatibel dengan perangkat keras. Bahkan konektor empat puluh pin kecil di atas ini adalah pin yang kompatibel dengan perangkat besar. Yaitu, jika Anda membuat perangkat dan tiba-tiba Anda perlu pindah ke faktor bentuk kecil, maka secara elektris kira-kira akan kompatibel dengan Anda. Ya, sedikit memori. Ya, ada lebih sedikit USB, tidak ada empat, tapi dua, tapi semuanya baik-baik saja.



Apa lagi yang kamu butuhkan? Menurut pendapat saya, prototyping paling baik dilakukan pada distribusi Linux yang besar dan tebal. Jelas bahwa di perangkat akhir Anda kemungkinan besar akan memiliki sistem operasi berpemilik, atau Linux Tertanam yang sangat kecil, semacam Linaro, atau yang lainnya kurang. Dan ya, itu akan bekerja dengan baik.

Tetapi ketika Anda sedang menulis prototipe, Anda memerlukan toolkit yang fleksibel, sehingga Linux yang besar adalah pilihan Anda. Sesuatu di Debian, atau yang lain, dengan paket di mana Anda dapat meletakkan semua yang Anda butuhkan dalam dua perintah dan menjalankan hal-hal besar.

Pada tahap prototyping, ukuran distribusi tidak terlalu penting. Ya, Anda akan memiliki empat gigabytes. Bagus Berikut adalah modul eMMC 16 gigabyte. Saya mengunggah Linux ini di sini, semuanya baik-baik saja dengan saya. Anda juga membutuhkan catu daya yang baik, dan yang paling penting, kabel yang bagus.

Kita sekarang berbicara tentang perangkat seperti ini, atau jenis Raspberry Pi, yang ditenagai oleh Type-C. Kebetulan ada beberapa kabel Type-C yang bagus, dan bahkan lebih sedikit catu daya yang bagus. Dan jika Anda tidak mengambil catu daya serial, tetapi sesuatu, misalnya, untuk strip LED dan menyalakan perangkat secara langsung, Anda akan jauh lebih baik. Ini juga akan sulit untuk mengambil kabel, jangan abaikan itu.

Di awal percobaan kami, daya yang buruk dan kabel yang buruk menyebabkan perangkat tiba-tiba membeku. Kami mencari masalah dalam perangkat lunak dan periferal, dan itu terdiri dari fakta bahwa kekuatan tiba-tiba merosot.

Tentunya, jika Anda memiliki sensor, maka Anda akan menggunakan papan seperti ini dengan sekelompok kabel kecil, karena menyolder banyak hal di lutut Anda dan memasangnya ke dalam kecelakaan kabel seperti itu sangat tidak nyaman. Ketika Anda datang ke prototipe serial lebih atau kurang, Anda selalu dapat memesan PCB, dan komponen Anda sudah akan disolder untuk itu. Tetapi saat Anda bereksperimen, itu lebih nyaman.



Hal berikutnya yang Anda butuhkan adalah USB-UART. Kemungkinan besar, di papan tempat prototipe Anda, akan ada output untuk monitor. Tetapi jika sebagai orang dewasa, lebih baik langsung ke solusi di mana Anda bekerja dengan ini di konsol, karena ketika Anda mengumpulkan sampel EVT, tidak ada yang akan memberi Anda output video, HDMI, atau apa pun. Anda harus segera belajar menjalani kehidupan normal.



Ada satu hal lagi yang bermanfaat, saya akan menunjukkannya kepada Anda. Ini adalah layar LCD, anehnya, dengan antarmuka USB. Saya, pada kenyataannya, percaya bahwa USB di industri tidak terlalu baik, bahkan buruk. Namun dalam pembuatan prototipe dan pengembangan - hebat. Ada banyak periferal pada USB, layar ini adalah casing khusus. Ini adalah layar dua baris yang biasa biasa dengan konverter USB dan dua tombol lagi. Itu dapat terhubung ke perangkat apa pun, menampilkan informasi debug di atasnya. Cukup. Dalam kebanyakan kasus, Anda tidak membutuhkan yang lain.

Anda akan membutuhkan satu hal lagi - printer 3D. Anda dapat, tentu saja, memotong dengan pisau dari busa polystyrene, memahatnya dari tanah liat, dari plastisin, dan dari sesuatu yang lain. Tetapi pada akhirnya, Anda akan selalu datang ke situasi di mana ini adalah elektronik saya, jadi saya mengerti apa yang saya inginkan darinya. Tetapi tidak mungkin membayangkan bagaimana ini akan bekerja dalam kondisi nyata. Karena itu, pada titik tertentu, kami membeli beberapa printer, dan kami mencetak semua ide yang kami miliki.

Kami datang dengan pemegang baru - kami mencetak. Kami datang dengan gedung baru - kami mencetak. Kami memiliki seluruh galeri yang terdiri dari dua atau tiga lusin pemegang, kancing, tatakan gelas berbeda. Lebih mudah untuk memahami kenyataan.



Sekarang akan ada sedikit holivar tentang apa yang harus dikembangkan. Saya bukan pendukung apa pun, saya percaya bahwa semua ini adalah bahasa pemrograman yang sangat baik. Tetapi kebetulan bahwa semua perangkat keras, sebagai aturan, paling baik ditulis dalam C. Karena kernel Linux, karena semua modul, karena semuanya sederhana, jelas dan lebih sulit untuk menembak diri Anda sendiri. Di C ++, sedikit lebih mudah untuk menembak diri sendiri, dengan Python Anda tidak perlu repot dengan memori atau apa pun.

Oleh karena itu, menurut pendapat saya, aturannya di sini adalah ini: jika Anda segera diarahkan pada solusi produksi massal akhir, tuliskan dalam C. Mudah memindahkannya ke mana pun Anda butuhkan dan semuanya akan bekerja. Jika Anda membutuhkan semuanya di sini dan sekarang, jika Anda membutuhkan visi komputer, manipulasi gambar, jaringan saraf dan ini adalah keseluruhan ceritanya, maka lebih mudah untuk memulai dengan Python. , , , , - , . . C, - . : C production, Python .



. , . , , β€” . , . : , , , .

, . , , , . , .

, . , - . , . , , , , . , .

- , , , design-house , - . , , , . . , , -. , , . , .

, hardware software , , , , - .

, . , . , : Β«, , , Β». . , , .



, hard soft. - - , , . proof of concept, . , , GPS, . proof of concept, , .

BOM, , , : , .

, --, , , . . . , , , , , , - . - . . β€” , , .

, , , NanoPi. . Apakah ini berhasil? . ? . , .

, , , , , , , , , : Β«, Β», . , , .

, , . .



β€” Signal Q1, . , , , -. , GPS β€” . :



, , , , NanoPi. , , .



, , , , . . , , ? . , . . 70 , 45 β€” .

, , , . , . machine learning, , , , . , , . , , . . . .

, . β€” . . , . . , , , . β€” , . , , , , . .

, , β€” 70 . , . . , . , , , .

. , ? , - . Tapi tidak. , - , . , , β€” , .

. , USB- production, . , USB β€” . , , GPS, Wi-Fi.

, . Raspberry? , , . , AliExpress, , 50 , , PCV. USB, . , β€” . , Sony, OmniVision, - , - . USB β€” , .



-, β€” , . , , . β€” . , . , - . , .



, , 3D- β€” . , , , , , . β€” . β€” .



. . , . , . , - .

, - hardware, - . computer vision . - . , , , , , . β€” .

, mass production, . , . , . , , . Terima kasih

Source: https://habr.com/ru/post/id472660/


All Articles