0% menganggap dokumen ini bermanfaat (0 suara)
87 tayangan37 halaman

Materi IoT

Diunggah oleh

angga rahmad
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
87 tayangan37 halaman

Materi IoT

Diunggah oleh

angga rahmad
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 37

BAB 1: Introduction IoT & Arduino

A. Introduction IoT

IoT merupakan sebuah konsep yang menghubungkan perangkat digital dan


memberikan kemampuan untuk bertukar data tanpa perlu interaksi manusia. Definisi ini
menunjukkan bagaimana IoT memiliki potensi untuk memberikan dampak besar pada
cara kita hidup dan bekerja di masa depan. Selain itu, IoT juga membawa peluang besar
bagi pengembang perangkat keras, perangkat lunak, dan layanan terkait.

B. Introduction Arduino

Arduino merupakan sebuah board mikrokontroler open source yang dapat digunakan
untuk membuat berbagai macam proyek elektronik. Arduino memiliki keunggulan dalam
hal kemudahan penggunaan, fleksibilitas, dan kemampuan untuk dihubungkan dengan
berbagai jenis sensor dan perangkat lainnya. Arduino dapat digunakan untuk
mengembangkan proyek IoT, seperti pengontrolan dan pemantauan suhu dan
kelembaban, kontrol lampu dan peralatan rumah tangga, serta pengukuran kualitas
lingkungan.

C. Arsitektur IoT

Arsitektur IoT terdiri dari tiga komponen utama: perangkat keras (hardware),
perangkat lunak (software), dan jaringan (network). Perangkat keras berperan sebagai
input dan output data, seperti sensor dan aktuator. Perangkat lunak digunakan untuk
memproses dan menganalisis data, serta mengirimkan data ke cloud atau perangkat
lainnya. Jaringan digunakan untuk menghubungkan perangkat IoT, seperti WiFi,
Bluetooth, dan cellular network.

D. Kelebihan dan Kekurangan Arduino

Pada bagian pengenalan Arduino, akan dibahas tentang sejarah dan perkembangan
Arduino, kelebihan dan kekurangan Arduino, jenis-jenis board Arduino, dan Arduino IDE.
Sejarah Arduino dimulai pada tahun 2005, ketika Massimo Banzi dan timnya menciptakan
board mikrokontroler open source yang dapat digunakan oleh siapa saja. Saat ini, Arduino
telah menjadi platform yang populer di kalangan pengembang dan DIY enthusiast.
Kelebihan Arduino antara lain kemudahan penggunaan, fleksibilitas, serta
kemampuan untuk dihubungkan dengan berbagai jenis sensor dan perangkat lainnya.
Kelemahan Arduino adalah keterbatasan dalam hal kemampuan komputasi dan memori
yang rendah dibandingkan dengan komputer atau server. Terdapat berbagai jenis board
Arduino yang tersedia, seperti Arduino Uno, Arduino Nano, dan Arduino Mega. Arduino
IDE adalah perangkat lunak yang digunakan untuk membuat dan mengupload program
ke board Arduino.

E. Praktikum

Pada praktikum, peserta akan belajar tentang instalasi Arduino IDE dan menyalakan
LED dengan Arduino. Hal ini akan memberikan pengalaman langsung kepada peserta
dalam menggunakan Arduino dan memulai pengembangan proyek IoT sederhana.

a. Installasi Aplikasi Arduino IDE.


1. Di langkah pertama kita open file orduino kita dengan double click.

3|Arduino Development Internet of Things (IoT) From Zero


2. Selanjutnya kita click I Agree.

3. Centang semua komponen yang akan kita install, kemudian Next.

4. Pilih folder yang digunakan untuk menyimpan data Arduino, kemudian kllik
Next.

5. Tunggu hingga installasi selesai, kemudian klik Close.

4|Arduino Development Internet of Things (IoT) From Zero


6. Installasi telah sukses dan Arduino IDE siap digunakan.

b. Setting Menghidupkan LED dengan Arduino


1. Buka Aplikasi Arduino IDE, Pilih menu File  Examples  01.Basic  Blink

2. Kemudian buka menu Tools pilih tipe Arduino yang digunakan, Board  Arduino
AVR Boards  Arduino Uno, setelah itu atur Port dimana USB Power Arduino
ditancapkan dan tekan tombol Panah Kanan untuk Upload Code.

3. Nantinya LED pada Arduino akan berkedip sesuai dengan waktu delay yang
ditentukan.

Dengan memahami materi pada Bab 1 ini, peserta akan memiliki pemahaman yang
baik tentang konsep IoT, peran Arduino dalam IoT, serta arsitektur dan pengenalan
Arduino sebagai platform pengembangan proyek IoT. Selain itu, peserta juga akan
mendapatkan pengalaman langsung dalam menggunakan Arduino melalui praktikum
yang disediakan.

5|Arduino Development Internet of Things (IoT) From Zero


BAB 2: Dasar Pemrograman Bahasa C pada Arduino

A. Pendahuluan

Pemrograman bahasa C merupakan dasar yang diperlukan dalam mengembangkan


aplikasi pada platform mikrokontroler seperti Arduino. Materi ini akan membahas konsep
dasar dari bahasa C dan bagaimana mengaplikasikannya pada Arduino. Kenapa Bahasa
C digunakan untuk pemrograman Arduino? Bahasa C dipilih karena efisiensi dan
kecepatannya dalam memproses data. Selain itu, bahasa C juga relatif mudah dipelajari
dan digunakan pada berbagai platform mikrokontroler. Pada bab ini Materi akan
membahas konsep dasar dari bahasa C yang meliputi variabel, tipe data, operasi
aritmatika, operasi logika, pengkondisian, perulangan, dan fungsi.

B. Sintaks Dasar

Pada bagian ini, akan dijelaskan sintaks dasar dalam bahasa C, termasuk cara
deklarasi variabel, tipe data, dan penggunaan operasi aritmatika dan logika. Selain itu,
juga akan dibahas penggunaan pengkondisian, perulangan, dan fungsi.

1. Variabel; Variabel adalah lokasi memori yang digunakan untuk menyimpan data
yang dapat berubah-ubah nilainya. Pada Bahasa C, variabel harus dideklarasikan
terlebih dahulu sebelum digunakan. Deklarasi variabel mengindikasikan tipe data
dan nama variabel yang akan digunakan.
2. Tipe Data; Tipe data adalah jenis data yang digunakan untuk variabel pada
Bahasa C. Beberapa jenis tipe data pada Bahasa C adalah int, float, char, dan
double. Setiap tipe data memiliki ukuran yang berbeda-beda pada memori.

1. void setup() {
2. int angkaBulat = 10; //int : Tipe data //angkaBulat : Variabel
3. float angkaDesimal = 3.14;
4. char karakter = 'A';
5. bool nilaiLogika = true;
6. }

3. Operasi Aritmatika; Operasi aritmatika adalah operasi matematika yang


digunakan pada bahasa C seperti penjumlahan, pengurangan, perkalian, dan
pembagian. Operasi aritmatika dapat dilakukan pada tipe data yang sesuai seperti
int dan float.
6|Arduino Development Internet of Things (IoT) From Zero
1. void setup() {
2. int angka1 = 10;
3. int angka2 = 5;
4. int hasilPenjumlahan = angka1 + angka2;
5. }

4. Operasi Logika; Operasi logika adalah operasi yang digunakan untuk


membandingkan nilai pada bahasa C seperti perbandingan sama dengan, lebih
kecil dari, lebih besar dari, dan lain-lain. Hasil operasi logika adalah boolean, yaitu
bernilai true atau false.

1. int main int main()


2. {
3. int a = 1;
4. int b = 0;
5. // operasi AND
6. int c = a && b;
7. cout << "a AND b = " << c << endl;
8. }

5. Pengkondisian; Pengkondisian digunakan untuk memilih aksi yang akan diambil


