Modul Diklat
Penulis
Lab.8 Digital Input-Output Lab.9 Digital Analog Sensor Lab.10 Flask Webserver
IoT IoT IoT
SBC Rapsberry Pi 4
PENDAHULUAN
1.1 Pengantar
Internet of Things atau IoT pertama kali dikeluarkan oleh Kevin Ashton pada tahun 1999 di
salah satu presentasinya. Caragas mendefinisikan, bahwa Internet Of Things (IoT) adalah sebuah
infrastruktur jaringan global, yang dapat mengubungkan perangkat keras dan virtual melalui
eksploitasi data capture serta kemampuan komunikasi. Dalam Infrastruktur terdiri dari jaringan
yang sudah ada dan internet beserta pengembangan jaringannya. IoT dapat diterapkan di hampir
semua benda-benda yang ada disekitar kita, bahkan anggota tubuh kita. Saat kita menggunakan
jam tangan yang menghitung berapa langkah kita berjalan dalam satu hari, maka data perjalanan
tersebut dapat disimpan di internet untuk dipergunakan di kemudian hari. Atau mungkin kita
pernah mendengar tentang konsep rumah cerdas (smart home), dimana lampu kamar dapat
dihidupmatikan dengan perintah suara kita dan/atau dari smartphone di kejauhan. Jika semua
benda-benda dapat terhubung ke internet, maka berbagai bidang pekerjaan, mulai dari
kesehatan, pendidikan, manufaktur, ekonomi, dan lain sebagainya dapat dikembangkan dengan
bantuan IoT. Secara garis besar, konsep IoT dapat dilihat Gambar 1.1
Dewasa ini banyak perusahaan besar mulai mendalami Internet of Things sebut saja Intel,
Microsoft, Oracle, dan banyak lagi lainnya. Banyak yang memprediksikan bahwa IoT adalah
Universal IoT System (UnIoTsys) meruapakan teaching aids yang mengintegrasi hardware
dan software dalam satu modulebox yang fleksibel dan kompatibel dan mudah digunakan dalam
proses pembelajaran di sekolah ataupun lembaga pelatihan. UnIoTsys terdiri dari dua bagian
utama, yaitu hardware merupakan module-module yang saling terintergrasi dan fleksibel dalam
penggunaanya (plug and play) yang terdiri dari SBC Raspberry Pi 4, LCD hdmi, mikrotik,
module sensor, module relay, terminal AC output 220, projectboard, dan komponen-komponen
elektronika. Software merupakan perangkat lunak open source GNU General Public License (GPL)
yang terdiri dari sistem operasi raspbian, sd card formatter, python up to version 3, flask
webserver, dan library-library lain.
1.2 Tujuan
Tujuan pembuatan teaching aids UnIoTsys adalah:
1. Menerapkan teknologi IoT melalui teknologi rapsberry pi dan pemrograma python dalam
saatu teaching aids yaitu Universal IoT Sytems.
2. Membangun interkoneksi hardware dalam pengembangan IoT di sekolah atau lembaga
pelatihan.
3. Menciptakan software aplikasi IoT yang dibutuhkan oleh lingkungan sekolah dan
masyarakat sekitar.
1.3 Manfaat
Manfaat pembuatan teaching aids Universal IoT System adalah:
Dalam bab ini disajikan spesifikasi teaching aids yang dikembangkan dalam pembuatan
Universal IoT System (UnIoTsys). Secara garis besar terdapat dua bagian utama, yaitu:
1. Hardware merupakan module-module yang saling terintergrasi dan fleksibel dalam
penggunaanya (plug and play) yang terdiri dari SBC Raspberry Pi 4, LCD hdmi, mikrotik,
module sensor, module relay, terminal AC output 220, projectboard, dan komponen-
komponen elektronika.
2. Software merupakan perangkat lunak open source GNU General Public License (GPL) yang
terdiri dari sistem operasi raspbian, sd card formatter, python up to version 3, flask
webserver, dan library-library lain.
2.1 Hardware
UnIoTsys dirancang fleksibel dalam berbagai penggunaan untuk membuat aplikasi-aplikasi
yang mendukung pengembangan projek-projek IoT, ilustrasi UnToTsys disajikan dalam Gambar
2.1, sedangkan module dan komponen-komponen elektroniknya disajikan dalam Tabel 2.1.
2.2 Software
Tabel 2. 2 Spesifikasi Software dalam Universal IoT System
No Software Keterangan
.
1. NOOBS Noobs adalah tool untuk menginstal
sistem operasi dengan mudah untuk
Raspberry Pi. Dengan menggunakan
software ini Anda akan dapat dengan
mudah memilih sistem operasi pilihan
Anda dan menginstalnya pada Raspberry
Pi . Berikut Sistem Operasi saat ini yang
termasuk dalam noobs :
Raspbian
Pidora
OpenE LEC
RaspBMC
OS RISC
www.raspberrypi.org/downloads/
2. Python Python adalah bahasa pemograman
tingkat tinggi yang dapat digunakan
secara luas di berbagai bidang. Python
diciptakan pertama kali oleh Guido van
Rossum pada tahun 1991. Python banyak
digunakan untuk membuat berbagai
macam program, seperti: program CLI,
Program GUI (desktop), Aplikasi Mobile,
Web, IoT, Game, Program untuk Hacking,
dsb.
3. Pychram PyCharm adalah salah satu IDE open
source terbaik untuk bahasa
Python. Muncul dalam beberapa opsi
lisensi dari open source ke versi berbayar.
Kamu bisa memilih lisensi apa pun sesuai
kebutuhan. PyCharm adalah paket fitur
IDE yang mendukung bahasa Python dari
Selection adalah proses memilih data dari big data menggunakan query basis data dan menjadi
target data. Preprocessing adalah proses yang mengkonversi data mentah menjadi format yang
dapat dipahami. Data pada dunia nyata sering tidak memadai, tidak konsisten, tidak teratur,
kurang mengikuti pola/tren tertentu. Hal ini mengakibatkan kualitas pengumpulan dan model
data yang dihasilkan rendah. Preprocessing data dapat dilakukan melalui beberapa proses antara
lain adalah:
a. Data Cleaning. Proses ini adalah suatu proses untuk mengatasi missing value,
penanganan noisy data, identifikasi atau menghapus outlier, penanganan data yang
inkonsisten
b. Data Integration. Proses ini akan mengintegrasi beberapa sumber data dan format data.
c. Data Transformation. Proses normalisasi data, diskritisasi, penyeragaman nilai data,
agregasi atau bahkan split atribut
Data hasil preprocessing akan diolah, dianalisis dan disajikan menjadi suatu informasi yang
mudah difahami (visualisasi). Data tersebut sebagai masukan proses pembuatan model data
menggunakan algoritma mesin learning. Dari Pola atau trend model data tersebut dapat
dilakukan prediksi terhadap data baru berdasarkan model data yang telah dibuat.
Data mining merupakan bagian dari Data Science, yaitu proses pengumpulan informasi untuk
melihat pola dari kumpulan data yang sangat besar dan data discovery. Data mining
mengekstrak pola dari data dengan menggunakan metode statistika agar dapat dianalisa. Hasil
dari analisa ini akan digunakan untuk mencari prediksi yang tepat agar dapat digunakan untuk
mengambil keputusan.
Gambar Tahapan masukan, pemodelan data dengan algoritma mesin learning dan evaluasi
model
a. Data set
Data set adalah koleksi atau kelompok data-data yang berkaitan, dikumpulkan dan
disimpan pada tempat yang sama, merupakan sekelompok record data yang sama dan
b. Feature/atribute
Atribut/feature mewakili variabel independen. Dalam dataset tabular, baris mewakili
observasi dan kolom mewakili fitur. Fitur juga secara kolektif disebut sebagai dimensi.
Atribute terdiri dari numerical dan categorical. Ciri ciri Fitur Kategoris: - dapat
mengambil salah satu dari sejumlah nilai diskrit dengan nama atau label, - Nilai fitur
kategorikal tidak memiliki urutan (ordered), - Jenis kelamin adalah contoh atribut kategoris
yang hanya dapat mengambil satu dari dua nilai, - data bersifat ordinal tidak memiliki
susunan hirarkis misal suasana hati, peringkat kepuasan, - data bersifat nominal tidak
memiliki hirarkis (misal: tipe darah, warna mata, jenis anjing). Ciri ciri Fitur Numerik: -
Dapat mengambil nilai numerik apa pun, - fitur numerik memiliki urutan matematis, - fitur
numerik bersifat diskrit pilihan terbatas: misalnya jumlah orang, jumlah kamar, - fitur
numerik bersifat terus menerus(continuous) pilihan tidak terbatas misalnya: nilai suhu
c. Class/label/target
Class/label adalah atribut yang akan dijadikan target. label adalah variabel yang
dipelajari oleh pembelajaran mesin untuk diprediksi yang terdiri: - label kategoris: mis,
kategori artikel berita adalah label kategoris dan, - label numerik: misalnya, harga adalah
label numerik
a. Surpervised
Supervised Learning merupakan sebuah pemodelan dimana algoritmanya dapat
membangkitkan suatu fungsi yang memetakan input ke output yang diinginkan. Pada
b. Unsupervised
Unsupervised Learning merupakan sebuah pemodelan dimana algoritmanya memodelkan
sekumpulan input secara otomatis tanpa adanya panduan output yang diinginkan. Model
ini mengolah data yang tidak memiliki label, tujuannya adalah mengelompokkan suatu
data yang hampir sama dengan data tertentu. Model ini tidak membutuhkan data training
dalam melakukan prediksi maupun klasifikasi. Ciri-ciri mesin learning – Unupervised: -
Pembelajaran tidak terbimbing, - Data tidak memiliki output/label/target class, - Tidak
memiliki fase training, algoritma bekerja untuk menemukan pola/hubungan pada data
input, Kategori pekerjaan meliputi: klusterisasi, asosiasi, demensionality reduction
b. Unsupervised
• Clustering: - K-means Clustering,- K-modes (Categorical variables), - DBScan (predict the
number of clusters automatically),- OPTICS (predict the number of clusters automatically)
• Association: -Apriori
• Dimension Reduction: - PCA, - Singular value decomposition,
• Recommendation: - Matchbox Recommender
• Computer Vision: - OpenCV Library
c. Silhoutte Coeffision
Silhouette Coefficient adalah matiks yang digunakan untuk mengukur performa dari
teknik kluster. Rentang nilai -1 sampai 1. Nilai 1: cluster terpisah dengan baik satu sama
Gambar EDA, trend harga dan penjualan apokat di Amerika Serikat tahun 2015 – 2018
#Numpy meng-upcast data int ke float Mengatur data array numpy dengan keyword
dtype
Tidak seperti List Python, array NumPy dapat secara eksplisit multidimensi;
Referensi Sub materi tentang manipulasi data array menggunakan teknik slicing,
Numpy reshaping, joining, concatenation dan splitting dapat dilihat pada ”python
data science handbook” halaman 47 – 50. Kunjungi tautan dan temukan
dokumentasi library numpy di: https://numpy.org/doc/stable/
Referensi Untuk memperdalam materi pemanfaatan library Matplotlib dengan fitur-
Matplotlib fitur, canggihnya seperti: “Visualizing Errors, Density and Contour Plots,
Customizing plot legend and Colorbars, multi subplot, Histograms, Binnings,
and Density, Configurations and Stylesheets, Three-Dimensional Plotting,
Geographic Data with Basemap “ dapat dilihat pada ”python data science
handbook”-chapter 4 Visualization with Matplotlib halaman: hal 220 – 310.
Kunjungi dan temukan dokumentasi library matplotlib di:
https://matplotlib.org/stable/users/index.html
Tabel data awal dengan hasil data collection dengan beberapa missing value attribute
Tabel data hasil preprocessing data (data clearning) mengatasi missing value
LEMBAR KERJA
Gambar 3. 2 Raspberry Pi 4
Kesimpulan
New Out Of the Box Software (NOOBS) adalah perangkat lunak ini akan
membantu Anda memulai beroperasi dengan Raspberry Pi dengan mudah.
Di dalamnya mencakup banyak sistem operasi yang beraneka ragam. Yang
harus Anda pilih tentu saja bergantung pada keperluan Anda. Inilah cara
membuat pilihan yang tepat. NOOBS adalah cara yang bagus untuk menguji
sistem operasi baru dan mengenal Raspberry Pi Anda, jadi bermanfaat untuk
sedikit bereksperimen dengan mereka semua. Jika Anda mencari pilihan lain,
ada satu ton proyek siap pakai lainnya yang tidak termasuk dalam NOOBS
yang layak untuk dilihat.
NOOBS adalah installer sistem operasi yang mudah yang berisi Raspbian. Ini
juga menyediakan pilihan sistem operasi alternatif yang kemudian dapat
diunduh dari internet dan kemudian dipasang. NOOBS Lite berisi installer
sistem operasi yang sama tanpa pre-loaded Raspbian. Ini menyediakan menu
pilihan sistem operasi yang sama yang memungkinkan Raspbian dan
gambar lainnya untuk didownload dan diinstal.
Sistem operasi yang direkomendasikan untuk digunakan pada Raspberry Pi
disebut Raspbian. Raspbian adalah versi GNU / Linux yang dirancang
khusus untuk bekerja dengan baik di hardware Raspberry Pi. Anda memiliki
beberapa pilihan ketika datang untuk mendapatkan memegang salinan
Raspbian.
Alat dan Raspberry Pi 4 Model B
Bahan Monitor atau TV
Kabel HDMI
Keyboard dan mouse
Tugas 1. Amati dan catat pembuatan USB bootable sistem operasi Raspbian
2. Lakukan proses instalasi sistem operasi raspbian
Kesimpulan
pi @ raspberrypi ~ $
pi @ raspberrypi ~ $pwd
pi @ raspberrypi ~ $ls-l
pi @ raspberrypi ~ $ rm testfile.txt
Kesimpulan
$ python –version
# blok percabangan if
if username == 'eljava':
print("Selamat Datang Admin")
print("Silahkan ambil tempat duduk")
# blok percabangan for
for i in range(10):
print i
5. Penulisan Komentar
Komentar merupakan baris kode yang tidak akan dieksekusi.Komentar
digunakan untuk memberikan informasi tambahan dan untuk
menonaktifkan kode.
Ada beberapa cara menulis komentar pada pemrograman Python:
Menggunakan Tanda Pagar (#)
# ini adalah komentar
# Ini juga komentar
Menggunakan Tanda Petik
Selain untuk mengapit teks (string), tanda petik juga dapat digunakan
untuk membuat komentar.
Artinya, teks yang kita inputkan dari keyboard akan disimpan ke dalam
nama_variabel.
# Mengambil input
nama = input("Siapa nama kamu ? ")
umur = input("Berapa umur kamu ? ")
# Menampilkan output
print ("Hello",nama,"umur kamu adalah",umur,"tahun")
Hasilnya:
Menampilkan Output
Untuk menampilkan output teks, kita menggunakan fungsi print().
Menampilkan Variabel dan Teks
Pada contoh di atas kita menggunakan tanda koma (,) untuk
menggabungkan teks dan variabel yang akan ditampilkan.
nyala = True
nyala = 1 #Nilai 1 tipe int, tapi bisa menjadi bool
print c #output: 3
Pembagian nilai a dan b menghasilkan 3 (integer). Mengapa demikian?
Karena nilai a dan b bertipe integer, maka hasilnya pun berupa integer.
Bagaimana agar hasilnya ada komanya?
Tentu kita harus merubah tipe variabel a dan b menjadi bilangan pecahan
(float) dulu, baru setelah itu dibagi.
Variabel
Variabel merupakan tempat menyimpan data, sedangkan tipe data adalah
jenis data yang terseimpan dalam variabel.
nama_variabel = <nilai>
Contoh:
Kemudian untuk melihat isi variabel, kita dapat menggunakan fungsi print.
print variabel_ku
print variabel2
1. Operator Aritmatika
Opeartor aritmatika terdiri dari:
Tabel 3. 1 Operator Aritmatika
Operator Simbol
Penjumlahan +
Pengurangan -
Perkalian *
Pembagian /
Sisa Bagi %
Pemangkatan **
Contoh:
a = int(input("Inputkan nilai a: "))
b = int(input("Inputkan nilai b: "))
2. Operator Relasi
Operator ini digunakan untuk membandingkan dua buah nilai. Operator ini
juga dikenal dengan operator relasi dan sering digunakan untuk membuat
sebuah logika atau kondisi.
Contoh:
a=9
b=5
c=a<b
Apakah isi dari variabel c?
Isinya adalah False, karena nilai 9 lebih kecil dari 5 (9 < 5) adalah salah (False).
3. Operator Logika
Operator logika digunakan untuk membuat operasi logika, seperti logika
AND, OR, dan NOT.Operator logika terdiri dari:
Tabel 3. 3 Operator Logika
Operator Simbol
Logika AND and
Logika OR or
Negasi/kebalikan not
Contoh:
a = True
b = False
# Logika AND
c = a and b
print (a, "and", b, "adalah", c)
# apakah a < b?
c=a<b
print ("Apakah" ,a, "<" ,b, ":",c)
# apakah a > b?
c=a>b
print ("Apakah" ,a, ">" ,b, ":",c)
# apakah a <= b?
c = a <= b
print ("Apakah" ,a, "<=" ,b, ":",c)
# apakah a >= b?
c = a >= b
print ("Apakah" ,a, ">=" ,b, ":",c)
# apakah a != b?
c = a != b
print ("Apakah" ,a, "!=" ,b, ":",c)
# Logika AND
c = a and b
print (a, "and", b, "adalah", c)
# Logika OR
c = a or b
print (a, "or", b, "adalah", c)
# Logika NOT
Kesimpulan
if test expression:
statement(s)
Contoh
num = 3
if num > 0:
print(num, "adalah angka positif.")
print("Ini selalu dicetak.")
num = -1
if num > 0:
print(num, " adalah angka negatif.")
print("Ini juga selalu dicetak.")
Analisa Program
Dalam contoh di atas, num> 0 adalah ekspresi uji. Isi if dijalankan hanya jika
bernilai True. Ketika variabel num sama dengan 3, ekspresi uji adalah True
dan pernyataan di dalam tubuh if dijalankan. Jika variabel num sama dengan
-1, ekspresi uji salah dan pernyataan di dalam tubuh if dilewati. Pernyataan
print () berada di luar blok if (tidak diberi jarak). Karenanya, ini dijalankan
terlepas dari ekspresi pengujian.
if test expression:
Body of if
else:
Body of else
Contoh
num = -1
if num >= 0:
print("Positive or Zero")
else:
print("Negative number")
Hasilnya:
Analisa Program
Dalam contoh di atas, ketika num sama dengan 7, ekspresi uji adalah True dan
isi if dijalankan dan isi else dilewati. Jika num sama dengan -5, ekspresi tesnya
False maka isi if dilewati dan isi else dijalankan.
if test expression:
Body of if
elif test expression:
Body of elif
else:
Body of else
Elif adalah kependekan dari else if. Ini memungkinkan kita untuk memeriksa
beberapa ekspresi. Jika kondisi jika False, ia memeriksa kondisi blok elif
berikutnya dan seterusnya. Jika semua kondisinya False, body dari else
dieksekusi. Hanya satu blok di antara beberapa blok if ... elif ... else dijalankan
sesuai dengan kondisi. Blok if hanya dapat memiliki satu blok lagi. Tapi itu
bisa memiliki beberapa blok elif. Flowchart perintah if…else ditunjukkan
dalam Gambar 3.15
Contoh
num = 3.4
if num > 0:
print("Positive number")
elif num == 0:
print("Zero")
else:
print("Negative number")
Hasilnya:
Analisa Program
Ketika variabel num bernilai positif, maka Positive number dicetak. Jika num
bernilai 0, maka Zero dicetak. Jika num bernilai negatif, maka Negative
number dicetak.
Kita dapat memiliki pernyataan if ... elif ... else di dalam pernyataan if ... elif
... else. Ini disebut nested dalam pemrograman komputer.
Sejumlah pernyataan ini bisa bertumpuk di dalam satu sama lain. Indentasi
adalah satu-satunya cara untuk mengetahui tingkat bersarang. Mereka bisa
membingungkan, jadi harus dihindari kecuali jika perlu.
Contoh:
num = int(input("Enter a number: "))
if num >= 0:
if num == 0:
print("Zero")
else:
print("Positive number")
Output 1:
Enter a number: 5
Positive number
Output 2:
Enter a number: -1
Negative number
Output 3:
Enter a number: 0
Zero
Python for Secara umum, pernyataan dieksekusi secara berurutan: Pernyataan pertama
Loop dalam suatu fungsi dijalankan pertama, diikuti oleh yang kedua, dan
seterusnya. Mungkin ada situasi ketika Anda perlu mengeksekusi blok kode
beberapa kali.
Bahasa pemrograman menyediakan berbagai struktur kontrol yang
memungkinkan jalur eksekusi yang lebih rumit. Pernyataan loop
memungkinkan kita untuk mengeksekusi pernyataan atau sekelompok
pernyataan beberapa kali.
Tabel 3. 5 Perintah-Perintah Python Loop
No Perintah Diskripsi
1 for Menjalankan urutan pernyataan beberapa kali dan
menyingkat kode yang mengelola variabel loop.
2 while Mengulangi pernyataan atau sekelompok
pernyataan saat kondisi yang diberikan True. Ini
menguji kondisi sebelum menjalankan badan
perulangan.
print(numbers)
print("The sum is", sum)
Fungsi range()
Kita bisa menghasilkan urutan angka menggunakan fungsi range(). range (10)
akan menghasilkan angka dari 0 sampai 9 (10 angka).Kita juga bisa
mendefinisikan ukuran start, stop dan step sebagai range(start, stop,
step_size). step_size default ke 1 jika tidak disediakan.
Untuk memaksa fungsi ini mengeluarkan semua item, kita dapat
menggunakan function list().
Output:
range(0, 10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[2, 3, 4, 5, 6, 7]
Kita bisa menggunakan fungsi range () di for loop untuk mengulang melalui
urutan angka. Itu dapat dikombinasikan dengan fungsi len () untuk
mengulang melalui urutan menggunakan pengindeksan. Berikut ini
contohnya.
genre = ['pop', 'rock', 'jazz']
for i in digits:
print(i)
else:
print("No items left.")
Saat Anda menjalankan program, hasilnya adalah:
0
1
5
No items left.
Di sini, loop for mencetak item dari daftar hingga loop habis. Ketika loop for
habis, ia mengeksekusi blok kode di else dan mencetak no items left.
Pernyataan for...else dapat digunakan dengan kata kunci break untuk
menjalankan blok else hanya jika kata kunci break tidak dieksekusi. Mari kita
ambil contoh:
Output:
while test_expression:
Body of while
Dalam while loop, ekspresi tes diperiksa terlebih dahulu. Isi loop hanya
dimasukkan jika test_expression bernilai True. Setelah satu iterasi, ekspresi
tes diperiksa lagi. Proses ini berlanjut hingga test_expression bernilai False.
Di Python, body loop while ditentukan melalui lekukan. Body dimulai dengan
lekukan dan baris pertama yang tidak menjorok menandai akhir. Python
mengartikan nilai bukan nol sebagai True. None dan 0 diartikan sebagai False.
Flowchart perintah while ditunjukkan dalam Gambar 3.17
Contoh
n = int(input("Enter n: "))
Analisa Program
Dalam program di atas, ekspresi tes akan menjadi True selama variabel
penghitung kita i kurang dari atau sama dengan n (10 dalam program kita).
Kita perlu meningkatkan nilai variabel counter di badan loop. Ini sangat
penting (dan kebanyakan dilupakan). Kegagalan untuk melakukannya akan
menghasilkan loop tak terbatas (loop tanpa akhir).
while…else
Sama seperti for loop, loop juga dapat memiliki blok else opsional. Bagian lain
dijalankan jika kondisi di loop sementara bernilai False. Perulangan while
dapat diakhiri dengan pernyataan break. Dalam kasus seperti itu, bagian lain
akan diabaikan. Oleh karena itu, bagian lain loop sementara berjalan jika tidak
ada pemutusan yang terjadi dan kondisinya salah. Berikut adalah contoh
untuk menggambarkan hal ini.
counter = 0
break
Cara kerja pernyataan break dalam for loop dan while loop ditampilkan
Gambar 3.19
Gambar 3. 19 Cara kerja perintah break dalam for dan while loop
Contoh:
for val in "string":
if val == "i":
break
print(val)
print("The end")
Analisa Program
Dalam program ini, kami melakukan iterasi melalui urutan "string". Kami
memeriksa apakah hurufnya adalah i, di mana kami memutuskan dari loop.
Oleh karena itu, kami melihat dalam output kami bahwa semua huruf sampai
i dicetak. Setelah itu, loop berakhir.
continue
Cara kerja pernyataan break dalam for loop dan while loop ditampilkan
Gambar 3.21
Contoh:
for val in "string":
if val == "i":
continue
print(val)
print("The end")
Analisa Program
Program ini sama dengan contoh di atas kecuali pernyataan break diganti
dengan continue. Kami melanjutkan dengan loop, jika string adalah i, tidak
mengeksekusi sisa blok. Oleh karena itu, kami melihat dalam output kami
bahwa semua huruf kecuali i dicetak.
jawab = 'ya'
hitung = 0
while(True):
hitung += 1
jawab = input("Apakah Anda mau ulang lagi(ya/tidak)? ")
if jawab == 'tidak':
break
Kesimpulan
def function_name(parameters):
"""docstring"""
statement(s)
greet('Paul')
Docstrings
String pertama setelah header fungsi disebut docstring dan merupakan
kependekan dari string dokumentasi. Ini secara singkat digunakan untuk
menjelaskan apa yang dilakukan suatu fungsi. Meskipun opsional,
dokumentasi adalah praktik pemrograman yang baik. Kecuali Anda dapat
mengingat apa yang Anda makan untuk makan malam minggu lalu, selalu
dokumentasikan kode Anda. Dalam contoh di atas, kami memiliki docstring
tepat di bawah header fungsi. Kami biasanya menggunakan tanda kutip tiga
sehingga docstring dapat diperpanjang hingga beberapa baris. String ini
tersedia bagi kita sebagai atribut __doc__ dari fungsi tersebut.
Coba jalankan perintah berikut ke shell Python untuk melihat hasilnya
>>> print(greet.__doc__)
Perintah return
Pernyataan return digunakan untuk keluar dari fungsi dan kembali ke tempat
pemanggilannya.
return [expression_list]
print(absolute_value(2))
print(absolute_value(-4))
Output:
2
4
Scope dan Lifetime Variabel
Cakupan variabel adalah porsi program tempat variabel dikenali. Parameter
dan variabel yang ditentukan di dalam fungsi tidak terlihat dari luar fungsi.
Karenanya, mereka memiliki cakupan lokal.Umur variabel adalah periode
selama variabel keluar dalam memori. Masa pakai variabel di dalam suatu
fungsi selama fungsi tersebut dijalankan.Mereka dikosongkan begitu kita
kembali dari fungsinya. Karenanya, suatu fungsi tidak mengingat nilai
variabel dari pemanggilan sebelumnya.
Berikut adalah contoh untuk mengilustrasikan ruang lingkup variabel di
dalam fungsi.
def my_func():
x = 10
print("Value inside function:",x)
x = 20
my_func()
print("Value outside function:",x
Output:
Value inside function: 10
Value outside function: 20
Analisa Program
Di sini, kita dapat melihat bahwa nilai x awalnya adalah 20. Meskipun fungsi
my_func() mengubah nilai x menjadi 10, itu tidak mempengaruhi nilai di luar
fungsi. Ini karena variabel x di dalam fungsi lokal. Meskipun memiliki nama
yang sama, keduanya adalah variabel berbeda dengan cakupan berbeda. Di
sisi lain, variabel di luar fungsi terlihat dari dalam. Mereka memiliki cakupan
global.Kita dapat membaca nilai-nilai ini dari dalam fungsi tetapi tidak dapat
mengubah (menulis). Untuk mengubah nilai variabel di luar fungsi, mereka
harus dideklarasikan sebagai variabel global menggunakan kata kunci global.
Argumen
Dalam topik fungsi yang ditentukan pengguna, kita belajar tentang
mendefinisikan fungsi dan memanggilnya. Jika tidak, pemanggilan fungsi
akan menghasilkan kesalahan. Berikut ini contohnya.
Analisa Program
Di sini, fungsi greet() memiliki dua parameter. Karena kami telah memanggil
fungsi ini dengan dua argumen, ini berjalan dengan lancar dan kami tidak
mendapatkan kesalahan apa pun. Jika kita menyebutnya dengan jumlah
argumen yang berbeda, interpreter akan menampilkan pesan error.
greet("Kate")
greet("Bruce", "How do you do?")
Hasilnya:
Hello Kate, Good morning!
Hello Bruce, How do you do?
Analisa Program
Dalam fungsi ini, parameter name tidak memiliki nilai default dan diperlukan
(wajib) selama panggilan. Di sisi lain, parameter msg memiliki nilai default
"Good morning!". Jadi, ini opsional selama panggilan. Jika nilai diberikan,
nilai tersebut akan menimpa nilai default. Sejumlah argumen dalam suatu
fungsi dapat memiliki nilai default. Tapi begitu kita memiliki argumen default,
semua argumen di sebelah kanannya juga harus memiliki nilai default..
Argumen Python *
Terkadang, kita tidak mengetahui sebelumnya jumlah argumen yang akan
diteruskan ke suatu fungsi. Python memungkinkan kita menangani situasi
semacam ini melalui pemanggilan fungsi dengan sejumlah argumen yang
berubah-ubah. Dalam definisi fungsi, kami menggunakan tanda bintang (*)
def greet(*names):
"""This function greets all
the person in the names tuple."""
# names is a tuple with arguments
for name in names:
print("Hello", name)
Hello Monica
Hello Luke
Hello Steve
Hello John
Analisa Program
Di sini, kami telah memanggil fungsi dengan banyak argumen. Argumen ini
dibungkus menjadi tupel sebelum diteruskan ke fungsi. Di dalam fungsi, kami
menggunakan perulangan for untuk mengambil semua argumen kembali.
Fungsi Rekursif
Berikut adalah contoh fungsi rekursif untuk mencari faktorial dari sebuah
bilangan bulat.Faktorial suatu angka adalah hasil kali semua bilangan bulat
dari 1 sampai angka itu. Misalnya, faktorial dari 6 (dilambangkan sebagai 6!)
Adalah 1 * 2 * 3 * 4 * 5 * 6 = 720.
Contoh:
def factorial(x):
if x == 1:
return 1
else:
return (x * factorial(x-1))
num = 3
print("The factorial of", num, "is", factorial(num))
Output :
The factorial of 3 is 6
Analisa Program
Dalam contoh di atas, faktorial () adalah fungsi rekursif saat memanggil
dirinya sendiri.
Saat kita memanggil fungsi ini dengan bilangan bulat positif, fungsi ini akan
secara rekursif memanggil dirinya sendiri dengan mengurangi angkanya.
Setiap fungsi mengalikan bilangan dengan faktorial dari bilangan di
bawahnya hingga sama dengan satu. Panggilan rekursif ini dapat dijelaskan
dalam langkah-langkah berikut.
factorial(3) # 1st call with 3
3 * factorial(2) # 2nd call with 2
3 * 2 * factorial(1) # 3rd call with 1
3*2*1 # return from 3rd call as number=1
3*2 # return from 2nd call
6 # return from 1st call
Mari kita lihat gambar yang menunjukkan proses langkah demi langkah dari
apa yang sedang terjadi:
result = a + b
return result
>>> example.add(4,5.5)
9.5
Python memiliki banyak modul standar. Anda dapat melihat daftar lengkap
modul standar Python dan kasus penggunaannya. File-file ini ada di direktori
Lib di dalam lokasi tempat Anda menginstal Python. Modul standar dapat
diimpor dengan cara yang sama seperti kita mengimpor modul yang
ditentukan pengguna. Ada berbagai cara untuk mengimpor modul.
Kita dapat mengimpor modul menggunakan pernyataan import dan
mengakses definisi di dalamnya menggunakan operator titik seperti
dijelaskan di atas. Berikut ini contohnya,
import math
print("The value of pi is", math.pi)
Saat Anda menjalankan program, hasilnya adalah:
import math as m
print("The value of pi is", m.pi)
Kami telah mengganti nama modul math menjadi m. Ini dapat menghemat
waktu mengetik dalam beberapa kasus. Perhatikan bahwa nama math tidak
dikenali dalam lingkup kami. Karenanya, math.pi tidak valid, dan m.pi
adalah implementasi yang benar.
Kita dapat mengimpor nama tertentu dari modul tanpa mengimpor modul
secara keseluruhan. Berikut ini contohnya.
Di sini, kami hanya mengimpor atribut pi dari modul math. Dalam kasus
seperti itu, kami tidak menggunakan operator titik. Kami juga dapat
mengimpor beberapa atribut sebagai berikut:
>>> from math import pi, e
>>> pi
3.141592653589793
>>> e
2.718281828459045
mainBidang.py
Keterangan :
PIN 8 (GPIO14) sebagai output dihubungkan ke resistor
Sisi lain dari Resistor di hubungkan ke positif LED
PIN 6 ke GND dihubungkan ke LED negatif
Kode Program Program Python untuk LED Berkedip atau Blink LED menggunakan
raspberry Pi 4 ada beberapa cara, berikut ini dipaparkan cara menyalakan
LED dengan Aktif HIGH.
Cara Pertama
Analisa Program
Baris ke-1 module RPi.GPIO yang diperlukan untuk mengenali PIN
IO dari raspberry Pi
Baris ke-2 module time untuk fungsi tunda waktu
Baris ke-4 fungsi setmode() untuk memilih GPIO14 mode BCM
(Broadcom)
Baris ke-5 fungsi setup() untuk mengatur GPIO14 sebagai output
Baris ke-7 while(True) mengulang perintah baris ke 8 sampai ke 11
selama kondisinya True.
o Baris ke-8 fungsi output() untuk mengeset GPIO14 dalam
logika True sehingga LED menyala
PROJEK
Projek 1 Pembuatan Traffic Light
Raspberry Pi 4
Projek 2 Gambar 3. 28 Rangkaian Kerja Traffic Light
Tactile Switch
Push button ini disebut dengan tactile switch normaly open . Tombol tekan
memungkinkan kita untuk menyalakan sirkuit atau membuat koneksi
tertentu hanya ketika kita menekan tombol. Sederhananya, itu membuat
sirkuit terhubung saat ditekan dan putus saat dilepas. Tombol tekan juga
digunakan untuk memicu SCR dengan terminal gerbang. Ini adalah tombol
paling umum yang kita lihat di peralatan elektronik kehidupan sehari-hari
kita.
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.
Keterangan :
PIN 8 (GPIO14) sebagai input dihubungkan ke salah satu kaki tactile
switch
PIN 10 (GPIO15) sebagai output dihubungkan ke positif LED
Kode Program Program Python untuk mengontrol LED melalaui saklar push button
menggunakan raspberry Pi 4 ada beberapa cara yaitu,
Cara Pertama
Analisa Program
Baris ke-1 module RPi.GPIO yang diperlukan untuk mengenali PIN
IO dari raspberry Pi
Baris ke-2 module time untuk fungsi tunda waktu
Baris ke-3 fungsi setwarning() bernilai False untuk menonaktifkan
warning
Baris ke-5 membuat variabel untuk inptBtn untuk menampung
nomor pin GPIO
Baris ke-6 fungsi setmode() untuk memilih GPIO14 mode BCM
(Broadcom)
Baris ke-7 fungsi setup() untuk mengatur GPIO15 sebagai output
LDR (Light Light Dependent Resistor atau disingkat dengan LDR adalah jenis Resistor
Dependent yang nilai hambatan atau nilai resistansinya tergantung pada intensitas
Resistor) cahaya yang diterimanya. Nilai Hambatan LDR akan menurun pada saat
cahaya terang dan nilai Hambatannya akan menjadi tinggi jika dalam kondisi
gelap. Dengan kata lain, fungsi LDR (Light Dependent Resistor) adalah
untuk menghantarkan arus listrik jika menerima sejumlah intensitas cahaya
(Kondisi Terang) dan menghambat arus listrik dalam kondisi gelap.
Naik turunnya nilai Hambatan akan sebanding dengan jumlah cahaya yang
diterimanya. Pada umumnya, Nilai Hambatan LDR akan mencapai 200 Kilo
Ohm (kΩ) pada kondisi gelap dan menurun menjadi 500 Ohm (Ω) pada
Kondisi Cahaya Terang. LDR (Light Dependent Resistor) yang merupakan
Alat Ukur yang digunakan untuk mengukur nilai hambatan LDR adalah
Multimeter dengan fungsi pengukuran Ohm (Ω). Agar Pengukuran LDR
akurat, kita perlu membuat 2 kondisi pencahayaan yaitu pengukuran pada
saat kondisi gelap dan kondisi terang. Dengan demikian kita dapat
mengetahui apakah Komponen LDR tersebut masih dapat berfungsi dengan
baik atau tidak.
Mengukur LDR pada Kondisi Terang
1. Atur posisi skala selektor Multimeter pada posisi Ohm
2. Hubungkan Probe Merah dan Probe Hitam Multimeter pada kedua kaki
LDR (tidak ada polaritas)
3. Berikan cahaya terang pada LDR
4. Baca nilai resistansi pada Display Multimeter. Nilai Resistansi LDR pada
kondisi terang akan berkisar sekitar 500 Ohm.
Rangkaian
Kerja
Rangkaian
Kerja
Keterangan :
PIN 7 (GPIO4) sebagai TRIGGER
PIN 11 (GPIO17) sebagai ECHO
Kode Program import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO_TRIGGER = 23
GPIO_ECHO = 24
GPIO.setup(GPIO_TRIGGER, GPIO.OUT)
GPIO.setup(GPIO_ECHO, GPIO.IN)
GPIO.output(GPIO_TRIGGER, GPIO.LOW)
def get_range():
GPIO.output(GPIO_TRIGGER, True)
time.sleep(0.00001)
GPIO.output(GPIO_TRIGGER, False)
timeout_counter = int(time.time())
start = time.time()
while GPIO.input(GPIO_ECHO) == 0 :
start = time.time()
while GPIO.input(GPIO_ECHO) == 1:
stop = time.time()
while True:
jarak = get_range()
print("Jarak halangan di depan adalah %.2f Cm" % jarak)
time.sleep(1)
Kesimpulan
PROJEK
Projek 1 Membuat penerangan lampu otomatis di rumah menggunakan sensor
cahaya LDR untuk penerangan 2 lampu (2 LED) di taman, dan tombol push
button (tactile switch) mengontrol 1 lampu (1 LED) untuk penerangan ruang
tamu.
Lab. 8 Microfranework
Flask
Flask adalah salah satu framework micro
website yang ditulis menggunakan
bahasa pemrograman Python. Flask
disebut dengan micro website karena
tidak memerlukan beberapa tools/
library tambahan. Flask tidak memiliki lapisan abstraksi database, form
validasi atau beberapa komponen pihak ketiga lainnya. Flask dibuat oleh
Armin Ronacher yang berasal dari Pocoo sejak tahun 2010. Beberapa website
seperti Pinterest dan LinkedIn merupakan contoh website berbasisi Flask.
Adapun beberapa keunggulan Flask yaitu,
Lisensi BSD
Memiliki server development dan debugger
RESTful request dispatching
Menggunakan template Jinja2
Support secure cookies
100% WSGI 1.0 compliant
Dokumentasi lengkap
Kompatibel dengan Google App Engine
Flask adalah sebuah web framework yang ditulis dengan bahasa Python dan
tergolong sebagai jenis microframework. Flask berfungsi sebagai kerangka
kerja aplikasi dan tampilan dari suatu web. Dengan menggunakan Flask dan
bahasa Python, pengembang dapat membuat sebuah web yang terstruktur
dan dapat mengatur behaviour suatu web dengan lebih mudah.
Flask termasuk pada jenis microframework karena tidak memerlukan suatu
alat atau pustaka tertentu dalam penggunaannya. Sebagian besar fungsi dan
komponen umum seperti validasi form, database, dan sebagainya tidak
terpasang secara default di Flask. Hal ini dikarenakan fungsi dan
komponenkomponen tersebut sudah disediakan oleh pihak ketiga dan Flask
dapat menggunakan ekstensi yang membuat fitur dan komponenkomponen
tersebut seakan diimplementasikan oleh Flask sendiri.
Selain itu, meskipun Flask disebut sebagai microframework, bukan berarti
Flask mempunyai kekurangan dalam hal fungsionalitas. Microframework
disini berarti bahwa Flask bermaksud untuk membuat core dari aplikasi ini
sesederhana mungkin tapi tetap dapat dengan mudah ditambahkan. Dengan
begitu, fleksibilitas serta skalabilitas dari Flask dapat dikatakan cukup tinggi
dibandingkan dengan framework lainnya.
Instalasi Flask
Hal pertama yang harus dilakukan adalah menginstal Flask di Raspberry Pi
4, buka CLI terminal dan jalankan perintah:
Projek baru dimulai dengan membuat folder untuk menyimpan file, sebagai
contoh:
mkdir rpiWebServer
Di folder ini, dbuat 2 sub-folder lain: statis untuk CSS dan akhirnya file
JavaScript dan template untuk File HTML. Buka folder baru rpiWebServer
yang sudah dibuat:
cd rpiWebServer
mkdir static
dan,
mkdir templates
Buka IDE Python3 atau Thonny , Tuliskan kode "Hello Word" di bawah ini
pada IDE Anda dan simpan sebagai contoh, sebagai helloWorld.py
1 from flask import Flask
2
3 app = Flask(__name__)
4
5 @app.route('/')
6 def index():
7 return “Hello world <h1> ELJAVA MIFZAL HERBIYAN</h1>”
8
9 if __name__ == '__main__':
10 app.run()
Analisa Program
Baris ke-1 memanggil module ke dalam program python
Baris ke-3 membuat objek Flask dengan nama app. Maksud dari baris ini
membuat sebuah objek application sebagai sebuah instance dari kelas Flask
yang diimpor dari package flask. Variabel __name__ yang diberikan kepada
kelas Flask adalah variabel yagn sudah dibuatkan oleh Python yang isinya
merupakan nama module dimana ia digunakan. Flask menggunakna lokasi
module yang dikirimkan sebagai titik awal dimana ia harus memuat file-file
yang diperlukan misalnya file template. Memberikan __name__ setiap kali
membuat konfigurasi Flask biasanya akan menjadi langkah terbaik.
Baris ke-5 @app.route akan membuat sebuah hubungan antara URL yang
diberikan sebagai argumen dengan fungsi di bawahnya. Artinya setiap kali
sebuah web browser mengakses salah satu dari URL ini, Flask akan
membanggil fungsi di bawahnya dan mengirimkan nilai balikan (perintah
return) yang sudah dibuat sebagai sebuah response.
Baris ke-6 menjalankan fungsi index () ketika seseorang mengakses URL root
('/') dari server. Dalam hal ini, hanya kirimkan teksnya "Helo World!" ke
browser web klien dengan perintah return.
Baris 6-7 Perintah untuk menjalankan kode program yang diatasnya, server
mulai "mendengarkan" pada port default 5000 dan melaporkan kesalahan
apa pun.
Sekarang, mari buat skrip Python baru dengan nama menamainya web1.py
Komunikasi
Webserver
dengan
Raspberry Pi 4
BZ
File rpiWebserver/iot.py
Pada tutorial ini akan dibuat sebuah project Flask menggunakan template dari
AdminLTE. Setelah membuat folder project selanjutnya adalah mendownload
template AdminLTE di link berikut ini :
https://github.com/ColorlibHQ/AdminLTE/archive/refs/tags/v3.2.0.zip
Setelah diekstrak kemudian copy folder build, dist, dan plugin ke dalam folder
static seperti dibawah ini:
Selanjutnya copy file index.html dari folder AdminLTE kedalam folder templates
pada project. Kemudian edit directory library file index.html menjadi isi dari
folder static seperti dibawah ini:
@app.route("/")
def main():
return render_template('index.html')
Ketika program tersebut dijalankan maka output yang dihasilkan akan tampil
sebagai berikut ini:
Kesimpulan
SQLAlchemy merupakan
sekumpulan perangkat lunak
dengan sumber terbuka untuk
SQL dan Pemetaan Objek
Relasional untuk bahasa
pemrograman Python. Aplikasi
ini dirilis dengan menggunakan
Lisensi MIT. SQLAlchemy
berprinsip bahwa database relasional dapat dianggap seperti sekumpulan
objek karena skalanya yang semakin besar. Selain itu kinerja dari sebuah
database juga mulai menjadi perhatian. Atas alasan ini maka pola pemetaan
data (seperti Hibernate pada bahasa Java) kemudian menjadi pilihan untuk
diadopsi ke dalam SQLAlchemy.
Session merupakan data yang disimpan dalam suatu server yang dapat
digunakan secara global di server tersebut,
dimana data tersebut spesifik merujuk ke
user/client tertentu, contoh penggunaan
session adalah ketika user telah login di
halaman tertentu, maka ketika membuka
halaman lain, php akan mengingat bahwa
user tersebut telah login, contoh ketika kita
telah login pada Google, maka setiap kali
kita membuka layanan Google seperti
GMail, Google Drive, dll di tab berbeda, kita akan selalu dalam keadaan
login, kecuali kita buka dengan browser yang berbeda. Cntoh lain ketika web
ecommerce merekam keranjang belanja user, maka ketika pindah ke
halaman pembayaran, daftar belanja masih terekam.
9. Setting proses control lampu. Dalam setting ini, kita perlu membuat
route memberi sinyal pada program, lampu manakah yang harus
dinyalakan maupun di matikan.
Halaman
Dashboard
Halaman
Lampu
PENUTUP
4.1 Kesimpulan
1. UnIoTsys merupakan teaching aids yang dapat digunakan dalam proses transfer
pengetahuan dan teknologi terdiri dari dua bagian utama, yaitu hardware merupakan
module-module yang saling terintergrasi dan fleksibel dalam penggunaanya (plug and play)
yang terdiri dari SBC Raspberry Pi 4, LCD hdmi, mikrotik, module sensor, module relay,
terminal AC output 220, projectboard, dan komponen-komponen elektronika. Software
merupakan perangkat lunak open source GNU General Public License (GPL) yang terdiri dari
sistem operasi raspbian, sd card formatter, python up to version 3, flask webserver, dan
library-library lain.
2. Sekolah dapat memanfaatkan UnIotSys untuk membuat projek-projek IoT yang dibutuhkan
sekolah dalam mewujudkan transforrmasi digital berbagai peralatan sekolah.
3. Lembaga pelatihan dapat memanfaatkan UnIotSys untuk melatih masyarakat dalam
penerapan teknologi IoT untuk keperluan smart home dan aplikasi lainnya.
4. BBPPMPV BOE dapat memanfaatkan UnIotSys untuk melatih Guru-Guru SMK dengan sain
dan teknologi terbaru yang sesuai dengan revolusi indutri 4.0.
4.2 Saran
1. Taaching aids UnIoTsys dapat dikembangkan dengan melengkapi fitur-fitur yang lebih
komplek yaitu dengan sensor-sensor dan peralatan yang sesuai dengan kebutuhan revolusi
industri 4.0.
2. Menciptkan teaching aids baru melalui inovasi-inovasi yang bersesuaian dengan education top
project yang sedang berkembang saat ini .
[1] Vujovic, V. ,Maksimovic, M. (2015) Raspberry Pi as a Sensor Web node for home
automation. Computers and Electrical Engineers, Vol. 44.
[2] Alee, R. (2013) Reading Data From a Digital Multimeter Using a Raspberry Pi, Tesis,
Turku University of Applied Science, Istambul.
[3] Richard Blum (2014), Python Programming for Raspberry Pi in 24 Hours, Sams Teach
Yourself.
[4] Santoso, B.I. (2010) Bahasa Pemrograman Python Di Platform GNU/LINUX, Universitas
Multimedia Nusantara, Tangerang.
[5] https://www.raspberrypi.org/documentation/usage/python/
[6] https://www.programiz.com/python-programming
[7] https://www.w3schools.com/python
[8] https://www.petanikode.com/tutorial/python/
[9] https://www.guru99.com/python-tutorials.html
E-mail : abdmunif@gmail.com
G+ : abdmunif
Mobile Phone : +628123306127