Uploaded by nezactrajr

Internet of Things

advertisement
Internet of Things
Pengantar Internet of Things
• Sejarah, Trend, Revolusi Industri 4.0
• Potensi Aplikasi IoT
• Contoh-contoh penggunaan teknologi IoT
• Arsitektur dan Infrastruktur IoT
Trend Revolusi Industri 4.0
• Revolusi industri 4.0 memiliki ciri adanya transformasi digital yang
merubah cara organisasi beroperasi dan bekerja.
• Transformasi digital ini didukung teknologi:
•
•
•
•
Cloud computing,
Artificial intelligence(AI),
Internet of Things,
Machine learning
• Teknologi-teknologi tersebut pun dapat terwujud dengan didukung
oleh teknologi mikroelektronika yang terus-menerus berkembang
hingga saat ini.
• Contoh:
• Teori artificial neural network mulai dikembangkan tahun 1980-an, namun
baru belakangan ini dapat dirasakan dampak besarnya, antar lain karena
didukung perangkat keras komputasi yang mulai memadai.
• Cloud computing dan IoT juga sangat didukung dengan keberadaan perangkat
keras komputasi dan telekomunikasi yang cepat sekali berkembang.
Potensi dari Transformasi Digital
(sumber: Kemenperin, “Making Indonesia 4.0” )
Potensi Internet of Things di Indonesia
• Pangsa pasar IoT di Indonesia diprediksi mencapai
• Rp 444 triliun pada 2022
• lebih dari 400 juta perangkat sensor terpasang.
• Terdiri dari:
•
•
•
•
konten dan aplikasi : Rp 192,1 triliun,
platform : Rp 156,8 triliun,
perangkat IoT : Rp56 triliun
network dan gateway : Rp 39,1 triliun.
(sumber: Kominfo )
https://www.kominfo.go.id/content/detail/15354/potensi-pasar-internet-of-things-di-indonesia-capai-rp-444-t/0/sorotan_media
Potensi
digitalisasi di
berbagai
sektor di
Indonesia
• Manufaktur
• Ritel
• Transportasi
• Tambang
• Pertanian
• Media dan telekomunikasi
• Kesehatan
• Pelayanan Umum
• Finansial
Siapa pengguna IoT?
Sudut pandang developer
Developer:
• Software
• Hardware
Segmen:
• Smart home
• Ritel
• Industri
• Wearable
• Smart city
• Kesehatan
• Transportasi
Peringkat segmen IoT
Definisi Internet of Things (IoT)
• The Internet of Things (IoT) telah didefinisikan oleh Rekomendasi ITU-T
Y.2060 (06/2012) sebagai berikut:
a global infrastructure for the information society, enabling advanced services by
interconnecting (physical and virtual) things based on existing and evolving
interoperable information and communication technologies.
• device: With regard to the Internet of things, this is a piece of
equipment with the mandatory capabilities of communication and the
optional capabilities of sensing, actuation, data capture, data storage
and data processing.
• thing: With regard to the Internet of things, this is an object of the
physical world (physical things) or the information world (virtual
things), which is capable of being identified and integrated into
communication networks.
Konsep IoT: Paradigma Komunikasi
(sumber: ITU-T Y.4000/Y.2060 (06/2012))
Konsep IoT: Komponen Penyusun
Penyusun lengkap dari
bawah ke atas.
• Things:
Perangkat komputasi
“kecil”, untuk
penginderaan dan aksi.
• Cloud:
Server untuk komputasi
dan penyimpanan.
• Intelligence:
Algoritma analisis data
dan pengambilan
keputusan dari data.
(sumber: AWS, “AWS re:Invent” )
Ekosistem IoT: Model Bisnis
• Secara utuh,
dalam model
bisnis IoT dikenal
adanya pelanggan
aplikasi dan
provider.
• Satu pemain di
bisnis IoT dapat
menjadi provider
salah satu bagian,
atau lebih.
(sumber: ITU-T Y.4000/Y.2060 (06/2012))
IoT sangat luas, pemain / vendornya
dari berbagai sektor / arah
Contoh Penggunaan IoT
IoT di Kesehatan
Sumber: ITU-T Supplement Y Suppl. 45 (09/2017)
Smart Home
Sumber: ITU-T Supplement Y Suppl. 45 (09/2017)
Mikrokontroler
1
Introduction to NodeMCU
&
Install Software ESP8266
NodeMCU ------- ESP8266
NodeMCU :
• firmware berbasis open source LUA
yang dikembangkan untuk chip wifi ESP8266,
• desain perangkat kerasnya terbuka untuk diedit /
dimodifikasi
ESP8266 :
• chip Wi-Fi murah yang dikembangkan oleh Espressif Sistem
dengan protokol TCP/IP.
NodeMCU Dev Kit:
• memiliki pin Arduino seperti Analog (yaitu A0) dan Digital (D0-D8).
• mendukung protokol komunikasi serial yaitu UART, SPI, I2C dll.
Dapat dihubungkan dengan perangkat serial :
• LCD I2C,
• Magnetometer HMC5883,
• MPU-6050 Gyro meter + Akselerometer,
• chip RTC,
• modul GPS,
• display layar sentuh,
• kartu SD, dll.
Bagaimana cara menulis kode untuk NodeMCU?
• NodeMCU dengan ESPlorer IDE
• NodeMCU dengan Arduino IDE
Memulai dengan NodeMCU
Untuk Mengunduh firmware NodeMCU, buka https://nodemcu-build.com/

Masukkan email Anda.

Pilih branch to build
• Pilih modul yang ingin Anda instal
Misalnya. Jika Anda ingin menggunakan sensor analog dengan NodeMCU
maka pilih model ADC yang akan menyediakan akses ke ADC built-in.

Pilih opsi lain untuk dukungan TLS / SSL, men-debug serta dukungan FatFS
seperti yang ditunjukkan di bawah ini
• Klik Build
Setelah build selesai Anda akan menerima email berisi tautan untuk mengunduh firmware khusus

Anda. Klik tautan untuk mengunduhnya.
Perhatikan bahwa Anda akan mendapatkan dua tautan Custom firmware, satu adalah NodeMCU

dengan dukungan floating dan yang kedua adalah NodeMCU tanpa dukungan floating yaitu integer.
Unduh file bin firmware, firmware integer jika dukungan floating tidak diperlukan, atau unduh file bin

firmware, firmware floating.
Kita perlu menginstal di atas firmware khusus yang diunduh pada chip ESP8266. Ada alat yang disebut
ESP8266Flasher yang digunakan untuk mem-flash chip ESP8266.

Unduh ESP8266Flasher.exe dari
32bit: https://github.com/nodemcu/nodemcu-flasher/tree/master/Win32/Release

64bit: https://github.com/nodemcu/nodemcu-flasher/tree/master/Win64/Release


Buka ESP8266Flasher.exe dan klik Config.

Klik pada ikon Pengaturan dan kemudian pilih firmware yang telah diunduh pada langkah
pertama

Pilih port COM (Dalam kasus saya ini adalah COM 7)

Hubungkan kabel USB ke modul NodeMCU seperti yang ditunjukkan pada gambar
di bawah ini dan kemudian klik Flash

