Anda di halaman 1dari 112

PRAKTEK

SISTEM
EMBEDDED
2022/2023
Mata Kuliah : Prak. Embedded System Minggu Ke - :2
Dosen : Gillang Al Azhar, M.Tr.T Materi : Setup ESP32 dengan Arduino
Lama MK : 3 Jam IDE

A. Install Board ESP32 pada Arduino IDE


1. Buka preferences pada Arduino IDE

2. Tambahkan alamat web berikut ini pada bagian boards manager

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-
pages/package_esp32_index.json

1 dari 110
3. Buka Boards Manager untuk menginstall board esp32

4. Tuliskan ESP32, tunggu sebentar kemudian install board esp32

Tunggu hingga proses selesai

B. Test Upload Project


Untuk menguji board ESP32 telah bisa digunakan, perlu diujicobakan untuk mengupload sample
program. Pertama – tama kita set board pada Arduino IDE menjadi board ESP32 yang digunakan.
Sebagai contoh board yang digunakan adalah ESP32 WROOM DOIT DEVKIT V1 yang seperti
pada gambar berikut ini

2 dari 110
Pada Arduino IDE pilih board menjadi ESP32 DEVKIT DOIT V1

Kemudian pilih PORT tempat USB ESP32 ditancapkan, sebagai contoh USB yang terbaca adalah
COM 4

3 dari 110
Selanjutnya dapat dicoba untuk melakukan upload program blink yang ada pada examples program
1. Upload Project Blink pada menu example

Ganti port led dari GPIO 13 menjadi GPIO 2


Pada saat melakukan upload program, tunggu hingga muncul tulisan uploading pada Arduino
IDE

Ketika muncul tulisan “Connecting”, selanjutnya tekan dan tahan tombol boot yang ada pada
board ESP32 yang akan diisi dengan program hingga progress upload program berhasil (100%)

4 dari 110
2. Upload Project Wifi Scan pada example
Pilih project dari menu examples yang terinstall ketika melakukan instalasi board ESP32

Upload program yang digunakan untuk melakukan scanning wifi, setelah berhasil terupload,
langkah selanjutnya adalah buka serial monitor untuk melihat ada SSID Wifi apa saja yang terbaca

Jika terdapat SSID Wifi yang ada disekitar ESP, maka akan tampil nama SSID yang terbaca pada
ESP32.

5 dari 110
Mata Kuliah : Prak. Embedded System Minggu Ke - :3
Dosen : Gillang Al Azhar, M.Tr.T Materi : Pemrograman GPIO ESP32
Lama MK : 3 Jam

1. GPIO (General Purpose Input Output) pada ESP32


General Purpose Input Output merupakan sebuah unit pada mikrokontroler atau embedded system
yang berfungsi sebagai unit interface antara board dengan perangkat lain. GPIO dapat beroperasi
sebagai input dan sebagai output. Perlu digaris bawahi bahwa 1 unit GPIO hanya dapat beroperasi
menjadi input atau output saja bergantung dari setting fungsi dari GPIO tersebut. Jika GPIO diset
sebagai output, maka pin GPIO tersebut dapat digunakan untuk memberikan tegangan logika (0 – 5
Volt DC). Sedangkan jika diset sebagai input, maka pin tersebut berfungsi untuk membaca input sinyal
dari luar board (0 – 5 Volt).

Selain berfungsi untuk membaca logika tegangan dan memberikan logika tegangan pada rangkaian
lain, GPIO dari mikrokontroler dan embedded system juga memiliki fungsi lain, seperti dapat
digunakan untuk membaca dan membuat sinyal analog, kemudian dapat digunakan sebagai
komunikasi data, serta sebagai input dan output tegangan.
Pada board ESP32 dengan jenis WROOM32, pin berjumlah 30 buah yang dibagi menjadi 2 sisi. Dalam
board ESP 32 terdapat pin VIN, yang berfungsi sebagai pin untuk memberikan input tegangan sebesar
5 volt. Berdasarkan gambar diatas, dapat dilihat bahwa 25 pin merupakan GPIO, dan 5 pin lainnya
merupakan pin khusus tegangan dan reset / enable.

6 dari 110
Pada gambar tersebut, dapat dilihat bahwa pin GPIO disebelah kiri mayoritas dapat digunakan sebagai
pin untuk membaca sinyal analog (ADC), dan berbeda dari mikrokontroler lainnya, seluruh pin GPIO
dari ESP32 dapat digunakan sebagai analog output atau dapat digunakan untuk membuat sinyal PWM.
Selain itu terdapat sensor sentuh yang langsung terhubung ke beberapa pin GPIO seperti yang dapat
dilihat pada gambar diatas dengan keterangan “touch-”.

2. Tugas dan Praktikum


2.1 Perintah dasar pengoperasian GPIO
Untuk dapat memanfaatkan pin GPIO ESP32, dibutuhkan beberapa perintah dasar didalam
pemrogramannya, berikut beberapa perintah dasar yang dapat digunakan

2.1.1 Setting fungsi GPIO

Pertama, fungsi GPIO perlu dideklarasikan terlebih dahulu, yaitu berfungsi sebagai input atau
output. Perintah pinMode digunakan untuk menentukan fungsi pin GPIO beroperasi sebagai input
atau output. Berikut merupakan format untuk menuliskan syntax tersebut:
pinMode(PIN, MODE);
Mode yang tersedia pada perintah pinMode ada 3, yaitu:
• INPUT : Berfungsi mendeklarasikan fungsi GPIO sebagai input

7 dari 110
• INPUT_PULLUP : Berfungsi mendeklarasikan fungsi GPIO sebagai input dengan internal
pullup didalam ESP32 diaktifkan
• OUTPUT : Berfungsi untuk mendeklarasikan fungsi GPIO sebagai output.

2.1.2 Set logika GPIO


Kemudian perintah untuk menset nilai dari GPIO apakah mengeluarkan logika 1 atau 0 dapat
digunakan perintah digitalWrite(PIN, MODE). Sebagai contoh pin GPIO 35 diset untuk bernilai
logika 0 atau LOW, maka dapat dituliskan syntaxnya seperti pada gambar diatas, digitalWrite(35,
LOW);, atau jika ingin diset menjadi HIGH, maka dapat dituliskan digitalWrite(35, HIGH);

2.1.3 Membaca nilai logika pada GPIO

Untuk membaca nilai pin dari GPIO dapat memanfaatkan perintah digitalRead(PIN);,
dikarenakan fungsi digitalRead() merupakan sebuah fungsi dengan nilai balik, maka dibutuhkan
sebuah variable penampung untuk menyimpan nilai yang terbaca dari logika GPIO yang sedang
dibaca, sehingga cara penulisan untuk menggunakan perintah ini dapat dituliskan seperti gambar
diatas. Nilai yang didapatkan disimpan kedalam variable pinValue memiliki kemungkinan nilai
yaitu 1 atau 0, atau HIGH / LOW.

2.1.4 Serial Monitor


Serial monitor digunakan sebagai interface bantuan untuk dapat mengetahui isi dari suatu data yang
ada didalam program. Berikut merupakan setup untuk menggunakan Serial Monitor

Pertama – tama perlu dideklarasikan penggunaan komunikasi serial dengan nilai baud rate tertentu,
hal ini dapat dilakukan dengan perintah Serial.begin(BAUD);, dimana nilai baud rate dapat dipilih
sesuai dengan nilai yang disediakan, pada umumnya yang digunakan adalah 9600, 57600, dan
115200, dengan catatan semakin tinggi nilai baud rate, maka semakin panjang data yang dapat
dikomunikasikan, namun akan memakan waktu yang lebih panjang.

8 dari 110
Selanjutnya untuk mengirimkan data serial ke Serial Monitor dapat menggunakan 2 perintah yaitu
• Serial.print(data) : digunakan untuk mengirimkan data / tulisan dalam 1 baris yang sama
• Serial.println(data): digunakan untuk mengirimkan data / tulisan dengan diakhiri enter
atau pindah baris.
Selanjutnya upload program hingga berhasil, setelah itu, Serial Monitor dapat dibuka dengan
menggunakan tombol yang ada pada Arduino IDE

Sehingga akan muncul jendela Serial Monitor seperti berikut

Sesuaikan nilai baud rate agar data yang dikirmkan dapat terbaca dengan benar, sehingga tampilan
yang didapatkan akan tampak seperti berikut

9 dari 110
Berikut merupakan contoh full syntax program yang dapat dicoba

2.2 Pembacaan Touch Sensor


ESP32 juga dilengkapi dengan capacitive touch sensor yang terletak dibeberapa pin GPIOnya.

Pada gambar pinout ESP32 tersebut, dapat terlihat bahwa touch sensor terletak pada
GPIO4(Touch0), GPIO2(Touch2), GPIO15(Touch3), GPIO13(Touch4), GPIO12(Touch5),
GPIO14(Touch6), GPIO27(Touch7), GPIO33(Touch8), GPIO32(Touch9). Fungsi sensor

10 dari 110
capacitive touch sensor adalah digunakan untuk melihat input berupa entuhan pada pin GPIO
terebut. Untuk memanggil fungsi touchsensor dapat menggunakan contoh fungsi berikut

2.3 Tugas Praktikum


2.3.1 Tujuan
• Mahasiswa/i mampu mengoperasikan GPIO dari ESP32 sebagai input dan output
• Mahasiswa/i mampu memanfaatkan touch sensor yang terdapat didalam ESP32
• Mahasiswa/i mampu menyalakan dan mematikan led dengan menggunakan touch sensor dari
ESP32
2.3.2 Alat dan Bahan
• ESP32 DOIT DEVKIT V1 Board
• Kabel USB-A to Micro-USB (Downloader)
• Project Board
• LED + resistor 330 ohm
• Push Button / Jumper
2.3.3 Praktikum
• GPIO sebagai input dan ouput
GPIO Input Output
1 Bisa/Tidak Bisa/Tidak
2
3
Dst.

• Membaca nilai touch sensor


Sensor Idle (Range) Touched
Touch1
Touch2
Touch4
Dst.

11 dari 110
• ON / OFF LED dengan touch sensor

12 dari 110
Mata Kuliah : Prak. Embedded System Minggu Ke - :4
Dosen : Gillang Al Azhar, M.Tr.T Materi : Timer dan PWM pada ESP32
Lama MK : 3 Jam

1. Timer dan Time Sampling


Timer merupakan unit pencacah otomatis yang ada didalam sebuah mikrokontroler dan embedded
system. Kinerja dari timer memanfaatkan besarnya sumber clock yang dimiliki oleh chip dari
mikrokontroler ataupun embedded system. Sebagai contoh pada board ESP32 DOIT DEVKIT V1
memiliki kecepatan clock sebesar 80 MHz – 240 MHz. Clock yang digunakan untuk melakukan
cacahan otomatis dari timer dapat diatur berdasarkan besar nilai pembagi dari clock sumber yang
diinputkan. Sebagai contoh sebuah timer ESP32 digunakan untuk melakukan proses interupsi overflow
setiap 100 ms atau 0.1 detik. Sebagai contoh resolusi timer yang digunakan adalah 16 bit atau sebesar
65535 hitungan untuk mencapai overflow. Maka prescaler yang dibutuhkan dapat dihitung untuk
menemukan clock yang tepat agar dalam 0.1 detik didapatkan 65535 clock. Sehingga didapatkan

𝐶𝑙𝑜𝑐𝑘 = 80𝑀ℎ𝑧
1𝑠 = 80.000.000 𝑐𝑜𝑢𝑛𝑡𝑠
1 𝑐𝑜𝑢𝑛𝑡𝑠 = 80 𝑛𝑠
1 𝑐𝑜𝑢𝑛𝑡 = 80𝑛𝑠 𝑥 𝑁
80.000.000
𝑁=
100.000
𝑁 = 800
Didapatkan nilai prescaler yang dibutuhkan untuk membuat interrupt timer sebesar 0.1 detik adalah
800. Inilah keunggulan yang dimiliki dari ESP32 dibandingkan dengan Arduino atau mikrokontroler
ATmega lainnya, nilai prescaler yang didapat memiliki nilai fleksibilitas yang tinggi. Jika pada
ATmega nilai prescalernya telah ditentukan, pada ESP32 dapat ditentukan sesuai kebutuhan. Untuk
setup menggunakan interupsi timer pada ESP32 dapat dilakukan dengan cara berikut

13 dari 110
Pertama – tama perlu dilakukan deklarasi pointer awal untuk mengakses unit timer yang ada pada ESP
32 yaitu hw_timer_t. Inisialisasi awal adalah sebagai berikut

Baris program tersebut berfungsi mendeklarasikan bahwa untuk mengakses hw_timer_t digunakan
variable dengan nama timer. Kemudian baris selanjutnya adalah untuk dapat menyinkronkan kinerja
ISR dengan mainloop.

Pada bagian setup dilakukan inisialisasi untuk melakukan konfigurasi terhadap timer yang digunakan

Pada bari program diatas berfungsi untuk menentukan besarnya prescaler yang digunakan. Pada kasus
ini diketahui ESP32 secara default menggunakan clock sebesar 80MHz, artinya dalam 1 timer akan
mencacah sebanyak 80.000.000 kali. Untuk membuat agar cacahan tiap detik tidak terlalu cepat, maka
diset prescaler yang digunakan adalah 80, Sehingga didapatkan 1.000.000 cacahan dalam 1 detik,
artinya 1 cacahan dilakukan setiap 1 microseconds (1us). Fungsi true pada deklarasi tersebut adalah
menunjukkan bahwa cacahan dihitung secara naik.

Selanjutnya, dideklarasikan fungsi interupsi timer, dimana input dari timerAttachInterrupt yang
pertama adalah konfigurasi dari kecepatan cacahan yang dilakukan oleh timer yang tersimpan pada
variable timer, kemudian untuk input yang kedua berisikan nama fungsi ISR yang dijalankan, dan
input yang ketiga adalah mengaktifkan fungsi interupsi.

Selanjutnya fungsi dari perintah timerAlarmWrite diatas adalah melakukan setting ISR dijalankan
setiap berapa cacahan sekali. Input pertama adalah konfigurasi timer yang telah disetting sebelumnya,
kemudian input kedua adalah konfigurasi ISR dijalankan setiap berapa cacahan sekali, pada kasus ini
cacahan dilakukan setiap 1us sekali, dan ISR akan dijalankan setiap 1ms sekali atau setiap terjadi
100000 cacahan sekali, dan input ke tiga diset true menandakan ISR akan dijalankan secara periodik
sesuai dengan jumlah cacahan dari timer tersebut.