berdasarkan kondisi yang diberikan. Pada bahasa C, pengkondisian dapat
dilakukan menggunakan statement if, else if, dan else.
1. void setup() {
2. int angka = 5;
3. if (angka > 0) {
4. Serial.println("Angka positif");
5. } else if (angka < 0) {
6. Serial.println("Angka negatif");
7. }
8. Perulangan; Perulangan digunakan untuk mengulang aksi yang sama berulang
kali berdasarkan kondisi yang diberikan. Pada bahasa C, perulangan dapat
dilakukan menggunakan statement for, while, dan do while.

1. void setup() {
2. for (int i = 1; i <= 10; i++) {
3. Serial.println(i);
4. }
5. }

9. Fungsi; Fungsi adalah blok kode yang dapat dipanggil dari bagian lain dari
program. Fungsi dapat menerima parameter dan dapat mengembalikan nilai. Pada
bahasa C, fungsi harus didefinisikan terlebih dahulu sebelum dipanggil.

1. void setup() {
2. Serial.println("Hasil penjumlahan: " + String(jumlah(10, 5)));
3. }
4.
5. void loop() {
6. // Tidak melakukan apa-apa di dalam loop()
7. }
8. int jumlah(int a, int b) {
9. return a + b;
10. }

C. Array

Array adalah kumpulan dari beberapa variabel dengan tipe data yang sama, yang
dinyatakan dengan satu nama variabel dan diidentifikasi dengan indeks (index) unik.

7|Arduino Development Internet of Things (IoT) From Zero


Array dapat menyimpan beberapa nilai atau elemen dalam satu variabel. Elemen array
diakses melalui indeksnya, yang dimulai dari 0. Dalam pengaksesannya, kita
menggunakan nama array diikuti oleh indeks yang diinginkan. Kita juga bisa
memanipulasi nilai dalam array dengan cara memasukkan nilai baru ke indeks yang
diinginkan. Contoh:

1. int angka[5] = {1, 2, 3, 4, 5}; // deklarasi array angka dengan 5 elemen


2. angka[3] = 10; // mengganti nilai pada indeks ke-3 menjadi 10

D. Pointer

Pointer adalah variabel yang menyimpan alamat memori dari variabel lain. Pointer
digunakan untuk mengakses atau memanipulasi variabel lain dengan mengacu pada
alamat memorinya. Pointer pada Arduino digunakan untuk mengoptimalkan penggunaan
memori, terutama pada perangkat dengan memori yang terbatas. Contoh:

1. int nilai = 10; // mendeklarasikan variabel nilai dengan nilai awal 10


2. int *ptr; // mendeklarasikan pointer ptr
3.
4. ptr = &nilai; // pointer ptr menunjuk ke alamat memori variabel nilai
5.
6. *ptr = 20; // mengubah nilai variabel nilai melalui pointer

8|Arduino Development Internet of Things (IoT) From Zero


BAB 3: Input Output Arduino dan Sensor

A. Pendahuluan

Arduino memiliki beberapa jenis pin yang dapat digunakan sebagai input dan output,
yaitu pin digital dan analog. Pin digital digunakan untuk memproses data dengan nilai
diskrit (Hidup/Mati, 0/1) sedangkan pin analog dapat memproses data dengan nilai
analog yang berkisar antara 0 hingga 5 volt. Dengan memanfaatkan pin I/O pada Arduino,
kita dapat mengontrol atau membaca nilai dari komponen seperti LED, motor, sensor,
dan sebagainya.

Selain itu, kita juga perlu memahami jenis-jenis sensor pada aplikasi IoT. Sensor
adalah komponen elektronik yang dapat mendeteksi perubahan pada lingkungan fisik dan
mengirimkan data yang terkait ke perangkat elektronik lain. Sensor ini sangat penting
dalam aplikasi IoT karena memungkinkan kita untuk mendeteksi, mengukur, dan
mengontrol berbagai aspek dari lingkungan yang diukur. Beberapa jenis sensor yang
umum digunakan pada aplikasi IoT antara lain sensor suhu dan kelembaban, sensor
gerak, sensor cahaya, sensor gas, dan sensor tekanan.

Komunikasi serial juga menjadi bagian penting pada bab ini. Komunikasi serial adalah
proses pertukaran data antara dua perangkat elektronik melalui kabel atau gelombang
radio. Komunikasi serial digunakan untuk mengirimkan data dari sensor ke Arduino, atau
dari Arduino ke perangkat lain seperti komputer atau smartphone. Arduino mendukung
beberapa protokol komunikasi serial seperti I2C dan SPI yang memungkinkan kita untuk
menghubungkan beberapa perangkat dalam satu sistem.

B. Pemrograman Input Output

Pada Arduino, terdapat dua jenis pin, yaitu pin digital dan pin analog. Pin digital dapat
berfungsi sebagai input atau output, sedangkan pin analog digunakan untuk membaca
data analog seperti potensiometer atau sensor suhu.

9|Arduino Development Internet of Things (IoT) From Zero


Untuk mengakses pin digital pada Arduino, kita dapat menggunakan fungsi
digitalWrite() dan digitalRead(). Fungsi digitalWrite() digunakan untuk mengirimkan
sinyal digital ke pin output, sedangkan digitalRead() digunakan untuk membaca sinyal
digital dari pin input.

Sedangkan untuk mengakses pin analog pada Arduino, kita dapat menggunakan
fungsi analogWrite() dan analogRead(). Fungsi analogWrite() digunakan untuk
mengirimkan sinyal PWM (Pulse Width Modulation) ke pin output, sedangkan
analogRead() digunakan untuk membaca data analog dari pin input.

Dalam bab ini, kita juga akan mempelajari cara membaca dan menulis data serial
menggunakan fungsi Serial.write() dan Serial.read(). Fungsi Serial.write() digunakan
untuk mengirimkan data serial, sedangkan Serial.read() digunakan untuk membaca data
serial dari perangkat lain.

Selain itu, Arduino juga mendukung komunikasi serial untuk mengirim dan menerima
data dari perangkat lain. Pada Arduino, terdapat tiga jenis protokol komunikasi serial
yang umum digunakan, yaitu UART, I2C, dan SPI.

Protokol UART adalah protokol komunikasi serial yang sederhana dan paling umum
digunakan. Protokol ini digunakan untuk mengirim dan menerima data serial antara
perangkat komunikasi dengan kecepatan baud rate tertentu. Sedangkan protokol I2C
(Inter-Integrated Circuit) dan SPI (Serial Peripheral Interface) adalah protokol komunikasi
serial yang lebih kompleks dan umum digunakan pada sistem yang lebih besar. Protokol
I2C menggunakan dua kabel untuk menghubungkan perangkat, yaitu kabel SDA (Serial
Data) dan kabel SCL (Serial Clock), sedangkan protokol SPI menggunakan empat kabel
untuk menghubungkan perangkat.

C. Relay

Relay adalah suatu komponen elektronik yang berfungsi untuk mengendalikan


atau memutus aliran listrik pada suatu rangkaian. Fungsi relay antara lain adalah
sebagai saklar elektronik, pemutus beban, pengontrol kecepatan motor, dan
sebagainya.
Menggunakan relay pada rangkaian elektronik memungkinkan pengguna untuk
mengontrol aliran listrik pada rangkaian yang membutuhkan daya yang besar atau
tidak dapat diatur oleh mikrokontroler atau komponen lainnya. Relay dapat digunakan

10 | A r d u i n o D e v e l o p m e n t I n t e r n e t o f T h i n g s ( I o T ) F r o m Z e r o
sebagai saklar (switch) elektronik, yang secara otomatis menghubungkan atau
memutuskan sirkuit listrik saat kondisi tertentu terpenuhi.
Relay bekerja dengan cara mengontrol sirkuit listrik yang terpisah melalui sinyal
elektrik yang dikirimkan dari mikrokontroler atau sumber listrik lainnya. Ketika sinyal
elektrik diberikan ke relay, itu akan mengaktifkan kumparan elektromagnetik yang
terdapat di dalam relay tersebut. Kumparan elektromagnetik tersebut kemudian akan
menarik kontak beralih (switch) pada relay, sehingga menghubungkan atau
memutuskan sirkuit listrik yang terhubung dengan relay tersebut.
Relay memiliki beberapa jenis, diantaranya yaitu:

- Relay elektromagnetik (Electromagnetic Relay)


Relay elektromagnetik merupakan jenis relay yang paling umum digunakan pada
rangkaian elektronik. Relay ini bekerja dengan cara menggerakan kontak beralih
(switch) melalui pengaruh medan magnet yang dihasilkan dari kumparan
elektromagnetik yang terdapat di dalam relay tersebut.

- Relay Solid State (SSR)


Relay Solid State adalah jenis relay yang menggunakan komponen elektronik solid
state seperti diode, transistor, atau SCR (Silicon Controlled Rectifier) untuk
mengontrol sirkuit listriknya. Relay SSR lebih tahan lama dan memiliki kecepatan
respon yang lebih cepat daripada relay elektromagnetik, namun harganya lebih mahal.

- Relay Termal (Thermal Relay)


Relay termal adalah jenis relay yang bekerja berdasarkan perubahan suhu yang
terjadi pada rangkaian listrik. Ketika terjadi kenaikan suhu yang tidak normal pada
suatu rangkaian, maka relay termal akan memutuskan sirkuit listrik tersebut, sehingga
mencegah kerusakan yang lebih besar pada rangkaian.
Penggunaan relay pada rangkaian elektronik dapat membantu meningkatkan
efisiensi, keamanan, dan kinerja dari rangkaian tersebut. Beberapa contoh
penggunaan relay pada rangkaian elektronik di antaranya adalah untuk mengontrol
lampu, motor, pompa air, dan perangkat listrik lainnya.
D. Praktikum
I. Siapkan peralatan dan bahan yang dibutuhkan:
• Arduino Uno
• Breadboard
• Kabel Jumper
• Sensor DHT 11
• Sensor MQ-135
• OLED Display 128x64
II. Langkah Langkah
• Rangkai semua alat dan bahan menjadi satu
• Hubungkan Pin AO Sensor ke Pin Analog Arduino
• Hubungkan Pin DO Sensor ke Pin Digital Arduino
• Hubungkan VCC Sensor dan OLED ke Breadboard (+)
• Hubungkan GND Sensor dan OLEd ke Breadboard (-)
• Hubungkan Breadboard (+) dan (-) ke pin 5V dan GND Arduino
11 | A r d u i n o D e v e l o p m e n t I n t e r n e t o f T h i n g s ( I o T ) F r o m Z e r o
• Hubungkan Pin SCK ke Pin A5 Arduino
• Hubungkan Pin SDA ke Pin A4 Arduino
III. Source Code

1. #include <Adafruit_Sensor.h>
2. #include <DHT.h>
3. #include <Wire.h>
4. #include <Adafruit_GFX.h>
5. #include <Adafruit_SSD1306.h>
6.
7. #define DHTPIN 2 // pin DHT11 terhubung ke pin digital 2
8. #define DHTTYPE DHT21 // tipe sensor DHT21
9. #define MQ135PIN A0 // pin sensor MQ135 terhubung ke pin analog A0
10. String quality ="";
11.
12. DHT dht(DHTPIN, DHTTYPE);
13.
14. Adafruit_SSD1306 display(128, 64, &Wire, -1);
15.
16. void sendSensor()
17. {
18. float h = dht.readHumidity();
19. float t = dht.readTemperature();
20. if (isnan(h) || isnan(t)) {
21. Serial.println("Failed to read from DHT sensor!");
22. return;
23. }
24. display.setTextColor(WHITE);
25. display.setTextSize(1);
26. display.setFont();
27. display.setCursor(0, 43);
28. display.println("Temp :");
29. display.setCursor(80, 43);
30. display.println(t);
31. display.setCursor(114, 43);
32. display.println("C");
33. display.setCursor(0, 56);
34. display.println("RH :");
35. display.setCursor(80, 56);
36. display.println(h);
37. display.setCursor(114, 56);
38. display.println("%");
39. }
40.
41. void air_sensor()
42. {
43. float gasLevel = analogRead(MQ135PIN);
44. if(gasLevel<181){
45. quality = "GOOD <181";
46. }
47. else if (gasLevel >181 && gasLevel<225){
48. quality = "OK 181-225";
49. }
50. else if (gasLevel >225 && gasLevel<300){
51. quality = "POOR 225-300";
52. }
53. else if (gasLevel >300 && gasLevel<350){
54. quality = "BAD 300-350";
55. }
56. else{
57. quality = "UNKNOWN";
58. }
59.
60. display.setTextColor(WHITE);
61. display.setTextSize(1);
62. display.setCursor(1,5);
63. display.setFont();
64. display.println("Air Quality:");
65. display.setTextSize(1);
66. display.setCursor(1,23);
67. display.setFont();
12 | A r d u i n o D e v e l o p m e n t I n t e r n e t o f T h i n g s ( I o T ) F r o m Z e r o
68. display.println(quality);
69. }
70.
71. void setup() {
72. Serial.begin(9600);
73. pinMode(MQ135PIN,INPUT);
74. dht.begin();
75. if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3c)) { // Address 0x3D for 128x64
76. Serial.println(F("SSD1306 allocation failed"));
77. }
78. display.clearDisplay();
79. display.setTextColor(WHITE);
80.
81. display.setTextSize(2);
82. display.setCursor(50, 0);
83. display.println("Air");
84. display.setTextSize(1);
85. display.setCursor(23, 20);
86. display.println("Quality monitor");
87. display.display();
88. delay(1200);
89. display.clearDisplay();
90.
91. display.setTextSize(1);
92. display.setCursor(50, 0);
93. display.println("By");
94. display.setTextSize(2);
95. display.setCursor(23, 20);
96. display.println("XPS");
97. display.display();
98. delay(1000);
99. display.clearDisplay();
100. }
101.
102. void loop() {
103. display.clearDisplay();
104. air_sensor();
105. sendSensor();
106. display.display();
107. }