Centang hijau akan muncul setelah firmware dipasang
Setelah menyiapkan ESP dengan firmware Node-MCU, mari kita lihat IDE (Integrated
Development Environment) yang diperlukan untuk pengembangan NodeMCU
Mari kita lihat tentang pengaturan Arduino IDE dengan NodeMCU.
IDE https://www.arduino.cc/en/Main/Software
Open Arduino IDE dan Buka File -> Preferences .
Pertama Unduh Arduino
Sekarang di jendela Preferensi, Masukkan tautan di bawah ini di
URL
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Sekarang tutup jendela Preferensi dan buka Tools -> Board -> Boards Manager
Di jendela Boards Manager, ketik esp di kotak pencarian, esp8266 akan tercantum di bawah
ini. Sekarang pilih versi terbaru board dan klik install.
Setelah pemasangan board selesai, buka Tools-> Board-> dan pilih NodeMCU 1.0 (Modul ESP-12E).
Sekarang IDE Arduino Anda siap untuk NodeMCU
Praktek 1: Uji coba ESP8266
Mari kita lihat bagaimana menulis sketsa cetak serial sederhana menggunakan Arduino IDE untuk
NodeMCU. Pertama, hubungkan Kit Development NodeMCU dengan PC seperti yang ditunjukkan pada
gambar di bawah ini.
Setelah mengatur Arduino IDE untuk NodeMCU, buka Arduino IDE dan tulis sketsa cetak serial
sederhana seperti yang ditunjukkan pada software di bawah ini.
Pastikan Anda telah memilih board yang benar seperti yang ditunjukkan pada gambar di bawah
ini. Juga pastikan bahwa Anda telah memilih port COM yang sesuai .
Sekarang kompilasi & unggah sketsa tertulis langsung ke Kit Dev NodeMCU dengan mengklik tombol
unggah.
Sekarang Klik pada opsi Serial Monitor (sudut kanan atas) untuk memeriksa output pada jendela
monitor serial Arduino IDE.
Chip ESP8266 (chip yang diaktifkan wifi) menggabungkan Development Board
NodeMCU yang menjadikannya perangkat yang berdiri sendiri dalam aplikasi IoT.
Mari kita lihat versi pertama NodeMCU Dev Kit dan pinout-nya seperti yang
ditunjukkan pada gambar di bawah ini.
PinOut NodeMCU Versi 1
PinOut NodeMCU Versi 2
Pin GPIO (General Purpose Input Output):
NodeMCU memiliki pin GPIO di boardnya seperti yang ditunjukkan pada diagram pinout sebelumnya. Kita
dapat membuatnya digital / HIGH LOW dan mengontrol hal-hal seperti LED, menghasilkan sinyal PWM.
Saluran ADC (Pengonversi Analog ke Digital) (A0):
NodeMCU memiliki satu saluran / pin ADC.
Pin SPI (Serial Peripheral Interface):
ESP8266 berbasis NodeMCU memiliki Hardware SPI (HSPI) dengan 4 pin yang tersedia untuk
komunikasi SPI. ESP8266 juga memiliki pin SPI untuk komunikasi Quad-SPI. Dengan antarmuka SPI ini,
kita dapat menghubungkan semua perangkat berkemampuan SPI dengan NodeMCU.
Pin I2C ( Inter Integrated Circuit ):
NodeMCU memiliki dukungan fungsi I2C pada pin ESP8266 GPIO. Karena
fungsionalitas internal pada ESP-12E, kita tidak dapat menggunakan semua GPIO
untuk fungsi I2C. Jadi, lakukan pengujian sebelum menggunakan GPIO untuk aplikasi
I2C
Pin UART (Universal Asynchronous Receiver Transmitter):
ESP8266 berbasis NodeMCU memiliki dua antarmuka UART: UART0 dan
UART1. Karena UART0 (RXD0 & TXD0) digunakan untuk mengunggah kode firmware
sehingga kita tidak dapat menggunakannya dalam aplikasi saat mengunggah
firmware.
Perbedaan antara NodeMCU Board versi 1 dan 2

Pada versi 1: CH341SER USB to Serial converter

Pada versi 2 : CP2102 USB to Serial converter.

Versi 1 menggunakan ESP-12

Versi 2 menggunakan ESP-12E (Versi yang disempurnakan).