14 dari 110
Terakhir, aktifkan ISR agar dapat berjalan bersamaan dengan looping sistem. Kemudian untuk fungsi
ISR yang dijalankan, dideklarasikan sebagai berikut

Fungsi ISR yang sebelumnya telah ditentukan dengan nama onTimer dideklarasikan sebagai IRAM
agar fungsi ISR tersebut dijalankan didalam IRAM dari ESP32. Selanjutnya ISR diawali dengan
menggunakan fungsi portENTER_CRITICAL_ISR, hal ini berfungsi agar ketika ISR pada fungsi ini
dijalankan, ISR lain yang ada dalam sistem dimatikan terlebih dahulu, kemudian program yang ingin
dijalankan dapat dituliskan. Setelah program yang ingin dijalankan selesai, ditutup dengan
portEXIT_CRITICAL_ISR agar ISR lain yang ada pada sistem dapat kembali dijalankan. Sebagai
contoh untuk menghitung hitungan yang dilakukan setiap 1 detik sekali maka dapat dicoba program
berikut

15 dari 110
2. Pulse Width Modulation

Pulse Width Modulation atau yang lebih dikenal dengan singkatannya yaitu PWM merupakan
gelombang output berbentuk kotak yang dihasilkan oleh timer yang ada pada mikrokontroler atau
embedded system. Dimana gelombang PWM yang memiliki sinyal yang bernilai HIGH dan LOW
dapat diatur lebar pulsanya atau Duty Cyclenya berdasarkan konfigurasi pada timernya.

PWM dapat digunakan untuk berbagai macam manfaat, sebagai contoh dapat digunakan untuk
mengatur intensitas cahaya yang dihasilkan oleh LED, kemudian mengatur kecepatan sebuah motor
DC, mengatur keluaran sinyal atau tegangan dari rangkaian konverter dan inverter, dan masih banyak
lagi. Pada ESP32 terdapat 8 unit Timer, yang masing – masing terhubung kedalam 2 channel timer.

16 dari 110
Seperti yang ditunjukkan pada gambar diatas, terdapat 8 unit timer yang terbagi menjadi 2 bagian yaitu
unit timer untuk high speed, dan unit taimer untuk low speed. Dimana masing – masing unit timer
tersebut terhubung kedalam 2 buah channel timer. 16 channel timer ini dapat dioperasikan secara
diferensial untuk pengaturan Duty Cycle gelombang yang dihasilkan, tetapi untuk besar frekuensi
timer yang dihasilkan hanya bisa diatur untuk 8 unit saja. Sebagai contoh unit timer 0 terhubung pada
channel 0 dan channel 1. Untuk nilai Duty Cycle pada channel 0 dan 1 dapat berbeda, namun untuk
nilai frekuensinya tidak dapat dibedakan.
Untuk menggunakan pwm dapat digunakan contoh program berikut

17 dari 110
Berikut beberapa fungsi yang digunakan dalam melakukan konfigurasi terhadap timer pada ESP32

Channel dari timer pada ESP32 dapat diaplikasikan ke semua pin GPIO seperti yang ada pada gambar
board ESP32 diatas. Karena hal itu, dibutuhkan fungsi untuk mendeklarasikan pin mana yang
dihubungkan ke channel timer tertentu dapat menggunakan perintah ledcAttachPin(), dimana
parameter pertama merupakan pin GPIO yang digunakan untuk mengeluarkan pulsa PWM, dan
parameter kedua adalah channel timer yang digunakan. Selanjutnya adalah melakukan setting pada
PWM yang akan dikeluarkan, yaitu dengan menggunakan perintah ledcsetup(), dimana parameter
input pertama adalah channel timer yang digunakan, kemudian parameter kedua adalah frekuensi pwm
yang dikeluarkan, perlu dicatat, nilai frekuensi bergantung pada device apa yang akan dikontrol dengan
PWM. Selanjutnya input parameter ke 3 adalah resolusi dari PWM yang dikeluarkan.

Kemudian untuk mengatur duty cycle keluaran sinyal PWM, dapat menggunakan perintah ledcwrite(),
dimana parameter pertama merupakan channel pwm / timer yang akan diatur duty cyclenya, kemudian
input parameter kedua adalah nilai dari dutycycle yang akan diberikan, sebagai contoh bila resolusi
PWM adalah 8 bit, maka dapat diinputkan nilai 0 hingga 255, jika yang digunakan adalah PWM
dengan resolusi 10 bit, maka dapat diinputkan nilai 0 hingga 1023, jika yang digunakan adalah PWM
dengan resolusi 16 bit, maka dapat diinputkan nilai 0 hingga 65535.

3. Tugas dan Praktikum


3.1 Tujuan
• Mahasiswa/i mampu mengoperasikan unit timer pada ESP32
• Mahasiswa/i mampu membangkitkan sinyal PWM dengan menggunakan ESP32
• Mahasiswa/i mampu mengendalikan sinyal PWM dari ESP32 secara asynchronous

3.2 Alat dan Bahan


• DOIT ESP32 DEVKIT V1 • LED
• Laptop / Komputer • Kabel Jumper
• Kabel Downloader • Project Board

18 dari 110
3.3 Praktikum
• Buatlah program untuk membuat jam digital dengan interface Serial Monitor dengan tampilan:
hh : mm : ss, dengan memanfaatkan timer dari dalam ESP32

• Buatlah program untuk mengendalikan 3 buah led dengan rate perubahan dutycycle yang berbeda
– beda

• Buatlah program untuk menyalakan 3 buah led dengan menggunakan PWM secara bergantian.
Duty Cycle PWM dinaikkan sebesar 10% setiap 0.5 detik sekali (time sampling dengan
menggunakan timer). Jika LED 1 Duty Cyclenya telah mencapai 100%, LED 1 tersebut dimatikan
dan bergantian menyalakan LED 2 dengan duty Cycle yang sama ditambahkan 10% setiap
samplingnya hingga 100%, dan dilanjutkan menyalakan LED 3 dengan cara yang sama. Proses
ini diulangi secara terus menerus.

19 dari 110
Mata Kuliah : Prak. Embedded System Minggu Ke - :5
Dosen : Gillang Al Azhar, M.Tr.T Materi : Pembacaan Sensor dengan ESP32
Lama MK : 3 Jam

1. Pembacaan Sensor Analog dengan ESP32


1.1 Analog to Digital Converter
Data analog merupakan data yang memiliki bentuk berupa sinyal analog, umumnya merupakan data
berupa tegangan. Mikrokontroler merupakan unit digital, dimana tidak dapat mengolah secara
langsung data dalam bentuk analog. Sehingga dibutuhkan unit untuk mengkonversi data analog
menjadi data digital. Hampir semua Mikrokontroler telah dilengkapi unit ADC secara internal, begitu
pula ESP32. Umumnya mikrokontroler memiliki pin khusus yang tersambung kedalam unit ADC yang
ada pada arsitekturnya, namun untuk ESP32, hampir semua pin GPIO dapat dijadikan untuk unit ADC.

Dapat dilihat pada gambar GPIO dari ESP32 diatas, pin GPIO yang dapat digunakan sebagai unit ADC
adalah pin yang memiliki keterangan dengan warna orange. Pin – pin tersebut adalah

GPIO 2 ADC2_2
GPIO 4 ADC2_0
GPIO 12 ADC2_5
GPIO 13 ADC2_4
GPIO 14 ADC2_6
GPIO 25 ADC2_8
GPIO 26 ADC2_9
GPIO 27 ADC2_7
GPIO 32 ADC1_4
GPIO 33 ADC1_5
GPIO 34 ADC1_6
GPIO 35 ADC1_7

20 dari 110
GPIO 36 ADC1_0
GPIO 39 ADC1_3

Resolusi ADC dari ESP32 adalah 12 bit, namun resolusi ini dapat disesuaikan menjadi 8 bit sampai
dengan 12 bit melalui program pada bagian setup, serta tegangan yang terbaca ada pada range 0 hingga
3.3 volt saja.

Selain itu karakteristik pembacaan adc dari ESP32 bersifat tidak linier. Sehingga jika terkadang
pembacaan ADC ESP32 terasa kurang halus, hal ini disebabkan karena karakteristiknya yang tidak
linier.

1.2 Resistive Soil Moisture Sensor


Resistive soil moisture merupakan sebuah sensor yang digunakan untuk mendetekasi kadar air yang
ada didalam tanah. Prinsip kerja dari sensor ini adalah membaca tingkat kandungan air yang ada
didalam tanah melalui jalur tembaga yang di sepanjang sensor, semakin tinggi kadar air yang terbaca,

21 dari 110
maka resistansi yang terbentuk antara kedua bagian sensor tersebut akan turun. Untuk sensor
kelembapan tanah dengan jenis resistive ini dubutuhkan sebuah rangkaian pembagi tegangan. Berikut
gambaran sensor resistive soil moisture berserta modul pengkondisi sinyal yang digunakan.

Fungsi rangkaian pengkondisi sinyal tersebut adalah merubah data resistansi yang berubah
berdasarkan tingkat kadar air menjadi sebuah perubahan nilai tegangan, yang kemudian nilai tegangan
tersebut dapat dibaca dengan menggunakan mikrokontroler. Pada rangkaian pengkondisi sinyalnya
terdapat sebuah potensiometer, yang digunakan untuk melakukan kalibrasi range dari tegangan sensor
yang digunakan. Kekurangan dari penggunaan sensor kelembapan tanah dengan jenis ini, nilai
resistansi dari sensor akan semakin berkurang keakuratannya bila lapisan tembaga pada bagian sensor
mulai berkarat, sehingga nilai sensor yang terbaca menjadi kurang akurat.

1.3 Capacitive Soil Moisture Sensor

Sama halnya seperti sensor kelembapan dengan tipe resistif, sensor kelembapan tanah kapasitif juga
memanfaatkan besaran analog untuk dapat membedakan kadar air yang terkandung didalam tanah.
Perbedaannya adalah sensor dengan jenis ini lebih tahan terhadap karat, dan rangkaian pengkondisi
sinyal untuk merubah nilai perubahan kapasitansi menjadi tegangan untuk dapat dibaca dengan
mikrokontroler telah menjadi satu didalam sensor tersebut. Interface dari sensor ini berupa 3 buah
kabel yaitu kabel untuk vcc (+), gnd (-), dan data(Vo). Sama halnya seperti pada sensor kelembapan
tanah resistif, tegangan yang dihasilkan dari sensor dapat dibaca oleh mikrokontroler melalui pin ADC
atau Analog to Digital Converter.

22 dari 110
2. Pembacaan Sensor I2C dengan ESP32
2.1 Komunikasi data I2C
Komunikasi I2C merupakan salah satu protokol komunikasi serial yang dimiliki oleh ESP 32.
Berbeda dengan komunikasi Serial pada umumnya yang menggunakan sambungan rangkaian
transmitter dan receiver (full duplex) yang memiliki baudrate data, untuk komunikasi I2C
menggunakan protokol half duplex, yaitu menggunakan sambungan SDA dan SCL. Komunikasi
I2C bersifat master-slave, yaitu satu kontroler digunakan sebagai pengendali utama (master), dan
perangkat lain digunakan sebagai slave, dengan ketentuan jumlah slave dapat lebih dari 1.
Rangkaian untuk menyambungkan master dan slave adalah menyambungkan seluruh pin SDA dan
pin SCL, masing – masing pin bersifat parallel, yang digunakan sebagai pembeda slave satu
dengan slave lainnya adalah alamat slave yang dimiliki perangkat tersebut. Berikut gambaran blok
komunikasi antar perangkat dengan menggunakan I2C

Berdasarkan gambar tersebut, SDA digunakan sebagai jalur pertukaran data, dimana data dapat
dikirim dari master ke slave, ataupun sebaliknya. Master dapat mengirimkan data ke slave tertentu
berdasarkan alamat slave yang dimiliki dari perangkat slave tersebut, dan slave dapat mengirimkan
data ke master ketika master meminta data dari slave yang dituju. Sedangkan SCL digunakan
sebagai jalur pemberian clock pada proses transmisi data. Karena clock pada komunikasi data ini
menggunakan sumber yang sama, komunikasi jenis ini merupakan salah satu jenis komunikasi
sinkronus.

2.2 Sensor AHT10


Sensor AHT10 adalah sensor alternatif sensor suhu dan kelembapan selain sensor DHT11 atau
LM35 yang dimana diakses dengan menggunakan komunikasi i2c denganharga yang murah
danpresisi. Sehingga untuk pengkabelannya lebih simpel, dan tingkat pembacaan datanya lebih
stabil. Komunikasi i2c terdiri dari serial data (SDA) dan Serial Clock (SCL) yang membawa
informasi data antara mikrokontroler dan sensornya.

23 dari 110
Untuk spesifikasi dari sensor AHT10 dapat dilihat sebagai berikut
• Range Suhu : −40𝑜 C sampai 85𝑜 C
• Resolusi Suhu : 0.01𝑜 C
• Akurasi Suhu : ±0.3𝑜 C
• Kelembapan yang dapat dibaca : 0% - 100%
• Resolusi kelembaban relative: 0.024%
• Akurasi kelembapan relative : ±2%
• Tegangan Kerja : 1.8 V – 3.6 V DC

3. Tugas dan Praktikum


3.1 Tujuan
• Mahasiswa/i mampu menggunakan sensor soil moisture dengan ESP32
• Mahasiswa/i mampu menggunakan sensor AHT10 dengan ESP32
• Mahasiswa/i mampu mengimplementasikan sensor soil moisture dan AHT10 kedalam project
sederhana
3.2 Alat dan Bahan
• Project Board
• LED
• Jumper
• ESP32
• Capacitive Soil Moisture Sensor
• AHT10 Sensor
3.3 Praktikum
Buatlah Program untuk melakukan praktikum berikut ini
(1). Baca range sensor soil moisture pada tanah yang kering dan pada tanah yang basah dengan
menggunakan ESP32, masukkan hasilnya kedalam tabel berikut

