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?