Ekstra 6 pin (MTDO, MTDI, SD_3, MTMS, MTCK, SD_2) dikeluarkan pada versi ESP12E. Meskipun pin Quad SPI dikeluarkan, mereka digunakan secara internal untuk akses
memori flash.
Keluarga ESP8266
2
NodeMCU GPIO
dengan Arduino IDE
General-purpose input/output (GPIO)
•
Pin pada IC
•
Berupa pin input atau pin output, yang perilakunya dapat dikontrol saat dijalankan.
•
Diberi nomor berbeda dari notasi GPIO internal ESP8266 seperti yang ditunjukkan pada tabel di
bawah ini. Misalnya, pin D0 pada kit Dev NodeMCU dipetakan ke pin 16 GPIO internal ESP8266.
Pin Nama pada Kit
NodeMCU
ESP8266 Nomor Pin GPIO Internal
D0
GPIO16
D1
GPIO5
D2
GPIO4
D3
GPIO0
D4
GPIO2
D5
GPIO14
D6
GPIO12
D7
GPIO13
D8
GPIO15
D9 / RX
GPIO3
D10 / TX
GPIO1
D11 / SD2
GPIO9
D12 / SD3
GPIO10
•
GPIO yang ditunjukkan dalam kotak biru (1, 3, 9, 10) sebagian besar tidak digunakan untuk tujuan
GPIO pada Dev Kit.
•
ESP8266 adalah System on Chip (SoC) seperti chip prosesor.
•
Prosesor ini memiliki sekitar 16 jalur GPIO, beberapa di antaranya digunakan secara internal untuk
berinteraksi dengan komponen lain dari SoC, seperti memori flash.
•
Karena beberapa baris digunakan secara internal dalam SoC ESP8266, masih ada sekitar 11 pin
GPIO yang tersisa untuk tujuan GPIO.
•
2 pin dari 11 pin umumnya dicadangkan untuk RX dan TX, untuk berkomunikasi dengan PC host.
Sehingga hanya menyisakan 9 pin GPIO yaitu D0 hingga D8.
•
pin RX, TX, SD2, SD3 tidak banyak digunakan sebagai GPIO karena digunakan untuk proses
internal lainnya.
•
pin SD3 (D12) merespon fungsi GPIO/PWM/interrupt.
•
pin D0 / GPIO16 hanya dapat digunakan sebagai GPIO baca / tulis, tidak ada fungsi khusus
yang didukung.
Sketsa Arduino untuk LED Blink
uint8_t LED_Pin = D4;
// declare LED pin on NodeMCU Dev Kit
void setup()
{
pinMode(LED_Pin, OUTPUT); // Initialize the LED pin as an output
}
void loop()
{
digitalWrite(LED_Pin, LOW);
delay(1000);
digitalWrite(LED_Pin, HIGH);
delay(1000);
}
// Turn the LED on
// Wait for a second
// Turn the LED off
// Wait for a second
3
NodeMCU ADC
dengan Arduino IDE
NodeMCU ADC dengan Arduino IDE
ESP8266 memiliki ADC 10-bit internal dengan hanya satu saluran ADC untuk membaca tegangan
analog dari perangkat eksternal.
•
Saluran ADC pada ESP8266 multipleks dengan tegangan
baterai.
•
Kita dapat mengaturnya untuk mengukur
tegangan
sistem board atau tegangan eksternal.
•
Rentang tegangan input untuk pin ADC (eksternal) adalah
0 - 1.0V
•
Pengaturan mode ADC, apakah tegangan sistem atau tegangan
eksternal
sedang
diukur
tersedia
dalam
"esp_init_data_default.bin" (0-127 byte) firmware.
107
byte
•
Byte ke-107 dari esp_init_data_default.bin (0 - 127 byte) adalah "vdd33_const". Harus diatur ke 0xFF yaitu
255 untuk membaca tegangan sistem yaitu tegangan pada pin VDD ESP8266.
•
Untuk membaca tegangan eksternal pada pin ADC itu harus
diatur ke tegangan catu daya pada pin VDD ESP8266.
•
Rentang tegangan kerja ESP8266 adalah antara 1,8V dan
3,6V, dan unit "vdd33_const" adalah 0,1V, oleh karena itu,
kisaran nilai "vdd33_const" adalah 18 hingga 36.
Fungsi ADC NodeMCU:
analogRead(A0)
Fungsi ini digunakan untuk membaca tegangan eksternal yang diterapkan pada pin ADC modul.
ESP.getVcc()
Fungsi ini digunakan untuk membaca tegangan VCC modul NodeMCU. Pin ADC harus dijaga tetap tidak
terhubung.
Perhatikan bahwa mode ADC harus diubah untuk membaca tegangan sistem sebelum membaca tegangan
suplai VCC. Untuk mengubah mode ADC gunakan ADC_MODE(mode) sesaat setelah #sertakan baris sketsa
Anda.
Mode adalah ADC_TOUT (untuk tegangan eksternal), ADC_VCC (untuk tegangan sistem). Secara default, ini
membaca tegangan eksternal
Sketsa Arduino untuk membaca tegangan Sistem
ADC_MODE(ADC_VCC);
void setup()
{
Serial.begin(9600);
}
Sketsa Arduino untuk membaca tegangan
eksternal
void setup()
{
Serial.begin(9600);
}
void loop()
{
Serial.print("ADC Value: ");
Serial.println(analogRead(A0));
delay(300);
}
void loop()
{
Serial.print("System voltage(mV): ");
Serial.println(ESP.getVcc());
delay(300);
}
Menurut datasheet ESP8266,
• pin TOUT (pin ADC ESP8266) harus mengambang, sambil mengukur tegangan catu daya
melalui ADC.
• Tetapi pada NodeMCU Dev Kit, pin
terhubung
ke
rangkaian
pembagi
tegangan resistor (100Kohm & 220
Kohm) untuk support rentang tegangan
eksternal
(0-3.3V)
seperti
yang
ditunjukkan pada gambar di bawah ini.
SENSOR
1
Sensor Temperatur LM35
Pendahuluan
• LM35 adalah sensor temperatur yang dapat mengukur suhu di kisaran -55 ° C hingga 150
° C.
• Perangkat 3-terminal yang memberikan tegangan analog sebanding dengan
temperatur. Semakin tinggi temperatur, semakin tinggi tegangan output.
• Temperatur outputnya dalam Celcius
• Tidak memerlukan rangkaian kalibrasi eksternal.
• Sensitivitas LM35 adalah 10 mV / ° Celcius. Misalnya 250 mV berarti 25 ° C.
VCC
: Tegangan Suplai (4V - 30V)
Out : Memberikan tegangan keluaran analog yang
sebanding dengan temperatur (dalam derajat Celcius).
GND: Grounded
Sketsa Untuk Arduino IDE nya
float vref = 3.3;
float resolution = vref/1023;
void setup()
{
Serial.begin(9600); /* Define baud rate for serial communication */
}
void loop()
{
float temperature = analogRead(A0);
temperature = (temperature*resolution);
temperature = temperature*100;
Serial.println(temperature);
delay(1000);
}
Praktek Antarmuka LM35 dengan NodeMCU
Bahan dan Alat yang dibutuhkan
• Sensor LM35
:1
• EPS8266
:1
• Kabel mini USB
:1
• Beardboard
:1
Langkah Percobaan
1. Buatlah rangkaian seperti gambar
2. Jalankan program Arduino Anda
3. Buatlah software seperti pada teori di atas dan simpan
dengan memberi nama sesuai keinginan anda
4. Hubungkan kabel mini USB ke laptop anda
5. Isikan program Arduino anda
6. Jalankan Serial Monitor di pojok kanan atas dari Arduino
7. Menu Serial Monitor di set pada baudrate 9600
8. Berapakah angka yang tertampil di serial monitor?
2
Sensor Kelembaban DHT11
Pendahuluan

DHT11 adalah sensor suhu dan kelembaban digital kabel tunggal, yang
memberikan nilai kelembaban dan suhu secara serial dengan protokol satu
kabel.

Sensor DHT11 memberikan nilai kelembaban relatif dalam persentase
(20% hingga 90% RH) dan nilai temperatur dalam derajat Celcius (0
hingga 50 ° C).

Sensor DHT11 menggunakan komponen pengukuran kelembaban resistif,
dan komponen pengukuran temperature NTC.
Deskripsi Pin:

DHT11 adalah sensor dengan 4 pin, yaitu VCC, DATA, GND dan 1 pin tidak
digunakan NC (No Connection)
Nomor pin
Nama Pin
Deskripsi Pin
1
VCC
Sumber Tegangan
3,3-5,5 Volt DC
2
DATA
Pin keluaran digital
3
NC
Tidak digunakan
4
GND
Grounded
Komunikasi dengan Mikrokontroler
DHT11 hanya menggunakan satu kabel untuk komunikasi. Level tegangan dengan nilai waktu

tertentu mendefinisikan logika satu atau logika nol pada pin ini.
•
Proses komunikasi dibagi dalam tiga langkah, pertama adalah mengirim permintaan ke sensor
DHT11 kemudian sensor akan mengirim pulsa respons dan kemudian mulai mengirim data total 40
bit ke mikrokontroler
Timing Pemrograman
Pulsa Start

Untuk memulai komunikasi dengan DHT11, kirim pulsa mulai ke sensor DHT11.
• Pulsa Start, kirim logika HIGH kemudian beri logika LOW di pin data minimum
18ms dan kembali ke logika HIGH, seperti yang ditunjukkan pada diagram
Respon

Setelah Pulsa Start, sensor DHT11 mengirimkan pulsa respon yang
menunjukkan bahwa DHT11 menerima pulsa mulai.

Pulsa respon LOW untuk 54us dan kemudian menjadi HIGH untuk 80us.
Data

Setelah mengirim pulsa respon, sensor DHT11 mengirimkan data, yang berisi nilai
kelembaban dan suhu bersama dengan checksum.

Kerangka data adalah total 40 bit, berisi 5 segmen (byte) dan masing-masing segmen
berukuran 8-bit.

Dalam 5 segmen ini, 2 segmen pertama berisi nilai kelembaban dalam bentuk
bilangan bulat desimal. Nilai ini memberi kita Persentase Relative Humidity. 8-bit
pertama adalah bagian integer dan 8 bit berikutnya adalah bagian fraksional.

2 segmen berikutnya berisi nilai temperatur dalam bentuk bilangan bulat desimal (dalam
bentuk Celsius).

Segmen terakhir adalah checksum yang menampung checksum dari 4 segmen pertama.

Checksum byte adalah penambahan langsung nilai kelembaban dan temperatur.

Dapat diverifikasi, apakah sama dengan nilai checksum atau tidak.

Jika tidak sama, maka ada beberapa kesalahan dalam data yang diterima.

Setelah data diterima, pin DHT11 beralih ke mode konsumsi daya rendah hingga pulsa
awal berikutnya.
End of Frame