Tanah Kering Tanah Basah


…-… …-…

(2). Tambahkan LED pada rangkaian praktikum anda, jika sensor membaca kering, led akan menyala,
dan jika sensor membaca basah led padam
(3). Import Library untuk sensor AHT10, kemudian coba upload program example
(4). Tambahkan LED pada rangkaian praktikum anda, jika suhu diatas 30 derajat, LED akan menyala,
dan jika kurang dari sama dengan 30 LED akan mati.

Berikan listing program anda beserta hasil yang didapatkan dan foto praktikum yang anda
lakukan kedalam laporan praktikum!

24 dari 110
Mata Kuliah : Prak. Embedded System Minggu Ke - :6
Dosen : Gillang Al Azhar, M.Tr.T Materi : IoT Sederhana ESP32 dengan
Lama MK : 3 Jam Telegram Bot

1. Konektivitas ESP32 pada SSID


Sebuah ESP32 telah dibekali dengan perangkat tambahan berupa adapter WiFi dan Bluetooth yang
sudah langsung tertanam didalam chipnya. Hal ini merupakan salah satu kelebihan yang dimiliki oleh
ESP32 dibandingkan dengan Arduino biasa. Spesifikasi transceiver yang dimiliki oleh ESP32 adalah
11b/g/h, serta adapter Bluetooth versi 4.2/BLE. Dengan begitu sebuah ESP32 dapat terhubung
langsung kejaringan internet melalui konektivitas wireless. Agar dapat terkonek kedalam jaringan wifi
atau lebih umum disebut dengan SSID, berikut beberapa hal yang perlu dilakukan

1.1 Import library untuk konektivitas pada SSID


Untuk dapat terhubung ke SSID yang terkoneksi dengan internet, library yang digunakan adlaah
menggunakan “Wifi.h”. Library ini akan terinstall secara otomatis kedalam editor Arduino ketika
melakukan instalasi board ESP32 pada board manager. Berikut merupakan cara pemanggilan modul
wifi tersebut

1.2 Tuliskan nama SSID yang akan dihubungkan serta password dari SSID tersebut (jika ada)
Inputkan nama SSID wireless yang akan dikoneksikan pada ESP serta passwordnya, jika tidak ada
password dapat dikosongi seperti pada gambar berikut

1.3 Uji coba program untuk terkoneksi dengan server sparkfun


Untuk menguji coba konektivitas esp32 kepada SSID, dapat diujicobakan dengan menggunakan
program berikut ini

25 dari 110
26 dari 110
Program tersebut merupakan contoh program untuk menguji coba konektivitas ESP32 pada SSID.
Untuk uji coba yang dilakukan dapat disesuaikan nama SSID yang digunakan, serta jika SSID
memiliki password dapat disesuaikan juga dengan password yang diberikan pada SSID tersebut. Jika
ESP32 mampu terkoneksi kedalam SSID, maka pada serial print akan menampilkan hitungan angka
dari 0 hingga 60.

Tetapi ketika koneksi terputus, maka tampilan pada serial monitor akan menampilkan tampilan
“connection loss”, dan pada baris program tersebut telah diberikan fungsi untuk melakukan reconnect
pada SSID kembali.

dan ketika ESP32 berhasil terkoneksi kembali, maka tampilan akan berubah menunjukkan proses
reconnect telah berhasil dan kembali melakukan hitungan dari 0 sampai 60

27 dari 110
2. Telegram dan Telegram Bot
Telegram merupakan sebuah aplikasi smartphone yang dapat digunakan untuk komunikasi seperti
pada whatsapp atau LINE, namun perbedaannya adalah pada telegram data enkripsi dibuat lebih
mudah dan lebih bersifat open source. Aplikasi ini dapat didownload dan diinstall melalui Playstore
atau Appstore.

Pada telegram terdapat fitur pembuatan bot secara gratis. Bot merupakan sebuah sistem AI yang
berfungsi untuk dapat membaca atau memberikan informasi atau perintah melalui chat. Fitur ini dapat
diakses melalui akun botfather. Penggunaan Bot telegram ini dapat diasosiasikan dengan penggunaan
ESP32. Berikut contoh penggunaannya serta cara setupnya.

2.1 Daftarkan Bot Baru pada Telegram

28 dari 110
Pada aplikasi telegram, buat chat baru dan cari user dengan nama botfather yang memiliki tanda
verified (centang biru).

Ketik /start untuk memulai chat dengan user bot tersebut. Kemudian ketikkan /newbot untuk
membuat bot baru. Selanjutnya akan dimintai nama tampilan dari bot yang dibuat, pada contoh ini
diberi nama D4_3Z_Kel1_bot. Selajutnya akan dimintai nama username dari bot yang dibuat, pada
nama ini perlu ditambahkan nama bot dibelakan nama yang dituliskan, pada contoh ini, nama dibuat
sama yaitu D4_3Z_Kel1_bot. Setelah semua selesai diinputkan maka akan didapatkan

29 dari 110
Dimana pada balasan bot akan didapatkan token API yang digunakan untuk menghubungkan Telegram
Bot yang telah dibuat dan ESP32. Untuk memulai chat dengan bot yang telah dibuat dapat diklik link
chat bot, pada contoh ini adalah t.me/D4_3Z_Kel1_bot.

2.2 Dapatkan Telegram User ID


User ID Telegram digunakan untuk memberikan ID dari telegram anda. Nantinya id ini akan
dimasukkan kedalam syntax program anda, sehingga ESP32 akan mengirim balasan atau data kepada
user telegram yang menghubungi ESP32 melalui telegram. Untuk mendapatkan User ID dapat
melakukan chat ke IDBot seperti berikut

Gunakan perintah /getid untuk mendapatkan nomor id dari telegram anda. Simpan user id tersebut,
nantinya akan dimasukkan kedalam syntax program yang digunakan pada ESP32.

2.3 Tambahkan Library untuk Telegram Bot pada Editor Arduino IDE
Untuk mempermudah menggunakan telegram bot dapat didownload library ctbot melalui link berikut

https://github.com/shurillu/CTBot/archive/master.zip

Kemudian masukkan file zip yang telah terdownload kedalam Arduino IDE yang digunakan.

2.4 Install Arduino JSON Library


Tambahkan Arduino JSON Library melalui library manager

30 dari 110
2.5 Buat Program Untuk Integrasi dengan Bot Telegram

Sesuaikan SSID yang anda gunakan, id telegram yang anda gunakan, serta token bot telegram yang
telah anda dapatkan. Dapat diujikan perintah telegram botnya seperti Hi dan Bye.

31 dari 110
3. Tugas dan Praktikum
3.1 Tujuan
• Mahasiswa/i mampu menghubungkan ESP32 ke SSID
• Mahasiswa/i mampu membuat dan memanfaatkan telegram bot
• Mahasiswa/i mampu mengintegrasikan ESP32 dan TelegramBot

3.2 Alat dan Bahan


• Project Board
• LED
• Jumper
• ESP32
• Telegram

3.3 Praktikum
Buatlah Program untuk melakukan praktikum berikut ini

1. Membuat program untuk menyalakan dan mematikan 2 Buah LED dengan menggunakan telegram
Bot. Bot yang dibuat diberi nama D3/D4_Kelas_Kelompok_bot

2. Membuat system security untuk pengirim perintah melalui telegram bot, jika id tidak terdaftar
pada ESP32, maka ESP32 akan mengirimkan nama dari pengguna telegram yang mencoba
memberikan perintah pada bot yang dibuat. Hal ini dapat diuji dengan melakukan chat pada bot
yang sudah anda buat dengan menggunakan telegram yang tidak didaftarkan didalam ESP32

3. Menambahkan fitur auto reconnect pada project anda

32 dari 110
Mata Kuliah : Prak. Embedded System Minggu Ke - :7
Dosen : Gillang Al Azhar, M.Tr.T Materi : IoT Sederhana ESP32 dengan
Lama MK : 3 Jam Aplikasi Blynk

1. Aplikasi Blynk

Aplikasi ini merupakan wadah kreatifitas untuk membuat antarmuka grafis untuk proyek yang
akan diimplementasikan hanya dengan metode drag and drop widget. Penggunaannya sangat
mudah untuk mengatur semuanya dan dapat dikerjakan dalam waktu kurang dari 5 menit.
Blynk tidak terikat pada papan atau module tertentu. Dari platform aplikasi inilah dapat
mengontrol apapun dari jarak jauh, dimanapun kita berada dan waktu kapanpun. Dengan
catatan terhubung dengan internet dengan koneksi yang stabil dan inilah yang dinamakan
dengan sistem Internet of Things (IOT). Untuk dapat menggunakan blynk dengan ESP32,
perlu melakukan install aplikasi blynk pada android yang digunakan. Hal ini dapat dilakukan
melalui aplikasi GooglePlayStore.
1.1 Install Aplikasi Blynk IoT pada Android melalui GooglePlayStore

Untuk instalasi pada aplikasi Google Play Store, dapat dicari dengan kata kunci yaitu blynk
iot, dan pilih aplikasi dengan tampilan icon seperti yang ada pada gambar diatas

33 dari 110
1.2 Registrasi dan Setup Blynk melalui Web dan Aplikasi HP
Registrasi Blynk dilakukan agar dapat mengakses fitur – fitur yang ada pada blynk baik pada
web serta pada aplikasi android. Untuk melakukan registrasi dapat dilakukan melalui web atau
melalui aplikasi android, pada praktikum ini dilakukan melalui aplikasi blynk iot. Pertama
buka aplikasi blynk iot pada android anda, sehingga akan tampil seperti berikut

Kemudian lakukan Sign Up, dan masukkan email yang anda gunakan, kemudian cek email
anda, lakukan aktivasi akun blynk anda melalui pesan pada email anda. Lakukan registrasi
hingga selesai, sampai anda berhasil login pada akun blynk anda seperti pada gambar bagian
kanan diatas. Selanjutnya lakukan login pada akun blynk anda pada web https://blynk.cloud

Selanjutnya login dengan menggunakan email yang telah anda registrasikan dengan
menggunakan aplikasi android anda (email dan password sama dengan pada proses registrasi).
Setelah berhasil melakukan login, maka anda akan mendapatkan tampilan sebagai berikut

34 dari 110
Dengan begitu anda telah berhasil melakukan registrasi akun blynk serta melakukan login
akun anda pada android dan web dari blynk.
1.3 Membuat Template Untuk Project Blynk
Template digunakan untuk menentukan data apa yang akan anda kirimkan dari ESP32 kedalam cloud
dari blynk. Tahap ini merupakan tahap awal untuk membuat komunikasi data antara ESP32 dengan
cloud dari blynk. Pembuatan template dapat dilakukan melalui aplikasi android ataupun dari web. Pada
praktikum ini akan dicontohkan pembuatan template melalui web dari blynk. Pada halaman dashboard,
pilih Create New Template

35 dari 110
Kemudian beri nama Template yang anda buat, sebagai contoh dapat diberi nama
PraktikumEmbeddedSystem, kemudian pilih hardware yang digunakan, dalam hal ini digunakan
ESP32 dengan perangkat yang digunakan untuk mengirim data melalui WiFi. Kemudian pilih done
untuk menyelesaikan pembuatan template.

Sehingga akan didapatkan syntax program yang nantinya akan dimasukkan ke editor program yang
digunakan. Selanjutnya simpan dengan memilih save pada tombol kanan atas.
1.4 Membuat device yang dihubungkan kedalam aplikasi / web blynk

Untuk membuat list device yang akan dihubungkan ke aplikasi / web dari blynk dapat dipiih symbol
search seperti pada gambar diatas. Jika akun masih belum memiliki device yang dihubungkan maka
tampilan yang didapatkan akan seperti gambar diatas. Selanjutnya pilih new device

36 dari 110
Selanjutnya karena pada tahap sebelumnya telah membuat template dapat dipilih pilihan from
template yang ada pada bagian paling kiri

Pilih template yang akan digunakan melalui box TEMPLATE, kemudian beri nama device yang akan
dibuat, pada contoh dibuat device dengan nama “Praktikum 6”.

Jika device telah berhasil dibuat maka akan muncul menu device pada bagian menu search disebelah
kiri.

37 dari 110
2. Membuat Virtual Port pada aplikasi blynk
Virtual port merupakan sebuah port yang bersifat virtual yang ditampung didalam device yang ada
pada aplikasi blynk atau pada web dari blynk. Virtual port berisikan memory data penampung yang
dapat diisi dengan data integer, float, maupun string. Terdapat 2 cara untuk membuat virtual port, yaitu
melalui web blynk atau dapat dilakukan secara langsung melalui aplikasi blynk yang ada di android.
Pada praktikum ini akan dicontohkan cara membuat virtual port melalui aplikasi blynk di android.

Pada tahap sebelumnya telah dibuat device dengan nama praktikum 6, maka secara otomatis akan
mendapatkan tampilan seperti pada gambar diatas ketika membuka aplikasi blynk di android dengan
nama praktikum 6. Pilih device dengan nama Praktikum 6 tersebut sehingga akan mendapatkan
tampilan seperti pada gambar berikut

Selanjutnya adalah membuat tampilan yang diinginkan dengan memilih simbol kunci inggris dibagian
kanan atas untuk memasuki developer mode agar dapat melakukan edit pada layout tampilan aplikasi
blynk. Selanjutnya akan muncul keterangan belum ada widget yang digunakan, hal ini dikarenakan
dari template yang telah dibuat belum dibuatkan tampilan yang diinginkan. Untuk dapat membuat
tampilan yang diinginkan pertama – tama adalah menekan symbol plus pada pojok kanan. Kemudian
pada menu tersebut akan muncul pilihan widgets atau tampilan yang dapat digunakan pada aplikasi

38 dari 110
blynk. Sebagai contoh pilih widget yang bersifat free, yaitu widget gauge dan widget value display
dan tata sesuai keinginan. Sebagai contoh dapat ditata seperti pada gambar berikut

Untuk memindahkan widget dapat dilakukan dengan cara menekan setidaknya 2 detik dari tampilan
widget, kemudian lakukan drag ke posisi yang diinginkan. Ukuran tampilan widget juga dapat diatur
dengan cara menekan 2 detik widget kemudian lepaskan, akan muncul garis hijau, yang menandakan
bahwa widget yang dipilih dapat diatur ukurannya dengan cara menarik titik tebal pada garis tersebut.
Selanjutnya adalah membuat virtual port untuk masing – masing widget yang telah dipilih dengan cara
tekan sekali pada widget yang akan dibuat virtual portnya

