Mengukur Suhu dan Kelembaban Ruangan dengan menggunakan Sensor DHT11 dan ESP8266 (Part 1)

Mengukur Suhu dan Kelembaban Ruangan dengan menggunakan Sensor DHT11 dan ESP8266 (Part 1)

Setelah berhasil melakukan Pengukuran Suhu dan Kelembaban dengan DHT 11 dan Arduino, kali ini kita akan mencoba untuk melakukan hal yang sama dengan mikrokontroler NodeMCU ESP8266.

Seperti yang kita ketahui bersama, ESP8266 adalah mikrokontroller yang memliki fitur jaringan wireless sehingga sangat cocok digunakan untuk proyek-proyek IoT yang membutuhkan kontrol perangkat dari jarak jauh. Oleh karena itu, tulisan kali ini akan dibagi menjadi beberapa bagian yaitu:

Tulisan ini merupakan tulisan pertama dari 3 bagian yang tersedia dengan judul Mengukur Suhu dan Kelembaban Ruangan dengan menggunakan Sensor DHT11 dan ESP8266. Langsung saja, berikut ini tutorialnya.

Bahan-bahan

pada tutorial ini kita menggunakan sensor DHT 11, NodeMCU ESP8266 dan beberapa helai kabel jumper.

NodeMCU ESP82661 Buah
Sensor DHT111 Buah
Kabel JumperSecukupnya

Skema Rangkaian

Setelah bahan-bahan tersedia, kita lanjutkan ke proses perangkaian komponen. Perhatikan gambar skema dibawah ini dengan seksama agar tidak salah colok kabel

Program / Sketch

Hubungkan NodeMCU ESP8266 ke komputer lewat kabel USB dan pilih board (saya menggunakan NodeMCU 1.0(ESP-12E Module)) dan port dengan benar lalu upload program dibawah ini:

#include "DHT.h"

#define DHTPIN 4    
#define DHTTYPE DHT11   
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(115200);
  dht.begin();
}

void loop() {
  delay(2000);
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  
    if (isnan(h) || isnan(t)) {
    Serial.println(F("gagal membaca DHT11"));
    return;
  }

  Serial.print(F("Kelembaban: "));
  Serial.print(h);
  Serial.print(F("%  Suhu Udara: "));
  Serial.print(t);
  Serial.println(F("°C "));
}

Jika rangkaian telah dirakit dengan benar dan sketch atau program juga telah diketik dengan benar maka kita bisa melihat hasilnya pada layar serial monitor seperti dibawah ini.

perhatikan juga baudrate yang ada pada serial monitor harus sama dengan yang ada pada sketch yaitu 115200.

Jika tampilan serial monitor sudah menunjukkan nilai kelembaban dan suhu, maka bisa dikatakan peragaaan yang kamu kerjakan telah berhasil.

Ok, segitu aja tulisan untuk bagian pertama ini, kita lanjut ke bagian ke-2 yaitu : Mengirim data sensor DHT11 dari ESP8266 firebase.
Sekian dan terima kasih

Pengukuran Suhu dan Kelembaban dengan DHT 11 dan Arduino

Pengukuran Suhu dan Kelembaban dengan DHT 11 dan Arduino

Salah satu kemudahan yang kita dapatkan dari development board Arduino adalah kemampuannya untuk membaca berbagai kondisi lingkungan dengan bantuan bermacam-macam sensor. Sensor-sensor ini dapat dengan mudah dihubungkan dengan Arduino dan mudah pula di program dengan bantuan berbagai library yang telah tersedia secara default di Arduino IDE maupun dari berbagai sumber di internet.

Pada tulisan ini saya akan mencoba untuk memberi tutorial tentang cara mengukur suhu dan kelembaban ruangan dengan menggunakan Arduino dan sensor DHT-11. Hasil pengukuran pada tutorial ini akan ditampilkan pada serial monitor sehingga kita bisa melihat hasilnya secara langsung.

DHT-11