Setelah mengirim data 40-bit, sensor DHT11 mengirimkan level LOW
54us dan kemudian menjadi HIGH. Setelah ini DHT11 masuk dalam
mode SLEEP.
Sketsa Untuk Membaca Suhu Dan Kelembaban Dari DHT11
#include "DHT.h“
DHT dht;
void setup()
{
Serial.begin(9600);
Serial.println();
Serial.println("Status\tHumidity (%)\tTemperature (C)\t(F)");
dht.setup(D1);
/* D1 is used for data communication */
}
void loop()
{
delay(dht.getMinimumSamplingPeriod());
/* Delay of amount equal to sampling period */
float humidity = dht.getHumidity();
/* Get humidity value */
float temperature = dht.getTemperature();
/* Get temperature value */ Serial.print(dht.getStatusString());
/* Print status communication */
Serial.print("\t");
Serial.print(humidity, 1);
Serial.print("\t\t");
Serial.print(temperature, 1);
Serial.print("\t\t");
Serial.println(dht.toFahrenheit(temperature), 1);
/* Convert temperature to Fahrenheit units */
}
Praktek Antarmuka DHT11 dengan NodeMCU
Bahan dan Alat yang dibutuhkan
• Sensor DHT11
:1
• EPS8266
:1
• Kabel mini USB
:1
• Beardboard
:1
Langkah Percobaan
1. Buatlah rangkaian seperti gambar
2. Jalankan program Arduino Anda
3. Buatlah software seperti pada teori di atas dan
simpan
dengan
memberi
nama
sesuai
keinginan anda
4. Hubungkan kabel mini USB ke laptop anda
5. Isikan program Arduino anda
6. Jalankan Serial Monitor di pojok kanan atas
dari Arduino
7. Menu Serial Monitor di set pada baudrate 9600
8. Berapakah angka yang tertampil di serial
monitor?
3
Sensor P I R (Pyro Infra Resistive)
Pendahuluan
• PIR digunakan untuk mendeteksi radiasi panas inframerah.
• Berguna dalam mendeteksi benda hidup yang bergerak yang memancarkan radiasi
panas inframerah.
• Tegangan Output dari sensor PIR tinggi ketika merasakan gerakan; sedangkan
tegangannya rendah ketika tidak ada gerakan (objek diam atau tidak ada objek).
• Sensor PIR digunakan dalam banyak aplikasi seperti
untuk kontrol lampu kamar menggunakan deteksi
manusia, deteksi gerak manusia untuk tujuan
keamanan di rumah, dll
Untuk informasi lebih lanjut tentang sensor PIR dan cara menggunakannya, lihat uraian berikut :
•
Semua benda hidup, yang suhu tubuhnya lebih dari 0oC, memancarkan panas dalam bentuk radiasi
inframerah melalui tubuh mereka, juga disebut sebagai radiasi termal.
•
Energi terpancar ini tidak terlihat oleh mata manusia. Sinyal-sinyal ini dapat dideteksi dengan
menggunakan sensor PIR yang dirancang khusus untuk tujuan tersebut
Ilusi mata kotak
• Dalam Sensor Inframerah Pasif (PIR), kata pasif menunjukkan Sensor PIR tidak menghasilkan
atau memancarkan energi apa pun untuk tujuan deteksi.
• Sensor PIR tidak mendeteksi atau mengukur " PANAS ";
• Sensor mendeteksi radiasi inframerah yang dipancarkan atau dipantulkan dari objek.
Sensornya kecil, murah, berdaya rendah dan mudah digunakan. Sensor ini umumnya
ditemukan di rumah, rumah sakit, pabrik dll.
Elemen PIR

PIR
pada
dasarnya
terbuat
dari sensor piroelektrik , yang setiap
objek
(dengan
suhu
rendah)
memancarkan radiasi tingkat rendah,
dan
objek
yang
lebih
panas
memancarkan lebih banyak radiasi.

Sensor ini terbagi dalam dua slot, yang terhubung sehingga mereka membatalkan satu sama lain.

Jika satu setengah melihat lebih banyak atau lebih sedikit radiasi IR daripada yang lain, output akan
berayun tinggi atau rendah.

Sinyal input dari kedua terminal elemen PIR dikuatkan dan dibandingkan menggunakan rangkaian
komparator.

Elemen PIR ditutupi oleh lensa untuk meningkatkan jangkauan operasi.
Pada Posisi Idle

Sensor gerak PIR menggunakan elemen RE200B untuk deteksi inframerah. Kedua slot sensor ini
terhubung ke penguat diferensial.

Saat sensor dalam keadaan idle, kedua slot mendeteksi jumlah IR yang sama.

Jadi, tidak ada sinyal kesalahan antara input diferensial. Output dari rangkaian komparator adalah nol.
Objek bergerak

Ketika benda hangat lewat di depan sensor, ia memotong
satu slot sensor PIR. Ini menyebabkan perubahan
diferensial positif antara kedua slot. Perubahan ini
ditunjukkan oleh Bagian A pada gambar.

Ketika tubuh hangat meninggalkan area penginderaan,
sensor
menghasilkan
perubahan
diferensial
negatif. Perubahan ini ditunjukkan oleh Bagian B pada
gambar.
Mode Operasi
Sensor ini memiliki dua mode operasi:
1. Mode Pemicu Tunggal
Diagram waktu mode pemicu tunggal
•
Untuk memilih mode Pemicu Tunggal, pengaturan jumper pada sensor PIR harus diatur pada LOW.
•
Dalam Single Triggered Mode, Output menjadi TINGGI ketika gerakan terdeteksi.
•
Setelah jeda spesifik (tsel), output beralih ke RENDAH meskipun objek sedang bergerak.
•
Outputnya RENDAH untuk beberapa waktu dan kembali menjadi TINGGI jika objek tetap bergerak.
•
Penundaan ini (tsel) disediakan oleh pengguna menggunakan potensiometer. Potensiometer ini ada di PCB modul sensor
PIR.
•
Dengan cara ini, sensor PIR memberikan pulsa TINGGI / RENDAH jika objek bergerak terus menerus
2. Mode Repeat trigger
Diagram timing mode repeat -trigger
•
Pengaturan jumper pada sensor PIR harus diatur pada TINGGI.
•
Jika Repeat Triggered Mode, Output menjadi TINGGI ketika gerakan terdeteksi.
•
Output dari sensor PIR adalah TINGGI sampai benda bergerak.
•
Ketika objek berhenti bergerak, atau menghilang dari area sensor, PIR melanjutkan status TINGGI hingga beberapa
penundaan tertentu (tsel).
•
Penundaan (tsel) dengan menyesuaikan potensiometer. Potensiometer ini ada di papan modul sensor PIR.
•
Dengan cara ini, sensor PIR memberikan pulsa TINGGI jika benda bergerak terus menerus.
Mengubah Sensitivitas dan Waktu tunda

Ada dua potensiometer pada papan sensor gerak PIR: Penyesuaian Sensitivitas dan Penyesuaian waktu
tunda.

Dimungkinkan untuk membuat PIR lebih sensitif atau Tidak Cukup Sensitif. Sensitivitas maksimum dapat
dicapai hingga 6 meter.

Potensiometer Time Delay Adjust digunakan untuk mengatur timetel yang ditunjukkan pada diagram waktu
di atas.

Gerakan Searah Jarum Jam membuat PIR lebih Sensitif.
Detektor PIR dengan Lensa Fresnel

Dua hal penting saat membuat sensor PIR: Biaya rendah dan
Sensitivitas Tinggi.

Kedua hal ini dapat dicapai dengan menggunakan tutup
Lensa.

