ESP8266 vs Pyboard vs Circuit Playground Express

, , Leave a comment

Halo selamat datang kembali ke andidinata.com. Saya ucapkan selamat merayakan hari Natal bagi umat Kristiani dan selamat tahun baru bagi semua. Semoga di tahun yang baru kita semakin berhasil dan sukses. Setelah acara Pycon tanggal 9 Desember 2017 yang lalu, Pyboard yang saya pesanan pertengahan November sampai. Lebih telat dari perkiraan shipping karena kecantol lama di Singapore. Selama ini saya menggunakan ESP8266 untuk menjalankan Micropython dan terdorong untuk membeli Pyboard sebagai bentuk support ke pengembangan micropython. Selama ini saya sudah menggunakan Micropython untuk berbagai hal secara gratis, jadi tidak ada salahnya dengan membeli langsung dari websitenya untuk menghargai kerja keras dari Damien George dan timnya. Ongkirnya cukup mengejutkan, hanya 7 EUR dari Germany ke Indonesia. Padahal saya sudah harap-harap cemas kalau saja tembus 20 EUR tapi ternyata tidak. Varian yang saya beli adalah Pyboard v1.1, versi tertinggi saat ini (Jan 2018), tanpa header agar harga lebih murah. Lagian, saya komit untuk tidak menggunakan pyboard ini untuk proyek macam-macam, dipelajari saja.

Awalnya saya coba cari-cari di AliExpress barangkali ada yang lebih murah. Dan memang harga murah, tapi ternyata board clone dengan form factor pyboard yang sama, dengan chip STM yang sama walaupun tidak sama persis. Jadi kalau mau yang asli, mesti beli dari website micropython.

Waktu diterima, paket hanya berupa amplop coklat dengan interior bubble wrap dan case hitam yang isinya pyboard, ditambah dengan 1 buah stiker Micropython. Ukuran Pyboard lebih besar, kira-kira 10-15% dari Wemos D1 Mini, jadi sebenarnya board ini kecil. Board ini sekilas menyediakan banyak fasilitas bagi hardware programmer karena Pin yang sangat banyak, 30 biji.

Spesikasi Pyboard

  • STM32F405RG microcontroller 168 MHz Cortex M4 CPU
  • 192k RAM
  • 1 MB flash memory
  • Built-in RTC dengan battery tambahan
  • 4 on-board leds (merah, hijau, kuning dan biru). PWM output tersedia di led biru.
  • 2 button, reset dan user programmed
  • Accelerometer MMA7660
  • Micro sd card slot
  • 30 IO Pins (4 khusus servo motor, 20 pin PWM, 16 pin ADC 12-bit (4 dengan shield) dan 2 pin DAC 12-bit)
  • 13 independent timers

Jumlah Pin IO yang banyak membuat Pyboard bisa digunakan untuk mengakomodasi hardware interfacing yang sangat banyak. Kehadiran 4 buah Led, 1 tombol untuk user dan micro sd card slot memang membuat development dengan Pyboard menjadi lebih ‘handy’. Jika misalnya kita sedang bepergian, kita masih dapat melakukan development dengan cukup membawa satu board saja. Output bisa dikeluarkan di led onboard.

Yang  cukup saya sayangkan adalah tidak adanya onboard wifi/bluetooth untuk proyek IoT yang lebih mudah. Spekulasi saya, board ini didevelop dengan tujuan untuk mereimplementasi Python 3 menjadi micropython. Jika ditambah fitur on-board wireless, maka board ini tidak akan segera selesai karena proses sertifikasi perangkat wifi yang memakan waktu lama. Saya berharap ada versi selanjutnya dengan wifi atau bluetooth. Secara kualitas, Pyboard memiliki PCB yang tebal, tata letak komponen rapi, dengan kualitas solderan yang konsisten. Board ini pada dasarnya memperhatikan aspek estetika yang baik.