Kemudian pilih choose datastream, dan create Virtual Pin Datastream

39 dari 110
Selanjutnya pilih virtual pin yang diinginkan, dalam hal ini tersedia nomor virtual pin 0 hingga 255
yang dapat digunakan, untuk nilai data yang berbeda diperlukan virtual port yang berbeda. Selanjutnya
untuk masing – masing virtual pin dapat diatur apakah merupakan bilangan integer atau bilangan
decimal. Dapat dipilih sesuai kebutuhan, pada contoh dipilih ke mode decimal yaitu pada pilihan
double, serta dapat diatur range nilai yang dapat ditampilkan dengan melakukan set nilai min dan max,
serta nilai awal ketika tidak ada data yang masuk dari esp32 yang berada pada default value. Sebagai
contoh virtual pin yang akan ditampilkan nilainya melalui widgets gauge adalah suhu dimana memiliki
range 0 hingga 100. Selanjutnya beri nama data sesuai keinginan. Berikut contoh yang diinputkan

40 dari 110
Dimana unit yang digunakan adalah celcius (unit merupakan optional, dapat dikosongkan), dengan
format bilangan decimal yang ditampilkan adalah 2 bilangan dibelakang koma. Setelah selesai pilih
done yang ada pada pojok kanan atas.

Untuk mengatur warna tampilan dan beberapa konfigurasi tampilan dapat dipilih menu design pada
bagian bawah. Setelah sudah selesai lanjutkan dengan membuat virtual pin pada widget kedua dengan
konfigurasi yang dibutuhkan.

3. Pengiriman Data ESP32 ke Aplikasi Blynk melalui SSID / Wifi


Pada bagian ini akan dipraktekkan cara mengirim data dari esp32 kepada aplikasi blynk.
3.1 Download Library untuk blynk ESP32
Download library blynk untuk esp32 pada link berikut:
https://github.com/blynkkk/blynk-library
Download dalam bentuk file zip

41 dari 110
Kemudian import kedalam Arduino IDE dan restart IDE Arduino anda setelah berhasil melakukan
import file

3.2 Buat Program untuk mengirimkan data pada aplikasi blynk


Pertama – tama yang perlu dilakukan adalah mengambil identitas dari server blynk yang telah dibuat.
Hal ini dapat dilakukan melalui web blynk seperti yang telah dilakukan diawal. Buka device yang telah
dibuat pada bagian awal, yaitu praktikum 6 kemudian masuk ke bagian device info dan copy baris
program yang telah disediakan seperti pada gambar berikut.

dan masukkan baris program tersebut kedalam program Arduino

42 dari 110
Pada program yang dibuat, diperlukan 3 library, yaitu Wifi.h, WifiCLient.h, dan
BlynkSimpleEsp32.h . Baris awal program dapat dituliskan seperti pada gambar diatas. Untuk isi dari
baris define disesuaikan denga nisi dari blynk masing - masing

Buat list untuk menampung data token, ssid, dan password dari ssid yang digunakan. Pada bagian
setup inisialisasi blynk dapat dilakukan dengan menggunakan fungsi Blynk.begin(), dimana parameter
yang digunakan adalah token dari blynk, nama ssid, dan password yang digunakan, selanjutnya adalah
alamat cloud dari blynk (“blynk.cloud”), dan port yang digunakan oleh server blynk (8080). Serta
pada bagian loop, untuk menjalankan perintah blynk dapat dijalankan dengan memanggil fungsi
Blynk.run().

3.3 Fungsi mengirim data kepada aplikasi blynk


Untuk mengirimkan data yang diinginkan dari esp32 kedalam aplikasi blynk dapat digunakan fungsi
Blynk.virtualWrite(VirtualPin, Value). Dimana parameter VirtualPin disesuaikan dengan virtual pin

43 dari 110
yang dihubungkan denan widget yang telah disetting pada tahap sebelumnya. Sebagai contoh program
digunakan untuk mengirimkan data yang akan ditampilkan oleh widget gauge dan widget display.

Upload program, pastikan esp32 dapat terhubung dengan server melalui serial monitor dengan
menambahkan baris berikut

jika esp32 berhasil terhubung, dapat dicek pada aplikasi blynk. Jika data berhasil dikirimkan kedalam
aplikasi blynk, maka nilai yang ditampilkan gauge dan value display akan dapat berubah – ubah.

44 dari 110
3.4 Fungsi membaca data dari aplikasi blynk
Fungsi membaca data dari blynk biasa dimanfaatkan untuk membaca widget berupa button, slider,
atau step (widget pada fitur premium). Dimana ketika tombol atau slider ditekan dan dirubah, secara
otomatis aplikasi blynk akan mengirimkan nilai ke esp32.

Fungsi yang digunakan untuk membaca nilai yang didapatkan adalah dengan membuat fungsi
BLYNK_WRITE(virtual pin), yang dapat dituliskan seperti berikut

dimana val dapat dideklarasikan terlebih dahulu, dan untuk membaca nilai yang didapatkan dari
aplikasi blynk digunakan fungsi param.asInt() untuk mendapatkan nilai integer yang dikirimkan dari
aplikasi blynk.
4. Tugas dan Praktikum
4.1 Tujuan praktikum
• Mahasiswa/i mampu menggunakan aplikasi blynk iot melalui android / IoS yang dimiliki masing
– masing.
• Mahasiswa/i mampu menggunakan server blynk melalui website dari blynk iot.
• Mahasiswa/i mampu membuat project IoT dengan menghubungkan ESP32 dengan aplikasi blynk
iot

45 dari 110
4.2 Alat dan Bahan
• ESP32 dan kabel downloader
• Arduino IDE
• Android / IoS
• Aplikasi Blynk IoT
• LED
• Kabel Jumper

4.3 Praktikum
• Rangkai rangkaian ESP32 dan LED seperti pada gambar berikut

Rangkaian dapat dibuat tanpa menggunakan resistor, LED dihubungkan ke GPIO5, GPIO22 dan
GPIO23.
• Buatlah program dan tampilan pada aplikasi Blynk yang dapat digunakan untuk menyalakan dan
mematikan masing – masing led melalui aplikasi Blynk. Tombol pada aplikasi blynk berjumlah
3 buah, dimana masing – masing tombol mewakili masing – masing LED yang terpasang pada
ESP32. Serta berikan indikator LED pada tampilan aplikasi blynk yang anda buat.
Berikut contoh tampilan yang dapat digunakan (hanya sebagai referensi)

• Buatlah program dan tampilan pada aplikasi Blynk yang dapat digunakan untuk mengatur
intensitas cahaya dari nyala LED yang terpasang pada ESP32. Pengaturan intensitas cahaya dapat

46 dari 110
menggunakan slider untuk masing – masing LED. Dimana masing – masing LED diberikan
keterangan status dari LED tersebut. PWM yang digunakan memiliki resolusi sebesar 10 bit
dengan frekuensi 1KHz. Status akan menampilkan Padam ketika nilai DC dari pwm adalah 0 –
100. Status akan berubah menjadi redup ketika nilai DC sebesar 101 – 400. Status akan berubah
menjadi terang untuk DC sebesar 401 - 800, dan status akan berubah menjadi sangat terang untuk
DC sebesar 801 – 1023. Berikut tampilan blynk yang dapat dijadikan referensi

47 dari 110
BAB 1 – PENGENALAN RASPBERRY Pi

48 dari 110
1.1 TUJUAN
Memahami teori dasar dari Raspberry Pi
Memahami spesifikasi umum modul Raspberry Pi
Mengetahui jenis-jenis modul Raspberry Pi dan perbedaannya

1.2 DASAR TEORI


Raspberry Pi, sering disingkat dengan nama Raspi, adalah komputer papan
tunggal (single-board circuit; SBC) yang seukuran dengan kartu kredit yang dapat
digunakan untuk menjalankan program perkantoran, permainan komputer, dan
sebagai pemutar media hingga video beresolusi tinggi. Raspberry Pi dikembangkan
oleh yayasan nirlaba, Rasberry Pi Foundation, yang digawangi sejumlah
pengembang dan ahli komputer dari Universitas Cambridge, Inggris[1].
Ide dibalik Raspberry Pi diawali dari keinginan untuk mencetak pemrogram
generasi baru. Seperti disebutkan dalam situs resmi Raspberry Pi Foundation, waktu
itu Eben Upton, Rob Mullins, Jack Lang, dan Alan Mycroft, dari Laboratorium
Komputer Universitas Cambridge memiliki kekhawatiran melihat kian turunnya
keahlian dan jumlah siswa yang hendak belajar ilmu komputer. Mereka lantas
mendirikan yayasan Raspberry Pi bersama dengan Pete Lomas dan David Braben
pada 2009. Tiga tahun kemudian, Raspberry Pi Model B memasuki produksi massal.
Dalam peluncuran pertamanya pada akhir Febuari 2012 dalam beberapa jam saja
sudah terjual 100.000 unit. Pada bulan Februari 2016, Raspberry Pi Foundation
mengumumkan bahwa mereka telah menjual 8 juta perangkat Raspi, sehingga
menjadikannya sebagai perangkat paling laris di Inggris[2][3].

49 dari 110
Gambar 1.1 Board Raspberry Pi 3 Model B

Berikut ini spesifikasi dari Raspberry Pi 3 :


SoC: Broadcom BCM2837
CPU: 4× ARM Cortex-A53, 1.2GHz
GPU: Broadcom VideoCore IV
RAM: 1GB LPDDR2 (900 MHz)
Networking: 10/100 Ethernet, 2.4GHz 802.11n wireless
Bluetooth: Bluetooth 4.1 Classic, Bluetooth Low Energy
Storage: microSD
GPIO: 40-pin header, populated
Ports: HDMI, 3.5mm analogue audio-video jack, 4× USB 2.0, Ethernet,
Camera Serial Interface (CSI), Display Serial Interface (DSI)

Broadcom BCM2837 dibangun menggunakan sistem-on-chip (SoC) yang memiliki


empat fitur :
1. ARM Cortex-A53 processing core berjalan pada 1.2GHz,
2. 32KB Level 1 dan 512 KB Level 2 cache memory,
3. Sebuah prosesor grafis VideoCore IV, dan
4. Modul memori 1GB LPDDR2 di bagian belakang papan.

50 dari 110
Raspberry Pi model terbaru menawarkan dukungan operasi multi-threaded
dengan mengambil keunggulan dari empat processing core pada Pi 2 dan Pi 3.
SysBench mengungkapkan pengembangan desain Raspberry Pi dari pertama
hingga terakhir, menunjukkan kinerja single-threaded telah meningkat pesat, dan
keunggulan terbesar pada saat dijalankannya program multi-threaded.
Raspberry Pi tipe 3 mengonsumsi daya lebih besar dari versi sebelumnya, baik pada
saat mendapat beban kerja maksimum (load) maupun pada saat tidak ada beban
(idle). Jika membutuhkan jenis Raspberry yang memiliki daya tahan baterai
maksimum, mungkin bisa dipilih Model A + Pi Zero sebagai alternatif.
Chip Broadcom BCM43438 memiliki spesifikasi 2.4GHz 802.11n wireless LAN,
Bluetooth Low Energy, dengan dukungan Bluetooth 4.1 Classic Radio. Sehingga
tidak dibutuhkan antena eksternal ke Raspberry Pi 3. Radio yang terhubung ke
antena chip ini disolder langsung ke papan, untuk menjaga ukuran perangkat tetap
kecil. Antena ini mampu mengambil sinyal Wireless LAN dan Bluetooth, bahkan bisa
menembus dinding. Raspberry Pi 3 menggunakan SMSC LAN9514 chip seperti
pendahulunya, Raspberry Pi 2, dengan menambahkan konektivitas Ethernet 10/100
dan empat USB channel ke print circuit board. Seperti sebelumnya, chip SMSC
menghubungkan ke SoC melalui saluran USB tunggal, bertindak sebagai adapter
USB-to-Ethernet dan USB hub.
Raspberry Pi 3 memiliki fitur 40-pin general-purpose input-output (GPIO)
dengan header yang sama seperti semua jenis Raspberry Pi Model B+ dan Model
A+. Perangkat keras GPIO yang ada akan bekerja tanpa modifikasi; satu-satunya
perubahan adalah switch UART tergabung pada pin GPIO, hal tersebut dapat diatur
secara internal oleh sistem operasi. Umumnya, pin GPIO Raspberry Pi sering
diakses menggunakan program berbasis Python, meskipun menyebabkan terjadinya
bottleneck CPU. Akan tetapi pada Raspberry terbaru hal ini
sudah teratasi. Dalam tes ini, program sederhana yang menggunakan library
RPi.GPIO digunakan untuk menghitung seberapa cepat mematikan pin dengan
menggunakan counter frekuensi.
Website Raspberry Pi bisa diakses di www.raspberrypi.org yang memberikan
informasi tentang produk, aksesoris sampai dengan contoh proyek pembelajaran
yang dapat dikerjakan dengan Raspberry Pi. Berikut ini adalah tampilan website
Raspberry Pi.

51 dari 110
Gambar 1.2 Website Raspberry Pi

Di website ini dapat dilihat jenis produk dan aksesoris yang berkaitan dengan
Raspberry Pi. Aksesoris tambahan seperti Sense Hat, I/O Board Computer Module,
Touch Displat sampai dengan Case tersedia untuk melengkapi Raspberry Pi dalam
memenuhi keinginan pengguna untuk merealisasikan ide kreatif dengan komputer
mini ini.

Gambar 1.3 Jenis-jenis Board Raspberry Pi

52 dari 110
1.3 SOAL
A. Jelaskan Perbedaan modul Raspberry Pi dengan modul sistem embedded
lainnya (Arduino, Intel Edison, Beaglebone)!

B. Jelaskan perbedaan spesifikasi dasar dari perkembangan Raspberry Pi (1 -


4)!

53 dari 110
C. Rancanglah dan jelaskan perangkat keras dan perangkat lunak dari
sebuah aplikasi sistem embedded menggunakan modul Raspberry Pi.