Lensa meningkatkan jangkauan operasi; meningkatkan
sensitivitas dan mengubah pola Sensing dengan mudah.
Sketsa Arduino untuk PIR
int LED = D4;
intPIR_Input = D1;
void setup()
{
pinMode(PIR_Input,INPUT);
pinMode(LED,OUTPUT);
}
void loop()
{
digitalWrite(LED, digitalRead(PIR_Input));
delay(10);
}
Antarmuka sensor PIR dengan NodeMCU. Ketika gerakan terdeteksi, output PIR menjadi TINGGI yang akan
dibaca oleh NodeMCU. Jadi LED akan menyala ketika gerakan terdeteksi oleh sensor PIR. LED terhubung ke
pin D4.
Praktek Antarmuka PIR dengan NodeMCU
Bahan dan Alat yang dibutuhkan
• Sensor PIR
:1
• EPS8266
:1
• Kabel mini USB
:1
• Beardboard
:1
Langkah Percobaan
1. Buatlah rangkaian seperti gambar
2. Jalankan program Arduino Anda
3. Buatlah software seperti pada teori di atas dan
simpan
dengan
memberi
nama
sesuai
keinginan anda
4. Hubungkan kabel mini USB ke laptop anda
5. Isikan program Arduino anda
6. Gerak-gerakan tangan anda di depan sensor.
Apa yang terjadi dengan LED nya
7. Berapa
jarak
maksimum
mendeteksi gerakan
sensor
dalam
4
MPU6050 (Digital Motion)
Pendahuluan
Modul sensor MPU6050 adalah perangkat pelacakan gerak 6-sumbu yang terintegrasi.

Memiliki Giroskop 3-sumbu, Accelerometer 3-sumbu, Digital Motion Processor dan sensor
Suhu, semuanya dalam satu IC.

Dapat menerima input dari sensor lain seperti magnetometer 3-sumbu atau sensor
tekanan menggunakan bus I2C Auxiliary-nya.