Beberapa kemudahan operasional dengan Pyboard antara lain:

  1. Dikenali oleh komputer sebagai flashdisk. Hal ini membuat transfer file dari komputer ke pyboard dapat dilakukan dengan sangat mudah. Cukup drag drop, tanpa IDE. Kita dapat menulis script dengan notepad dan mengcopykannya. Saat dikenali sebagai flashdisk, REPL Pyboard dapat diakses melalui serial communication seperti Putty atau screen/picocom di Linux. Dengan metode ini development script akan menjadi lebih cepat lagi.
  2. Jika kita menyimpan script di dalam micro sd card, maka kita bisa langsung menggunakannya di pyboard yang lain. Dan jika kita melakukan upgrade firmware micropython, maka file scriptnya akan selalu aman di dalam micro sd card. Setelah firmware diupgrade, pasang kembali micro sd card untuk menjalankan script yang sudah didevelop sebelumnya. Ini kelebihan dari sistem yang memiliki micro sd card. Bandingkan dengan ESP8266, kita perlu untuk mengcopykan python script kembali ke dalam internal flash setelah firmware diupgrade.
  3. Pyboard memiliki internal RTC, kita tinggal memberikan battery coin pada pyboard saja dan mengaksesnya dari library pyb. Bagi saya RTC sangat diperlukan untuk proses yang memerlukan waktu yang tepat, misalnya untuk wake-up, time stamping tanpa bergantung dengan ketersediaan network. Cukup dengan memberikan baterai coin untuk keeping time, header + dan – untuk baterai sudah tersedia.
  4. Mengakses internal hardware dengan micropython dilakukan dengan sangat mudah. Misalnya untuk mengakses pembacaan accelerometer, kita nya perlu perintah sebagai berikut:
from pyb import Accel
accel=Accel()
print(accel.x(), accel.y(), accel.z(),accel.tilt())

Untuk membandingkan performance Pyboard, tidak lengkap rasanya jika tanpa melakukannya bersama dengan development chip yang paling populer sedunia, yaitu ESP8266. Saya pilih Wemos D1 Mini untuk mewakili golongan ESP8266 untuk diadu dengan Pyboard.

Spesifikasi Wemos D1 Mini

  • ESP8266EX microcontroller, Tensilica L106 up to 160 MHz
  • 4 MB flash memory
  • 1 led onboard
  • Wifi
  • Reset button
  • 9 digital IO (8 PWM), 1 analog input

Kelebihan utama dari Wemos D1 Mini adalah wifi dengan protocol IPv4 yang lengkap, sehingga board ini menjadi sangat populer untuk project IoT, bahkan berfungsi sebagai webserver. Selain itu harganya sangat terjangkau meskipun kita harus berkompromi dengan jumlah Pin yang sedikit, kualitas board yang ‘minimum’. Melepas header yang sudah terpasang sangat berpotensi untuk mengangkat wiring lubang pin sekaligus.

Wait…, here comes new challenger!!!

Adafruit Circuit Playground Express

Circuit Playground Express (CPX) adalah educational board utama dari adafruit. Board ini dilengkapi dengan segudang sensor dan actuator untuk proses pembelajaran yang sangat-sangat lengkap. Board ini dibuat dengan sangat apik, board tebal, PCB warna hitam dengan lapisan soft touch yang mewah dan setiap komponen disusun dengan sangat estetik. CPX mengakomodasi hampir semua hardware development yang kita harapkan bisa dilakukan oleh microcontroller  dan semua  itu dilakukan diatas sebuah board yang fully integrated.

Spesifikasi Circuit Playground Express

  • ATSAMD21 ARM Cortex M0 Processor 48 Mhz
  • 2 MB flash memory
  • 10 x mini NeoPixels, tiap NeoPixel menampilkan berbagai warna
  • 1 x Motion sensor (LIS3DH triple-axis accelerometer with tap detection, free-fall detection)
  • 1 x Temperature sensor (thermistor)
  • 1 x Light sensor (phototransistor) yang juga dapat berfungsi sebagai sensor warna dan pulse sensor
  • 1 x Sound sensor (MEMS microphone)
  • 1 x Mini speaker with class D amplifier (7.5mm magnetic speaker/buzzer)
  • 2 x Push buttons A dan B, 1 x Slide switch
  • Infrared receiver dan transmitter yang dapat menerima dan transmit semua kode remote control dan proximity sensor
  • 8 x alligator-clip friendly input/output pins, termasukI2C, UART. Dapat menerima input analog, multiple PWM output, 7 pads berfungsi sebagai capacitive touch dan 1 sebagia true analog output
  • Green “ON” LED sebagai indikator power dan LED #13 for basic blinking dan reset button

