Masa Depan Industri Mikroelektronika

Menebak masa depan bukanlah hal yang mudah. Orang yang hebatpun sering salah dalam memprediksi. Saya sendiri pernah “beruntung” menebak masa depan beberapa teknologi dengan baik karena kebetulan berada di tempat yang tepat pada waktu yang tepat pula. (I was in the right place and the right time.) Sebuah keberuntungan.

Sebagai contoh, saya mengenal World Wide Web (WWW) sejak pertama kali dibuat oleh Tim Berners-Lee. Kebetulan pada saat itu saya harus bekerja menggunakan NeXT computer. Pada saat yang sama, di Swiss, Tim Berners-Lee juga menggunakan komputer NeXt untuk mengembangkan WWW-nya. Saya sempat katakan bahwa WWW memiliki masa depan yang cerah, tetapi orang-orang tidak percaya karena waktu itu sedang musimnya protokol / aplikasi “Gopher”. Untuk membuktikannya, saya membuat halaman tentang Indonesia yang pertama. (The Indonesian homepage.)

Hal yang sama juga terjadi dengan Linux. Pada masa itu saya membutuhkan sistem operasi UNIX untuk komputer di rumah. Di kampus / kantor saya menggunakan Sun Microsystem untuk pekerjaan dan penelitian saya. Di rumah saya hanya punya komputer berbasis Intel. UNIX yang ada saat itu adalah SCO UNIX yang mahal dan Minix (yang entah kenapa kurang sreg). Ternyata di Finlandia ada seorang mahasiswa yang sedang berusaha membuat sebuah sistem operasi yang mirip UNIX. Saya jadinya ikut ngoprek juga. Ternyata asyik. Saya ngajakin teman-teman buat perusahaan pendukung Linux, tetapi pada sibuk sekolah semua. Akhirnya kami tidang ngapa-ngapain. Muncullah RedHat.

Nah, saya punya perasaan yang sama tentang Internet of Things (IoT) ini. Ini adalah masa depan.

Ketika saya berbicara dengan orang-orang pembuat perangkat keras, manufakturing elektronika dan mikroelektronika, kebanyakan masih mengarah kepada produk SIM card (smartcard). Dapat dipahami karena pasar SIM card di Indonesia saja ada lebih dari 500 juta unit pertahunnya. Sebuah pasar yang sangat besar. Maka akan sangat sulit untuk membujuk mereka untuk berubah haluan.

Kalau kita perhatikan lebih lanjut perangkat IoT ini, tidak ada yang menggunakan SIM card. Komunikasi antar perangkat ini sekarang kebanyakan menggunakan WiFi. Ke depannya apakah akan tetap menggunakan WiFi? atau Bluetooh (BLE)? Zigbee? LoRa? Yang pasti nampaknya bukan yang berbasis seluler. (Halo perusahaan seluler. Siap-siap menurun.)

photo559633135318444158

Komponen utama dari IoT adalah “prosesor” dan “media komunikasi”. Kunci utamanya adalah harus murah. Sangat murah. Mereka tidak harus menggunakan prosesor yang paling hebat (secara komputasi), tetapi yang cukup bagus dan murah. Masalahnya, jumlah yang diproduksi ini skalanya adalah milyaran unit. Beda 10 sen saja sudah beda jauh biayanya.

Jadi prosesor jenis apa? Nah, itu kita belum tahu. Sama-sama mencari tahu. Bahkan perusahaan besar sekalipun, seperti Intel dan IBM, masih mencari-cari. Mari kita perhatikan perkembangannya.

[Hal lain yang terkait dengan software dan data akan kita bicarakan dalam topik terpisah. Kita masih mencari “killer application” untuk IoT sebagaimana adanya Visicalc (spreadsheet) untuk komputer dan SMS untuk handphone. Google-nya IoT?]

IoT Programming