Jika magnetometer 3-sumbu eksternal terhubung, dapat memberikan output Motion
Fusion 9-sumbu lengkap.
•
Sensor ini menggabungkan 3-axis Gyroscope,
3-axis
Accelerometer
dan
Digital
Motion
Processor semua dalam paket kecil. Memiliki
fitur tambahan sensor Suhu on-chip.
• Pembacaan giroskop dan akselerometer sepanjang sumbu X, Y, dan Z tersedia dalam
bentuk komplemen 2's.
• Pembacaan suhu tersedia dalam bentuk bilangan bulat yang signed (bukan dalam
bentuk komplemen 2's).
• Pembacaan giroskop dalam satuan derajat per detik (dps);
• Pembacaan akselerometer ada dalam unit g; dan Suhu membaca dalam derajat
Celcius.
Giroskop 3-Sumbu
MPU6050 terdiri dari Giroskop 3-sumbu dengan teknologi Micro Electro Mechanical System (MEMS). Digunakan
untuk mendeteksi kecepatan rotasi sepanjang sumbu X, Y, Z

Saat gyro diputar mengenai sumbu indera, Coriolis Effect
menyebabkan getaran yang terdeteksi oleh MEM di dalam MPU6050.

Sinyal yang dihasilkan diperkuat, didemodulasi, dan difilter untuk
menghasilkan tegangan yang sebanding dengan kecepatan sudut.

Tegangan
ini
didigitalkan
menggunakan
16-bit
ADC
untuk
mensampling setiap sumbu.

Rentang output skala penuh adalah +/- 250, +/- 500, +/- 1000, +/2000.

Sensor ini mengukur kecepatan sudut sepanjang setiap sumbu dalam
satuan derajat per detik.
3-Axis Accelerometer
MPU6050 terdiri dari Accelerometer 3-sumbu dengan teknologi Micro Electro Mechanical (MEMs). Digunakan
untuk mendeteksi sudut kemiringan atau kemiringan sepanjang sumbu X, Y dan Z seperti yang ditunjukkan
pada gambar di bawah ini.

Akselerasi
di
sepanjang
sumbu
mengalihkan massa yang bisa bergerak.

Perpindahan plat bergerak ini (massa)
tidak
seimbang
dengan
kapasitor
diferensial yang menghasilkan output
sensor.

Amplitudo keluaran sebanding dengan
akselerasi.

16-bit ADC digunakan untuk mendapatkan
output digital.

Rentang akselerasi skala penuh adalah +/- 2g,
+/- 4g, +/- 8g, +/- 16g.

Diukur dalam satuan g (gaya gravitasi).

Saat perangkat diletakkan pada permukaan
datar, ia akan mengukur 0g pada sumbu X dan
Y dan + 1g pada sumbu Z.
DMP (Digital Motion Processor)
• Embedded Digital Motion Processor (DMP) digunakan untuk menghitung algoritma pemrosesan
gerak.
• Dibutuhkan data dari giroskop, akselerometer, dan sensor pihak ketiga tambahan seperti
magnetometer dan pemrosesan data.
• DMP ini menyediakan data gerak seperti roll, pitch, sudut yaw, lansekap dll.
• Sensor ini meminimalkan proses host dalam menghitung data gerak.
• Data yang dihasilkan dapat dibaca dari register DMP.
Sensor Suhu pada chip
Output sensor suhu on-chip didigitalkan menggunakan ADC. Pembacaan dari sensor suhu dapat
dibaca dari register data sensor.
•
INT
: Meng-interupsi pin output digital.
•
AD0
: I2C Slave Address pin LSB. Ini adalah bit ke-0 dalam alamat
perangkat slave 7-bit. Jika terhubung ke VCC maka itu dibaca sebagai logika
satu dan perubahan alamat slave.
•
XCL
: Pin Clock Serial Bantu. Pin ini digunakan untuk menghubungkan
sensor I2C, diaktifkan I2C pin SCL lainnya ke MPU-6050.

XDA
: pin Data Serial Bantu. Pin ini digunakan untuk menghubungkan sensor I2C, diaktifkan antarmuka
I2C lainnya ke MPU-6050.

SCL
: pin Clock Seri. Hubungkan pin ini ke mikrokontroler pin SCL.

SDA
: pin Data Seri. Hubungkan pin ini ke pin SDA mikrokontroler.

GND : Pin ground. Hubungkan pin ini ke koneksi ground.

VCC
: Pin catu daya. Hubungkan pin ini ke tegangan + 5V DC.

Modul MPU-6050 memiliki alamat Slave (Ketika AD0 = 0, artinya tidak terhubung ke Vcc)
o Alamat Slave Write (SLA + W) : 0xD0
o Alamat Slave Read (SLA + R) : 0xD1
Perhitungan
•
Perhatikan bahwa data sensor giroskop dan sensor accelerometer pada modul MPU6050 terdiri dari
data mentah 16-bit dalam bentuk komplemen 2's.
•
Data sensor suhu modul MPU6050 terdiri dari data 16-bit (tidak dalam bentuk komplemen 2's).
Sekarang anggaplah kita telah memilih,
•
Accelerometer rentang skala penuh +/- 2g dengan Faktor Skala Sensitivitas 16.384 LSB (counter) /
g.
•
Giroskop rentang skala penuh +/- 250 ° / s dengan Faktor Skala Sensitivitas 131 LSB (counter) / ° /
s.
•
Untuk mendapatkan data mentah sensor, pertama-tama kita perlu melakukan komplemen 2 pada data
sensor Accelerometer dan giroskop.
•
Setelah mendapatkan data mentah sensor, hitung akselerasi dan kecepatan sudut dengan membagi data
mentah sensor dengan faktor skala sensitivitasnya sebagai berikut,
Nilai akselerometer dalam g (g force)
•
Akselerasi di sumbu X = (data mentah sumbu X Accelerometer / 16384) g.
•
Akselerasi di sumbu Y = (data mentah sumbu Y Accelerometer / 16384) g.
•
Akselerasi di sumbu Z = (data mentah sumbu Z Accelerometer / 16384) g.
Nilai giroskop dalam ° / s (derajat per detik)
•
Kecepatan sudut sumbu X = (data mentah sumbu X Giroskop / 131) ° / s.
•
Kecepatan sudut sumbu Y = (data mentah sumbu Y Giroskop / 131) ° / s.
•
Kecepatan sudut sumbu Z = (data mentah poros Z Giroskop / 131) ° / s.
Nilai suhu dalam ° / c (derajat per Celcius)
Temperatur dalam derajat C = ((data sensor suhu) / 340 + 36,53) ° / c.
Sketsa Arduino untuk NodeMCU
#include <Wire.h>
const uint8_t MPU6050SlaveAddress = 0x68;
const uint8_t scl = D6;
const uint8_t sda = D7;
// MPU6050 Slave Device Address
// Select SDA and SCL pins for I2C communication
// sensitivity scale factor respective to full scale setting
// provided in datasheet
const uint16_t AccelScaleFactor = 16384;
const uint16_t GyroScaleFactor = 131; // MPU6050 few configuration register addresses
const uint8_t MPU6050_REGISTER_SMPLRT_DIV = 0x19;
const uint8_t MPU6050_REGISTER_USER_CTRL = 0x6A;
const uint8_t MPU6050_REGISTER_PWR_MGMT_1 = 0x6B;
const uint8_t MPU6050_REGISTER_PWR_MGMT_2 = 0x6C;
const uint8_t MPU6050_REGISTER_CONFIG
= 0x1A;
const uint8_t MPU6050_REGISTER_GYRO_CONFIG = 0x1B;
const uint8_t MPU6050_REGISTER_ACCEL_CONFIG = 0x1C;
const uint8_t MPU6050_REGISTER_FIFO_EN = 0x23;
const uint8_t MPU6050_REGISTER_INT_ENABLE = 0x38;
const uint8_t MPU6050_REGISTER_ACCEL_XOUT_H = 0x3B;
const uint8_t MPU6050_REGISTER_SIGNAL_PATH_RESET = 0x68;
int16_t AccelX, AccelY, AccelZ, Temperature, GyroX, GyroY, GyroZ;
void setup()
{
Serial.begin(9600);
Wire.begin(sda, scl);
MPU6050_Init();
}
void loop()
{
double Ax, Ay, Az, T, Gx, Gy, Gz;
Read_RawValue(MPU6050SlaveAddress, MPU6050_REGISTER_ACCEL_XOUT_H);
//divide each with their sensitivity scale factor
Ax = (double)AccelX/AccelScaleFactor;
Ay = (double)AccelY/AccelScaleFactor;
Az = (double)AccelZ/AccelScaleFactor;
T = (double)Temperature/340+36.53; //temperature formula
Gx = (double)GyroX/GyroScaleFactor;
Gy = (double)GyroY/GyroScaleFactor;
Gz = (double)GyroZ/GyroScaleFactor;
Serial.print(" Ax: ");
Serial.print(Ax);
Serial.print(" Ay: ");
Serial.print(Ay);
Serial.print(" Az: ");
Serial.print(Az);
Serial.print(" T: ");
Serial.print(T);
Serial.print(" Gx: ");
Serial.print(Gx);
Serial.print(" Gy: ");
Serial.print(Gy);
Serial.print(" Gz: ");
Serial.println(Gz);
delay(100);
}
void I2C_Write(uint8_t deviceAddress, uint8_t regAddress, uint8_t data)
{
Wire.beginTransmission(deviceAddress);
Wire.write(regAddress); Wire.write(data);
Wire.endTransmission();
// read all 14 register
}
void Read_RawValue(uint8_t deviceAddress, uint8_t regAddress)
{
Wire.beginTransmission(deviceAddress);
Wire.write(regAddress);
Wire.endTransmission();
Wire.requestFrom(deviceAddress, (uint8_t)14);
AccelX = (((int16_t)Wire.read()<<8) | Wire.read());
AccelY = (((int16_t)Wire.read()<<8) | Wire.read());
AccelZ = (((int16_t)Wire.read()<<8) | Wire.read());
Temperature = (((int16_t)Wire.read()<<8) | Wire.read());
GyroX = (((int16_t)Wire.read()<<8) | Wire.read());
GyroY = (((int16_t)Wire.read()<<8) | Wire.read());
GyroZ = (((int16_t)Wire.read()<<8) | Wire.read());
}
//configure MPU6050
void MPU6050_Init()
{
delay(150);
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_SMPLRT_DIV, 0x07);
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_PWR_MGMT_1, 0x01);
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_PWR_MGMT_2, 0x00);
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_CONFIG, 0x00);
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_GYRO_CONFIG, 0x00);
//set +/-250 degree/second full scale
scale
}
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_ACCEL_CONFIG, 0x00);
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_FIFO_EN, 0x00);
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_INT_ENABLE, 0x01);
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_SIGNAL_PATH_RESET, 0x00);
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_USER_CTRL, 0x00);
// set +/- 2g full
Praktek Antarmuka MPU6050 dengan NodeMCU
Bahan dan Alat yang dibutuhkan
• Sensor MPU6050 : 1
• EPS8266
:1
• Kabel mini USB
:1
• Beardboard
:1
Langkah Percobaan
1.
Buatlah rangkaian seperti gambar
2.
Jalankan program Arduino Anda
3.
Buatlah software seperti pada teori di atas dan
simpan dengan memberi nama sesuai keinginan
anda
4.
Hubungkan kabel mini USB ke laptop anda
5.
Isikan program Arduino anda
6.
Jalankan Serial Monitor Arduino dengan baud rate
9600
7.
Gerakkan searah sumbu X, sumbu Y dan sumbu Z
8.
Data-data apa saja yang dikirimkan oleh sensor
5
Sensor Magnetometer HMC5883L
Pendahuluan
Prinsip bekerja
Medan magnet bumi hadir dalam ruang
•
yang menunjuk ke arah utara magnetik
seperti pada gambar.
•
Konduktor pengangkut arus juga menghasilkan medan magnet di sekitarnya. Oleh karena itu, setiap kali
konduktor pembawa arus ditempatkan di ruang angkasa, ia mengalami efek medan magnet bumi yang
mempengaruhi aliran elektron melalui konduktor itu.
•
Perubahan dalam aliran elektron ini digunakan untuk mengidentifikasi arah atau arah medan magnet. Ini
adalah prinsip kerja dasar dari magnetometer
Azimuth (x = 0, y <0) = 90
Azimuth (x = 0, y> 0) = 270
Azimuth (x <0) = 180 - [arc tan (y / x)] * 180 / π
Azimuth (x> 0, y <0) = - [arc tan (y / x)] * 180 / π
Azimuth (x> 0, y> 0) = 360 - [arc tan (y / x)] * 180 / π
Yang memberikan sudut Azimuth (α) dari 0 hingga 360 derajat dalam arah X relatif terhadap utara
magnetik.
fitur HMC5883L seperti,

Digunakan untuk kompas dan magnetometri biaya rendah.