• Nantinya setelah kita upload hasilnya akan muncul melalui OLED Display

13 | A r d u i n o D e v e l o p m e n t I n t e r n e t o f T h i n g s ( I o T ) F r o m Z e r o
BAB 4: Pengendalian Motor dan Komunikasi

A. Pendahuluan

Materi ini membahas mengenai pengendalian motor pada aplikasi IoT. Motor
merupakan salah satu komponen yang penting dalam sistem otomatisasi dan robotika,
oleh karena itu pemahaman mengenai jenis-jenis motor, prinsip kerja, serta teknik
pengendalian motor sangat diperlukan.

B. Jenis - Jenis Motor pada Aplikasi IoT


Motor merupakan komponen penting pada sistem otomasi dan IoT, karena berperan
sebagai penggerak mekanis pada perangkat. Ada beberapa jenis motor yang umumnya
digunakan pada aplikasi IoT, yaitu:

- Motor DC: motor DC menggunakan arus searah untuk menghasilkan putaran


pada poros motor. Motor DC sering digunakan pada aplikasi yang membutuhkan
kecepatan dan torsi yang stabil, serta mudah dikendalikan dengan PWM (Pulse-
Width Modulation).
- Motor stepper: motor stepper menghasilkan putaran pada poros motor dengan
cara menggerakkan rotor secara bertahap, biasanya dalam langkah-langkah kecil.
Motor stepper cocok digunakan pada aplikasi yang membutuhkan kontrol posisi
yang tepat, seperti pada robotika dan perangkat CNC.
- Servo motor: servo motor merupakan motor DC dengan kontrol posisi yang
presisi. Servo motor sering digunakan pada aplikasi yang membutuhkan kontrol
posisi yang tepat, seperti pada sistem mekanis dan robotika.
C. Prinsip Kerja Motor DC

Motor DC (Direct Current) bekerja dengan prinsip konversi energi listrik menjadi
energi mekanik melalui medan magnet yang terbentuk pada sebuah penghantar. Motor
DC terdiri dari dua bagian utama, yaitu rotor (bagian berputar) dan stator (bagian diam).
Rotor berisi kumparan kawat yang terhubung dengan komutator, sedangkan stator berisi
magnet tetap. Ketika arus listrik mengalir pada kumparan kawat di rotor, medan magnet
di sekitar rotor akan berubah dan menimbulkan gaya tarik yang membuat rotor berputar.
Perubahan arah medan magnet pada rotor dilakukan dengan mengubah arah arus listrik
pada kumparan kawat, dan perubahan kecepatan motor dilakukan dengan mengubah
besarnya arus listrik yang mengalir pada kumparan kawat.

14 | A r d u i n o D e v e l o p m e n t I n t e r n e t o f T h i n g s ( I o T ) F r o m Z e r o
Sedangkan motor stepper bekerja dengan prinsip pembangkitan medan magnetik
yang bergantian pada beberapa kumparan kawat pada stator. Motor stepper terdiri dari
dua bagian utama, yaitu rotor dan stator. Rotor pada motor stepper biasanya memiliki
beberapa gigi besi yang menempel pada magnet kecil, dan ketika medan magnet pada
stator berubah, rotor akan bergerak secara presisi. Perubahan arah medan magnet pada
stator dilakukan dengan mengirimkan sinyal arus listrik yang bergantian pada kumparan
kawat stator, dan setiap perubahan sinyal arus listrik pada kumparan kawat stator akan
menghasilkan gerakan presisi pada rotor motor stepper.

Kelebihan dari motor stepper adalah gerakannya yang presisi, tetapi kekurangannya
adalah torsi yang dihasilkan tidak sebesar motor DC. Sedangkan kelebihan dari motor DC
adalah torsi yang dihasilkan lebih besar, tetapi gerakannya kurang presisi. Oleh karena
itu, pemilihan jenis motor yang tepat harus disesuaikan dengan aplikasi yang akan
digunakan.

D. Teknik pengendalian motor menggunakan driver motor


Teknik pengendalian motor menggunakan driver motor adalah teknik yang digunakan
untuk mengontrol motor DC atau stepper menggunakan driver motor yang dirancang
khusus. Driver motor memiliki beberapa fungsi penting seperti mengontrol arus dan
tegangan motor, mempertahankan kecepatan putaran motor, dan memastikan motor
bekerja dengan efisien dan aman.

Teknik pengendalian motor menggunakan driver motor ini dapat membantu dalam
menghindari kerusakan pada motor dan mengoptimalkan performa motor. Beberapa
teknik pengendalian motor yang umum digunakan dengan driver motor di antaranya
adalah teknik PWM (Pulse-Width Modulation), teknik H-bridge, dan teknik Stepper Motor
Control.

Teknik PWM digunakan untuk mengatur kecepatan putaran motor dengan


memodulasi lebar pulsa sinyal arus listrik yang diberikan ke motor. Semakin lebar pulsa
sinyal listrik yang diberikan, semakin cepat putaran motor. Sedangkan teknik H-bridge
digunakan untuk mengendalikan arah putaran motor, di mana arus dapat mengalir ke
arah yang berbeda pada motor untuk mengubah arah putarannya.

Sementara itu, teknik Stepper Motor Control digunakan untuk mengendalikan motor
stepper dengan mengirimkan sinyal listrik yang dikodekan secara khusus ke driver motor.
Sinyal listrik ini memberikan arahan kepada motor stepper untuk memutar sejauh sudut
tertentu dalam langkah-langkah kecil dan terukur.
Dalam aplikasi IoT, teknik pengendalian motor menggunakan driver motor sering
digunakan untuk mengontrol motor pada sistem robotika, kendaraan, dan peralatan
lainnya. Keuntungan dari penggunaan teknik ini adalah meningkatkan efisiensi dan
akurasi pengendalian motor, sehingga dapat membantu dalam mengoptimalkan kinerja
sistem secara keseluruhan.
E. Mengakses driver motor dengan Arduino
Mengakses driver motor dengan Arduino adalah salah satu teknik pengendalian motor
yang paling umum digunakan dalam aplikasi IoT. Arduino dapat berinteraksi dengan
berbagai jenis driver motor seperti L293D, L298N, A4988, DRV8825, dan banyak lagi.
15 | A r d u i n o D e v e l o p m e n t I n t e r n e t o f T h i n g s ( I o T ) F r o m Z e r o
Pada dasarnya, driver motor adalah perangkat yang digunakan untuk mengontrol
kecepatan dan arah putaran motor. Driver motor mengambil sinyal kontrol dari
mikrokontroler seperti Arduino dan mengubahnya menjadi sinyal daya yang diperlukan
oleh motor. Sebagai contoh, driver motor L293D dapat mengontrol hingga dua motor DC
atau satu motor stepper dengan voltase 4,5-36V dan arus maksimum 600mA.