54 dari 110
BAB 2 – INSTALASI RASPBERRY Pi

55 dari 110
2.1. TUJUAN
Memahami prosedur instalasi OS Raspberry Pi
Memahami prosedur persiapan peralatan pendukung Raspberry Pi
Memahami prosedur persiapan awal penggunaan Raspberry Pi

2.2. DASAR TEORI


A. Persiapan Peralatan Pendukung

Gambar 2.1 Model Raspberry Pi 4 Model B dengan Interface Lengkap


Ada beberapa model Raspberry Pi, dan untuk sebagian besar orang, Raspberry Pi 4
Model B adalah yang harus dipilih. Raspberry Pi 4 Model B adalah yang terbaru,
tercepat, dan termudah untuk digunakan.
Raspberry Pi 4 hadir dengan RAM 1GB, 2GB, atau 4GB. Untuk sebagian besar
tujuan pendidikan dan banyak proyek hobi, 1GB sudah cukup; untuk digunakan
sebagai komputer desktop, kami merekomendasikan 2GB.
Raspberry Pi Zero dan Zero W lebih kecil dan membutuhkan daya lebih sedikit,
sehingga mereka berguna untuk proyek portabel seperti robot. Pada umumnya lebih
mudah untuk memulai proyek dengan Raspberry Pi 4, dan pindah ke Pi Zero ketika
Anda memiliki prototipe kerja yang berguna untuk Pi kecil.

56 dari 110
Gambar 2.2 Model Raspberry Pi 4 Model B

Unit Catu Daya


Untuk terhubung ke soket daya, semua model Raspberry Pi memiliki port USB
(sama dengan yang ditemukan pada banyak ponsel): baik USB-C untuk Raspberry
Pi 4, atau micro USB untuk Raspberry Pi 3, 2 dan 1.

Gambar 2.3 Unit Catu Daya untuk Model Raspberry Pi 4 Model B

Unit catu daya yang dibutuhkan harus memenuhi spesifikasi sebagai berikut:
Setidaknya memiliki arus sebesar 3 A, untuk raspberry Pi 4.

57 dari 110
Gambar 2.4 Unit Catu Daya untuk Model Raspberry Pi 4 (arus 3A)

Setidaknya memiliki arus sebesar 2,5 A, untuk raspberry Pi 3.

Gambar 2.5 Unit Catu Daya untuk Model Raspberry Pi 4 (arus 2,5A)

Kartu microSD
Raspberry Pi Anda memerlukan kartu SD untuk menyimpan semua file dan sistem
operasi Raspbian Anda.

58 dari 110
Gambar 2.6 Kartu MicroSD untuk Raspberry Pi

Anda memerlukan kartu microSD dengan kapasitas minimal 8 GB. Banyak penjual
memasok kartu SD untuk Raspberry Pi yang sudah disiapkan dengan Raspbian dan
siap digunakan.

Keyboard dan mouse


Untuk mulai menggunakan Raspberry Pi Anda, Anda memerlukan keyboard USB
dan mouse USB. Setelah mengatur Pi, Anda dapat menggunakan keyboard dan
mouse Bluetooth, tetapi Anda membutuhkan keyboard dan mouse USB untuk
pengaturan pertama.

TV atau layar computer


Untuk melihat lingkungan desktop Raspbian, Anda memerlukan layar, dan kabel
untuk menghubungkan layar dan Pi. Layar dapat berupa TV atau monitor komputer.
Jika layar memiliki speaker internal, Pi dapat menggunakan ini untuk memutar
suara.

HDMI
Raspberry Pi memiliki port output HDMI yang kompatibel dengan port HDMI pada
kebanyakan TV dan monitor komputer modern. Banyak monitor komputer mungkin
juga memiliki porta DVI atau VGA.

59 dari 110
Raspberry Pi 4 memiliki dua port micro HDMI, memungkinkan Anda untuk
menghubungkan dua monitor terpisah.

Gambar 2.7 Port Output HDMI

Anda memerlukan kabel micro HDMI-to-HDMI, atau kabel HDMI-to-HDMI standar


plus adaptor micro HDMI-to-HDMI, untuk menghubungkan Raspberry Pi 4 ke layar.

Gambar 2.8 Port output HDMI ke MicroHDMI

Raspberry Pi 1, 2 dan 3 memiliki satu port HDMI ukuran penuh, sehingga Anda
dapat menghubungkannya ke layar menggunakan kabel HDMI-to-HDMI standar.

DVI
Jika layar Anda memiliki port DVI, Anda dapat menghubungkan Pi ke port tersebut
menggunakan kabel HDMI-to-DVI.

Gambar 2.9 Port DVI di modul Raspberry Pi 4

VGA
Beberapa layar hanya memiliki porta VGA.

60 dari 110
Gambar 2.10 Port VGA di modul Raspberry Pi 4

Untuk menghubungkan Pi Anda ke layar seperti itu, Anda dapat menggunakan


adaptor HDMI-to-VGA.

Gambar 2.11 Port HDMI to VGA di modul Raspberry Pi 4

Perangkat Tambahan
Kotak
Anda mungkin ingin memasukkan Raspberry Pi Anda ke dalam case. Ini tidak
penting, tetapi akan memberikan perlindungan untuk Raspberry Pi Anda. Jika Anda
suka, Anda dapat menggunakan kasing resmi untuk Raspberry Pi 4 atau Pi Zero
atau Zero W.

Headphone atau speaker


Model Raspberry Pi yang besar (tetapi bukan Pi Zero / Zero W) memiliki port audio
standar seperti yang ada di ponsel pintar atau pemutar MP3 Anda. Jika mau, Anda
dapat menghubungkan headphone atau speaker Anda sehingga Raspberry Pi Anda
dapat memutar suara. Jika layar yang menghubungkan Raspberry Pi Anda memiliki
speaker internal, Raspberry Pi dapat memutar suara melalui ini.

61 dari 110
Kabel Ethernet
Model Raspberry Pi yang besar (tetapi bukan Pi Zero / Zero W) memiliki port
Ethernet standar untuk menghubungkan mereka ke internet; untuk menghubungkan
Pi Zero ke internet, Anda memerlukan adaptor USB-to-Ethernet.
Raspberry Pi 4, 3, dan Pi Zero W juga dapat terhubung secara nirkabel ke internet.

2.3. ALAT DAN BAHAN


Modul Raspberry Pi
Modul Pendukung Raspberry Pi
Micro SD dengan OS Raspbian

2.4. PROSESUR PERCOBAAN


B. Persiapan Kartu SD
Jika Anda memiliki kartu SD yang belum memiliki sistem operasi Raspbian, atau jika
Anda ingin mengatur ulang Raspberry Pi, Anda dapat dengan mudah memasang
Raspbian sendiri. Untuk melakukannya, Anda memerlukan komputer yang memiliki
port kartu SD - kebanyakan laptop dan komputer desktop memilikinya.

Sistem operasi Raspbian melalui NOOBS


Menggunakan perangkat lunak NOOBS adalah cara termudah untuk menginstal
Raspbian pada kartu SD.
Catatan: pengguna yang lebih mahir yang ingin menginstal sistem operasi tertentu
harus menggunakan panduan ini untuk menginstal gambar sistem operasi.

Unduh NOOBS
 Untuk mengunduh NOOBS, https://www.raspberrypi.org/downloads

62 dari 110
 Anda akan melihat kotak yang menautkan ke file NOOBS. Klik pada kotak.

 Opsi paling sederhana adalah mengunduh arsip zip file. Pastikan untuk
memperhatikan di mana Anda menyimpan arsip, sehingga Anda dapat
menemukannya kembali dengan cepat.

63 dari 110
Format Kartu SD
Apa pun yang disimpan pada kartu SD akan ditimpa selama pemformatan. Jadi jika
kartu SD tempat Anda ingin menginstal Raspbian saat ini memiliki file di dalamnya,
mis. dari versi Raspbian yang lebih lama, Anda mungkin ingin mencadangkan file-file
ini terlebih dahulu agar tidak kehilangan mereka secara permanen.
Kunjungi situs web SD Association dan unduh SD Formatter untuk Windows
atau Mac.
Ikuti instruksi untuk menginstal perangkat lunak.
Masukkan kartu SD Anda ke komputer atau slot kartu SD laptop.
Di SD Formatter, pilih kartu SD Anda, dan format kartu.

64 dari 110
Ekstrak NOOBS dari arsip zip
Selanjutnya, Anda perlu mengekstrak file dari arsip zip NOOBS yang Anda unduh
dari situs web Raspberry Pi.
Temukan arsip yang diunduh - secara default, itu harus ada di folder Unduhan
Anda.
Klik dua kali untuk mengekstrak file, dan biarkan jendela Explorer / Finder
yang terbuka.

Salin file
Sekarang buka jendela Explorer / Finder lain dan navigasikan ke kartu SD.
Yang terbaik adalah menempatkan kedua jendela berdampingan.
Pilih semua file di folder NOOBS dan seret ke jendela kartu SD untuk
menyalinnya ke kartu.

65 dari 110
Setelah semua file disalin, Anda dapat mengeluarkan kartu SD.

66 dari 110
2.5. HASIL PERCOBAAN

67 dari 110
2.6. ANALISA DATA

68 dari 110
2.7. SOAL
A. Sebutkan dan jelaskan komponen yang dibutuhkan untuk memulai projek
menggunakan modul Raspberry Pi!

B. Sebutkan dan jelaskan prosedur instalasi OS Raspbian ke micro SD!

69 dari 110
C. Sebutkan dan jelaskan prosedur menghubungkan perangkat sensor dan
actuator ke perangkat Raspberry Pi!

2.8. KESIMPULAN

70 dari 110
BAB 3 – SETUP RASPBERRY Pi

71 dari 110
A. Menghubungkan Raspberry Pi
Sekarang sambungkan semuanya dengan Raspberry Pi Anda. Penting untuk
melakukan ini dalam urutan yang benar, sehingga semua komponen Anda aman.

Gambar 3.1 Port di Modul Raspberry Pi 4 Model B

Masukkan kartu SD yang telah Anda siapkan dengan Raspbian (melalui


NOOBS) ke dalam slot kartu microSD di bagian bawah Raspberry Pi Anda.

Catatan: Banyak kartu microSD masuk ke dalam adaptor yang lebih besar - Anda
dapat menggeser kartu yang lebih kecil keluar menggunakan bibir di bagian bawah.

72 dari 110
Temukan ujung konektor USB dari kabel mouse Anda, dan sambungkan
mouse ke port USB di Raspberry Pi (tidak masalah port mana yang Anda
gunakan).

Sambungkan keyboard dengan cara yang sama.

Pastikan layar Anda dicolokkan ke stopkontak dinding dan dihidupkan.


Lihatlah port HDMI pada Raspberry Pi - perhatikan bahwa mereka memiliki
sisi datar di atas.
Gunakan kabel untuk menghubungkan layar ke port HDMI Raspberry Pi -
gunakan adaptor jika perlu.

73 dari 110
Raspberry Pi 4
 Hubungkan layar Anda ke yang pertama dari port HDMI Raspberry Pi 4, berlabel
HDMI0.

 Anda dapat menghubungkan layar kedua opsional dengan cara yang sama.

74 dari 110
Raspberry 1, 2, 3
 Hubungkan layar Anda ke satu port HDMI.

Catatan: tidak ada yang akan ditampilkan di layar, karena Raspberry Pi Anda
belum berjalan.
 Jika Anda ingin menghubungkan Raspberry Pi Anda ke internet melalui
Ethernet, gunakan kabel Ethernet untuk menghubungkan port Ethernet pada
Raspberry Pi ke soket Ethernet di dinding atau di router internet Anda. Anda
tidak perlu melakukan ini jika Anda ingin menggunakan konektivitas nirkabel,
atau jika Anda tidak ingin terhubung ke internet.

75 dari 110
 Jika layar yang Anda gunakan memiliki speaker, suara akan diputar melalui
itu. Atau, sambungkan headphone atau speaker ke port audio jika Anda mau.

B. Mulai menggunakan Raspberry Pi


Raspberry Pi Anda tidak memiliki sakelar daya: segera setelah Anda
menyambungkannya ke stopkontak, ia akan hidup.
 Colokkan catu daya USB ke soket dan sambungkan ke port daya Raspberry
Pi Anda.

76 dari 110
Anda akan melihat lampu LED merah menyala pada Raspberry Pi, yang
menunjukkan bahwa Raspberry Pi terhubung ke daya. Saat dijalankan (ini juga
disebut booting), Anda akan melihat raspberry muncul di sudut kiri atas layar Anda.

Setelah beberapa detik Desktop Raspbian akan muncul.

C. Menyelesaikan Pengaturan Raspberry Pi


Saat Anda memulai Raspberry Pi untuk pertama kalinya, aplikasi Welcome to
Raspberry Pi akan muncul dan memandu Anda melalui pengaturan awal.

77 dari 110
 Klik Berikutnya untuk memulai pengaturan.
 Tetapkan Negara, Bahasa, dan Zona Waktu Anda, lalu klik Berikutnya lagi.

 Masukkan kata sandi baru untuk Raspberry Pi Anda dan klik Next.

78 dari 110
 Sambungkan ke jaringan WiFi Anda dengan memilih namanya, memasukkan
kata sandi, dan mengklik Berikutnya.

Catatan: jika model Raspberry Pi Anda tidak memiliki konektivitas nirkabel,


Anda tidak akan melihat layar ini.
 Klik Next, biarkan wizard memeriksa pembaruan untuk Raspbian dan
menginstalnya (ini mungkin memerlukan waktu agak lama).

 Klik Done atau Reboot untuk menyelesaikan pengaturan.


Catatan: Anda hanya perlu reboot jika itu perlu untuk menyelesaikan
pembaruan.

79 dari 110
TUGAS PRAKTIKUM
1. Amati dan catat hasil dari semua langkah di prosedur percobaan
2. Buat laporan dari praktikum yang telah kalian lakukan

80 dari 110
BAB 4 – MENGENAL PEMROGRAMAN PYTHON