Memiliki 12-bit ADC dan akurasi heading kompas hingga 1 ° hingga 2 °.

Memiliki teknologi Honeywell Anisotropic Magneto Resistive (AMR) yang menyediakan
presisi dalam sensitivitas sumbu dan linearitas.

Menggunakan protokol komunikasi I2C untuk berkomunikasi dengan mikrokontroler.
Alamat Lokasi
Nama
Mengakses
00
Daftar Konfigurasi A
Read Write
01
Daftar Konfigurasi B
Read Write
02
Mode Daftar
Read Write
03
Output Data X Daftar MSB
Read
04
Output Data X Daftar LSB
Read
05
Output Data Z Daftar MSB
Read
06
Output Data Z Daftar LSB
Read
07
Output Data Y MSB Register
Read
08
Output Data Daftar Y LSB
Read
09
Daftar Status
Read
10
Daftar Identifikasi A
Read
11
Daftar Identifikasi B
Read
12
Daftar Identifikasi C
Read
•
VCC : Hubungkan suplai 5V DC ke pin ini.
•
GND : Hubungkan ground ke pin ini.
•
SCL : Hubungkan pin SCL dari perangkat master ke pin ini.
•
SDA : Hubungkan pin SDA dari perangkat master ke pin ini.
•
DRDY : Output data sinyal pin status READY dari modul ke
perangkat master.
Dari Tabel

Daftar Konfigurasi A digunakan untuk mengatur laju keluaran data dan mode pengukuran modul.

Daftar Konfigurasi B digunakan untuk mengatur penguatan perangkat.

Mode register digunakan untuk mengatur mode operasi HMC5883L seperti mode Idle, mode pengukuran
tunggal, mode pengukuran berkelanjutan.

Data Output Register digunakan untuk menyimpan nilai sumbu X, Y dan Z.

Karena nilai-nilai ini selebar 16-bit,

nilai-nilai tersebut disimpan dalam dua register 8-bit.

Jadi, kita perlu membaca setiap nilai sumbu dari dua register 8-bit.

Nilai-nilai ini dalam bentuk komplemen 2 , perlu disalin dalam variabel signed 16-bit untuk mendapatkan
nilai desimal.

Status Register memberikan status siap perangkat dan status register output data yaitu apakah terkunci atau
tidak.

Register Identifikasi digunakan untuk mengidentifikasi perangkat.
Alamat tulis perangkat budak (SLA + W) : 0x3C
Alamat baca perangkat slave (SLA + R) : 0x3D
Sketsa Arduino untuk NodeMCU
#include <Wire.h>
#define Declination
-0.00669
#define hmc5883l_address
0x1E
void setup()
{
Serial.begin(9600); /* begin serial for debug */
Wire.begin(D6, D5);
/* join i2c bus with SDA=D6 and SCL=D5 of NodeMCU */
hmc5883l_init();
}
void loop()
{
Serial.print("Heading Angle : ");
Serial.println(hmc5883l_GetHeading());
delay(150);
}
void hmc5883l_init() /* Magneto initialize function */
{
Wire.beginTransmission(hmc5883l_address); Wire.write(0x00);
Wire.write(0x70);
//8 samples per measurement,15Hz data output rate, Normal measurement
Wire.write(0xA0);
Wire.write(0x00); //Continuous measurement mode
Wire.endTransmission();
delay(500);
}
int hmc5883l_GetHeading()
{
int16_t x, y, z;
double Heading;
Wire.beginTransmission(hmc5883l_address);
Wire.write(0x03);
Wire.endTransmission(); /* Read 16 bit x,y,z value (2's complement form) */
Wire.requestFrom(hmc5883l_address, 6);
x = (((int16_t)Wire.read()<<8) | (int16_t)Wire.read());
z = (((int16_t)Wire.read()<<8) | (int16_t)Wire.read());
y = (((int16_t)Wire.read()<<8) | (int16_t)Wire.read());
Heading = atan2((double)y, (double)x) + Declination;
if (Heading>2*PI) /* Due to declination check for >360 degree */
Heading = Heading - 2*PI;
if (Heading<0) /* Check for sign */
Heading = Heading + 2*PI;
return (Heading* 180 / PI);/* Convert into angle and return */
}
Praktek Antarmuka Magnetometer HMC5883L dengan NodeMCU
Bahan dan Alat yang dibutuhkan
• Sensor HMC5883L
:1
• EPS8266
:1
• Kabel mini USB
:1
• Beardboard
:1
Langkah Percobaan
1.
Buatlah rangkaian seperti gambar
2.
Jalankan program Arduino Anda
3.
Buatlah software seperti pada teori di atas dan
simpan dengan memberi nama sesuai keinginan
anda
4.
Hubungkan kabel mini USB ke laptop anda
5.
Isikan program Arduino anda
6.
Jalankan Serial Monitor Arduino dengan baud rate
9600
7.
Data-data apa saja yang dikirimkan oleh sensor
6
Sensor Kelembaban Tanah
Pendahuluan
• Kelembaban tanah pada dasarnya adalah kandungan air yang ada di tanah.
• Dapat diukur menggunakan sensor kelembaban tanah yang terdiri dari dua probe
konduksi yang bertindak sebagai probe.
• Dapat mengukur kadar air di tanah berdasarkan perubahan resistansi antara dua pelat
konduksi.
• Ketahanan antara dua pelat konduksi bervariasi secara terbalik dengan jumlah
kelembaban yang ada di tanah.

Sensor kelembaban tanah memiliki dua pelat konduktor. Plat
pertama terhubung ke pasokan + 5Volt melalui resistansi seri 10K
ohm dan pelat kedua terhubung langsung ke GND.
Sensor ini hanya bertindak sebagai rangkaian pembagi tegangan,

dan output diambil langsung dari terminal pertama pin sensor,
yang ditunjukkan pada gambar di atas.
•
Output akan berubah dalam kisaran 0 - 5 Volt, sebanding dengan
perubahan kadar air di tanah

Idealnya, ketika kelembaban di tanah 0, sensor bertindak sebagai
rangkaian terbuka yaitu resistansi tak terbatas. Untuk kondisi ini,
tegangan outputnya 5V.
•
Mengukur kelembaban tanah dalam persentase.
•
Output analog dari sensor kelembaban tanah diproses
menggunakan ADC.
•
Kadar air dalam persentase ditampilkan pada monitor
serial.
•
Output dari sensor kelembaban tanah berubah dalam
kisaran nilai ADC dari 0 hingga 1023 (10 bit).
•
Nilai ini dapat direpresentasikan sebagai nilai kelembaban
dalam persentase menggunakan rumus yang diberikan di
bawah ini.
•
Analog Output = ADC Value / 1023
•
Moisture in percentage = 100 – (Analog output * 100)
Sketsa Arduino untuk Kelembaban Tanah
const int sensor_pin = A0;
/* Connect Soil moisture analog sensor pin to A0 of NodeMCU */
void setup()
{
Serial.begin(9600);
}
/* Define baud rate for serial communication */
void loop()
{
float moisture_percentage;
moisture_percentage = (100.00-((analogRead(sensor_pin)/1023.00) * 100.00 ));
Serial.print("Soil Moisture(in Percentage) = ");
Serial.print(moisture_percentage); Serial.println("%");
delay(1000);
}
Praktek Antarmuka Kelembaban Tanah dengan NodeMCU
Bahan dan Alat yang dibutuhkan
• Sensor
:1
• EPS8266
:1
• Kabel mini USB
:1
• Beardboard
:1
Langkah Percobaan
1.
Buatlah rangkaian seperti gambar
2.
Jalankan program Arduino Anda
3.
Buatlah software seperti pada teori di atas dan
simpan dengan memberi nama sesuai keinginan
anda
4.
Hubungkan kabel mini USB ke laptop anda
5.
Isikan program Arduino anda
6.
Jalankan Serial Monitor Arduino dengan baud rate
9600
7.
Biarkan sensor di udara. Berapakah kelembabannya
8.
Masukkan sensor di gelas yang berisi air. Berapakah
kelembabannya
7
Thermistor
Pendahuluan