Untuk mengakses driver motor dengan Arduino, pertama-tama kita perlu


menghubungkan driver motor ke pin input/output Arduino yang sesuai. Setiap driver
motor memiliki pin kontrol yang berbeda, jadi pastikan untuk merujuk pada spesifikasi
teknis driver motor yang digunakan untuk mengidentifikasi pin input/output yang sesuai.

Setelah driver motor terhubung ke Arduino, kita perlu menulis kode program untuk
mengontrol motor melalui driver motor. Biasanya, kita menggunakan library khusus untuk
setiap jenis driver motor yang digunakan. Library ini memungkinkan kita untuk mengatur
kecepatan dan arah putaran motor dengan mudah, dan bahkan memungkinkan kita
untuk mengontrol motor dengan tombol push, sensor, atau input lainnya.

Berikut ini adalah contoh kode program sederhana yang mengontrol kecepatan dan
arah putaran motor DC menggunakan driver motor L293D dan Arduino:

1. #include <AFMotor.h>
2.
3. AF_DCMotor motor1(1);
4. AF_DCMotor motor2(2);
5.
6. void setup() {
7. motor1.setSpeed(200);
8. motor2.setSpeed(200);
9. }
10.
11. void loop() {
12. motor1.run(FORWARD);
13. motor2.run(BACKWARD);
14. delay(2000);
15. motor1.run(RELEASE);
16. motor2.run(RELEASE);
17. delay(1000);
18. motor1.run(BACKWARD);
19. motor2.run(FORWARD);
20. delay(2000);
21. motor1.run(RELEASE);
22. motor2.run(RELEASE);
23. delay(1000);
24. }

Pada contoh kode di atas, kita menggunakan library AFMotor untuk mengakses driver
motor L293D. Kita mendefinisikan dua objek motor, motor1 dan motor2, yang terhubung
ke pin 1 dan 2 pada driver motor. Di dalam loop, kita mengatur kecepatan motor dengan
setSpeed() dan mengatur arah putaran motor dengan run(). Kemudian, kita menunda
program dengan delay() dan mematikan motor dengan RELEASE. Loop ini akan mengatur
motor untuk berputar bergantian dengan arah yang berbeda setiap 4 detik.

F. Pengaturan kecepatan dan arah putaran motor

Untuk mengendalikan kecepatan putaran motor, salah satu cara yang dapat
digunakan adalah dengan memodulasi lebar pulsa (PWM). PWM merupakan suatu teknik
di mana sinyal digital dapat digunakan untuk menghasilkan sinyal analog dengan cara
16 | A r d u i n o D e v e l o p m e n t I n t e r n e t o f T h i n g s ( I o T ) F r o m Z e r o
mengubah lebar pulsa dari sinyal digital tersebut. Pada Arduino, dapat digunakan fungsi
analogWrite() untuk menghasilkan sinyal PWM.

Pengaturan arah putaran motor dapat dilakukan dengan mengatur polaritas tegangan
pada terminal motor. Hal ini dapat dilakukan dengan menggunakan driver motor yang
memiliki kemampuan untuk mengatur polaritas tegangan output-nya.

Pada driver motor biasanya terdapat beberapa pin kontrol yang dapat digunakan
untuk mengatur kecepatan dan arah putaran motor. Beberapa driver motor yang umum
digunakan antara lain L293D, L298N, dan TB6612.

Contoh pengaturan kecepatan dan arah putaran motor dengan menggunakan driver
motor L293D pada Arduino dapat dilakukan dengan mengikuti langkah-langkah berikut:

1. Hubungkan kaki EN1 pada driver motor ke pin PWM pada Arduino, misalnya pin 9.
2. Hubungkan kaki IN1 dan IN2 pada driver motor ke dua pin digital pada Arduino,
misalnya pin 2 dan 3.
3. Hubungkan kaki OUT1 dan OUT2 pada driver motor ke terminal motor.
4. Gunakan fungsi analogWrite() pada pin EN1 untuk mengatur kecepatan putaran
motor dengan sinyal PWM.
5. Gunakan perintah digitalWrite() pada pin IN1 dan IN2 untuk mengatur arah
putaran motor dengan mengatur polaritas tegangan pada terminal motor.

Contoh kode program untuk mengatur kecepatan dan arah putaran motor DC
menggunakan driver motor L293D pada Arduino dapat dilihat di bawah ini:

1. const int EN1 = 9;


2. const int IN1 = 2;
3. const int IN2 = 3;
4.
5. void setup() {
6. pinMode(EN1, OUTPUT);
7. pinMode(IN1, OUTPUT);
8. pinMode(IN2, OUTPUT);
9. }
10.
11. void loop() {
12. // Mengatur kecepatan dan arah putaran motor maju
13. digitalWrite(IN1, HIGH);
14. digitalWrite(IN2, LOW);
15. analogWrite(EN1, 200);
16. delay(5000);
17.
18. // Mengatur kecepatan dan arah putaran motor mundur
19. digitalWrite(IN1, LOW);
20. digitalWrite(IN2, HIGH);
21. analogWrite(EN1, 100);
22. delay(5000);
23. }

Kode program di atas akan mengatur motor untuk berputar maju selama 5 detik
dengan kecepatan sebesar 200 (dalam skala 0-255) menggunakan sinyal PWM pada pin
9 dan arah putaran maju dengan mengatur polaritas pada terminal motor menggunakan
pin 2 dan 3. Setelah itu, motor akan berputar mundur selama 5 detik dengan kecepatan
sebesar 100 menggunakan pengaturan yang sama.

17 | A r d u i n o D e v e l o p m e n t I n t e r n e t o f T h i n g s ( I o T ) F r o m Z e r o
BAB 5: Komunikasi Arduino dengan Internet

A. Pendahuluan
1. Jenis-jenis modul WiFi dan Ethernet
Modul WiFi dan Ethernet adalah perangkat keras yang dapat digunakan untuk
menghubungkan Arduino ke internet. Modul WiFi dapat menggunakan protokol
802.11 untuk menghubungkan ke jaringan nirkabel, sementara modul Ethernet
menggunakan kabel jaringan untuk menghubungkan ke jaringan kabel.

Beberapa contoh modul WiFi yang umum digunakan pada aplikasi IoT adalah
ESP8266, ESP32, dan NodeMCU. Sedangkan untuk modul Ethernet, contohnya
adalah Ethernet Shield dan W5100 Ethernet Module.
2. Protokol komunikasi internet seperti TCP/IP
Protokol TCP/IP adalah protokol komunikasi yang umum digunakan pada
internet. Protokol ini memungkinkan komunikasi antara komputer dan perangkat
lain di jaringan. TCP/IP terdiri dari dua protokol yang saling berhubungan yaitu
Transmission Control Protocol (TCP) dan Internet Protocol (IP).
TCP digunakan untuk mengatur dan mengelola koneksi antara dua perangkat
di jaringan, sedangkan IP digunakan untuk mengirim dan menerima paket data
melalui jaringan.
3. Internet of Things Cloud Platform
Internet of Things (IoT) Cloud Platform adalah platform yang memungkinkan
pengguna untuk mengumpulkan, menyimpan, dan menganalisis data dari
berbagai perangkat IoT. Platform ini memungkinkan pengguna untuk mengontrol
dan memantau perangkat IoT dari jarak jauh dan memberikan kemudahan dalam
pengumpulan data dari berbagai perangkat. Beberapa contoh platform IoT Cloud
yang populer antara lain Amazon Web Services (AWS), Google Cloud IoT, Microsoft
Azure IoT, dan Thingspeak.
B. Pemrograman Komunikasi Internet
1. Mengakses modul WiFi dan Ethernet dengan Arduino
Modul WiFi dan Ethernet digunakan untuk menghubungkan Arduino ke internet.
Untuk mengakses modul ini dengan Arduino, kita perlu menggunakan library yang
telah disediakan oleh Arduino IDE, seperti WiFi.h dan Ethernet.h. Dalam library ini,
terdapat beberapa fungsi yang bisa digunakan untuk mengakses modul WiFi dan
Ethernet, seperti fungsi untuk menghubungkan ke jaringan WiFi, membaca alamat