81 dari 110
A. Membuat Variabel
Variabel adalah lokasi memori yang dicadangkan untuk menyimpan nilai-nilai. Ini
berarti bahwa ketika Anda membuat sebuah variabel Anda memesan beberapa
ruang di memori. Variabel menyimpan data yang dilakukan selama program
dieksekusi, yang natinya isi dari variabel tersebut dapat diubah oleh operasi -
operasi tertentu pada program yang menggunakan variabel.
Variabel dapat menyimpan berbagai macam tipe data. Di dalam pemrograman
Python, variabel mempunyai sifat yang dinamis, artinya variabel Python tidak perlu
didekralasikan tipe data tertentu dan variabel Python dapat diubah saat program
dijalankan.
Penulisan variabel Python sendiri juga memiliki aturan tertentu, yaitu :
1. Karakter pertama harus berupa huruf atau garis bawah/underscore _
2. Karakter selanjutnya dapat berupa huruf, garis bawah/underscore _ atau angka
3. Karakter pada nama variabel bersifat sensitif (case-sensitif). Artinya huruf kecil
dan huruf besar dibedakan. Sebagai contoh, variabel nama Depan dan nama depan
adalah variabel yang berbeda.
Untuk mulai membuat variabel di Python caranya sangat mudah, Anda cukup
menuliskan variabel lalu mengisinya dengan suatu nilai dengan cara menambahkan
tanda sama dengan = diikuti dengan nilai yang ingin dimasukan.
Dibawah ini adalah contoh penggunaan variabel dalam bahasa pemrograman
Python.
#proses memasukan data ke dalam variabel
nama = "John Doe"
#proses mencetak variabel
print(nama)
#nilai dan tipe data dalam variabel dapat diubah
umur = 20 #nilai awal
print(umur) #mencetak nilai umur
type(umur) #mengecek tipe data umur
umur = "dua puluh satu" #nilai setelah diubah
print(umur) #mencetak nilai umur
type(umur) #mengecek tipe data umur
namaDepan = "Budi"
namaBelakang = "Susanto"
nama = namaDepan + " " + namaBelakang
umur = 22
hobi = "Berenang"
print("Biodata\n", nama, "\n", umur, "\n", hobi)
#contoh variabel lainnya
inivariabel = "Halo"
ini_juga_variabel = "Hai"
_inivariabeljuga = "Hi"
inivariabel222 = "Bye"
panjang = 10

82 dari 110
lebar = 5
luas = panjang * lebar
print(luas)

B. Menulis Komentar
Komentar (comment) adalah kode di dalam script Python yang tidak dieksekusi
atau tidak dijalankan mesin. Komentar hanya digunakan untuk menandai atau
memberikan keterangan tertulis pada script.
Komentar biasa digunakan untuk membiarkan orang lain memahami apa yang
dilakukan script. atau untuk mengingatkan kepada programmer sendiri jika suatu
saat kembali mengedit script tersebut.
Untuk menggunakan komentar anda cukup menulis tanda pagar #, diikuti dengan
komentar Anda.
Dibawah ini adalah contoh penggunaan komentar pada Python.
#Ini adalah komentar
# Tulisan ini tidak akan dieksekusi
#komentar dengan tanda pagar hanya bisa digunakan
#untuk
#satu
#baris
print("Hello World") #ini juga komentar
#print("Welcome")
# komentar bisa berisi spesial karakter !@#$%^&*(),./;'[]\
#mencetak nama
print("Budi")
#mencetak angka/integer
print(123)

C. Penggunaan Operator
Operator adalah konstruksi yang dapat memanipulasi nilai dari operan.
 Operator Aritmatika
Operator Penjelasan Contoh
Penjumlahan (+) Menjumlahkan nilai dari masing- 2+3=5
masing operan atau bilangan
Pengurangan (-) Mengurangi nilai operan di sebelah 5–2=3
kiri menggunakan operan di
sebelah kanan
Perkalian (*) Mengalikan operan/bilangan 3 * 5 = 15
Pembagian (/) Membagi operan di sebelah kiri 8/2=4
menggunakan operan di sebelah
kanan
Sisa Bagi (%) Mendapatkan sisa pembagian dari 13 % 2 = 1
operan di sebelah kiri operator
ketika dibagi oleh operan di sebelah

