BAB III LANDASAN TEORI 3.1 LDR (Light Dependent Resistor ...
Fun Coding with MicroPython - s3.amazonaws.com · 4.7 Sensor Ultrasonic ..... 41 4.8 Light...
Transcript of Fun Coding with MicroPython - s3.amazonaws.com · 4.7 Sensor Ultrasonic ..... 41 4.8 Light...
Fun Coding with
MicroPython
Sanksi Pelanggaran Pasal 113 Undang-Undang Nomor 28 Tahun 2014 tentang Hak Cipta
1. Setiap Orang yang dengan tanpa hak melakukan pelanggaran hak ekonomi sebagaimana dimaksud dalam Pasal 9 ayat (1) huruf i untuk Penggunaan Secara Komersial dipidana dengan pidana penjara paling lama 1 (satu) tahun dan/atau pidana denda paling banyak Rp100.000.000 (seratus juta rupiah).
2. Setiap Orang yang dengan tanpa hak dan/atau tanpa izin Pencipta atau pemegang Hak Cipta melakukan pelanggaran hak ekonomi Pencipta sebagaimana dimaksud dalam Pasal 9 ayat (1) huruf c, huruf d, huruf f, dan/atau huruf h untuk Penggunaan Secara Komersial dipidana dengan pidana penjara paling lama 3 (tiga) tahun dan/atau pidana denda paling banyak Rp500.000.000,00 (lima ratus juta rupiah).
3. Setiap Orang yang dengan tanpa hak dan/atau tanpa izin Pencipta atau pemegang Hak Cipta melakukan pelanggaran hak ekonomi Pencipta sebagaimana dimaksud dalam Pasal 9 ayat (1) huruf a, huruf b, huruf e, dan/atau huruf g untuk Penggunaan Secara Komersial dipidana dengan pidana penjara paling lama 4 (empat) tahun dan/atau pidana denda paling banyak Rp1.000.000.000,00 (satu miliar rupiah).
4. Setiap Orang yang memenuhi unsur sebagaimana dimaksud pada ayat (3) yang dilakukan dalam bentuk pembajakan, dipidana dengan pidana penjara paling lama 10 (sepuluh) tahun dan/atau pidana denda paling banyak Rp4.000.000.000,00 (empat miliar rupiah).
Fun Coding with
MicroPython
Andi Dinata
PENERBIT PT ELEX MEDIA KOMPUTINDO
Fun Coding with MicroPython Andi Dinata 2018 PT Elex Media Komputindo, Jakarta Hak cipta dilindungi undang-undang Diterbitkan pertama kali oleh Penerbit PT Elex Media Komputindo Kelompok Gramedia, Anggota IKAPI, Jakarta 2018
719050017
ISBN 9786020488240
Dilarang keras menerjemahkan, memfotokopi, atau memperbanyak sebagian atau seluruh isi buku ini tanpa izin tertulis dari penerbit.
Dicetak oleh Percetakan PT Gramedia, Jakarta
Isi di luar tanggung jawab percetakan
vii
Daftar Isi Kata Pengantar ................................................................................... v
Daftar Isi ............................................................................................. vii
Bab 1 Pendahuluan ............................................................................. 1
Bab 2 Mengenal Sistem ESP8266 ......................................................... 13
Bab 3 Instalasi MicroPython ESP8266 .................................................. 23
3.1 Instalasi Windows driver ..................................................................... 24
3.2 Instalasi MicroPython .......................................................................... 25
3.3 Mengenal uPyCraft .............................................................................. 26
3.4 Petunjuk Singkat .................................................................................. 28
Bab 4 Mengenal Komponen Elektronik ................................................ 33
4.1 Breadboard ......................................................................................... 33
4.2 LED ...................................................................................................... 35
4.3 Resistor ................................................................................................ 37
4.4 Buzzer .................................................................................................. 38
4.5 RGB LED ............................................................................................... 39
4.6 Push Button ......................................................................................... 40
4.7 Sensor Ultrasonic ................................................................................ 41
4.8 Light Dependent Resistor .................................................................... 43
4.9 Sensor Temperatur dan Kelembaban .................................................. 44
4.10 Sensor Akselerasi .............................................................................. 45
4.11 Motor DC ........................................................................................... 46
4.12 LCD 1602 ........................................................................................... 47
4.13 LED Matrix 8x8 .................................................................................. 48
4.14 LCD PCD8544 ..................................................................................... 49
4.15 LED SSD1306 0.96 inch ...................................................................... 49
Bab 5 Pengenalan MicroPython .......................................................... 51
Bab 6 MicroPython Library .................................................................. 69
6.1 Machine .............................................................................................. 70
6.2 Library Time......................................................................................... 76
viii
Bab 7 Komputasi Fisik ......................................................................... 81
7.1 Blinking LED ......................................................................................... 82
7.2 Traffic Light .......................................................................................... 84
7.3 RGB LED ............................................................................................... 86
7.4 Color Mix ............................................................................................. 89
7.5 PWM (Pulse Width Modulation) ......................................................... 91
7.6 Color Rainbow ..................................................................................... 96
7.7 Membuat Musik dengan Buzzer .......................................................... 98
7.8 Push Button ......................................................................................... 100
7.9 Tally Counter ....................................................................................... 104
7.10 Short–Long Press ............................................................................... 106
7.11 Interrupt Handler .............................................................................. 108
7.12 Stopwatch ......................................................................................... 109
7.13 Sensor Temperatur dan Kelembaban Udara ..................................... 112
7.14 Membaca Jarak dengan Sensor Ultrasonic ........................................ 116
7.15 Membaca Sinyal Analog .................................................................... 119
7.16 Lampu Penerangan Jalan Otomatis ................................................... 121
7.17 Membaca Sumbu XYZ ........................................................................ 122
7.18 Terhubung dengan Internet .............................................................. 124
Bab 8 Menampilkan Data .................................................................... 125
8.1 LCD1602 I2C ........................................................................................ 125
8.2 OLED SSD1306 0.96” I2C ..................................................................... 128
8.3 LCD Nokia 5110 SPI ............................................................................. 131
8.4 Modul LED Matrix 8x8 MAX7219 SPI ................................................... 134
8.5 Membuat Webserver .......................................................................... 137
Bab 9 DIY Project ................................................................................ 143
9.1 Internet Clock dengan LCD1602 .......................................................... 143
9.2 Miniatur Radar Ultrasonic OLED SSD1306 ........................................... 148
9.3 Membuat Gadget LCD Nokia 5110 ...................................................... 152
9.4 Membuat Game Snake dengan LED Matrix 8x8 .................................. 157
Kontrol ................................................................................................ 161
Makanan ............................................................................................. 162
Saat Makan ......................................................................................... 163
Jalan Tembus ...................................................................................... 163
Microco
(integra
memori,
digunak
Microco
medis, m
Sebelum
Program
oleh Int
kaca yan
data, kit
dalam k
bawah
microco
biaya ya
ontroller adalah se
ted circuit). Seb
, dan kanal input/
an untuk otomatis
ontroller ada dalam
mainan, peralatan
mnya, microcontr
mmable Read-Only
el pada tahun 197
ng berguna untuk
ta memaparkan ch
keadaan tertentu a
sinar matahari.
ontroller bertekno
ang mahal.
P
ebuah komputer k
buah microcontro
/output yang bisa
sasi sebuah mesin
m peralatan ruma
di kantor, sekolah,
roller berbentuk
y Memory) yang d
71. EPROM memili
proses penghapus
hip ini ke sinar ult
atau satu minggu
Keadaan itu
ologi EPROM berj
Gambar 1. EPROM
BaPendahu
kecil berbentuk ch
oller terdiri dari
diprogram. Micro
n atau peralatan s
ah tangga, mobil,
, dan masih banya
IC EPROM
dikembangkan pe
iki sebuah jendela
san data. Untuk m
raviolet selama 20
lamanya jika dipa
membuat penge
jalan sangat pela
M
1
ab 1 luan
hip atau IC
prosesor,
ocontroller
ehari-hari.
peralatan
k lagi.
(Erasable
rtama kali
berbahan
menghapus
0-30 menit
aparkan di
embangan
an dengan
2
Oleh sebab itu, dikembangkanlah microcontroller berbasis EEPROM
(Electronically Erasable Programmable Read-Only Memory) yang
penghapusannya dapat dilakukan secara elektronik sehingga dapat
mempercepat proses keseluruhan. Proses pengembangan peralatan
berbasis EPROM maupun EEPROM membutuhkan banyak peralatan
dan keahlian programming yang tinggi sehinggs agak mustahil untuk
memilikinya di rumah dan menjadikannya sebagai hobi karena biaya
yang mahal dan waktu yang lama. Pengembangan perlalatan
microcontroller berbasis EPROM dan EEPROM lebih cocok untuk
mereka yang bergerak dalam kegiatan industri.
Perlu diketahui, karena sifatnya yang erasable atau dapat dihapus,
Toshiba mengembangkan EEPROM menjadi flash memory pada tahun
1980 dengan tujuan untuk memperbesar kapasitas penyimpanan
memori sekaligus mempercepat proses membaca (read), menulis
(write), dan menghapus (erase). Prinsip teknologi EEPROM yang
dikembangkan oleh Toshiba ini masih dapat ditemukan hingga saat ini,
contohnya berupa flash disk, SD card, bahkan solid-state drive yang
kapasitasnya semakin besar dan semakin cepat.
Perkembangan ilmu pengetahuan mengantar kita ke era
microcontroller berjenis AVR yang berupa sebuah single-chip dengan
flash memory on-board untuk menyimpan program. Namun demikian
masih diperlukan sebuah proses untuk membangun sebuah supporting
circuitry atau rangkaian elektronik terlebih dahulu sebelum
menggunakan microcontroller ini. Kabar baik datang pada tahun 2005
yang lalu, Arduino muncul pertama kali sebagai microcontroller yang
lebih bersahabat.
3
Arduino menggunakan chip AVR yang sudah terintegrasi dengan
komponen lainnya dalam sebuah circuitry board sehingga lebih praktis
dan dapat langsung digunakan. Arduino memiliki port USB yang sangat
mudah untuk dihubungkan dengan komputer.
Gambar 2. Arduino UNO R3
Selain perangkat keras, Arduino juga mengembangkan software untuk
memprogramnya. Bahasa pemrograman tersebut berbasis C/C++ yang
dikemas dalam sebuah software bernama Arduino IDE. Software ini
diinstal di dalam komputer terlebih dahulu agar Arduino dapat dikenali.
Bahasa pemrograman Arduino menggunakan dengan bahasa yang ber-
level tinggi dan memilliki struktur yang jelas sehingga bisa dibaca dan
mudah dimengerti oleh manusia. Sejak itu, microcontroller lebih
terbuka bagi banyak kalangan, terutama dari pelajar dan penghobi
karena harga hardware yang lebih terjangkau dan bahasa pemrograman
yang lebih sederhana dibandingkan era sebelumnya. Setelah program
ditulis dalam Arduino IDE, proses transfer program ke chip AVR di
Arduino dilakukan melalui mekanisme compiling program. Arduino
dipasarkan tanpa perangkat jaringan (network). Add-on board yang
disebut shield perlu ditambahkan agar Arduino dapat terhubung dengan
network berbasis kabel (LAN) maupun wireless (WLAN).
4
Pada masa ini, wireless network adalah kebutuhan yang dasar untuk
hal-hal yang berhubungan dengan Internet of Things (IoT), namun
Arduino yang difavoritkan banyak kalangan tersebut tidak memilikinya
sehingga untuk menambahkannya kita perlu menambah biaya lagi
untuk membeli shield wireless. Harga shield ini lebih mahal dari board
Arduino itu sendiri. Untuk menjawab tingginya harga shield wifi,
ESP8266 muncul sebagai solusi perbandingan harga yang lebih murah
untuk low-cost wireless Arduino.
Gambar 3. ESP8266 WiFi Module
Hingga pada suatu titik ESP8266 pun dapat berdiri sendiri dan
kompatibel dengan bahasa pemrograman Arduino. Dalam kurun waktu
kurang dari satu tahun sejak kemunculannya, ESP8266 menjadi sangat
populer karena tiga hal utama. Pertama, dapat diprogram sama seperti
Arduino, artinya library untuk Arduino dapat digunakan langsung untuk
ESP8266. Kedua, dilengkapi dengan wifi on board sehingga tidak
memerlukan biaya tambahan. Ketiga, untuk semua kelebihan itu,
dimensi ukuran dan harga ESP8266 adalah seperlima dari Arduino.
5
Ketiga kelebihan ini yang membuat ESP8266 sangat mudah diterima
oleh semua kalangan melebihi Arduino.
Berikut ini perbandingan antara Arduino UNO R3 dengan ESP8266
based-board.
Arduino UNO R3
ESP8266 based-board
Power 5 volt 3.3 volt
Clock frequency 16 MHz 80 - 160 MHz
Microcontroller ATmega328 ESP8266
Flash Memory 32 Kb 1-4 Mb
SRAM 2 Kb 64 Kb SRAM/96 Kb DRAM
EEPROM 1 Kb -
USB Ya Ya
External power adapter
Ya Tidak (Ya untuk beberapa pabrikan)
Tombol reset Ya Ya
Digital I/O Pin 14 9 digital I/O
Analog I/O Pin 6 1
WiFi Tidak Ya
UART 1 1
PWM 6 9
SPI, I2C Ya Ya
6
Bahasa Program Arduino Arduino, Lua, MicroPython
Perbandingan harga
1 unit ~5 unit
Meskipun ESP8266 menguasai segmen pasar microcontroller berharga
rendah atau low cost microcontroller, namun belum dapat
menggantikan Arduino sepenuhnya karena popularitas yang dimiliki
Arduino di kalangan pengembang maupun pengguna baru sangat
tinggi. Meskipun keunggulan spesifikasi hardware ESP8266 sudah di
atas Arduino, namun dari sisi software, pengalaman pemrograman
ESP8266 masih sama dengan Arduino karena program yang dijalankan
harus melalui proses compiling.
Proses compiling adalah sebuah tahapan multi-proses yang terdiri dari 4
tahap, yaitu pre-processing, compiling, assembly, dan linking. Proses
compiling ini akan menerjemahkan bahasa program yang ditulis oleh
manusia menjadi bahasa yang dimengerti dan digunakan oleh
microcontroller. Proses compiling membutuhkan waktu, bahkan untuk
sebuah program sederhana seperti menuliskan ‘hello world’ atau
membuat LED berkedip. Proses compiling yang berulang-ulang juga
membutuhkan banyak waktu dan biaya. Proses compiling Arduino di
dalam ESP8266 tidak bisa dipisahkan karena bahasa Arduino yang
berbasis C/C++.
Salah satu bahasa program yang tidak memerlukan proses compiling
adalah Python. Python dikategorikan sebagai bahasa yang
diterjemahkan (interpreted).
7
Artinya, syntax (perintah) Python dapat langsung dimengerti oleh
bahasa prosesor komputer karena diterjemahkan secara langsung dari
bahasa yang dipahami manusia ke bahasa komputer. Python telah
digunakan secara luas sebagai bahasa ber-level tinggi hingga pada
tahun 2012 Python ditemukan dapat digunakan sebagai bahasa ber-
level rendah melalui implementasinya dalam SBC (Single Board
Computer) Raspberry Pi.
Gambar 4. Raspberry Pi 3 Model B+
Raspberry Pi menggunakan Python sebagai bahasa pemrograman utama
untuk mengendalikan hal-hal fisik seperti membaca sensor, mengkontrol
peralatan, dan robotika. Karena Python bahasa yang interpreted maka
penggunaannya membutuhkan sistem komputasi dengan kapasitas
memori yang besar (bersatuan Megabyte atau Gigabyte) yang hanya bisa
didapatkan dalam sebuah SBC atau PC (Personal Computer).
Pada tahun 2014, seorang fisikawan Damien George asal Australia
mengembangkan bahasa Python untuk microcontroller yang diberi nama
MicroPython. Beliau memproduksi perangkat keras yang diberi nama
Pyboard, yaitu sebuah microcontroller yang mampu menjalankan Python 3
yang sebelumnya hanya bisa berjalan pada komputer.
Sebagai microcontroller, Pyboard memiliki spesifikasi perangkat keras
yang sangat mumpuni sebagai berikut:
8
Microcontroller STM32F405RG dengan ARM CPU Cortex M4
168 MHz
192k RAM
1 MB flash memory
RTC terintegrasi
4 LED (merah, hijau, kuning, dan biru)
2 push button, reset, dan satu tombol yang dapat diprogram
Sensor accelerometer MMA7660
Slot micro sd card
30 IO Pin (4 khusus servo motor, 20 pin PWM, 16 pin ADC 12-
bit (4 dengan shield) dan 2 pin DAC 12-bit)
13 timer independen
Gambar 5. MicroPython Pyboard
MicroPython berhasil membenamkan bahasa Python ke dalam
microcontroller yang kapasitas prosesor, memori, dan sumber dayanya
sangat terbatas. Hal ini menjadi titik sejarah sebuah bahasa
pemrograman yang tidak memerlukan proses compiling tapi dapat
dijalankan di dalam microcontoller secara real-time atau dalam waktu
yang bersamaan.
9
Berbeda dengan Arduino yang membutuhkan sebuah software IDE
(Integrated Development Environment) untuk programming,
MicroPython di Pyboard dapat dioperasikan secara langsung tanpa
perlu bantuan software khusus di komputer. Bahkan, script dapat ditulis
dengan aplikasi editor teks biasa seperti notepad yang kemudian dapat
di-copy-kan langsung ke Pyboard yang tampil sebagai flash disk saat
dihubungkan dengan komputer. Pengembangan MicroPython telah
membuka babak baru pemrograman microcontroller yang lebih mudah,
lebih ekspresif, lebih cepat, dan dapat dipelajari oleh banyak kalangan.
Yang menjadi kendala saat itu adalah, orang harus memiliki Pyboard
untuk menggunakan MicroPython.
Pada tahun 2016, seiring makin populernya ESP8266, banyak dorongan
untuk mengembangkan MicroPython untuk chip ini. Strategi ini berhasil
membuat adopsi MicroPython menjadi lebih luas dan tidak terbatas
pada Pyboard saja. Kombinasi antara kelebihan ESP8266 dan
MicroPython telah menandai era baru ke pemrograman microcontroller
yang tidak hanya lebih efisien, tetapi juga rendah biaya.
Berkembang pesatnya MicroPython telah menarik sebuah industri
hardware bermerek, yaitu Adafruit untuk membuat sebuah versi dari
MicroPython yang dijalankan pada produk-produknya yang terkenal
memiliki kualitas tinggi. Versi tersebut bernama Circuit Python. Nama
Circuit disinyalir berasal dari sebuah hardware populer buatan Adafruit
yang bernama Circuit Playground, yaitu sebuah modul terintegrasi
dengan segudang sensor dan actuators yang menarik minat anak-anak
maupun dewasa untuk mempelajari elektronika maupun bahasa
pemrograman Arduino.
10
Varian yang menjalankan Circuit Python dinamakan Circuit Playground
Express yang memiliki spesifikasi sebagai berikut:
ATSAMD21 dengan CPU ARM Cortex M0 Processor 48 Mhz
2 MB flash memory
10 x mini NeoPixels, tiap NeoPixel menampilkan berbagai
warna
Motion sensor (LIS3DH triple-axis accelerometer dengan
deteksi ketukan dan jatuh bebas)
Temperature sensor (thermistor)
Light sensor (phototransistor) yang juga dapat berfungsi
sebagai sensor warna dan pulse sensor
Sensor suara (MEMS microphone)
Mini speaker dengan amplified kelas D (magnetic
speaker/buzzer berukuran 7.5mm)
2 push button A dan B
Saklar geser
Penerima dan pemancar inframerah
8 input/output pad yang mudah untuk digunakan dengan jepit
buaya yang termasuk di dalamnya terdapat I2C, UART. Pin
tersebut juga mampu menerima input analog, PWM output. 7
pads tersebut berfungsi sebagai capacitive touch dan 1 pad
sebagai true analog output.
2 LED dengan warha hijau dan merah. LED hijau menandakan
kondisi board “ON”, sedangkan LED #13 dapat digunakan
sebagai input standar.
229
Tentang Penulis Andi Dinata adalah seorang karyawan perusahaan multinasional yang memiliki ketertarikan dalam dunia komputer sejak remaja. Ia pernah menjabat sebagai Manager Project IT berskala lokal dan regional Asia Pasifik. Selain itu, juga menjabat sebagai Manager dari Functional Designer sebuah sistem terintegrasi termasuk di dalamnya sistem ERP, Business Intelligence, dan pengelolaan data laboratorium (LIMS). Meskipun berlatar belakang pendidikan sarjana kimia murni dari salah satu Institut Negeri di Surabaya, penulis selalu menghabiskan waktu liburan semester dengan mempelajari bahasa program secara otodidak. Penulis juga merupakan seorang pengajar bahasa program untuk anak-anak sekolah dasar. Selain bidang komputer, penulis juga gemar menuliskan pengalaman perjalanannya, baik dalam dan luar negeri di blog pribadinya. Anda dapat mengunjungi website penulis di alamat andidinata.com. Catatan: Untuk melakukan pemesanan buku, hubungi Layanan Langsung PT Elex Media Komputindo: Gramedia Direct Jl. Palmerah Barat No. 29-37, Jakarta 10270
Telemarketing/CS: 021-53650110/111
ext: 3901/3902/3292