18 | A r d u i n o D e v e l o p m e n t I n t e r n e t o f T h i n g s ( I o T ) F r o m Z e r o
IP, dan lain sebagainya. Setelah terhubung dengan jaringan internet, kita dapat
menggunakan protokol seperti HTTP atau MQTT untuk mengirim atau menerima
data dari platform IoT Cloud. Beberapa contoh modul WiFi dan Ethernet yang
dapat digunakan dengan Arduino antara lain ESP8266, ESP32, dan Ethernet Shield.
2. Penggunaan protokol HTTP dan MQTT
Protokol HTTP (Hypertext Transfer Protocol) dan MQTT (Message Queuing
Telemetry Transport) merupakan protokol komunikasi internet yang banyak
digunakan pada aplikasi IoT. HTTP digunakan untuk transfer data seperti data
sensor secara request-response antara server dan client dalam bentuk format
JSON ataupun XML.
Sedangkan MQTT digunakan untuk komunikasi data real-time yang bersifat
publish-subscribe, dimana setiap perangkat yang terhubung ke broker dapat
mempublish data atau subscribe pada topik tertentu untuk menerima data. Dalam
penggunaannya pada Arduino, kita perlu menggunakan library yang disediakan
untuk masing-masing protokol, seperti ESP8266HTTPClient.h untuk HTTP dan
PubSubClient.h untuk MQTT. MQTT memiliki overhead yang lebih kecil
dibandingkan HTTP, sehingga lebih cocok digunakan pada aplikasi IoT dengan
keterbatasan bandwidth atau daya baterai.
3. Mengirim data ke Cloud
Setelah data berhasil dibaca dari sensor, langkah selanjutnya adalah mengirim
data tersebut ke Cloud. Ada beberapa platform IoT Cloud yang bisa digunakan,
seperti AWS IoT, Google Cloud IoT, dan Thingspeak. Untuk mengirim data ke
Cloud, kita perlu menggunakan library yang disediakan untuk masing-masing
platform, dan mengikuti panduan dari platform tersebut dalam mengirim data.
Biasanya, platform-platform tersebut menyediakan API atau library khusus yang
dapat digunakan pada Arduino atau mikrokontroler lainnya untuk mengirimkan
data secara mudah. Selain itu, platform-platform tersebut juga menyediakan
fasilitas untuk memvisualisasikan data dalam bentuk grafik atau tabel yang dapat
diakses melalui internet.
C. Praktikum
1. Mengubungkan Arduino dengan internet menggunakan modul
Ethernet
IV. Siapkan peralatan dan bahan yang dibutuhkan:
• Arduino Uno atau varian lain yang memiliki port SPI (Serial Peripheral
Interface)
• Ethernet Shield
• Kabel Ethernet
• Router atau modem yang sudah terhubung ke internet
• Komputer
V. Sambungkan Ethernet Shield ke Arduino Uno:
• Lepaskan kabel USB dari Arduino Uno dan pasang Ethernet Shield ke
atasnya dengan benar.
• Sambungkan kabel Ethernet dari Ethernet Shield ke router atau modem.
VI. Program Arduino Uno dengan kode yang sesuai:
• Buka software Arduino IDE pada komputer.
• Pilih board dan port yang sesuai pada menu Tools.

19 | A r d u i n o D e v e l o p m e n t I n t e r n e t o f T h i n g s ( I o T ) F r o m Z e r o
• Buka salah satu contoh program dari menu File > Examples > Ethernet.
• Kemudian pilih yang DHCPAddressPrinter
• Upload program ke Arduino Uno.
VII. Uji koneksi dan akses internet:
• Hubungkan Arduino Uno ke sumber daya listrik dan hidupkan.
• Tunggu beberapa saat sampai Ethernet Shield terhubung ke jaringan.
• Buka Serial Monitor pada Arduino IDE untuk melihat informasi status
koneksi.
• Uji koneksi dengan mengakses internet melalui Arduino Uno
menggunakan fungsi koneksi yang tersedia dalam program.
• Nanti apabila berhasil, Serial Monitor akan menunjukkan result seperti
berikut.

2. Menghubungkan ESP8266 dengan internet menggunakan modul


WiFi
- Siapkan perangkat keras Modul ESP8266 ataupun ESP32
- Pada Menu File, pilih Reference

20 | A r d u i n o D e v e l o p m e n t I n t e r n e t o f T h i n g s ( I o T ) F r o m Z e r o
- Masukkan link pada menu Additional Board Manager URLs
http://arduino.esp8266.com/stable/package_esp8266com_index.json
(ESP8266)
https://dl.espressif.com/dl/package_esp32_index.json (ESP32)

- Pada Menu Tools, Pilih Board  kemudian pilih Board Manager untuk Install
Driver dari ESP8266 ataupun ESP32

21 | A r d u i n o D e v e l o p m e n t I n t e r n e t o f T h i n g s ( I o T ) F r o m Z e r o
- Siapkan kode program Arduino IDE dengan menambahkan library
ESP8266WiFi dengan memilih Sketch  Include Library  Manage Libraries
 cari "ESP8266WiFi"  Install.

- Masukkan Source Code berikut kemudian upload code

1. #include <ESP8266WiFi.h>
2.
3. const char* ssid = "Nama jaringan WiFi";
4. const char* password = "Password WiFi";
5.
6. void setup() {
7. Serial.begin(9600);
8. WiFi.begin(ssid, password);
9.
10. while (WiFi.status() != WL_CONNECTED) {
11. delay(1000);
12. Serial.println("Connecting to WiFi...");
13. }
14.
15. Serial.println("Connected to WiFi");
16. }
17.
18. void loop() {
19. // kode program Anda
20. }

- Hasilnya akan muncul di Serial Monitor, buka menu Tools pilih Serial
Monitor, sesuaikan Upload Speed-nya dengan Code(9600).

22 | A r d u i n o D e v e l o p m e n t I n t e r n e t o f T h i n g s ( I o T ) F r o m Z e r o
BAB 6: Pengiriman Data ke Cloud

A. Pendahuluan
1. Jenis – Jenis Platform IoT Cloud
Platform IoT Cloud adalah suatu platform yang menyediakan layanan untuk
menghubungkan perangkat IoT ke internet, mengumpulkan data dari perangkat
tersebut, serta memungkinkan pengguna untuk mengakses data tersebut dari
mana saja dan kapan saja. Ada beberapa jenis platform IoT Cloud yang tersedia,
di antaranya adalah:
- AWS IoT : platform dari Amazon Web Services yang
menyediakan berbagai layanan untuk mengembangkan aplikasi IoT.
- Microsoft Azure IoT : platform dari Microsoft yang menyediakan berbagai
layanan untuk mengembangkan dan mengelola aplikasi IoT.
- Google Cloud IoT : platform dari Google yang menyediakan berbagai
layanan untuk mengembangkan dan mengelola aplikasi IoT.
- IBM Watson IoT : platform dari IBM yang menyediakan berbagai
layanan untuk menghubungkan perangkat IoT ke internet, mengumpulkan
data, dan menganalisis data tersebut.
- Blynk Cloud : platform cloud yang digunakan untuk
menghubungkan perangkat Internet of Things (IoT) dengan aplikasi mobile
melalui protokol internet. Layanan ini memungkinkan pengguna untuk
membuat proyek IoT dan mengontrolnya melalui aplikasi mobile Blynk yang
tersedia untuk Android dan iOS. Blynk Cloud menyediakan banyak fitur dan
widget yang memudahkan untuk membuat proyek IoT, seperti grafik,
tombol, slider, dan lain-lain. Selain itu, Blynk Cloud juga menyediakan fitur
notifikasi yang memungkinkan pengguna untuk menerima pemberitahuan
jika ada sesuatu yang terjadi pada perangkat IoT. Layanan ini dapat diakses
melalui website resmi Blynk atau melalui aplikasi mobile.
2. Penggunaan API pada Platform IoT Cloud
API (Application Programming Interface) adalah sebuah antarmuka yang
memungkinkan aplikasi untuk berkomunikasi dengan platform IoT Cloud. Dengan
menggunakan API, pengembang dapat mengintegrasikan perangkat IoT dengan
platform tersebut dan mengirimkan data dari perangkat ke platform. Beberapa
platform IoT Cloud menyediakan API yang mudah digunakan, sehingga
pengembang dapat lebih mudah mengembangkan aplikasi IoT. Selain itu,

23 | A r d u i n o D e v e l o p m e n t I n t e r n e t o f T h i n g s ( I o T ) F r o m Z e r o
beberapa platform IoT Cloud juga menyediakan API yang lengkap, sehingga
pengembang dapat melakukan banyak hal seperti membuat dan mengelola
perangkat, mengumpulkan data, dan melakukan analisis data secara langsung
melalui API.
B. Pemrograman Pengiriman Data

Pada Pemrograman Pengiriman Data membahas tentang teknik dan metode untuk
mengirim data dari perangkat IoT ke platform IoT Cloud. Berikut adalah rincian
penjelasan untuk masing-masing poin pada sub materi tersebut:

1. Membuat koneksi ke platform IoT Cloud


Beberapa hal yang perlu diperhatikan dalam membuat koneksi antara
perangkat dan platform, seperti endpoint, credential, dan konfigurasi koneksi.
Langkah-langkah yang umum dilakukan adalah:
• Mendaftarkan perangkat IoT pada platform IoT Cloud
• Memperoleh API Key atau token yang digunakan untuk mengakses API
pada platform IoT Cloud
• Menggunakan protokol komunikasi yang disediakan oleh platform IoT Cloud
untuk mengirim data dari perangkat IoT ke cloud
2. Mengirim data sensor ke platform IoT Cloud
Terdapat beberapa metode yang umum digunakan untuk mengirim data ke
cloud, antara lain:
• HTTP POST Request: Metode ini menggunakan protokol HTTP untuk
mengirim data ke server pada platform IoT Cloud.
• MQTT: Metode ini menggunakan protokol MQTT untuk mengirim data ke
broker pada platform IoT Cloud.
• WebSocket: Metode ini menggunakan protokol WebSocket untuk mengirim
data ke server pada platform IoT Cloud.