Sejak kemunculannya, CPX sudah membuat saya ‘ngiler’. CP Classic hanya dapat diprogram dengan Arduino karena prosesornya 8-bit. Kemudian Adafruit mengumumkan CPX Developer version untuk pengembangan Circuit Python, dan akhirnya mereka merilis CPX untuk user yang lebih luas. Sesuai dengan namanya CPX adalah sebuah playground untuk kita mencoba sebegitu banyaknya sensor on board. Harganya sendiri tergolong terjangkau. Saya membelinya dari Pimoroni dan ditenteng oleh teman yang kebetulan pulang ke Indonesia. Harga CPX malah lebih murah dibandingkan dengan Pyboard.

Saat terhubung dengan komputer, CPX juga dikenali sebagai flashdisk untuk memudahkan file transfer.

Micropython yang ada pada Pyboard dan ESP8266 tidak berbeda jauh. Pyboard memiliki library khusus bernama pyb untuk mengakses hardware internalnya seperti on-board led, servo port, internal accelerometer, internal timer dan internal RTC. Sedangkan CPX menggunakan CircuitPython yang merupakan turunan dari Micropython yang menurut saya malah tidak ringkas jika dibandingkan dengan Pyboard dan ESP8266. Berikut ini adalah script untuk menyalakan led di CircuitPython yang lebih mirip dengan Python di Raspbery Pi. Indahnya di CPX, kita bisa menggunakan nama Pin yang tertulis di board tanpa harus mengingat-ingat nomor GPIO seperti pada ESP8266.

from digitalio import DigitalInOut, Direction
import board
led = DigitalInOut(board.D13)
led.direction = Direction.OUTPUT
led.value = True

Bandingkan dengan Micropython di Pyboard untuk menyalakan led yang lebih ringkas, lebih pendek dan lebih natural

from pyb import LED
LED(1).on()

Micropython di ESP8266 juga lebih ringkas dengan membuat nomor Pin dan direction Pin menjadi object constructor

from machine import Pin
led=Pin(2, Pin.OUT)
led.on()

Menurut saya Circuit Python menjadi salah satu kelemahan CPX, karena programming menjadi lebih panjang dari original Micropython. Tapi hal itu dapat diatasi dengan mudah, dengan penerapan OOP, kita bisa membuat wrapper menyederhanakan pengoperasian hardware. Mata saya berbinar melihat CPX, heran dengan device sekecil itu, 9 sensor dan actuator dijejalkan dan masih terlihat cantik.

Performance

Sekarang kita masuk ke bagian performance. Saya berusaha untuk menterjemahkan arti performance dari microcontroller kedalam suatu ukuran yang praktis yaitu waktu. Saya mengukurnya dari dua sudut pandang, pertama kecepatan eksekusi dan kedua akurasi dari clock. Kedua hal ini menurut saya adalah dasar yang utama dari sebuah microcontroller. Semakin cepat eksekusi, maka waktu yang dibutuhkan lebih sedikit untuk menyelesaikan sebuah instruksi. Dan akurasi clock menandakan ketepatan board dalam memproduksi waktu. Berikut ini hasil pengujian dan analisa saya untuk ketiga board diatas, ESP8266, Pyboard dan CPX.

Execution Speed