DHT11 adalah salah satu jenis sensor yang sering digunakan bersama-sama arduino. Sensor ini digunakan untuk mengukur suhu dan kelebaban udara disekitarnya. Spesifikasi umum dari sensor DHT 11 adalah sebagai berikut:

  • Tegangan kerja antara 3-5 Volt
  • Rentang pengukuran suhu antara 0-50 derajat celcius
  • Rentang pengukuran kelembaban antara 20-90% RH (kelembaban Relatif)
  • Kebutuhan Arus 0.5 mA – 2.5 mA
DHT11

Perakitan

Bahan-bahan

Arduino Uno1 Buah
DHT 111 Buah
BreadBoard1 Buah
kabel JumperSecukupnya

Skema Rangkaian

ArduinoDHT 11
5VVCC
GNDGND
Pin 2Dout

Sketch / Program

Setelah rangkaian berhasil dibuat, maka langkah berikutnya adalah menulis dan mengupload program yang telah ditulis ke Arduino.

Ketiklah program dibawah ini dengan menggunakan Arduino IDE, lalu lakukan proses upload ke Arduino dengan menghubungkan Arduino lewat USB. Jangan lupa tentukan tipe Arduino dan port yang di gunakan pada menu tools.

#include "DHT.h"

#define DHTPIN 2    
#define DHTTYPE DHT11   
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  dht.begin();
}

void loop() {
  delay(2000);
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  
    if (isnan(h) || isnan(t)) {
    Serial.println(F("gagal membaca DHT11"));
    return;
  }

  Serial.print(F("Kelembaban: "));
  Serial.print(h);
  Serial.print(F("%  Suhu Udara: "));
  Serial.print(t);
  Serial.println(F("°C "));
}

Jika program atau sketch telah berhasil dibuat dan telah di upload, maka langkah berikutnya adalah membuka menu serial monitor. Pada serial monitor akan terlihat hasil pembacaan kelembaban dan temperatur dalam satuan % dan celcius seperti yang terlihat dibawah ini.

Nah, itu tadi langkah-langkah untuk mengukur suhu udara dan kelembaban dengan menggunakan DHT11 dan Arduino. Semoga bermanfaat dan sampai ketemu pada tulisan-tulisan berikutnya….

Pulse Width Modulation (PWM)

Pulse Width Modulation (PWM)

Apa itu PWM?

PWM adalah teknik mengontrol denyutan atau pulsa pada sinyal digital untuk menirukan sinyal analog. Teknik PWM ini biasa digunakan untuk mengatur kecepatan motor, tingkat kecerahan pada LED dan sebagainya dalam rangkaian digital.

Pada tulisan sebelumnya tentangi sinyal Analog dan Digital saya sudah membahas tentang sinyal analog dan digital. Sinyal digital adalah jenis sinyal yang hanya memiliki 2 output yaitu HIGH atau kondisi on (biasanya 5 volt) dan LOW atau kondisi off (0 volt) sehingga pada dasar nya hanya bisa membuat output hidup dan mati saja mirip seperti saklar biasa untuk menghidupkan lampu dan kita tidak bisa membuat output dengan kondisi antara 5 – 0 volt dengan menurunkan tegangan secara bertahap seperti pada sinyal analog. perhatikan video dibawah ini dengan seksama.

Sinyal Analog
Sinyal Digital

Berdasarkan video diatas, kita dapat dengan mudah mengontrol output menjadi terang dan redup dengan menaikkan/menurunkan tegangan pada sinyal analog namun kita tidak bisa melakukan hal yang sama terhadap sinyal digital karena sifat gelombangnya.

untuk mengatasi hal itu maka digunakanlah teknik PWM untuk mengatur intensitas output pada rangkaian digital.

Cara Kerja PWM

PWM bekerja dengan cara memodifikasi duty cycle atau siklus kerja dari sinyal digital tersebut. untuk lebih memahami apa itu duty cycle, perhatikan grafik dibawah ini:

50% duty cycle
50% duty cycle dan 25% duty cycle (kotak merah)
25% duty cycle dan 10% duty cycle (kotak merah)
50% duty cycle dan 70% duty cycle (kotak merah)