3. Membuat tampilan data pada dashboard platform IoT Cloud


Setelah data berhasil dikirim ke platform IoT Cloud, data dapat ditampilkan
pada dashboard atau tampilan yang disediakan oleh platform IoT Cloud. Tampilan
ini dapat disesuaikan dengan kebutuhan pengguna dan dapat menampilkan data
secara visual seperti grafik atau tabel. Pada umumnya, platform IoT Cloud
menyediakan tools atau fasilitas untuk membuat tampilan data secara mudah
tanpa perlu pengetahuan pemrograman yang mendalam.
C. Praktikum Pengiriman Data Sensor ke Cloud
1. Siapkan peralatan dan bahan yang dibutuhkan:
• ESP8266 ataupun ESP32
• Kabel Jumper
• Sensor DHT21 (Optional)
• Kabel USB
• Komputer
2. Sambungkan Alat dan Bahan
• Hubungkan Sensor dengan ESP8266 menggunakan Kabel Jumper
• Hubungkan ESP8266 dengan Komputer menggunakan Kabel USB
3. Program Arduino Uno dengan kode yang sesuai:
24 | A r d u i n o D e v e l o p m e n t I n t e r n e t o f T h i n g s ( I o T ) F r o m Z e r o
• Buka software Arduino IDE pada komputer.
• Pilih board dan port yang sesuai pada menu Tools.
• Pilih Menu Skecth  Include Library  Manage Libraries..
• Pilih library "Blynk by Volodymyr Shymanskyy" dan klik tombol "Install".
• Tunggu sampai proses instalasi selesai.

4. Setting Blynk Cloud


• Buka Blynk Cloud di Browser, pilih menu Template dan buat Template baru

• Beri Nama Template (Sesuaikan), Pilih Hardware dan Connection Type yang
akan dihubungkan dengan Blynk Cloud, setelah itu klik Done.

• Nantinya muncul Dashboard dari Template tersebut. Pilih menu Datastreams,


dan buat Datastream baru dengan tipe Virtual Pin

25 | A r d u i n o D e v e l o p m e n t I n t e r n e t o f T h i n g s ( I o T ) F r o m Z e r o
• Beri Nama(h) dan Pin(V5) sesuai dengan Source Code nantinya, kita setting
terlebih dahulu untuk humidity nya dengan Unit/Satuan Persentase. Isi kolom
Max menjadi 100.

• Buat juga untuk Temperature dengan satuan Celcius

• Buka Events, lalu setting beberapa menu seperti dibawah

26 | A r d u i n o D e v e l o p m e n t I n t e r n e t o f T h i n g s ( I o T ) F r o m Z e r o
• Buka Web Dashboard, Scroll bagian Widget Box, pilih Gauge lalu Drag & Drop
pada layer Dashboard, beri keterangan yang sesuai dengan Datastream tadi.

• Klik ikon Search dan klik New Device

• Pilih bedasarkan Template

• Pilih template yang sudah kita buat dan klik Create

27 | A r d u i n o D e v e l o p m e n t I n t e r n e t o f T h i n g s ( I o T ) F r o m Z e r o
• Copy dan Paster Authetication Token tersebut pada Source Code dibawah

5. Upload Source Code:

1. #include <ESP8266WiFi.h>
2. #include <BlynkSimpleEsp8266.h>
3. #include <DHT.h>
4.
5. #define DHTPIN D2 // Pin sensor DHT11 dihubungkan ke pin GPIO2
6. #define DHTTYPE DHT11 // Jenis sensor DHT11
7. #define BLYNK_AUTH "masukkan_auth_token_anda" // Masukkan auth token Blynk Anda
8.
9. DHT dht(DHTPIN, DHTTYPE); // Inisialisasi sensor DHT11
10. char auth[] = BLYNK_AUTH;
11. char ssid[] = "nama_wifi_anda";
12. char pass[] = "password_wifi_anda";
13.
14. void setup()
15. {
16. Serial.begin(9600);
17. Blynk.begin(auth, ssid, pass); // Mulai koneksi ke Blynk
18. dht.begin(); // Mulai sensor DHT11
19. }
20.
21. void loop()
22. {
23. delay(2000); // Jeda 2 detik
24. float h = dht.readHumidity(); // Membaca kelembaban dari sensor
25. float t = dht.readTemperature(); // Membaca suhu dari sensor
26. if (isnan(h) || isnan(t)) {
27. Serial.println("Gagal membaca data dari sensor DHT11");
28. return;
29. }
30. Serial.print("Kelembaban: ");
31. Serial.print(h);
32. Serial.print(" %\t");
33. Serial.print("Suhu: ");
34. Serial.print(t);
35. Serial.println(" *C");
36. Blynk.virtualWrite(V5, h); // Kirim data kelembaban ke pin V5 di Blynk
37. Blynk.virtualWrite(V6, t); // Kirim data suhu ke pin V6 di Blynk
38. Blynk.run();
39. }

• Cek hasilnya pada menu Serial Monitor, jika berhasil akan seperti pada
gambar.

28 | A r d u i n o D e v e l o p m e n t I n t e r n e t o f T h i n g s ( I o T ) F r o m Z e r o
6. Across Check Result
• Setelah berhasil pada Serial Monitor, cek kembali Blynk Cloud

• Nantinya status Device menjadi Online, dan grafik akan berjalan sesuai
persentase suhu dan kelembaban.
• Kita bisa juga mengecek hasilnya melalui Aplikasi Blynk IoT yang bisa kita
download melalui Play Store. Langkah langkahnya sama seperti diatas cukup
setting Template dan Devicenya.

29 | A r d u i n o D e v e l o p m e n t I n t e r n e t o f T h i n g s ( I o T ) F r o m Z e r o
BAB 7: Pemrograman Analog to Digital Converter (ADC)

A. Pendahuluan
ADC merupakan perangkat elektronik yang berfungsi untuk mengubah sinyal
analog menjadi sinyal digital. Mikrokontroler umumnya hanya mampu membaca sinyal
digital, sehingga ADC sangat berguna dalam pengukuran variabel analog seperti suhu,
kelembaban, tekanan, dan sebagainya. ADC banyak digunakan dalam aplikasi
pengukuran, mulai dari aplikasi sederhana hingga aplikasi yang kompleks.
Pada materi ini, kita akan mempelajari prinsip kerja ADC, tipe-tipe ADC, serta cara
pemrogramannya. Dalam memprogram ADC, kita harus memahami dan menghitung
resolusi ADC, range dan gain ADC, serta faktor-faktor yang memengaruhi kualitas hasil
pengukuran. Pemahaman yang baik terhadap hal-hal tersebut akan membantu kita
dalam memilih tipe ADC yang tepat dan memprogramnya dengan benar.
Selain itu, pada materi ini juga akan dibahas mengenai aplikasi ADC pada beberapa
jenis mikrokontroler seperti Arduino, ESP8266, dan Raspberry Pi. Pemahaman
mengenai penggunaan ADC pada mikrokontroler tersebut akan membantu kita dalam
mengembangkan aplikasi pengukuran dengan lebih efektif dan efisien.
B. Prinsip Kerja ADC
ADC atau Analog to Digital Converter adalah sebuah perangkat yang digunakan
untuk mengubah sinyal analog menjadi sinyal digital yang dapat diproses oleh sebuah
mikrokontroler atau komputer. Prinsip kerja ADC melibatkan beberapa tahapan
konversi sinyal analog menjadi sinyal digital. Tahapan tersebut meliputi:
1. Sampling: Tahap ini melibatkan pengambilan sampel sinyal analog pada interval
tertentu. Pada tahap ini, sinyal analog yang kontinu dikonversi menjadi sinyal
diskrit dalam bentuk nilai-nilai sampel.
2. Quantization: Tahap ini melibatkan pemisahan nilai-nilai sampel menjadi nilai-nilai
diskrit yang terpisah. Pada tahap ini, nilai-nilai sampel yang kontinu dikonversi
menjadi nilai-nilai diskrit dalam bentuk bilangan bulat atau bilangan desimal.
3. Encoding: Tahap ini melibatkan representasi nilai-nilai diskrit dalam bentuk kode
digital yang sesuai dengan resolusi ADC. Resolusi ADC adalah jumlah bit yang
digunakan untuk merepresentasikan nilai-nilai diskrit. Semakin besar resolusi ADC,
semakin tinggi pula akurasi pengukuran.