Steve Jobs pernah berkata, “Untuk setiap penggemar hardware, ada 10 orang yang suka ngulik software. Software hobbyists”. Tidak persis benar, tetapi kira-kira begitulah kata-katanya. Itulah sebabnya dia (dan Steve Wozniak) membuat komputer Apple ][. Sebelumnya kalau mau ngoprek software, harus ngoprek kit komputer. Harus tahu hardware. Padahal ada orang yang tidak memiliki latar belakang hardware, tapi ingin ngoprek komputer.

Salah satu kesulitan ngoprek hardware adalah menyambung-nyambungkan komponen. Bahkan untuk sekedar menyambungkan LED juga tidak mudah. Padahal “hello world” di dunia hardware itu adalah blinking LED.

Jika menyambungkan 1 LED saja sudah susah, apalagi menyambungkan 6 LED (atau lebih). Itulah sebabnya jarang yang membuat tutorial untuk menyalakan LED lebih dari 1 buah.

Salah satu solusi yang kami tawarkan adalah  membuat LED board yang cocok dengan board yang umum ada di lapangan. Sebagai contoh, ini adalah tampilan ProcodeCG LED (6 buah LED) yang disambungkan dengan NodeMCU. Bersih kan? Tidak perlu ada kabel-kabel.

p_20170306_092518-nodemcu-procodecg-0001

Sekarang kita dapat membuat kode Knight Rider LED tanpa perlu pusing dengan kabel-kabelnya. Jadi orang yang gemar software tetapi tidak memiliki latar belakang hardware dapat juga ikut ngoprek IoT (Internet of Things).

[Nanti video dan kode untuk menyalakan LED tersebut akan saya unggah ke YouTube. Sekarang akses internet lagi lemot.]

Selamat ngoprek.

Ngoprek IoT

Sudah seminggu ini (atau mungkin lebih?) saya ngoprek Internet of Things (IoT). Apa sih IoT itu? Pada dasarnya ini adalah perangkat keras (hardware) dalam ukuran kecil yang dapat diprogram untuk mengambil data (misal data temperatur) dan meneruskannya ke internet. Teknologi elektronika dan komputer berkembang dengan pesat sehingga perangkat dapat menjadi lebih kecil dan murah. Demikian pula kecepatan akses internet menjadi lebih cepat dan juga lebih murah. Kedua hal inilah yang menyebabkan populernya IoT.

p_20170220_075632-kopi-iot-01
NodeMCU boards

Latar belakang saya memang elektronika, sehingga seharusnya tidak banyak kesulitan dalam ngoprek IoT ini. Kenyataannya ada hal-hal yang sangat spesifik sehingga harus saya oprek dulu sebelum bisa jalan. Tadi malam saya ngoprek sampai jam 2 pagi (eh, 2 malam?). he he he.

Saya memiliki banyak development boards. Begitu ada yang baru, beli atau minta. (Yang terakhir itu yang menarik, minta. he he he.) Terus dioprek. Hasilnya saya masukkan ke YouTube dan kodenya saya simpan di Github supaya dapat dimanfaatkan orang lain. Ayo ngoprek IoT juga.

Mengajarkan Debugging?

Bagaimana ya cara mengajarkan “debugging” (mencari sumber masalah dalam koding, sistem)?

Seringkali kita memberikan tutorial atau tugas tentang satu hal (kode pemrograman misalnya). Kemudian siswa mengikuti tutorial tersebut. Ketika ada masalah, tidak jalan, maka siswa kesulitan mencari sumber masalahnya. Ketika melapor, yang dilaporkan juga tugas tidak jalan. Nah ini membingungkan karena ada banyak hal yang membuat sebuah kode / sistem tidak jalan.

Hal yang sama juga terjadi dalam pengembangan sebuah sistem. Ketika ada masalah maka kita harus mencari sumber masalahnya dan memperbaikinya. Debugging.

Kemampuan debugging ini ternyata tidak dimiliki oleh semua orang. Namun semestinya bisa diajarkan. Bagaimana ya cara mengajarkannya yang baik?

Salah satu ide adalah dengan membuat soal yang memiliki kesalahan, kemudian siswa diminta untuk mencari kesalahan tersebut dan memperbaikinya. Semakin sering melakukan hal ini (mencari kesalahan dan memperbaikinya), mudah-mudahan meningkatkan kemampuan untuk debuggingnya.

Hal lain juga yang perlu diajarkan adalah bagaimana membagi-bagi sistem. Divide and conqueror. Ini bisa jadi topik terpisah.

Ngoprek IoT

Kata IoT – Internet of Things – sedang ngetop sekarang. Dimana-mana saya melihat kata ini sebagai bagian dari seminar, kompetisi, startup, dan seterusnya. Pokoknya seru saja. Nah, sayapun tidak mau ketinggalan.

Saya mencoba menggunakan Arduino UNO dan board buatan DycodeX untuk kode IoT ini. (Sebetulnya saya punya banyak board lainnya, tapi itu untuk cerita terpisah.) Selain board ini saya juga menggunakan LED board buatan ProcodeCG. Berikut ini adalah beberapa video yang saya buat untuk menunjukkan demo / contoh kode dengan board-board di atas.

Dalam dunia hardware, IoT, salah satu cara memulai atau mencoba adalah membuat demo “blinking LED”. Kalau di dunia software, ini adalah “Hello World” versi hardware. Biasanya sih blinking LED-nya hanya satu LED. Kali ini saya mencoba menggunakan beberapa LED biar lebih seru.

Video di bawah ini menunjukkan demo Knight Rider, yaitu LED yang bergerak dari kiri ke kanan dan sebaliknya. Nama ini diambil dari film seri Knight Rider (jaman dahulu dan versi barunya). Dalam film tersebut ada mobil cerdas yang bernama KITT. Kalau dia aktif, maka ada LED yang bergerak-gerak seperti ini.

Dalam video di bawah ini, saya membuat Knight Rider LED juga tetapi dengan menggunakan board Arduino UNO.

Video di bawah adalah demo untuk membuat LED seperti meter yang ada di radio (equalizer). Board yang digunakan adalah DycodeX ESpectro.

Oh ya, kode-kode untuk demo di atas dapat dilihat dan diunduh dari koleksi saya di github.com yaitu di: https://github.com/rahard/BRiot-stuff. Selamat ngoprek.

Mainan IoT

Lagi seru-serunya topik IoT (Internet of Things). Maka saya pun tak mau ketinggalan ngoprek IoT. Pada dasarnya IoT ini adalah menghubungkan “things” ke internet. “Things” yang dimaksud di sini bisa apa saja. Biasanya sih dimulai dengan menghubungkan sensor (misal sensor temperatur) ke internet.

Beginilah konfigurasi yang saya gunakan saat ini. (Corat-coret di kertas bekas.)

14080070_10153796588911526_1526882988396792016_n

Untuk sensor, kali ini saya menggunakan SensorTag dari Texas Instrument. SensorTag ini memiliki banyak sensor; temperatur, kelembaban, akselerasi, tombol yang dapat ditekan dan seterusnya. Versi yang saya gunakan ini menggunakan Bluetooth (tepatnya BLE, Bluetooth Low Energy) untuk berkomunikasi.

Saat ini ada aplikasi bawan (untuk handphone iOS dan Android) yang dapat digunakan untuk memantau sensor-sensor tersebut. Aplikasinya bagus sekali. Nah, saya ingin membuat aplikasi serupa sehingga data dari sensor dapat saya proses sesukanya. (Misal mau dikirim ke server sendiri.) Saat ini selain dapat memantau data sensor, aplikasi ini dapat juga mengirimkan data tersebut melalui protokol MQTT ke server IBM. (Nampaknya TI ini memiliki partnership dengan IBM.) Saya mencoba menghubungkan aplikasi ini ke server MQTT lainnya tetapi belum berhasil. Ini juga salah satu alasan mengapa saya harus membuat aplikasi sendiri.

Untuk membuat aplikasi di handphone, ternyata ada tools yang menarik dari Evothings. Mereka membuat semacam interface sehingga kita dapat melakukan pemrograman di komputer desktop kita, kemudian mengirimkan kodenya ke handphone (yang dipasangi aplikasi Evothings Viewer). Maka aplikasi langsung dijalankan di handphone. Ini mengurangi kesulitan upload program ke handphone. (Sebetulnya kita bisa juga setup web server sendiri sih.)

Pemrograman di handphone tersebut ternyata menggunakan bahasa Javascript. Ada beberapa library yang perlu digunakan untuk mengakses sensor melalui BLE. Saya sudah mencoba beberapa library tersebut, belum ada yang sukses. Tidak ada error, tetapi outputnya masih kosong. (Harus melakukan debugging dulu dan saya belum terbiasa melakukan debugging dalam bahasa Javascript.)

Alternatif lain yang sedang saya pikirkan adalah menghubungkan sensor tersebut langsung dengan single board computer (SBC) semacam Raspberry Pi. Ternyata ada orang-orang yang juga sukses melakukan pendekatan itu. Saat ini saya tidak punya Raspberry Pi tetapi malah punya yang dari Getchip.com. Ini keren banget, $9 chip dan sudah bisa langsung jalan Linux di atasnya. Sudah ada Bluetooth 4.0 juga. Jadi hal lain yang ingin saya lakukan adalah melakukan pairing antara SensorTag TI ini dengan SBC dari Getchip.com ini. (Ini foto kedua benda tersebut yang saya ambil dari meja saya.)

13987404_10153796571416526_4784112517654812880_o

Saya masih belum berhasil mainan dengan getchip.com secara stabil. Entah kenapa koneksi ke benda ini via WiFi kok tidak stabil. Tersendat-sendat. Jadi malas juga koding langsung di sini. Ide lain adalah via komputer desktop saya dulu saja. Toh sama-sama Linux.

(Update: kalau saya sambungkan SBC getchip ini dengan USB ke Macbook, saya bisa akses dengan nama “chip.local”. Jadi saya bisa “ssh root@chip.local” dengan password default “chip”. Setelah itu saya bisa masuk ke console linux dengan koneksi yang lebih stabil. Saya bisa main-main dengan getchip ini seperti tutorial yang ada di sini. Misal, saya bisa sambungkan kabel ke ground untuk coba seperti switch dan dibaca via GPIO. Atau harusnya mainan dengan LED, tapi saya tidak punya breadboard dan LED.

root@chip:/sys/class/gpio# echo 415 > export
root@chip:/sys/class/gpio# cat gpio415/direction
in
root@chip:/sys/class/gpio# cat gpio415/value
1
root@chip:/sys/class/gpio# cat gpio415/value
0

)

Tadi saya pasang Bluetooth dongle yang 4.0 di komputer desktop saya (running Linux Mint). Kemudian menggunakan berbagai tools (bluez, dll.) untuk mencoba pairing dengan SensorTag ini. Belum berhasil. (Saya menggunakan panduan dari sini dan membaca data di sini. Saya lihat ada juga yang mencoba menggunakan python untuk ini.)

[To Do: Javascript vs Python. Pilih bahasa apa untuk kodingnya?]

Jika data sudah sampai di server MQTT – ini di cloud – maka saya akan dapat membuat berbagai aplikasi sendiri. Jadi tujuan akhirnya adalah saya dapat memantau sensor dari internet.

Nah, sekarang belum ada yang jalan … ha ha ha. Jadi masih ada banyak yang harus dikerjakan. Saya akan pilah-pilah dulu. (Divide and conquer.)

Selain itu dalam 2 atau 3 minggu ke dapan saya akan dapat IoT board lain dengan sensor yang langsung dihubungkan dengan boardnya. (Lihat board Espresso di smkholding.com dan DycodeX.)  Ini akan jadi thread yang berbeda. Asyik. Banyak oprekan.

Tunjukkan Kodemu!

Minggu lalu, tepatnya hari Rabu 11 Mei 2016, saya mengikuti peluncuran kompetisi “IBM Linux Challenge 2016” di Balai Kota Jakarta. Acara ini sebetulnya merupakan kelanjutan dari kompetisi yang pernah dilakukan tahun lalu. Jadi, ini yang kedua.

Intinya ini adalah kompetisi pembuatan software yang berbasis open source. Adapun fokus dari aplikasinya adalah hal-hal yang terkait dengan smart city dan finansial daerah. Untuk yang smart city, ada banyak aplikasi yang bisa dikembangkan. Aplikasi yang bagus (pemenangnya) akan diberi kesempatan ditampilkan / digunakan di Jakarta Smart City. Sementara aplikasi finansial daerah digunakan untuk meningkatkan transaksi UMKM melalui e-commerce.

26929749021_91fcc41d86_o

Bagi saya, ini adalah ajang untuk mencari bibit-bibit dan kelompok pengembang software yang keren-keren di Indonesia. Untuk menunjukkan bahwa Indonesia (dan orang Indonesia ) juga jagoan di dunia IT. Ayo … tunjukkan bahwa kita bisa!