Thermistor (Termal Resistor), resistansinya berubah sesuai dengan perubahan suhu.

Thermistor tidak mahal, andal, dan respon cepat, sehingga termistor cocok digunakan
untuk pengukuran suhu rendah.

Thermistor banyak digunakan dalam termometer digital dan peralatan rumah tangga seperti
lemari es, oven, dan sebagainya.

Thermistor tersedia dalam berbagai bentuk seperti rod, disc, bead, washer, dll.

Thermistor berbeda dari RTD. Dalam Thermistor, bahan semikonduktor
digunakan sementara RTD memiliki logam murni.

Selain itu, RTD berguna untuk rentang suhu besar sedangkan Thermistor mempunyai
rentang suhu kecil biasanya -100 ° C hingga 300 ° C.
Jenis-jenis Termistor
1. PTC (Koefisien suhu positif) Tipe
Thermistor

Dalam thermistor koefisien suhu
positif,
resistansi
termistor
meningkat dengan meningkatnya
suhu.

Termistor PTC dibagi menjadi dua kelompok berdasarkan
a. Bahan yang digunakan
b. Struktur dan proses pembuatannya

Kelompok pertama, thermistor terdiri dari silistor, yang menggunakan silikon sebagai bahan semikonduktif
karena karakteristik liniernya.

Kelompok kedua adalah thermistor PTC tipe switching. Jenis termistor PTC ini banyak digunakan pada
pemanas PTC, sensor, dll.

Termistor PTC sebagian besar digunakan sebagai pemanas yang self controlled, untuk perlindungan arus
berlebih, dll.
2.
Thermistor tipe NTC (koefisien suhu negatif):
Dalam termistor koefisien suhu negatif, resistansi
menurun dengan meningkatnya suhu
NTC Thermistor Resistance vs Temperature

Thermistor NTC terbuat dari bahan semikonduktor (seperti oksida logam dan keramik)

Sebagian besar sensor thermistor NTC biasanya cocok untuk kisaran suhu antara -55 ° C
hingga + 150 ° C
Cara Menggunakan Termistor NTC untuk Pengukuran Suhu
Rangkaian Pembagi Tegangan
Output termistor berubah dalam resistansi. Perubahan resistansi ini dapat diukur menggunakan rangkaian pembagi
tegangan dengan menambahkan resistansi satu seri dengan termistor
Tegangan keluaran analog yang merupakan fungsi dari perubahan resistansi
dengan perubahan suhu.
Konversikan tegangan analog ke tahanan Termistor
dimana,
Output ADC
: nilai digital Vout (dari 0 hingga 1023).
Series Resistor
: dalam diagram sirkuit yang ditunjukkan di atas, digunakan resistor seri 10K ohm.
Hitung Temperatur dari Resistansi
Persamaan Steinhart hart
•
Persamaan Steinhart hart :
digunakan untuk mendapatkan suhu termistor yang tepat karena memberikan perkiraan yang lebih
dekat dengan suhu aktual daripada persamaan yang lebih sederhana, dan berguna untuk seluruh
rentang suhu kerja sensor.
dimana,
• T
• R
: suhu dalam kelvin
: logaritma natural dari perlawanan
• A, B,C : koefisien yang berasal dari pengukuran eksperimental.
Persamaan Parameter

Tetapi dalam persamaan Steinhart-Hart di atas, kita harus mengetahui atau menghitung variabel
yang berbeda (A, B dan C). Jadi, kita bisa menggunakan persamaan parameter B berikut.

Ini juga merupakan persamaan Steinhart-Hart dengan C = 0.
dimana, (Semua suhu dalam Kelvin)
T0 : Suhu Kamar yaitu 25ºC = 298.15 K
B : Koefisien termistor (diberikan pada Termistor)
R0 : Resistansi pada suhu kamar.
Misalnya 10 K NTC memiliki ketahanan 10 ribu pada suhu kamar.
•
Mengukur suhu menggunakan termistor. Thermistor tipe NTC dari 10 kΩ (resistensi termistor) digunakan. NTC 10kΩ
berarti bahwa termistor ini memiliki resistansi 10kΩ pada 25 ° C. Tegangan melintasi resistor 10kΩ diberikan ke ADC
NodeMCU.
•
Kita dapat menghitung tegangan pada resistor seri 10kΩ (R2 pada gambar) :
Vout = VCC * ADC_Value / ADC_Resolution
dimana, Vout adalah tegangan yang diukur oleh ADC dari NodeMCU. Suhu dapat ditemukan dari resistansi termistor
menggunakan persamaan Steinhart-Hart:
Temperatur (dalam kelvin) = 1 / (A + B [ln (Rth)] + C [ln (Rth)] ^ 3)
dimana, A = 0,001129148,
B = 0,000234125,
C = 8.76741 * 10 ^ -8
•
Rth adalah resistansi termistor.
•
Resistansi termistor (Rth) dapat ditemukan menggunakan rumus rangkaian pembagi tegangan
sederhana.
Rth + 10k = VCC * 10k / Vout
dimana,
Rth adalah hambatan termal
Sketsa Arduino untuk termistor
const double VCC = 3.3;
const double R2 = 10000;
const double adc_resolution = 1023;
const double A = 0.001129148;
const double B = 0.000234125;
const double C = 0.0000000876741;
void setup()
{
Serial.begin(9600);
}
// NodeMCU on board 3.3v vcc
// 10k ohm series resistor
// 10-bit adc
// thermistor equation parameters
/* Define baud rate for serial communication */
void loop()
{
•
•
}
double Vout, Rth, temperature, adc_value;
adc_value = analogRead(A0);
Vout = (adc_value * VCC) / adc_resolution;
Rth = (VCC * R2 / Vout) - R2;
/* Steinhart-Hart Thermistor Equation:
Temperature in Kelvin = 1 / (A + B[ln(R)] + C[ln(R)]^3) *
where A = 0.001129148, B = 0.000234125 and C = 8.76741*10^-8 */
temperature = (1 / (A + (B * log(Rth)) + (C * pow((log(Rth)),3)))); // Temperature in kelvin
temperature = temperature - 273.15; // Temperature in degree celsius
Serial.print("Temperature = ");
Serial.print(temperature);
Serial.println(" degree celsius");
delay(500);
Praktek Antarmuka Kelembaban Tanah dengan NodeMCU
Bahan dan Alat yang dibutuhkan
• Sensor Thermistor
:1
• EPS8266
:1
• Kabel mini USB
:1
• Beardboard
:1
Langkah Percobaan
1.
Buatlah rangkaian seperti gambar
2.
Jalankan program Arduino Anda
3.
Buatlah software seperti pada teori di atas dan
simpan dengan memberi nama sesuai keinginan
anda
4.
Hubungkan kabel mini USB ke laptop anda
5.
Isikan program Arduino anda
6.
Jalankan Serial Monitor Arduino dengan baud rate
9600
7.
Biarkan sensor di udara. Berapakah temperature
nya?
Download