30 | A r d u i n o D e v e l o p m e n t I n t e r n e t o f T h i n g s ( I o T ) F r o m Z e r o
Dalam prakteknya, ADC biasanya digunakan untuk mengukur nilai-nilai analog dari
sensor-sensor seperti sensor suhu, sensor cahaya, atau sensor tekanan. Nilai-nilai
analog tersebut kemudian dikonversi menjadi nilai-nilai digital yang dapat diproses
oleh mikrokontroler atau komputer untuk melakukan tindakan tertentu.
C. Tipe - Tipe ADC
1. ADC Berdasarkan Resolusi
ADC (Analog to Digital Converter) memiliki resolusi yang menunjukkan tingkat
akurasi pembacaan analog menjadi digital. Resolusi ADC diukur dalam bit, dan
semakin tinggi nilai bit-nya, semakin besar pula jumlah level pembacaan yang bisa
dihasilkan, sehingga semakin akurat hasil pembacaannya.
ADC dengan resolusi rendah biasanya memiliki 8 bit atau kurang, ADC dengan
resolusi sedang memiliki 10-12 bit, dan ADC dengan resolusi tinggi memiliki lebih
dari 12 bit. ADC dengan resolusi tinggi memberikan hasil pembacaan yang lebih
akurat dibandingkan dengan yang rendah, namun memerlukan waktu konversi
yang lebih lama dan biaya yang lebih tinggi.
Pemilihan resolusi ADC tergantung pada kebutuhan aplikasi yang digunakan.
Jika aplikasi membutuhkan akurasi tinggi dan pengukuran yang detail, maka ADC
dengan resolusi tinggi dapat dipilih. Namun, jika aplikasi membutuhkan kecepatan
pengukuran dan biaya yang lebih murah, maka ADC dengan resolusi rendah dapat
menjadi pilihan yang tepat.
2. ADC Berdasarkan Kecepatan
ADC berdasarkan kecepatannya juga dapat dibagi berdasarkan frekuensi
konversi yang dapat dilakukan. ADC dengan kecepatan rendah umumnya memiliki
frekuensi konversi yang lambat, yaitu di bawah 1 KSPS (Kilo Samples per Second),
sedangkan ADC dengan kecepatan tinggi dapat melakukan konversi dengan
frekuensi di atas 1 MSPS (Mega Samples per Second).
Untuk aplikasi yang memerlukan kecepatan pengukuran yang tinggi, seperti
dalam sistem kontrol motor atau sistem pengukuran suhu di ruangan yang
berubah-ubah, ADC dengan kecepatan tinggi menjadi pilihan yang tepat. Namun,
ADC dengan kecepatan rendah biasanya lebih akurat dan memiliki noise yang lebih
rendah, sehingga cocok untuk aplikasi yang memerlukan keakuratan yang tinggi,
seperti dalam pengukuran suhu di laboratorium atau pengukuran sinyal listrik.
3. ADC Berdasarkan Metode Konversi
ADC dengan metode konversi paralel memerlukan komponen elektronik yang
banyak sehingga umumnya lebih mahal dan sulit untuk dikemas ke dalam ukuran
kecil. Namun, kecepatan konversinya relatif lebih cepat dan akurasinya lebih tinggi
dibandingkan dengan ADC dengan metode konversi beruntun. ADC dengan
metode konversi paralel sering digunakan dalam aplikasi yang membutuhkan
pengukuran yang akurat dan cepat, seperti dalam sistem audio dan video.
Sementara itu, ADC dengan metode konversi beruntun memerlukan komponen
elektronik yang lebih sedikit sehingga lebih ekonomis dan mudah dikemas ke
dalam ukuran kecil. Namun, kecepatan konversinya relatif lebih lambat dan
akurasinya lebih rendah dibandingkan dengan ADC dengan metode konversi
paralel. ADC dengan metode konversi beruntun sering digunakan dalam aplikasi
yang membutuhkan pengukuran yang sederhana dan tidak membutuhkan
kecepatan yang tinggi, seperti dalam sistem pengukuran suhu dan tekanan.
31 | A r d u i n o D e v e l o p m e n t I n t e r n e t o f T h i n g s ( I o T ) F r o m Z e r o
4. ADC Berdasarkan Tegangan Referensi
ADC Berdasarkan Tegangan Referensi dapat dibagi menjadi 2, yaitu ADC dengan
referensi internal dan eksternal.
ADC dengan referensi internal menggunakan tegangan referensi yang telah
terintegrasi pada chip ADC-nya. Tegangan referensi ini umumnya bervariasi dari chip
ke chip, namun biasanya berkisar antara 1,1V hingga 5V. Penggunaan tegangan
referensi internal ini memudahkan perancang dalam mendesain sistem, karena tidak
perlu lagi menambahkan komponen luar untuk tegangan referensi. Namun, referensi
internal seringkali kurang stabil dan akurasinya kurang baik dibandingkan dengan
referensi eksternal.
ADC dengan referensi eksternal menggunakan tegangan referensi yang berasal
dari sumber luar, seperti sumber tegangan linier atau sumber referensi presisi. Dalam
hal ini, tegangan referensi yang digunakan diatur oleh pengguna, sehingga dapat
memungkinkan pengguna untuk mengoptimalkan performa sistem tergantung pada
kebutuhan. Referensi eksternal umumnya lebih stabil dan akurat dibandingkan
dengan referensi internal, namun memerlukan komponen tambahan untuk
menghubungkannya ke ADC.
D. Pemrograman ADC
Untuk melakukan pemrograman ADC pada Arduino, langkah-langkahnya adalah
sebagai berikut:

1. Tentukan pin input analog yang akan digunakan untuk pembacaan nilai
tegangan. Pada Arduino Uno, terdapat 6 pin input analog dengan label A0
hingga A5.
2. Gunakan fungsi analogRead() untuk membaca nilai tegangan pada pin input
analog. Fungsi ini memiliki satu parameter yaitu nomor pin input analog yang
akan dibaca. Contoh: int sensorValue = analogRead(A0); Nilai yang
dikembalikan oleh fungsi ini adalah nilai digital antara 0 hingga 1023 yang
merepresentasikan tegangan analog dari 0 hingga 5V.
3. Jika diperlukan, konversi nilai digital menjadi nilai tegangan sesuai dengan
skala yang digunakan. Contoh: float voltage = sensorValue * (5.0 / 1023.0);
Nilai 5.0 adalah skala tegangan input yang digunakan (dalam volt).
4. Lakukan pengolahan data sesuai dengan kebutuhan, seperti penghitungan nilai
rata-rata atau nilai minimum dan maksimum dari beberapa bacaan.
5. Gunakan nilai hasil pengolahan data untuk mengambil keputusan atau
melakukan kontrol sistem.
Contoh penggunaan pemrograman ADC pada Arduino adalah pada pengukuran
suhu dan kelembaban menggunakan sensor DHT11. Pada contoh ini, pin output
sensor DHT11 dihubungkan ke pin input digital pada Arduino, sehingga diperlukan
komponen tambahan berupa resistor untuk mengubah keluaran sensor menjadi sinyal
digital yang dapat dibaca oleh Arduino.
E. Praktikum
Untuk membaca nilai tegangan analog dari sensor MQ-135 menggunakan ADC
pada Arduino, langkah-langkahnya sebagai berikut:
1. Pasang sensor MQ-135 pada breadboard dan hubungkan pin AO dari sensor
ke pin A0 pada Arduino.
32 | A r d u i n o D e v e l o p m e n t I n t e r n e t o f T h i n g s ( I o T ) F r o m Z e r o
2. Pasang juga resistor 10k Ohm pada breadboard dan hubungkan kaki satu
dari resistor ke pin A0 pada Arduino, sedangkan kaki lainnya ke ground.
3. Pada program Arduino IDE, buat variabel untuk menyimpan nilai tegangan
dari sensor. Contohnya:

int sensorValue;

4. Di dalam setup(), tambahkan fungsi untuk mengatur kecepatan baud rate


Serial dan inisialisasi pin A0 sebagai input:

1. void setup() {
2. Serial.begin(9600); // mengatur baud rate Serial
3. pinMode(A0, INPUT); // inisialisasi pin A0 sebagai input
4. }

5. Di dalam loop(), baca nilai tegangan dari sensor menggunakan fungsi


analogRead() dan simpan ke variabel sensorValue. Kemudian kirim nilai
tersebut ke Serial Monitor untuk ditampilkan. Contohnya:

1. void loop() {
2. sensorValue = analogRead(A0); // membaca nilai tegangan dari pin A0
3. Serial.print("Nilai tegangan: ");
4. Serial.println(sensorValue); // menampilkan nilai tegangan di Serial Monitor
5. delay(1000); // delay 1 detik
6. }

Dengan begitu, nilai tegangan analog dari sensor MQ-135 dapat dibaca
menggunakan ADC pada Arduino.

33 | A r d u i n o D e v e l o p m e n t I n t e r n e t o f T h i n g s ( I o T ) F r o m Z e r o
BAB 8: ESP32 -CAM