Pyboard tampil sebagi pemenang karena mampu menyelesaikan loop counting terbanyak (500,000) dalam waktu yang paling singkat. Untuk loop counting kecil (hingga 5000) keempat board diatas tidak menunjukkan perbedaan yang signifkan meskipun Pyboad dapat melahapnya dengan sekejap (0 detik). Artinya, jika kita memiliki baris kode yang sangat kompleks, maka bisa dipastikan ESP8266 akan membutuhkan waktu yang lama untuk menyelesaikannya termasuk juga potensi crash karena heap memory yang dibutuhkan akan semakin besar.

Melalui perbandingan ini, kita juga melihat bahwa clock speed tidak berkorelasi dengan execution speed. Bandingkan antara CPX yang hanya 48 MHz dengan ESP8266 160 MHz dimana CPX lebih cepat hampir 2x. Dan antara ESP8266 80 MHz dan overclock 160 MHz tidak memberikan hasil yang signifikan. ESP8266 pada full clock speed hanya memberikan margin kecepatan yang tipis dibandingkan dengan 80 MHz padahal pada full clock, power yang konsumsi oleh ESP8266 lebih besar. Hal ini juga memberi tahu bahwa menjalankan ESP8266 pada clock standar 80 MHz sudah cukup.

Clock Accuracy

Pyboard kembali muncul sebagai board dengan akurasi tertinggi dalam mereproduksi clock. Uji blinking on board led ini menggunakan delay yang sama yaitu 20ms. Reproduksi clock Pyboard tetap akurat pada pengulangan terpanjang, hal ini menunjukkan kualitas dan stabilitas dari crystal oscillator yang digunakan. Hal ini menunjukkan bahwa Pyboard memiliki confidence level yang tinggi untuk dapat diterapkan di level yang lebih demanding.

ESP8266 pada dasarnya mereproduksi clock lebih lambat. Semakin lama keterlambatan tersebut menumpuk sehingga gap semakin besar. Hal ini menjelaskan kejadian mengapa jam digital dengan ESP8266 setelah beberapa waktu menjadi telat sehingga saya harus mengulang kembali pemanggilan waktu dari NTP agar jam selalu tampil tepat waktu. Overclock ke 160 MHz memberikan dampak yang cukup signifikan untuk memperkecil tingkat deviasi, tapi tetap saja telat.

Yang paling menarik adalah CPX, berkebalikan dengan ESP8266, clock CPX lebih cepat dan perbedaan tersebut dapat menumpuk sehingga membuat gap menjadi exponentially higher. Jika kita gunakna sebagai timer, maka jam dengan CPX akan tampil terlalu cepat dalam tempo yang singkat. Saya perlu gali lagi lebih dalam apa yang menyebabkan hal ini. Apakah CPX tidak bisa mengakomodasi delay dengan resolusi 20 ms atau karena hal lain.

Kesimpulan

Sebagai kesimpulan, ketiga board diatas memiliki kelebihan dan kekurangannya masing-masing dan membutuhkan kompromi. Jika kita lihat dari segi value for money, ESP8266 tentu tampil sebagai favorit. Karena memang ESP8266 dibuat untuk segmen low cost wifi board market dan tampil sebagai pemenang. Board ini juga tersedia dimana-mana. Apabila ada pemain lain yang ingin bertanding di segmen ini, kita perlu ucapkan selamat bersaing. Untuk performance Pyboard tidak bisa dipandang enteng, sejauh ini dia tampil sebagai most powerful microcontroller board untuk rapid development. Untuk mendalami micropython lebih jauh, Pyboard adalah tempat terbaik. Dan terakhir CPX seperti duduk diantara Pyboard dan ESP8266. Lebih sigap  dan dilengkapi dengan segudang onboard sensor untuk bereksperimen dan belajar hardware development lebih cepat.

 

Sekian tulisan kali ini, terima kasih telah membaca review dari ketiga board yang panjang ini. Semoga memberikan pengetahuan dan wawasan yang baru. Mohon dukungannya untuk memberikan like, comment dan share tulisan ini jika berguna. Silahkan subscribe blog ini apabila belum untuk mendapatkan notifikasi posting selanjutnya.

Sampai bertemu dalam tulisan berikutnya, terima kasih.

Facebook Comments
 

Leave a Reply