Setelah kita perhatikan gambar diatas, kita dapat menyimpulkan bahwa semakin besar persentase duty cycle maka sinyal akan berada pada kondisi HIGH (5 volt) dalam waktu yang lebih lama dan sebaliknya jika persentase duty cycle semakin kecil maka sinyal akan HIGH dalam waktu yang lebih pendek. Kita bisa menggunakan pengetahuan ini untuk mengontrol output pada rangkaian digital.

Pada dasarnya, sebuah LED pada sebuah rangkaian digital selalu berkedip-kedip dengan frekuensi tinggi yang tidak bisa dilihat oleh mata kita. Dengan memodifikasi duty cycle ini, kita dapat membuat LED berada di kondisi HIGH lebih lama sehingga LED terlihat lebih terang misalnya pada duty cycle 75%. Untuk membuat LED menjadi lebih redup, kita tinggal merubah persentase duty cycle menjadi 50% atau dibawahnya, dimana pada duty cycle ini LED berada di kondisi HIGH yang lebih pendek sehingga cahaya yang terlihat oleh mata kita lebih sedikit.

Segitu saja penjelasan saya tentang PWM dan cara kerjanya, semoga penjelasannya gampang dipahami. Dengan adanya microcontroller board seperti Arduino maupun NodeMCU, penggunaan PWM menjadi semakin mudah dan berikut ini adalah contoh penggunaan teknik PWM dengan fungsi analogWrite() pada Arduino.

Teknik PWM dengan menggunakan fungsi analogWrite()

Analog dan Digital

Analog dan Digital

Untuk lebih memahami cara kerja Arduino atau mikrokontroler lainnya yang sejenis, kita perlu memahami 2 jenis sinyal elektronik yaitu sinyal analog dan sinyal digital. Pada tulisan ini saya akan mencoba untuk menjelaskan keduanya.

Analog dan Digital

Signal analog adalah jenis signal elektronik yang bersifat continyu atau tidak terputus-putus dengan amplitudo yang berubah-ubah seiring waktu karena perubahan tegangan. Signal analog dapat dengan mudah dimanipulasi atau di kontrol dengan cara merubah tegangan dalam rangkaian. Untuk mempermudah penjelasan ini, perhatikan video berikut:

Simulasi rangkaian analog

Sinyal digital adalah sinyal elektronik berupa signal terputus-putus (berbentuk pulsa atau denyutan) HIGH dan LOW dengan frekuensi yang sangat cepat sehingga memiliki bentuk gelombang kotak naik dan turun setiap saat. Signal digital ini tidak terpengaruh oleh perubahan tegangan. Signal akan bernilai HIGH jika ada tegangan misalnya 5 volt dan bernilai LOW jika tidak ada tegangan (0 Volt). Sinyal ini dapat dimanipulasi atau di kontrol dengan teknik PWM. Perhatikan video dibawah ini:

Simulasi signal digital

Baiklah sampai disini dulu tulisan ini, mungkin masih banyak kekurangan disana sini. semoga bermanfaat.

Mengontrol Output pada NodeMCU ESP8266 Dengan Web Server

Mengontrol Output pada NodeMCU ESP8266 Dengan Web Server

pada tulisan ini, kita akan mencoba untuk membuat sebuah web server pada NodeMCU ESP 8266 untuk mengontrol output berupa lampu LED. Dengan menggunakan cara ini, kita dapat mengontrol berbagai macam peralatan yang terhubung dengan NodeMCU ESP8266 dengan menggunakan browser yang terhubung dengan jaringan lokal yang ada dirumah kita.

Langsung saja, kita persiapkan alat dan bahan yang dibutuhkan.

Alat dan Bahan

Alat:

  • Laptop / komputer yang sudah terinstal Arduino IDE
  • Kabel data microUSB untuk mengupload sketch/program ke nodeMCU

Bahan:

  • NodeMCU ESP8266
  • LED
  • Kabel Jumper
  • Breadboard

Skema Rangkaian

langkah berikutnya, kita rangkai NodeMCU ESP8266 dan LED sesuai rangkaian yang ada dibawah ini:

Skema NodeMCU webserver dengan Breadboard
NodeMCU ESP8266LED
D0Anode (+)
GNDCathode (-)

Menginstal Board ESP8266 ke Arduino IDE