A. Pendahuluan
ESP32 Cam adalah modul mikrokontroler yang dilengkapi dengan kamera. Modul
ini dibangun dengan chip ESP32, yang merupakan mikrokontroler dual-core dengan
konektivitas WiFi dan Bluetooth. Dengan adanya kamera, modul ini dapat digunakan
untuk aplikasi yang membutuhkan pengambilan gambar seperti pemantauan
lingkungan, deteksi gerakan, pengenalan wajah, dan sebagainya.
ESP32 Cam menggunakan kamera OV2640 sebagai sensor gambar. Kamera ini
memiliki resolusi 2 megapiksel dan mampu mengambil gambar dengan kualitas baik.
Modul ESP32 Cam dilengkapi dengan antena onboard untuk konektivitas WiFi, serta
dukungan slot kartu MicroSD untuk menyimpan gambar dan data lainnya.
Tujuan dari penggunaan ESP32 Cam adalah untuk mempermudah pengembangan
aplikasi yang membutuhkan fungsi pengambilan gambar dengan penggunaan
mikrokontroler. Dengan modul ini, pengembang dapat lebih fokus pada
pengembangan aplikasi tanpa perlu memikirkan detail teknis tentang kamera dan
komunikasi data.
Manfaat dari penggunaan ESP32 Cam adalah sebagai berikut:
1. Mempermudah pengembangan aplikasi yang membutuhkan fungsi
pengambilan gambar dengan penggunaan mikrokontroler.
2. Menghemat waktu dan biaya pengembangan, karena pengembang tidak perlu
mengembangkan hardware dari awal.
3. Menyediakan kemampuan konektivitas WiFi dan Bluetooth, sehingga aplikasi
yang dikembangkan dapat terhubung ke jaringan atau perangkat lain.
4. Dapat digunakan untuk berbagai aplikasi, seperti pemantauan lingkungan,
deteksi gerakan, pengenalan wajah, dan sebagainya.
5. Dapat diintegrasikan dengan berbagai platform dan platform pengembangan
seperti Arduino IDE, PlatformIO, dan sebagainya.
B. Prinsip Kerja
ESP32-CAM adalah modul WiFi dan Bluetooth dengan kemampuan kamera yang
terintegrasi. Modul ini didukung oleh chip ESP32 yang memiliki kemampuan jaringan
nirkabel dan pengolahan data. Prinsip kerja dari ESP32-CAM adalah sebagai berikut:

34 | A r d u i n o D e v e l o p m e n t I n t e r n e t o f T h i n g s ( I o T ) F r o m Z e r o
1. Pengambilan Gambar
Modul ESP32-CAM dilengkapi dengan sensor kamera yang dapat mengambil gambar
dan video dengan resolusi maksimum 1600 x 1200 piksel. Saat kamera diaktifkan,
sinyal analog dari sensor kamera dikonversi menjadi sinyal digital oleh chip pengolah
gambar ESP32.
2. Komunikasi WiFi
Setelah gambar diambil dan diolah oleh chip ESP32, gambar dapat dikirim melalui
WiFi ke jaringan atau internet. Modul ESP32-CAM dapat berfungsi sebagai server web
sehingga dapat diakses dari jarak jauh melalui koneksi internet.
3. Pengolahan Data
Selain mengambil gambar, ESP32-CAM juga dapat melakukan pengolahan data. Chip
ESP32 pada modul ini dilengkapi dengan prosesor 32-bit dual-core Xtensa LX6 yang
dapat dioperasikan pada kecepatan hingga 240 MHz. Ini memungkinkan modul untuk
melakukan pengolahan data secara efisien dan cepat.
4. Komunikasi Bluetooth
Selain WiFi, modul ESP32-CAM juga dilengkapi dengan kemampuan Bluetooth. Ini
memungkinkan modul untuk terhubung dengan perangkat Bluetooth lainnya, seperti
ponsel cerdas, untuk mentransfer data atau mengontrol perangkat.
Dengan prinsip kerja di atas, ESP32-CAM dapat digunakan untuk berbagai aplikasi,
seperti pengawasan keamanan, pemantauan jarak jauh, atau kontrol perangkat.
C. Praktikum
Untuk dapat mengakases kamera yang terdapat pada ESP32 Cam cukup mudah
yaitu hanya dengan menghubungkan ESP32-Cam dengan Board ESP32-Cam,
kemudian dihubungkan dengan komputer melalui kabel USB.
Pastikan telah menginstall Board dari ESP32-Cam dengan menambahkan link
https://dl.espressif.com/dl/package_esp32_index.json pada menu Preference.
Kemudian install Board ESP32 dan pilih Board jenis ‘AI Thinker ESP32-CAM’.
Untuk Source Code-nya bisa kita akses pada aplikasi Arduino IDE tepatnya pada
menu Examples  ESP32  Camera  CameraWebServer.

1. #include "esp_camera.h"
2. #include <WiFi.h>
3.
4. //
5. // WARNING!!! PSRAM IC required for UXGA resolution and high JPEG quality
6. // Ensure ESP32 Wrover Module or other board with PSRAM is selected
7. // Partial images will be transmitted if image exceeds buffer size
8. //
9.
10. // Select camera model
11. #define CAMERA_MODEL_AI_THINKER
12. //#define CAMERA_MODEL_WROVER_KIT // Has PSRAM
13. //#define CAMERA_MODEL_ESP_EYE // Has PSRAM
14. //#define CAMERA_MODEL_M5STACK_PSRAM // Has PSRAM
15. //#define CAMERA_MODEL_M5STACK_V2_PSRAM // M5Camera version B Has PSRAM
16. //#define CAMERA_MODEL_M5STACK_WIDE // Has PSRAM
17. //#define CAMERA_MODEL_M5STACK_ESP32CAM // No PSRAM
18. //#define CAMERA_MODEL_AI_THINKER // Has PSRAM
19. //#define CAMERA_MODEL_TTGO_T_JOURNAL // No PSRAM
20.
21. #include "camera_pins.h"
22.
23. const char* ssid = "*********";
24. const char* password = "*********";
25.

35 | A r d u i n o D e v e l o p m e n t I n t e r n e t o f T h i n g s ( I o T ) F r o m Z e r o
26. void startCameraServer();
27.
28. void setup() {
29. Serial.begin(115200);
30. Serial.setDebugOutput(true);
31. Serial.println();
32.
33. camera_config_t config;
34. config.ledc_channel = LEDC_CHANNEL_0;
35. config.ledc_timer = LEDC_TIMER_0;
36. config.pin_d0 = Y2_GPIO_NUM;
37. config.pin_d1 = Y3_GPIO_NUM;
38. config.pin_d2 = Y4_GPIO_NUM;
39. config.pin_d3 = Y5_GPIO_NUM;
40. config.pin_d4 = Y6_GPIO_NUM;
41. config.pin_d5 = Y7_GPIO_NUM;
42. config.pin_d6 = Y8_GPIO_NUM;
43. config.pin_d7 = Y9_GPIO_NUM;
44. config.pin_xclk = XCLK_GPIO_NUM;
45. config.pin_pclk = PCLK_GPIO_NUM;
46. config.pin_vsync = VSYNC_GPIO_NUM;
47. config.pin_href = HREF_GPIO_NUM;
48. config.pin_sscb_sda = SIOD_GPIO_NUM;
49. config.pin_sscb_scl = SIOC_GPIO_NUM;
50. config.pin_pwdn = PWDN_GPIO_NUM;
51. config.pin_reset = RESET_GPIO_NUM;
52. config.xclk_freq_hz = 20000000;
53. config.pixel_format = PIXFORMAT_JPEG;
54.
55. // if PSRAM IC present, init with UXGA resolution and higher JPEG quality
56. // for larger pre-allocated frame buffer.
57. if(psramFound()){
58. config.frame_size = FRAMESIZE_UXGA;
59. config.jpeg_quality = 10;
60. config.fb_count = 2;
61. } else {
62. config.frame_size = FRAMESIZE_SVGA;
63. config.jpeg_quality = 12;
64. config.fb_count = 1;
65. }
66.
67. #if defined(CAMERA_MODEL_ESP_EYE)
68. pinMode(13, INPUT_PULLUP);
69. pinMode(14, INPUT_PULLUP);
70. #endif
71.
72. // camera init
73. esp_err_t err = esp_camera_init(&config);
74. if (err != ESP_OK) {
75. Serial.printf("Camera init failed with error 0x%x", err);
76. return;
77. }
78.
79. sensor_t * s = esp_camera_sensor_get();
80. // initial sensors are flipped vertically and colors are a bit saturated
81. if (s->id.PID == OV3660_PID) {
82. s->set_vflip(s, 1); // flip it back
83. s->set_brightness(s, 1); // up the brightness just a bit
84. s->set_saturation(s, -2); // lower the saturation
85. }
86. // drop down frame size for higher initial frame rate
87. s->set_framesize(s, FRAMESIZE_QVGA);
88.
89. #if defined(CAMERA_MODEL_M5STACK_WIDE) || defined(CAMERA_MODEL_M5STACK_ESP32CAM)
90. s->set_vflip(s, 1);
91. s->set_hmirror(s, 1);
92. #endif
93.
94. WiFi.begin(ssid, password);
95.
96. while (WiFi.status() != WL_CONNECTED) {
97. delay(500);
98. Serial.print(".");
36 | A r d u i n o D e v e l o p m e n t I n t e r n e t o f T h i n g s ( I o T ) F r o m Z e r o
99. }
100. Serial.println("");
101. Serial.println("WiFi connected");
102.
103. startCameraServer();
104.
105. Serial.print("Camera Ready! Use 'http://");
106. Serial.print(WiFi.localIP());
107. Serial.println("' to connect");
108. }
109.
110. void loop() {
111. // put your main code here, to run repeatedly:
112. delay(10000);
113. }

Nantinya hasil akan muncul diserial monitor berupa IP Address DHCP, kemudian
kita akses melalui Browser kemudian klik Start Stream

37 | A r d u i n o D e v e l o p m e n t I n t e r n e t o f T h i n g s ( I o T ) F r o m Z e r o

Anda mungkin juga menyukai