83 dari 110
kanan
Pangkat (**) Memangkatkan operan di sebelah 3 ** 2 = 9
kiri operator dengan operan di
sebelah kanan operator
Pembagian Bulat ( // ) Sama seperti pembagian, hanya 10 / / 3 = 3
saja angka dibelakang koma
dihilangkan

Berikut ini adalah contoh penggunaan Operator Aritmatika:


#file /python_dasar/operator_aritmatika.py
#OPERATOR ARITMATIKA
#Penjumlahan
print(13 + 2)
apel = 7
jeruk = 9
buah = apel + jeruk #
print(buah)
#Pengurangan
hutang = 10000
bayar = 5000
sisaHutang = hutang - bayar
print("Sisa hutang Anda adalah ", sisaHutang)
#Perkalian
panjang = 15
lebar = 8
luas = panjang * lebar
print(luas)
#Pembagian
kue = 16
anak = 4
kuePerAnak = kue / anak
print("Setiap anak akan mendapatkan bagian kue sebanyak ", kuePerAnak)
#Sisa Bagi / Modulus
bilangan1 = 14
bilangan2 = 5
hasil = bilangan1 % bilangan2
print("Sisa bagi dari bilangan ", bilangan1, " dan ", bilangan2, "
adalah ",
hasil)
#Pangkat
bilangan3 = 8
bilangan4 = 2
hasilPangkat = bilangan3 ** bilangan4
print(hasilPangkat)
#Pembagian Bulat
print(10//3)
#10 dibagi 3 adalah 3.3333. Karena dibulatkan maka akan menghasilkan
nilai 3

 Operator Perbandingan
Operator perbandingan (comparison operators) digunakan untuk
membandingkan suatu nilai dari masing-masing operan.
Operator Penjelasan Contoh
Sama dengan == Jika masing-masing operan memiliki 1 == 1 bernilai

84 dari 110
nilai yang sama, maka kondisi bernilai True
benar atau True.
Tidak sama Akan menghasilkan nilai kebalikan dari 2 != 2 bernilai
dengan != kondisi sebenarnya. False
Tidak sama Akan menghasilkan nilai kebalikan dari 2 <> 2 bernilai
dengan <> kondisi sebenarnya. False
Jika nilai operan kiri lebih besar dari
Lebih besar dari
nilai operan kanan, maka kondisi 5 > 3 bernilai True
>
menjadi benar.
Jika nilai operan kiri lebih kecil dari
Lebih kecil dari < nilai operan kanan, maka kondisi 5 < 3 bernilai True
menjadi benar.
Jika nilai operan kiri lebih besar dari
Lebih besar atau 5 >= 3 bernilai
nilai operan kanan, atau sama, maka
sama dengan >= True
kondisi menjadi benar.
Jika nilai operan kiri lebih kecil dari
Lebih kecil atau 5 <= 3 bernilai
nilai operan kanan, atau sama, maka
sama dengan <= True
kondisi menjadi benar

 Operator Penugasan

Operator Penjelasan Contoh


Memberikan nilai di kanan ke dalam
Sama dengan = a=1
variabel yang berada di sebelah kiri.
Memberikan nilai variabel dengan nilai
Tambah sama
variabel itu sendiri ditambah dengan a += 2
dengan +=
nilai di sebelah kanan.
Memberikan nilai variabel dengan nilai
Kurang sama
variabel itu sendiri dikurangi dengan a -= 2
dengan -=
nilai di sebelah kanan.
Memberikan nilai variabel dengan nilai
Kali sama dengan
variabel itu sendiri dikali dengan nilai a *= 2
*=
di sebelah kanan.
Memberikan nilai variabel dengan nilai
Bagi sama
variabel itu sendiri dibagi dengan nilai a /= 4
dengan /=
di sebelah kanan.
Memberikan nilai variabel dengan nilai
Sisa bagi sama variabel itu sendiri dibagi dengan nilai
a %= 3
dengan %= di sebelah kanan. Yang
diambil nantinya adalah sisa baginya.
Memberikan nilai variabel dengan nilai
Pangkat sama
variabel itu sendiri dipangkatkan a **= 3
dengan **=
dengan nilai di sebelah kanan.
Membagi bulat operan sebelah kiri
Pembagian bulat operator dengan operan sebelah kanan
a //= 3
sama dengan //= operator kemudian hasilnya
diisikan ke operan sebelah kiri.

85 dari 110
 Operator Logika

Operator Penjelasan Contoh


And Jika kedua operan bernilai True, a, b = True, True
maka kondisi akan bernilai True. # hasil akan True
Selain kondisi tadi maka akan print a and b
bernilai False.
Or Jika kedua operan bernilai True, a, b = True, False
maka kondisi akan bernilai True. # hasil akan True
Selain kondisi tadi maka akan print a or b
bernilai False. print b or a
print a or a
# hasil akan False
print b or b
Not Membalikkan nilai kebeneran pada a, b = True, False
operan missal jika asalnya True # hasil akan True
akan menjadi False dan print not a
begitupun sebaliknya. print not b

D. Pernyataan menggunakan (If ..elif..else..)


Pengambilan keputusan (kondisi if) digunakan untuk mengantisipasi kondisi
yang terjadi saat jalanya program dan menentukan tindakan apa yang akan diambil
sesuai dengan kondisi.
Pada python ada beberapa statement/kondisi diantaranya adalah if, else dan elif
Kondisi if digunakan untuk mengeksekusi kode jika kondisi bernilai benar.
Jika kondisi bernilai salah maka statement/kondisi if tidak akan di-eksekusi.
Dibawah ini adalah contoh penggunaan kondisi if pada Python.
#Kondisi if adalah kondisi yang akan dieksekusi oleh program jika
bernilai
benar atau TRUE
nilai = 9
#jika kondisi benar/TRUE maka program akan mengeksekusi perintah
dibawahnya
if(nilai > 7):
print("Selamat Anda Lulus")
#jika kondisi salah/FALSE maka program tidak akan mengeksekusi
perintah
dibawahnya
if(nilai > 10):
print("Selamat Anda Lulus")

Dari contoh diatas, jika program dijalankan maka akan mencetak string "Selamat
Anda Lulus Ujian" sebanyak 1 kali yaitu pada if pertama. Di if kedua statement
bernilai salah, jadi perintah print("Selamat Anda Lulus") tidak akan dieksekusi.
Pengambilan keputusan (kondisi if else) tidak hanya digunakan untuk
menentukan tindakan apa yang akan diambil sesuai dengan kondisi, tetapi juga

86 dari 110
digunakan untuk menentukan tindakan apa yang akan diambil/dijalankan jika kondisi
tidak sesuai.
Pada python ada beberapa statement/kondisi diantaranya adalah if, else dan elif
Kondisi if digunakan untuk mengeksekusi kode jika kondisi bernilai benar. Kondisi if
else adalah kondisi dimana jika pernyataan benar (true) maka kode dalam if akan
dieksekusi, tetapi jika bernilai salah (false) maka akan mengeksekusi kode di dalam
else.
Dibawah ini adalah contoh penggunaan kondisi if else pada Python
#Kondisi if else adalah jika kondisi bernilai TRUE maka akan
dieksekusi pada
if, tetapi jika bernilai FALSE maka akan dieksekusi kode pada else
nilai = 3
#Jika pernyataan pada if bernilai TRUE maka if akan dieksekusi, tetapi
jika
FALSE kode pada else yang akan dieksekusi.
if(nilai > 7):
print("Selamat Anda Lulus")
else:
print("Maaf Anda Tidak Lulus")

Pada contoh diatas, jika program dijalankan maka akan mencetak string "Maaf
Anda Tidak Lulus" karena pernyataan pada if bernilai FALSE.
Pengambilan keputusan (kondisi if elif) merupakan lanjutan/percabangan logika
dari "kondisi if". Dengan elif kita bisa membuat kode program yang akan menyeleksi
beberapa kemungkinan yang bisa terjadi. Hampir sama dengan kondisi "else",
bedanya kondisi "elif" bisa banyak dan tidak hanya satu.
Dibawah ini adalah contoh penggunaan kondisi elif pada Python
#Contoh penggunaan kondisi elif
hari_ini = "Minggu"
if(hari_ini == "Senin"):
print("Saya akan kuliah")
elif(hari_ini == "Selasa"):
print("Saya akan kuliah")
elif(hari_ini == "Rabu"):
print("Saya akan kuliah")
elif(hari_ini == "Kamis"):
print("Saya akan kuliah")
elif(hari_ini == "Jumat"):
print("Saya akan kuliah")
elif(hari_ini == "Sabtu"):
print("Saya akan kuliah")
elif(hari_ini == "Minggu"):
print("Saya akan libur")

Pada contoh diatas, jika program dijalankan maka akan mencetak string "Saya akan
libur".

87 dari 110
E. Perulangan menggunakan (For)
Secara umum, pernyataan pada bahasa pemrograman akan dieksekusi secara
berurutan. Pernyataan pertama dalam sebuah fungsi dijalankan pertama, diikuti oleh
yang kedua, dan seterusnya. Tetapi akan ada situasi dimana Anda harus menulis
banyak kode, dimana kode tersebut sangat banyak. Jika dilakukan secara manual
maka Anda hanya akan membuang-buang tenaga dengan menulis beratus-ratus
bahkan beribu-ribu kode. Untuk itu Anda perlu menggunakan pengulangan di dalam
bahasa pemrograman Python.
Pengulangan For pada Python memiliki kemampuan untuk mengulangi item dari
urutan apapun, seperti list atau string.
Dibawah ini adalah contoh penggunaan pengulangan While Loop.
#Contoh pengulangan for sederhana
angka = [1,2,3,4,5]
for x in angka:
print(x)
#Contoh pengulangan for
buah = ["nanas", "apel", "jeruk"]
for makanan in buah:
print("Saya suka makan", makanan)

F. Perulangan menggunakan (While)


Pengulangan While Loop di dalam bahasa pemrograman Python dieksesusi
statement berkali-kali selama kondisi bernilai benar atau True.
Dibawah ini adalah contoh penggunaan pengulangan While Loop.
#Contoh penggunaan While Loop
count = 0
while (count < 9):
print ('The count is:', count)
count = count + 1
print ("Good bye!")

G. Membuat Struktur Data: List


List adalah tipe data yang paling serbaguna yang tersedia dalam bahasa
Python, yang dapat ditulis sebagai daftar nilai yang dipisahkan koma (item) antara
tanda kurung siku. Hal penting tentang daftar adalah item dalam list tidak boleh
sama jenisnya.
Membuat list sangat sederhana, tinggal memasukkan berbagai nilai yang
dipisahkan koma di antara tanda kurung siku. Dibawah ini adalah contoh sederhana
pembuatan list dalam bahasa Python.

88 dari 110
#Contoh sederhana pembuatan list pada bahasa pemrograman python
list1 = ['kimia', 'fisika', 1993, 2017]
list2 = [1, 2, 3, 4, 5 ]
list3 = ["a", "b", "c", "d"]

H. Membuat Struktur Data: Dictionary


Dictionary Python berbeda dengan List ataupun Tuple. Karena setiap urutanya
berisi key dan value. Setiap key dipisahkan dari value-nya oleh titik dua (:), item
dipisahkan oleh koma, dan semuanya tertutup dalam kurung kurawal. Dictionary
kosong tanpa barang ditulis hanya dengan dua kurung kurawal, seperti ini: {}.
Nilai kamus bisa berupa tipe apa pun, namun key harus berupa tipe data yang
tidak berubah seperti string, angka, atau tupel.
 Akses Nilai
Untuk mengakses elemen Dictionary, Anda dapat menggunakan tanda kurung
siku yang sudah dikenal bersama dengan key untuk mendapatkan nilainya. Berikut
adalah contoh sederhananya:
#Contoh cara membuat Dictionary pada Python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print ("dict['Name']: ", dict['Name'])
print ("dict['Age']: ", dict['Age'])

 Update Nilai
Anda dapat memperbarui Dictionary dengan menambahkan entri baru atau
pasangan nilai kunci, memodifikasi entri yang ada, atau menghapus entri yang ada
seperti ditunjukkan pada contoh sederhana yang diberikan di bawah ini.
#Update dictionary python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
dict['Age'] = 8; # Mengubah entri yang sudah ada
dict['School'] = "DPS School" # Menambah entri baru
print ("dict['Age']: ", dict['Age'])
print ("dict['School']: ", dict['School'])

 Hapus Nilai
Anda dapat menghapus elemen Dictionary individual atau menghapus
keseluruhan isi Dictionary. Anda juga dapat menghapus seluruh Dictionary dalam
satu operasi. Untuk menghapus seluruh Dictionary secara eksplisit, cukup gunakan
del statement. Berikut adalah contoh sederhana :
#Contoh cara menghapus pada Dictionary Python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
del dict['Name'] # hapus entri dengan key 'Name'
dict.clear() # hapus semua entri di dict

89 dari 110
del dict # hapus dictionary yang sudah ada
print ("dict['Age']: ", dict['Age'])
print ("dict['School']: ", dict['School'])

I. Mencetak menggunakan perintah Print


Fungsi print() berfungsi untuk mencetak atau menampilkan objek ke perangkat
keluaran (layar) atau ke file teks.
Fungsi print() memiliki beberapa parameter yaitu sebagai berikut:
 objects – objek yang akan dicetak. Tanda * menunjukkan jumlah objek bisa satu
atau lebih.
 sep – karakter pemisah antar objek. Defaultnya adalah spasi.
 end – karakter diakhir baris. Defaultnya adalah newline.
 file – tempat kemana objek akan ditampilkan/ditulis. Defaultnya adalah layar
(sys.stdout)
 flush – Bila True, maka stream objek akan diflush. Defaultnya adalah False.
print("Python is fun")
a = 5
print("a =", a)
b = a
print('a =', a, '= b')

J. Membaca dan Menulis File


Untuk menulis teks pada file, kita dapat menggunakan write() dengan terlebih
dahulu membuat file pada direktori.
f = open('contoh_file.txt', 'w')
for el in range(1,11):
f.write('Ini adalah baris teks {} pada file.\n'.format(el))
...
f.close()

Untuk membaca keseluruhan teks pada file, kita dapat menggunakan read().
f = open('contoh_file.txt', 'r')
f.read()
Ini adalah baris teks 1 pada file.
Ini adalah baris teks 2 pada file.
Ini adalah baris teks 3 pada file.
Ini adalah baris teks 4 pada file.
Ini adalah baris teks 5 pada file.
f.close()

90 dari 110
K. Membuat Fungsi
Fungsi adalah blok kode terorganisir dan dapat digunakan kembali yang
digunakan untuk melakukan sebuah tindakan/action. Fungsi memberikan
modularitas yang lebih baik untuk aplikasi Anda dan tingkat penggunaan kode yang
tinggi.
Anda dapat menentukan fungsi untuk menyediakan fungsionalitas yang
dibutuhkan. Berikut adalah aturan sederhana untuk mendefinisikan fungsi dengan
Python.
 Fungsi blok dimulai dengan def kata kunci diikuti oleh nama fungsi dan tanda
kurung (()).
 Setiap parameter masukan atau argumen harus ditempatkan di dalam tanda
kurung ini. Anda juga dapat menentukan parameter di dalam tanda kurung ini.
 Pernyataan pertama dari sebuah fungsi dapat berupa pernyataan opsional -
string dokumentasi fungsi atau docstring.
 Blok kode dalam setiap fungsi dimulai dengan titik dua (:) dan indentasi.
 Pernyataan kembali [ekspresi] keluar dari sebuah fungsi, secara opsional
menyampaikan kembali ekspresi ke pemanggil. Pernyataan pengembalian tanpa
argumen sama dengan return None.
def printme( str ):
"This prints a passed string into this function"
print (str)
return

TUGAS PRAKTIKUM
1. Amati dan catat hasil dari semua langkah di prosedur percobaan
2. Buat laporan dari praktikum yang telah kalian lakukan

91 dari 110
BAB 5 – MENGENAL PERINTAH LINUX

92 dari 110
1. TUJUAN
Memahami perintah dasar linux
Mampu membedakan jenis-jenis perintah dasar linux
Memahami penggunaan setiap perintah dasar linux

2. DASAR TEORI
Pada dasarnya, Linux merupakan sistem operasi yang berbasiskan pada text
(Text Bases) dalam sistem kerjanya. Bila ingin melakukan sesuatu terhadap
komputer user bisa mengetikkan perintah-perintah yang kemudian dieksekusi oleh
komputer. Sehingga mode teks terus melekat dengan Linux sampai saat ini,
walaupun sekarang tampilan GUI (Graphic User Interface) Linux sudah semakin
bagus dan memudahkan user. Perintah-perintah yang diketikkan itu biasa disebut
Command Line. Untuk perintah-perintah dasar, biasa disebut Basic Command
Line.
Dengan perintah dasar linux ada beberapa hal yang lebih mudah dan cepat bila
dilakukan dari mode teks, bahkan ada beberapa hal yang hanya bisa dilakukan
dengan Command Line. Gambar 1.1 menunjukkan area tempat mengetikkan
perintah dasar yang disebut dengan terminal area.

Gambar 5.1 Terminal area

93 dari 110
Ada beberapa fitur-fitur yang bisa diandalkan dalam Linux, antara lain:
1. Man
adalah salah satu perintah yang bisa memberikan informasi lengkap (manual)
mengenai perintah dasar yang anda ingin ketahui. Bahkan perintah ini juga
menyediakan informasi mengenai dirinya sendiri.
Format: man nama_perintah
Contoh:
leonardokamajaya$ man man

Gambar 5. 2 Tampilan hasil perintah man man

Setelah perintah diatas diketikkan, di terminal akan menampilkan manual mengenai


perintah man, lengkap yang terdiri dari NAME, yang berisi nama perintah dan
keterangan singkat fungsi dari perintah. SYNOPSIS, DESCRIPTION, EXAMPLE,
OPTION dsb.

leonardokamajaya$ man ls

Gambar 5. 3 Tampilan hasil perintah man ls

94 dari 110
2. Info
Selain mencari bantuan dari man, perintah info juga bisa digunakan untuk membaca
dokumentasi dari suatu perintah. Tetapi tidak semua distro Linux menyediakan
fungsi info ini.
Format: info nama_perintah
Contoh:
leonardokamajaya$ info ls

Gambar 5. 4 Tampilan hasil perintah info ls

3. Whatis
adalah perintah ini menampilkan informasi singkat mengenai suatu perintah.
Format: whatis nama_perintah
Contoh:
leonardokamajaya$ whatis ls

Gambar 5. 5 Tampilan hasil perintah whatis Is

95 dari 110
di terminal akan ditampilkan informasi singkat mengenai perintah ls, yaitu
menampilkan isi direktori.

4. Apropos
berfungsi untuk menampilkan informasi singkat perintah yang hanya anda ketahui
sebagain atau anda ingin menampilkan perintah yang berhubungan dengan sesuatu.
Format: apropos nama_perintah (sebagian_ nama_perintah)
Contoh:
leonardokamajaya$ apropos copy

Gambar 5. 6 Tampilan hasil perintah apropos copy


Perintah dasar linux dibagi menjadi 5 bagian, yaitu perintah dasar yang
berhubungan dengan direktori, manajemen file.
1. Perintah dasar yang berhubungan dengan direktori (ls, dir, pwd (print work
direktory), mkdir, cd, rmdir)
2. Perintah dasar yang berhubungan dengan manajemen file (touch, cat, more,
less, cp, mv, rm, find, which, whereis, tar, unzip)
3. Perintah dasar yang berhubungan dengan pemrosesan string (head, tail, grep,
wc, sort)
4. Perintah dasar yang berhubungan dengan informasi sistem (uname, date, cal,
df, du, uptime, hostname, free, ps, pstree)
Perintah dasar yang berhubungan dengan user (who, whoami, ide, tty, su atau su-,
adduser atau useradd, visudo dan suda, passwd, userdel, groupadd, groupdel)

96 dari 110
3. ALAT DAN BAHAN
 Modul Raspberry Pi
 Modul Pendukung Raspberry Pi
 Micro SD dengan OS Raspbian

4. PROSEDUR PERCOBAAN
Perintah dasar yang berhubungan dengan direktori:
1. Bukalah terminal area di layar desktop.
2. Ketikkan perintah ls -l. Amati dan catat hasilnya (print screen).
3. Kemudian rubah perintah dengan option yang berbeda (ls -a, ls -c, ls -d, ls -f
dan ls -1). Simpan hasilnya (print screen) dan jelaskan perbedaanya.
4. Ketikkan perintah pwd. Amati dan catat hasilnya (print screen).
5. Ketikkan perintah mkdir nama_file. Untuk melihat hasilnya ketikkan perintah
ls. Amati dan catat hasilnya (print screen).
6. Buatlah hierarki folder, seperti gambar di bawah ini:

Untuk melihat hasilnya periksa di home folder. Amati dan catat hasilnya (print
screen).
7. Ketikkan perintah rmdir dataku. Amati dan catat hasilnya (print screen).
8. Masuk terlebih dahulu ke directory teori dengan perintah cd dataku  cd
teori. Kemudian ketikkan perintah rmdir bab 1. Amati dan catat hasilnya (print
screen).
Perintah dasar yang berhubungan dengan manajemen file:

9. Ketikkan perintah touch. Amati dan catat hasilnya (print screen).


10. Ketikkan perintah cat puisiku.txt. Amati dan catat hasilnya (print screen).
Karena masih kosong maka tidak akan tampak perubahan apapun. Oleh

97 dari 110
karena itu, isi puisiku.txt dengan mengisikan isi file teks sesuai yang anda
inginkan (min 4 baris).
11. Kemudian tekan Ctrl + c atau Ctrl + z. Sekarang ketikkan perintah cat
puisiku.txt. Amati dan catat hasilnya (print screen).
12. Ketikkan perintah cp nama_file_asal nama_file_hasil. Amati dan catat
hasilnya (print screen). Contoh: cp puisiku.txt hasilcopy.txt.
13. Ketikkan perintah cp nama_file_asal direktory_tujuan. Amati dan catat
hasilnya (print screen). Contoh: cp puisiku.txt /home/leonardo/dataku
14. Ketikkan perintah mv nama_file nama_file_baru atau mv nama_file
direktori_tujuan. Amati dan catat hasilnya (print screen).
Contoh: - mv hasilcopy.txt hasil.txt

- mv bab 1 bab satu

Perintah dasar yang berhubungan dengan informasi sistem:


15. Ketikkan perintah uname -a. Amati dan catat hasilnya (print screen).

Coba dengan kombinasi option yang lain. Amati dan catat hasilnya (print screen).

16. Ketikkan perintah du. Amati dan catat hasilnya (print screen).

17. Ketikkan perintah uptime. Amati dan catat hasilnya (print screen).

18. Ketikkan perintah pstree. Amati dan catat hasilnya (print screen).

Perintah dasar yang berhubungan dengan user:


19. Ketikkan perintah who. Amati dan catat hasilnya (print screen).
20. Ketikkan perintah whoami. Amati dan catat hasilnya (print screen).
21. Ketikkan perintah adduser atau useradd nama_user_baru. Amati dan catat
hasilnya (print screen). Contoh:

98 dari 110
Ketikkan perintah groupadd option nama_grup_baru. Buatlah grup sesuai dengan
nama kelompok kalian dan masukkan tiap user sesuai dengan anggota kelompok.
Amati dan catat hasilnya (print screen).

TUGAS PRAKTIKUM
1. Amati dan catat hasil dari semua langkah di prosedur percobaan
2. Buat laporan dari praktikum yang telah kalian lakukan

99 dari 110
BAB 6 –GPIO RPi

100 dari 110


6.1. TUJUAN
Mampu melakukan instalasi library RPi.GPIO
Mampu menyalakan LED
Mampu mengatur kecerahan LED
Mampu menggunakan Push button
Memahami penggunaan interrupt
Mampu menyalakan buzzer
Mampu membaca sensor cahaya (LDR)

6.2. DASAR TEORI


Salah satu alasan Raspberry Pi sangat populer digunakan adalah karena
memiliki 40-pin GPIO yang memungkinkan pengguna untuk menghubungkan
komponen elektronik dan mengendalikan mereka dengan sebuah program. Kode
program untuk proyek komputasi fisik biasanya ditulis dengan Python, akan menjadi
jauh lebih mudah jika kita menggunakan library yang sudah disediakan oleh GPIO
Raspberry Pi.
Sebelum adanya library, untuk menghubungkan dan mengatur perangkat
elektronik diperlukan banyak baris kode program. GPIO akan menjalankan semua
kode ini untuk Anda, sehingga Anda dapat fokus pada pengendalian perangkat fisik.
Hal ini akan membantu Anda untuk mengembangkan perangkat elektronika dengan
sedikit kode program. Hal ini membuat programmer pemula lebih mudah untuk
memahami. Buku ini, akan membantu Anda memulai coding dengan GPIO,
membimbing Anda langkah demi langkah melalui beberapa proyek.
Membangun rangkaian elektronika dapat dengan mudah jika Anda tahu apa
yang Anda lakukan, tetapi jika Anda membuat rangkaian elektronika, kemungkinan
besar Anda harus mengacu pada diagram rangkaian secara umum. Cara yang lebih
mudah bagi Anda adalah dengan melihat simbol dari rangkaian elektronika. Hal ini
akan jauh lebih memudahkan Anda untuk membaca dan memahami simbol dari
sebuah rangkaian. Berikut adalah contoh sederhana dari simbol rangkaian
elektronika.

101 dari 110


memiliki sumber daya (baterai di sirkuit ini), saklar, resistor, dan LED. Garis
mewakili bagaimana sirkuit terhubung bersama-sama, baik melalui kawat atau cara
lain. Beberapa komponen dapat digunakan dengan cara apapun bulat, seperti
resistor atau switch. Namun, yang lain memiliki orientasi c spesifik, seperti LED.
Dioda hanya membiarkan aliran listrik dari positif ke negatif; untungnya, LED
kehidupan nyata memiliki penanda seperti kaki yang lebih panjang atau fl di tepi
untuk menunjukkan sisi yang positif, membuat mereka lebih mudah untuk kawat
sampai.

Gambar 6.1 Breadboard


6.3. ALAT DAN BAHAN
Modul Raspberry Pi
Modul pendukung Raspberry Pi
Micro SD dengan OS Raspbian

102 dari 110


6.4. PROSEDUR PERCOBAAN
A. Instalasi RPi.GPIO
Untuk memulai menggunakan GPIO, pastikan bahwa library RPi.GPIO sudah
terinstall pada Terminal di Raspberry Pi. Unduh dan pasang library RPi.GPIO dari
terminal dengan menjalankan perintah sebagai berikut:
$ sudo apt-get install python-dev
$ sudo apt-get install python-rpi.gpio

Biasanya versi terbaru dari Raspberry Pi sudah terpasang RPi.GPIO di


dalamnya. Dengan demikian perintah di atas hanya akan meng-update versi terbaru.
Library RPi.GPIO ini akan digunakan di seluruh buku ini, karena menggunakan
bahasa C yang dibungkus dengan Python membuat pekerjaan IO (input-output)
menjadi lebih cepat. Namun, Pi tidak dirancang sebagai mikrokontroler, sehingga pin
GPIO tidak akan merespon secepat Arduino.
Alternatif library lainnya yang dapat melakukan banyak pekerjaan yang sama
seperti RPi.GPIO adalah WiringPi. Anda dapat mengetahui lebih lanjut tentang
library ini di Gordons Project, karena tidak dibahas pada buku ini. Berikutnya kita
akan mencoba beberapa fitur yang ada pada library RPi.GPIO.

B. Menyalakan LED
Ketika membangun rangkaian elektronika, pastikan bahwa kondisi Raspberry Pi
OFF, ataupun minimal tidak terhubung langsung dengan rangkaian. Fitur
breadboard terdapat kolom yang masing-masing terdiri lima lubang yang terhubung.
Tempatkan kaki LED merah di kolom nomor yang berdekatan, seperti yang
ditunjukkan pada Gambar. Perhatikan bahwa kaki lebih pendek dari LED adalah
negatif (-); masukkan salah satu ujung resistor, kemudian tempatkan ujung lainnya di
barisan luar ditandai (-) atau ground (GND). Gunakan kawat jumper malefemale
untuk menghubungkan pin GND pada Raspberry Pi. Gunakan kawat jumper untuk
menghubungkan lubang di kolom kaki LED positif (+) ke GPIO pin 25. Rangkai
seperti pada gambar di bawah ini :

103 dari 110


Gambar 6.2 Rangkaian untuk menyalakan LED via Raspberry Pi
$ sudo python
>>> import RPi.GPIO as GPIO
>>> GPIO.setmode(GPIO.BCM)
>>> GPIO.setup(25, GPIO.OUT)
>>> GPIO.output(25, True)
>>> GPIO.output(25, False)

Modifikasi program di atas dengan membuat file baru misal “blink.py” dengan
menambahkan library “time” agar dapat mengatur waktu tunda (delay) pada saat
LED mati dan nyala, begitu seterusnya.
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(25, GPIO.OUT)
while (True):
GPIO.output(25, True)
time.sleep(0.5)
GPIO.output(25, False)
time.sleep(0.5)

C. Mengatur Kecerahan LED


Masih dengan rangkaian yang sama. Cobalah program di bawah ini yang akan
mengatur tingkat kecerahan LED mulai dari mati, redup sampai dengan nyala paling
terang.
import RPi.GPIO as GPIO
led_pin = 25
GPIO.setmode(GPIO.BCM)
GPIO.setup(led_pin, GPIO.OUT)
pwm_led = GPIO.PWM(led_pin, 500)
pwm_led.start(100)
while True:

104 dari 110


duty_s = raw_input("Enter Brightness (0 to 100):")
duty = int(duty_s)
pwm_led.ChangeDutyCycle(duty)

TUGAS PERCOBAAN
a) Modifikasi program pengaturan kecerahan LED agar otomatis dapat menyalakan
dan mematikan LED secara bertingkat dari mulai mati, redup sampai paling
terang, kemudian mati lagi, dan seterusnya.
b) Buatlah program untuk membuat aplikasi LED dan BUZZER untuk membantu
orang menyeberang jalan. Sebelumnya LED HIJAU menyala, sedangkan LED
KUNING, dan LED MERAH mati. Jika PUSH BUTTON ditekan, maka LED
HIJAU mati, LED KUNING menyala kedip 3 kali, kemudian LED MERAH
menyala selama 10 detik bersamaan dengan bunyi BUZZER. Setelah itu
kembali normal seperti semula dengan LED HIJAU menyala.