Supaya NodeMCU ESP8266 dapat di program dengan menggunakan Arduino IDE, kita perlu menginstal additional board ESP8266 ke dalam aplikasi Arduino IDE dengan cara:

Buka aplikasi Arduino IDE lalu klik File — Preferences…

Pada Tab settings — Additional boards manager URL, copy dan pastekan URL berikut kedalam kotak:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

Lalu Klik OK.

Seteleh itu kita ke menu boards manager dan ketikkan ESP8266 pada kotak pencarian. Setelah board ditemukan, instal board esp8266 dengan cara mengklik tombol install.

Tunggu instalasi sampai selesai lalu tutup dan buka kembali aplikasi Arduino IDE untuk memastikan board terinstal dengan baik.

Program / Sketch

Buka kembali Arduino IDE lalu klik File — New Sketch

Ketikkan sketch dibawah ini:

#include <ESP8266WiFi.h>
const char* ssid     = "Wifi_saya";
const char* password = "1234567890";

WiFiServer server(80);

String header;

String outputState = "off";

const int ledPin = 5;

unsigned long currentTime = millis();
unsigned long previousTime = 0; 
const long timeoutTime = 2000;

void setup() {
  Serial.begin(115200);
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected.");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  server.begin();
}

void loop(){
  WiFiClient client = server.available();   

  if (client) {                             
    Serial.println("New Client.");          
    String currentLine = "";                
    currentTime = millis();
    previousTime = currentTime;
    while (client.connected() && currentTime - previousTime <= timeoutTime) { 
      currentTime = millis();         
      if (client.available()) {             
        char c = client.read();             
        Serial.write(c);                    
        header += c;
        if (c == '\n') {                    
          if (currentLine.length() == 0) {
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
            client.println("Connection: close");
            client.println();
            
            if (header.indexOf("GET /5/on") >= 0) {
              Serial.println("GPIO 5 on");
              outputState = "on";
              digitalWrite(ledPin, HIGH);
            } else if (header.indexOf("GET /5/off") >= 0) {
              Serial.println("GPIO 5 off");
              outputState = "off";
              digitalWrite(ledPin, LOW);
            } 
            
            client.println("<!DOCTYPE html><html>");
            client.println("<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">");
            client.println("<link rel=\"icon\" href=\"data:,\">");
            client.println("<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}");
            client.println(".button { background-color: #B0DAFF; border: none; color: white; padding: 16px 40px;");
            client.println("text-decoration: none; font-size: 30px; margin: 2px; cursor: pointer;}");
            client.println(".button2 {background-color: #FEFF86;}</style></head>");
            
            client.println("<body><h1>NodeMCU Webserver</h1>");
            
            client.println("<p>GPIO 5 - State " + outputState + "</p>");
            if (outputState=="off") {
              client.println("<p><a href=\"/5/on\"><button class=\"button\">Hidupkan</button></a></p>");
            } else {
              client.println("<p><a href=\"/5/off\"><button class=\"button button2\">Matikan</button></a></p>");
            } 
               
            client.println("</body></html>");
            
            client.println();
            break;
          } else { 
            currentLine = "";
          }
        } else if (c != '\r') {  
          currentLine += c;      
        }
      }
    }
    header = "";
    client.stop();
    Serial.println("Client disconnected.");
    Serial.println("");
  }
}

Meng-upload Sketch / program ke NodeMCU

Jika sketch telah selesai di ketikkan, maka langkah berikutnya adalah mengupload sketch yang telah selesai tadi ke mikrokontroler NodeMCU ESP 8266. Untuk itu, langkah-langkah yang harus dilakukan adalah:

Pertama, hubungkan kabel USB dari laptop ke NodeMCU ESP8266.

Setelah itu, di kotak pemilihan board dan port, kita pilih board NodeMCU 1.0 (ESP-12E Module) dan port nya sesuai dengan port yang sedang aktif. Tekan OK lalu klik tombol UPLOAD lalu tunggu sampai selesai

Upload bisa dikatakan berhasil jika tampilan output nya seperti gambar dibawah ini

Langkah berikutnya, kita buka serial monitor untuk mengetahui apakah modul NodeMCU ESP8266 telah terhubung ke wifi dan melihat alamat IP.

Setelah IP address sudah didapatkan, kita buka browser pada HP atau laptop kita, lalu pada address bar kita ketikkan IP address sesuai yang terlihat di serial monitor.

Jika ketika tombol “hidupkan” ditekan atau di klik, maka LED yang terhubung ke NodeMCU ESP8266 akan hidup dan tombol akan berubah menjadi “matikan”

Demikianlah tulisan hari ini, semoga tulisannya gampang dimengerti dan semoga tulisannya juga bermanfaat.

Mengontrol servo dengan Potensiometer

Mengontrol servo dengan Potensiometer

Setelah memahami cara mengontrol LED dengan menggunakan potensiometer, kita lanjutkan lagi pembahasan kita ke peragaan berikutnya yaitu mengontrol motor servo dengan potensiometer.

Seperti yang telah kita ketahui sebelumnya, motor servo adalah sejenis motor yang dapat bergerak dan berhenti kearah sudut tertentu. untuk mengatur derajat yang diinginkan , kita harus menuliskan angka 0-180 didalam fungsi Servo.write. Contohnya:

void loop(){
Servo.write(90);
}

Untuk peragaan kali ini, kita akan menggunakan putaran potensiometer untuk memutar lengan servo kearah yang kita inginkan. Jika kita putar potensiometer ke kanan maka servo akan bergerak ke kanan dan begitu juga sebaliknya.

Gambar Rangkaian

ArduinoServoPotensiometer
D6pin signal (kabel oranye)
A0wiper (pin signal)
5Vpin power (kabel merah)pin masuk
GNDpin GND (kabel coklat)pin keluar

Coding

Langkah pertama dalam menulis kode untuk peragaan ini adalah menuliskan variabel-variabel untuk servo dan potensiometer, selain itu jangan lupa menambahkan library servo dengan cara mengetikkan #include <servo.h>.

#include <Servo.h> 
//potensiometer
int potPin = A0;
int nilaiPot;

//servo

int servoPin = 6;

Servo myservo;

Berikutnya, kita aktifkan pin digital 6 untuk mengontrol servo dengan mengetikkan servo.attach(servoPin); didalam void setup().

void setup() {
    myservo.attach(servoPin);
}

Selanjutnya pada void loop(), kita tuliskan program untuk membaca nilai analog dari potensiometer terlebih dahulu

nilaiPot = analogRead(potPin);

Selanjutnya, kita akam mengkonversi nilai analog yang dibaca tadi menjadi derajat putaran pada servo

int angle = map(nilaiPot,0,1023,0,180);

fungsi map () diatas akan merubah nilai antara 0 – 1023 pada potensiometer menjadi nilai antara 0-180. Setelah itu, kita ketikkan fungsi pembacaan servo dengan mengetikkan:

myservo.write(angle);

Jika semua baris program telah diketikkan dengan benar dan telah berhasil di upload, maka hasilnya akan terlihat seperti video dibawah ini

keseluruhan program diatas dapat kita lihat dibawah ini:

#include <Servo.h> 
//potensiometer
int potPin = A0;
int nilaiPot;

//servo
int servoPin = 6;
Servo myservo;

void setup()
{
  myservo.attach(servoPin);
}

void loop()
{
  nilaiPot = analogRead(potPin);
  int angle = map(nilaiPot,0,1023,0,180);
  myservo.write(angle);
}

Bagaimana? mudah kan?
Selamat berkarya

Mengontrol LED dengan potensiometer

Mengontrol LED dengan potensiometer

Sebelumnya sudah kita sudah membahas tentang cara membaca tegangan/nilai analog yang berasal dari potensiometer. Untuk tulisan hari ini, kita akan memperagakan bagaimana mengolah hasil pembacaan nilai analog dari potensiometer dan menggunakannya untuk mengontrol output pada barisan LED.

Perhatikan rangkaian berikut:

Pada peragaan ini kita akan mengontrol 6 buah LED berdasarkan hasil pembacaan nilai analog yang terbaca dari potensiometer, dimana setiap LED akan menyala satu persatu sejalan dengan putaran potensiometer. Semakin jauh putaran potensiometer, semakin banyak LED yang akan hidup.

Langkah Kerja

Setelah kita merangkai seluruh komponen seperti gambar diatas, bukalah kembali program pembacaan nilai potensiometer yang telah dipelajari pada tulisan sebelumnya atau jika tidak ada, maka ketikkan program dibawah ini.

int potPin = A0;
int nilaiPot;

void setup() {
  Serial.begin(9600);
}

void loop() {
  nilaiPot = analogRead(potPin);
  Serial.println(nilaiPot);
  delay(100);
}

Untuk dapat mengontrol LED, kita harus melakukan modifikasi pada program diatas dengan menambahkan variabel untuk LED:

int potPin = A0;
int nilaiPot;

//Pin LED
int led1 = 2;
int led2 = 3;
int led3 = 4;
int led4 = 5;
int led5 = 6;
int led6 = 7;

Pada fungsi setup ( ), tambahkan baris-baris program untuk mengaktifkan pin 2 sampai 6 sebagai OUTPUT.

void setup() {
  Serial.begin(9600);
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
  pinMode(led6, OUTPUT);
}

Langkah berikutnya, kita akan membagi nilai maksimal yang terbaca dari potensiometer sesuai dengan jumlah LED yaitu:

1023 / 6 = 107.5

Hasil pembagian diatas kemudian kita gunakan sebagai acuan untuk menghidupkan dan mematikan barisan LED dengan ketentuan setiap LED akan hidup satu persatu setiap kelipatan 107. dengan demikian kita bisa menuliskan program untuk led ke 1 sebagai berikut:

int hasilBagi = 1023/6;

if(nilaiPot>hasilBagi){
   digitalWrite(led1, HIGH);
}
else {
   digitalWrite(led1, LOW);

Program diatas jika diterjemahkan akan berbunyi “jika nilai potensiometer lebih dari hasil bagi, maka hidupkan led ke-1”. Dengan demikian, untuk led ke 2 dan seterusnya, nilaiPot bisa kita kalikan dengan urutan LED. perhatikan kode program dibawah ini:

if(nilaiPot>hasilBagi*2){
   digitalWrite(led2, HIGH);
}
else {
   digitalWrite(led2, LOW);

if (nilaiPot>hasilBagi*3) {
   digitalWrite (led3, HIGH);
}
else {
   digitalWrite(led2, LOW);
//dst

Setelah semua program diketik sampai selesai, akan terlihat seperti video dibawah ini:

untuk kode program yang lebih lengkap, bisa dilihat dibawah ini:

Coding

int potPin = A0;
int nilaiPot;

//Pin LED
int led1 = 2;
int led2 = 3;
int led3 = 4;
int led4 = 5;
int led5 = 6;
int led6 = 7;

void setup() {
  Serial.begin(9600);
  
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
  pinMode(led6, OUTPUT);
}

void loop() {
  nilaiPot = analogRead(potPin);
  Serial.println(nilaiPot);
  delay(100);
  
  int hasilBagi = 1023/6;
  
  if(nilaiPot>hasilBagi){
   digitalWrite(led1, HIGH);
  }
  else {
    digitalWrite(led1,LOW);
  }
  
  if(nilaiPot>hasilBagi*2){
   digitalWrite(led2, HIGH);
  }
  else {
    digitalWrite(led2,LOW);
  }
  
  if (nilaiPot>hasilBagi*3) {
   digitalWrite (led3, HIGH);
  }
  else {
    digitalWrite(led3,LOW);
  }
  
  if (nilaiPot>hasilBagi*4) {
   digitalWrite (led4, HIGH);
  }
  else {
    digitalWrite(led4,LOW);
  }
  
  if (nilaiPot>hasilBagi*5) {
   digitalWrite (led5, HIGH);
  }
  else {
    digitalWrite(led5,LOW);
  }
  
  if (nilaiPot>hasilBagi*6) {
   digitalWrite (led6, HIGH);
  }
  else {
    digitalWrite(led6,LOW);
  }
}

NB: Untuk membalik pembacaan nilai dari 0-1023 ke 1023-0, bisa kita lakukan dengan cara membalik kaki yang terhubung dengan 5v dan GND

Selamat memperagakan

Membaca nilai Potensiometer dengan menggunakan Arduino

Membaca nilai Potensiometer dengan menggunakan Arduino

Potensiometer merupakan salah satu jenis resistor yang dapat diubah-ubah nilainya (Resistor Variabel). Potensiometer memiliki 3 buah kaki dan sebuah pemutar khusus untuk menentukan besar resistansi. Potensiometer sering digunakan untuk mengatur tegangan pada suatu rangkaian karena potensiometer bekerja dengan prinsip rangkaian pembagi tegangan.

Rangkaian Potensiometer dengan Arduino

Kita bisa menggunakan potensiometer sebagai input untuk mengatur berbagai komponen elektonik seperti LED dan motor dengan bantuan Arduino sebagai kontrolernya. Arduino akan digunakan untuk membaca nilai tegangan pada potensiometer lalu berdasarkan pembacaan nilai tegangan tersebut, Arduino memberi perintah output ke komponen output misalnya LED dan motor.

Sebelum kita mengontrol output dengan Arduino dan potensiometer, terlebih dahulu kita akan mempelajari cara kerja potensiometer yang dirangkaikan dengan Arduino dengan menggunakan serial monitor.

Gambar Rangkaian

Coding

int potPin = A3;
int nilaiPot;

void setup() {
  Serial.begin(9600);
}

void loop() {
  nilaiPot = analogRead(potPin);
  Serial.println(nilaiPot);
  delay(100);
}

Jika program sudah di upload, maka hasilnya akan seperti video berikut ini

Dari video diatas terlihat output pada serial monitor menunjukkan angka antara 0-1023 atau sebaliknya. mengapa demikian?

Arduino melalui pin analog (A0-A5) akan membaca tegangan antara 0-5 V dan merubahnya ke suatu nilai antara 0-1023. Jika tegangan yang terbaca pada potensiometer adalah 5V, maka Arduino akan menampilkan nilai 1023. Sebaliknya, jika nilai tegangan yang terbaca adalah 0V maka Arduino akan menampilkan nilai 0 pada serial monitornya. Nilai pada serial monitor akan berangsur-angsur berkurang ketika potensiometer diputar dan tegangan yang terbaca menurun sampai ke nilai 0.

Kita bisa melakukan pengukuran dengan multimeter untuk membuktikan keterangan diatas. Perhatikan video dibawah ini

Demikianlah cara membaca nilai potensiometer dan menampilkannya ke serial monitor. Dengan pengetahuan ini, kita bisa membuat berbagai macam project Arduino dengan menggunakan potensiometer.

Motor Servo dan Cara Mengontrolnya dengan Arduino

Motor Servo dan Cara Mengontrolnya dengan Arduino

Motor servo adalah salah satu jenis motor yang sering digunakan untuk membuat perangkat robotik. Motor servo memiliki keunikan tersendiri dibandingkan dengan motor DC biasa karena motor servo dapat berputar antara 0 – 180 derajat untuk tipe positional dan 0-360 derajat untuk yang bertipe continuous selain itu motor servo ini juga sangat akurat sehingga sering digunakan untuk sebagai penggerak lengan robot yang membutuhkan keakuratan posisi dalam mengambil atau meletakkan barang.

Menghubungkan Arduino dengan Servo

Sebelum menghubungkan motor servo ke Arduino, ada baiknya kita memperhatikan spesifikasi servo yang akan kita gunakan. Servo dengan spesifikasi dibawah 250 mA bisa langsung diberi tenaga dari pin power 5 volt yang terdapat pada Arduino, sedangkan servo yang memiliki kebutuhan arus diatas 250 mA harus di supply dengan menggunakan power supply terpisah. Untuk kabel signal (biasanya berwarna oranye) pada servo kita hubungkan ke salah satu pin digital Arduino yang memiliki kemampuan PWM (~). Perhatikan gambar berikut

Rangkaian servo dengan supply langsung ke Arduino
Rangkaian servo dengan power supply eksternal

Coding

#include <Servo.h> 

int servoPin = 9;

Servo myservo;

void setup() {
    servo.attach(servoPin);
}

void loop() {
    myservo.write(0);
    delay (2000);
    myservo.write(45);
    delay(1000);
    myservo.write(90);
    delay(1000);
    myservo.write(135);
    delay(1000);
    myservo.write(180);
    delay(1000);
}

Keterangan Program

#include <Servo.h> 

menambahkan library “Servo” kedalam sketch yang sedang ditulis

int servoPin = 9;

Memasukkan nomor pin yang digunakan kedalam variabel “servoPin”. nama variabel bisa disesuaikan dengan jumlah pin yang terhubung dengan servo. Misalnya, int servoPin1, int servoPin2, int servoPin3, dst.

Servo myservo;

memberikan nama object untuk setiap servo yang digunakan. jika servo yang digunakan lebih dari 1 maka bisa dibuat object name myservo1, myservo2, myservo3 dst.

servo.attach(servoPin);

Menghubungkan servo yang akan di kontrol oleh Arduino

myservo.write(45);

Menggerakkan servo kearah yang diinginkan. angka yang terdapat didalam kurung adalah posisi putaran servo. jika servo ingin digerakkan sejauh 90 derajat makan ketikkan myservo.write(90);

Jika program sudah berhasil di upload ke Arduino, maka hasilnya akan terlihat seperti video dibawah ini

Gimana? mudahkan?
selamat mencoba ya….

Mengukur jarak dengan sensor ultrasonik dan indikator LED

Mengukur jarak dengan sensor ultrasonik dan indikator LED

Pada tulisan sebelumnya, kita sudah mencoba untuk mengukur jarak dengan sensor ultrasonik (HC-SR04) yang outputnya ditampilkan melalui serial monitor. Kali ini kita akan mencoba untuk membuat alat pengukur jarak dengan menggunakan sensor yang sama dan menggunakan lampu LED sebagai indikatornya.

Cara kerja alat

Alat pengukur jarak ini akan mengukur jarak benda terhadap sensor ultrasonic dan menampilkan hasil pengukurannya lewat deretan lampu LED. Semakin dekat suatu benda dengan Sensor ultrasonik, semakin banyak lampu LED yang akan hidup.

Skema Rangkaian

Coding

untuk coding nya sama dengan program pada tulisan terdahulu tentang mengukur jarak dengan sensor ultrasonik (HC-SR04), hanya saja kita perlu melakukan penyesuaian dan menambahkan beberapa baris fungsi logika untuk menghidupkan LED berdasarkan jarak yang terbaca oleh Arduino.

int led1=2;
int led2=3;
int led3=4;
int led4=5;
int led5=6;

int trigpin = 10;
int echopin = 9;
long durasi;
long jarak;

void setup() {
  pinMode(led1,OUTPUT);
  pinMode(led2,OUTPUT);
  pinMode(led3,OUTPUT);
  pinMode(led4,OUTPUT);
  pinMode(led5,OUTPUT);

  pinMode(trigpin,OUTPUT);
  pinMode(echopin,INPUT);
}

void loop() {
  digitalWrite(trigpin, LOW);
  delayMicroseconds(5);
  digitalWrite(trigpin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigpin, LOW);

  durasi = pulseIn(echopin,HIGH);
  jarak = (durasi/2) / 29.1;

  if (jarak<30){
    digitalWrite (led1, HIGH);
  }
  else{
    digitalWrite(led1,LOW);
  }

  if (jarak<40){
    digitalWrite (led2, HIGH);
  }
  else{
    digitalWrite(led2,LOW);
  }

if (jarak<50){
    digitalWrite (led3, HIGH);
  }
  else{
    digitalWrite(led3,LOW);
  }

if (jarak<60){
    digitalWrite (led4, HIGH);
  }
  else{
    digitalWrite(led4,LOW);
  }

if (jarak<70){
    digitalWrite (led5, HIGH);
  }
  else{
    digitalWrite(led5,LOW);
  }
}

Setelah program berhasil di upload, maka hasilnya akan terlihat seperti video dibawah ini:

Dari tampilan video diatas, terlihat bahwa semakin dekat suatu objek dengan sensor ultrasonik, maka semakin banyak lampu LED yang menyala.
Bagaimana? mudah kan?