fun coding with micropython - s3.amazonaws.com · 4.7 sensor ultrasonic ..... 41 4.8 light...

18

Upload: phunglien

Post on 27-Jun-2019

224 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Fun Coding with MicroPython - s3.amazonaws.com · 4.7 Sensor Ultrasonic ..... 41 4.8 Light Dependent Resistor ..... 43 4.9 ... 4.14 LCD PCD8544
Page 2: Fun Coding with MicroPython - s3.amazonaws.com · 4.7 Sensor Ultrasonic ..... 41 4.8 Light Dependent Resistor ..... 43 4.9 ... 4.14 LCD PCD8544

Fun Coding with

MicroPython

Page 3: Fun Coding with MicroPython - s3.amazonaws.com · 4.7 Sensor Ultrasonic ..... 41 4.8 Light Dependent Resistor ..... 43 4.9 ... 4.14 LCD PCD8544

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).

Page 4: Fun Coding with MicroPython - s3.amazonaws.com · 4.7 Sensor Ultrasonic ..... 41 4.8 Light Dependent Resistor ..... 43 4.9 ... 4.14 LCD PCD8544

Fun Coding with

MicroPython

Andi Dinata

PENERBIT PT ELEX MEDIA KOMPUTINDO

Page 5: Fun Coding with MicroPython - s3.amazonaws.com · 4.7 Sensor Ultrasonic ..... 41 4.8 Light Dependent Resistor ..... 43 4.9 ... 4.14 LCD PCD8544

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

[email protected]

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

Page 6: Fun Coding with MicroPython - s3.amazonaws.com · 4.7 Sensor Ultrasonic ..... 41 4.8 Light Dependent Resistor ..... 43 4.9 ... 4.14 LCD PCD8544

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

Page 7: Fun Coding with MicroPython - s3.amazonaws.com · 4.7 Sensor Ultrasonic ..... 41 4.8 Light Dependent Resistor ..... 43 4.9 ... 4.14 LCD PCD8544

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

Page 8: Fun Coding with MicroPython - s3.amazonaws.com · 4.7 Sensor Ultrasonic ..... 41 4.8 Light Dependent Resistor ..... 43 4.9 ... 4.14 LCD PCD8544

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

Page 9: Fun Coding with MicroPython - s3.amazonaws.com · 4.7 Sensor Ultrasonic ..... 41 4.8 Light Dependent Resistor ..... 43 4.9 ... 4.14 LCD PCD8544

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.

Page 10: Fun Coding with MicroPython - s3.amazonaws.com · 4.7 Sensor Ultrasonic ..... 41 4.8 Light Dependent Resistor ..... 43 4.9 ... 4.14 LCD PCD8544

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).

Page 11: Fun Coding with MicroPython - s3.amazonaws.com · 4.7 Sensor Ultrasonic ..... 41 4.8 Light Dependent Resistor ..... 43 4.9 ... 4.14 LCD PCD8544

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.

Page 12: Fun Coding with MicroPython - s3.amazonaws.com · 4.7 Sensor Ultrasonic ..... 41 4.8 Light Dependent Resistor ..... 43 4.9 ... 4.14 LCD PCD8544

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

Page 13: Fun Coding with MicroPython - s3.amazonaws.com · 4.7 Sensor Ultrasonic ..... 41 4.8 Light Dependent Resistor ..... 43 4.9 ... 4.14 LCD PCD8544

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).

Page 14: Fun Coding with MicroPython - s3.amazonaws.com · 4.7 Sensor Ultrasonic ..... 41 4.8 Light Dependent Resistor ..... 43 4.9 ... 4.14 LCD PCD8544

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:

Page 15: Fun Coding with MicroPython - s3.amazonaws.com · 4.7 Sensor Ultrasonic ..... 41 4.8 Light Dependent Resistor ..... 43 4.9 ... 4.14 LCD PCD8544

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.

Page 16: Fun Coding with MicroPython - s3.amazonaws.com · 4.7 Sensor Ultrasonic ..... 41 4.8 Light Dependent Resistor ..... 43 4.9 ... 4.14 LCD PCD8544

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.

Page 17: Fun Coding with MicroPython - s3.amazonaws.com · 4.7 Sensor Ultrasonic ..... 41 4.8 Light Dependent Resistor ..... 43 4.9 ... 4.14 LCD PCD8544

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.

Page 18: Fun Coding with MicroPython - s3.amazonaws.com · 4.7 Sensor Ultrasonic ..... 41 4.8 Light Dependent Resistor ..... 43 4.9 ... 4.14 LCD PCD8544

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