16 poin oleh xguru 2021-05-31 | 2 komentar | Bagikan ke WhatsApp
  • Penjelasan tentang teknologi dan alat yang digunakan oleh seorang engineer yang menjalankan perusahaan synthesizer open source Winterbloom

  • Tidak mengejar hal paling mutakhir, melainkan mencapai tujuan dengan alat dan teknologi yang benar-benar dipahami dengan baik

"Lateral thinking with withered technology"

→ Pemikiran lateral bahwa dengan memanfaatkan teknologi yang sudah layu, bukan teknologi baru, dan berfokus pada kesenangan, kita bisa menciptakan sesuatu yang benar-benar baru

→ Ucapan dari "Yokoi Gunpei", sosok yang membentuk filosofi pengembangan teknologi Nintendo modern: orang yang menciptakan konsol game portabel Nintendo (Game Boy) dan game VR

  • Mikrokontroler: memilih 2-3 produk untuk dijadikan fokus

→ Microchip SAM D21, D51, D11

→ Ketiganya mendukung USB, SERCOM yang fleksibel, ADC 12-bit multi-channel, timer tingkat lanjut, dan lain-lain

→ Selain itu juga mempertimbangkan RP2040 (saat analog I/O tidak dibutuhkan) dan STM32H7 (saat perlu menghasilkan suara di dalam firmware)

  • Desain hardware: menggunakan KiCAD, alat open source untuk otomasi desain elektronik

→ Library KiCad berisi simbol umum, footprint, dan model 3D untuk komponen yang digunakan dibagikan lewat GitHub

→ Daftar komponen utama yang disukai juga dipublikasikan di halaman Notion (deskripsi, nomor komponen, datasheet, produsen, link pembelian, kegunaan)

  • Firmware: bahasa, library, build system, testing framework, dan lain-lain (masing-masing dijelaskan di bawah)

  • Bahasa C, GCC, CMSIS

→ Menggunakan bahasa C yang lama tetapi sudah akrab

→ Ada juga compiler berbayar seperti Keil/IAR, tetapi menggunakan GCC ARM Embedded Toolchain yang open source

→ HAL yang disediakan Microchip terlalu sulit ditangani, jadi langsung memakai library CMSIS dan menulis abstraksi kecil di atasnya

CMSIS adalah hardware abstraction layer independen vendor yang disediakan oleh ARM

  • Library firmware

→ TinyUSB: library USB yang kecil dan sangat baik

→ Marco Paland's Printf: implementasi printf yang dioptimalkan untuk mikrokontroler

→ libfixmath: library kecil untuk operasi fixed-point (berguna untuk mikrokontroler yang tidak punya unit fixed-point)

→ µnit: testing framework yang sangat kecil dan berguna

  • Build system

→ Build menggunakan Python dan Ninja

→ Awalnya dimulai dengan Makefile, tetapi makin lama makin sulit digunakan sehingga diganti

  • Tooling berbasis Python

→ Dikelola secara terintegrasi di repo bernama wintertools

→ Kumpulan skrip yang membantu build/test terkait firmware/hardware

  • CircuitPython

→ Beberapa produk tidak memakai firmware kustom, melainkan menggunakan CircuitPython yang dipakai untuk edukasi mikrokontroler

→ Memudahkan pelanggan untuk melakukan kustomisasi

→ Membuat pengembangan firmware/software menjadi lebih mudah

→ Ada komunitas hebat yang dikelola oleh Adafruit

  • Dokumentasi & panduan pengguna

→ Ditulis dalam Markdown. Dibangun menjadi halaman web statis dengan MkDocs lalu di-host di GitHub Pages

→ Menggunakan framework CSS Bulma

→ Demi kesederhanaan, tidak memakai Sass/LESS dan sejenisnya

  • JavaScript

→ Sengaja menghindari ekosistem Node.js yang terlalu rumit

→ Menggunakan JavaScript biasa beserta module, class, arrow function, Canvas, WebMIDI, TypedArray, dan lain-lain

→ Menaruh harapan pada Deno di masa depan

2 komentar

 
daumkakao 2023-04-12

Keren.. bisa melakukan semua itu sendirian..

 
xguru 2021-05-31

Tulisan dan judulnya mirip dengan artikel di atas, tetapi karena ini startup hardware, ceritanya jadi sama sekali berbeda dan menarik untuk dibaca.