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
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-
pages/package_esp32_index.json
1 dari 110
3. Buka Boards Manager untuk menginstall board esp32
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
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
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-”.
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.
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.
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
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
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
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
𝐶𝑙𝑜𝑐𝑘 = 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.
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
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.
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.
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.
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
(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.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
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.
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.
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.
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.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
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
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.
41 dari 110
Kemudian import kedalam Arduino IDE dan restart IDE Arduino anda setelah berhasil melakukan
import file
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().
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
49 dari 110
Gambar 1.1 Board Raspberry Pi 3 Model B
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.
52 dari 110
1.3 SOAL
A. Jelaskan Perbedaan modul Raspberry Pi dengan modul sistem embedded
lainnya (Arduino, Intel Edison, Beaglebone)!
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
56 dari 110
Gambar 2.2 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)
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.
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.
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.
VGA
Beberapa layar hanya memiliki porta VGA.
60 dari 110
Gambar 2.10 Port 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.
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.
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!
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.
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).
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.
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.
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.
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
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
85 dari 110
Operator Logika
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)
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"]
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'])
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.
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
leonardokamajaya$ 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
3. Whatis
adalah perintah ini menampilkan informasi singkat mengenai suatu perintah.
Format: whatis nama_perintah
Contoh:
leonardokamajaya$ whatis ls
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
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:
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
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).
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
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 :
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)
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.
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
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.
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:
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.