D. Penggunaan Push Button


Tambahkan tombol tekan (push button) pada breadboard bagian tengah,
sehingga antara kakinya tidak ada yang berhubungan. Lalu hubungkan kabel jumper
malefemale dari kolom satu pin pada GPIO Raspberry Pi. Kemudian hubungkan
kawat jumper male dari pin yang lain (pada sisi yang sama dari alur) ke GND (-).
Akhirnya, hubungkan kawat jumper male-female dari yang terakhir ke pin GND pada
Pi.

Gambar 6.3 Rangkaian menyalakan lampu LED menggunakan push button

105 dari 110


Tulis program di bawah ini, kemudian beri nama misalnya “switch.py”, dan jalankan.
import RPi.GPIO as GPIO
import time
led_pin = 25
button_pin = 21
GPIO.setmode(GPIO.BCM)
GPIO.setup(led_pin, GPIO.OUT)
GPIO.setup(button_pin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
while True:
GPIO.output(25, False)
input_state = GPIO.input(21)
if input_state == False:
GPIO.output(25, True)
print(Tombol telah ditekan')
time.sleep(0.2)
Kemudian jalankan program dengan perintah dibawah ini, dan coba tekan tombol 1
kali. Hasil:
pi@raspberrypi~$ sudo python switch.py
Tombol telah ditekan
Tombol telah ditekan
Tombol telah ditekan
Ketika tombol ditekan, akan ada pesan “Tombol telah ditekan” pada terminal.
Biasanya akan muncul beberapa kali, Pada program di atas pin input diberikan
“pulled up 3.3V” berdasarkan program pull_up_down=GPIO.PUD_UP pada saat
melakukan pengaturan di GPIO.setup. Hal ini artinya Anda membaca input
menggunakan GPIO.input, sedankan False akan mengembalikan kepada kondisi
semula jika tombolnya ditekan. Dengan demikian logikanya berkebalikan.

Gambar 6. 4 Skematik rangkaian push button

Setiap pin GPIO dapat dikonfigurasi melalui program apakah memilih pull-up
atau pull-down resistors. Ketika menggunakan pin GPIOsebagai input, Anda dapat
mengkonfigurasi resistor ini sehingga satu / salah satu / tidak satu pun resitor yang
aktif. Penggunaan parameter pull_up_down pada GPIO.setup adalah opsional.
Jika parameter ini diabaikan, maka tidak satu pun resistor akan diaktifkan. Hal ini
akan mengakibatkan input mengambang, yang berarti bahwa nilainya tidak bisa
dipastikan dan akan mengambang antara tinggi dan rendah tergantung pada noise

106 dari 110


dari sinyal listrik. Jika diatur ke GPIO.PUD_UP, resistor pull-up diaktifkan; jika
sudah diatur untuk GPIO.PUD_DOWN, resistor pull-down diaktifkan.

E. Teknik Debouncing pada Push Button


Kadang-kadang ketika Anda menekan tombol pada switch, hasil yang
diharapkan terjadi lebih dari sekali, hal ini dikarenakan kontak saklar mengalami
pantulan (bounce). Agar didapatkan kepastian bahwa yang Anda inginkan adalah 1
kali hasil, maka solusinya adalah perlu dibuat algoritma de-bouncing.
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
switch_pin = 21
led_pin = 25
GPIO.setup(switch_pin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(led_pin, GPIO.OUT)
led_state = False
old_input_state = True # pulled-up
while True:
new_input_state = GPIO.input(switch_pin)
if new_input_state == False and old_input_state == True:
led_state = not led_state
time.sleep(0.2)
old_input_state = new_input_state
GPIO.output(led_pin, led_state)

F. Belajar Interrupt
Jika Anda ingin menanggapi beberapa peristiwa (seperti push button yang
ditekan), tanpa harus terus menerus mengecek (polling) untuk melihat apakah
keadaan pin input telah berubah ataukah mendapat masukan. Hal ini akan
mengakibatkan proses CPU akan meningkat, dan kinerjanya semakin melambat.
Solusinya dapat menggunakan teknik interrupt dengan fungsi add_event_detect
yang ada pada Library RPi.GPIO.
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
def my_callback(channel):
print('You pressed the button')
GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.add_event_detect(18, GPIO.FALLING, callback=my_callback)
i = 0
while True:
i = i + 1
print(i)
time.sleep(1)
Jalankan program di atas, kemudian pada saat looping berjalan tekan tombol. Amati
apa yang terjadi.

107 dari 110


G. Menyalakan Buzzer

Gambar 6. 5 Rangkaian Buzzer

Anda dapat menghubungkan pin buzzer langsung ke Raspberry Pi. Buzzer ini
menggunakan sangat sedikit arus. Namun, jika Anda memiliki buzzer yang lebih
besar atau hanya ingin bermain aman, maka tambakanlah resistor 470Ω antara pin
GPIO dan ujung buzzer. Cobalah program “buzzer.py” berikut ini :
import RPi.GPIO as GPIO
import time
buzzer_pin = 18
GPIO.setmode(GPIO.BCM)
GPIO.setup(buzzer_pin, GPIO.OUT)
def buzz(pitch, duration):
period = 1.0 / pitch
delay = period / 2
cycles = int(duration * pitch)
for i in range(cycles):
GPIO.output(buzzer_pin, True)
time.sleep(delay)
GPIO.output(buzzer_pin, False)
time.sleep(delay)
while True:
pitch_s = raw_input("Enter Pitch (200 to 2000): ")
pitch = float(pitch_s)
duration_s = raw_input("Enter Duration (seconds): ")
duration = float(duration_s)
buzz(pitch, duration)
Ketika Anda menjalankan program, masukkan “pitch” dalam satuan Hz, dan
masukkan durasi dalam satuan “second”. Hasil:

$ sudo python buzzer.py


Enter Pitch (2000 to 10000): 2000
Enter Duration (seconds): 20

108 dari 110


H. Membaca Sensor Cahaya (LDR)
LDR (juga dikenal sebagai fotosel) adalah tipe resistor elektrik khusus yang
resistannya sangat tinggi di saat gelap, namun berkurang saat cahaya bersinar di
atasnya. Pasang LDR Anda ke breadboard, lalu tambahkan kapasitor 1uF. Penting
untuk memastikan polaritas kapasitor yang benar kaki yang lebih panjang (positif)
harus berada pada breadboard yang sama dengan satu kaki LDR. Sekarang
hubungkan kolom ini (dengan kedua komponen) ke GPIO 4. Sambungkan kaki lain
dari LDR ke pin 3V3, dan kaki kapasitor lainnya ke pin GND. Untuk membuat alarm,
tambahkan buzzer ke papan. Sekali lagi, polaritasnya harus benar: sambungkan
kolom bel yang lebih panjang ke GPIO 17, dan kaki yang lebih pendek ke pin GND.

Gambar 6. 6 Rangkaian pembacaan sensor LDR

Cobalah beberapa program berikut ini:


from gpiozero import LightSensor
ldr = LightSensor(4)
while True:
print(ldr.value)

from gpiozero import Buzzer


buzzer = Buzzer(17)
buzzer.beep()

from gpiozero import LightSensor, Buzzer


from time import sleep
ldr = LightSensor(4)
buzzer = Buzzer(17)

109 dari 110


while True:
sleep(0.1)
if ldr.value < 0.5:
buzzer.beep(0.5, 0.5, 8)
sleep(8)
else:
buzzer.off()

TUGAS PERCOBAAN
a) Buatlah program untuk mengambil data tingkat resistansi dari sensor LDR
untuk mempengaruhi nyala lampu LED. Semakin besar resitansinya dari
sensor LDR semakin redup nyala lampu LED, semakin kecil resistansinya
semakin cerah nyala lampu LED.
b) Buatlah program untuk menyalakan Buzzer dan LED dengan kombinasi berikut
ini:
Push Button 1 Push Button 2 Push Button 3 Buzzer LED
1 1 0 1 0
0 1 1 0 1
1 0 1 1 1
Ket: 1  Hidup
0  Mati
Bisa ditambahkan push button lain untuk melakukan reset.

110 dari 110

Anda mungkin juga menyukai