Translate

Monitoring Suhu Temperature Sensor MLX90614 dan LM35

Monitoring Suhu Temperature Sensor MLX90614 dan LM35 


          Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang dapat memonitoring suhu dengan menggunakan 2 buah sensor yang berbeda didalam 1 arduino dengan interface yang digunakan yaitu LCD. untuk lebih jelasnya berikut adalah skema dan programnya.



a. Skema alat


b. Program Arduino IDE

#include <Wire.h>
#include <LiquidCrystal_I2C.h> //library lcd 
LiquidCrystal_I2C lcd(0x27, 16, 2); //setting address lcd
#include <Adafruit_MLX90614.h> //setting library sensor
Adafruit_MLX90614 mlx = Adafruit_MLX90614(); //setting sensor parameter

float TargetC; //inisialisasi variabel
int sensorValue; //inisialisasi variabel
float suhulm35; //inisialisasi variabel

void setup() {
  mlx.begin();
  Serial.begin(9600); //untuk serial
  lcd.begin(); //setting lcd
  lcd.clear(); //clear screen
  lcd.noCursor(); //tidak ada kursor
}

void loop() {

sensorValue = analogRead(A0); //mengambil data adc di pin A0
suhulm35 = (sensorValue * (5.0 / 1023.0))* 100.0; //lalu ubah ke tegangan dan suhu
  
TargetC = mlx.readObjectTempC(); //ambil data sensor mlx

lcd.setCursor(0,0); //untuk menampilkan pada baris atas
lcd.print("Suhu= "); //menampilkan tulisan
lcd.print(TargetC); //menampilkan data
lcd.print(" C    "); //menampilkan tulisan
lcd.setCursor(0,1); //untuk menampilkan pada baris bawah
lcd.print("lm35= "); //untuk menamplkan tulisan
lcd.print(suhulm35); //untuk menampilkan data
lcd.print(" C    "); //untuk menampilkan tulisan

delay(1000); //delay 5000ms
}




c. VIDEO HASILNYA





Alat Penghitung / Counter Barang Benda Realtime dan Fitur Setting ID Barang

 Alat Penghitung / Counter Barang Benda Realtime dan Fitur Setting ID Barang

       
        Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang dapat digunakan untuk menghitung jumlah barang yang lewat di depan sensor jarak sehingga akan terdeteksi dan alat akan melakukan counter +1 sehingga user akan tahu berapa jumlah barang yang lewat di area sensor tersebut. dan juga alat ini bisa disetting untuk ID barangnya sehingga jika terdapat lebih dari satu barang bisa dilakukan pemisahan berdasarkan ID barang. untuk lebih jelasnya berikut adalah koding dan daftar komponennya.



a. Arduino Nano




b. Sensor Jarak  




c. Program Arduino IDE

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);

byte sensorInterrupt = 0;  // 0 = digital pin 2
byte sensorPin       = 2;
volatile byte pulseCount;
unsigned long oldTime;
int btup = 3;
int btdown = 4;
int btupx = 0;
int btdownx = 0;
int id;

void setup() {
  Serial.begin(9600);
  lcd.begin();
  lcd.clear();
  lcd.noCursor();
  attachInterrupt(sensorInterrupt, pulseCounter, RISING);
  pinMode(btup,INPUT_PULLUP);
  pinMode(btdown,INPUT_PULLUP);   
}

void loop() {

btupx = digitalRead(btup);
btdownx = digitalRead(btdown);

if(btupx == 0){
  id++;
  delay(500);
}

if(btdownx == 0){
  id--;
  delay(500);
}
  
 lcd.setCursor(0,0);
 lcd.print("ID= ");
 lcd.print(id);
 lcd.print("  ");
 
 lcd.setCursor(0,1);
 lcd.print("Qty= ");
 lcd.print(pulseCount);
 lcd.print("  ");

 Serial.print("ID= ");
 Serial.print(id);
 Serial.print(" Qty= ");
 Serial.println(pulseCount);

 delay(200);
}

void pulseCounter()
{
  pulseCount++;
}




d. VIDEO HASILNYA






Restaurant Ordering System Using Arduino and Proteus

Restaurant Ordering System Using Arduino and Proteus


         Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang digunakan untuk melalukan order makanan minuman dan dessert. jadi alat ini hanyalah simulasi dengan menggunakan software proteus 7. jadi simulasi alat ini menggunakan 3 buah push button untuk memilih pilihan yang tersedia dan ada satu buah tombol untuk resetnya. untuk lebih jelasnya berikut adalah koding dan skemanya.



a. Skema Simulasi Alat




b. Program Arduino IDE

#include <Wire.h>
#include <SPI.h>
#include <SD.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x20, 20, 4);

//mosi - 11
//miso - 12
//clk - 13
//cs - 4
File myFile;

int btmenu1 = 2;
int btmenu2 = 3;
int btmenu3 = 5;
int btmenu1x;
int btmenu2x;
int btmenu3x;
int cmenu1;
int cmenu2;
int cmenu3;

void setup() {

  pinMode(btmenu1,INPUT_PULLUP);
  pinMode(btmenu2,INPUT_PULLUP);
  pinMode(btmenu3,INPUT_PULLUP);
 
  Serial.begin(9600);
  lcd.begin();
  lcd.clear();
  lcd.noCursor();

}

void loop() {
menu1();
delay(200);
lcd.clear();
menu2();
delay(200);
lcd.clear();
menu3();
delay(200);
lcd.clear();
greeting();
lcd.clear();
delay(200);
}

void menu1(){
  
btmenu1x = digitalRead(btmenu1);
btmenu2x = digitalRead(btmenu2);
btmenu3x = digitalRead(btmenu3);

lcd.setCursor(0,0);
lcd.print("Choose Food ");
lcd.setCursor(0,1);
lcd.print("1. Chicken  ");
lcd.setCursor(0,2);
lcd.print("2. Burger   ");
lcd.setCursor(0,3);
lcd.print("3. Pizza    ");
   
if(btmenu1x == 0){
cmenu1 = 1;
return;
}

if(btmenu2x == 0){
cmenu1 = 2;
return;
}

if(btmenu3x == 0){
cmenu1 = 3;
return;
}

menu1();
}

void menu2(){
  
btmenu1x = digitalRead(btmenu1);
btmenu2x = digitalRead(btmenu2);
btmenu3x = digitalRead(btmenu3);

lcd.setCursor(0,0);
lcd.print("Choose Drink   ");
lcd.setCursor(0,1);
lcd.print("1. Tea  ");
lcd.setCursor(0,2);
lcd.print("2. Lemon Tea   ");
lcd.setCursor(0,3);
lcd.print("3. Milk       ");
   
if(btmenu1x == 0){
cmenu2 = 1;
return;
}

if(btmenu2x == 0){
cmenu2 = 2;
return;
}

if(btmenu3x == 0){
cmenu2 = 3;
return;
}

menu2();
}

void menu3(){
  
btmenu1x = digitalRead(btmenu1);
btmenu2x = digitalRead(btmenu2);
btmenu3x = digitalRead(btmenu3);

lcd.setCursor(0,0);
lcd.print("Choose Fruit   ");
lcd.setCursor(0,1);
lcd.print("1. Manggo  ");
lcd.setCursor(0,2);
lcd.print("2. Orange   ");
lcd.setCursor(0,3);
lcd.print("3. Grape      ");
   
if(btmenu1x == 0){
cmenu3 = 1;
return;
}

if(btmenu2x == 0){
cmenu3 = 2;
return;
}

if(btmenu3x == 0){
cmenu3 = 3;
return;
}

menu3();
}

void greeting(){
  
Serial.print("Order Menu1: ");  
Serial.println(cmenu1);
Serial.print("Order Menu2: ");
Serial.println(cmenu2);
Serial.print("Order Menu3: ");
Serial.println(cmenu3);

lcd.setCursor(0,0);
lcd.print("Thankyou for order");
lcd.setCursor(0,1);
lcd.print("Please wait");
lcd.setCursor(0,2);
lcd.print("Save to SD");
delay(1000);
savetosd();
}

void savetosd(){

while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }

  //Serial.print("Initializing SD card...");
  // On the Ethernet Shield, CS is pin 4. It's set as an output by default.
  // Note that even if it's not used as the CS pin, the hardware SS pin 
  // (10 on most Arduino boards, 53 on the Mega) must be left as an output
  // or the SD library functions will not work.
  pinMode(10, OUTPUT);

  if (!SD.begin(4)) {
    //Serial.println("initialization failed!");
    return;
  }
  //Serial.println("initialization done.");

  // open the file. note that only one file can be open at a time,
  // so you have to close this one before opening another.
  myFile = SD.open("test.txt", FILE_WRITE);

  // if the file opened okay, write to it:
  if (myFile) {
     
    myFile.print("choose1= ");
    myFile.println(cmenu1);
    myFile.print("choose2= ");
    myFile.println(cmenu2);
    myFile.print("choose3= ");
    myFile.println(cmenu2);
     
    // close the file:
    myFile.close();
    //Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    //Serial.println("error opening test.txt");
  }

}




c. VIDEO HASILNYA





KENDALI KIPAS ANGIN / FAN MENGGUNAKAN GESTURE TANGAN SENSOR APDS 9960

KENDALI KIPAS ANGIN / FAN MENGGUNAKA GESTURE TANGAN SENSOR APDS 9960 

            Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara untuk membuat sebuah alat yang bisa mengendalikan kipas angin menggunakan gesture tangan, jadi gesture tangan yang diberikan hanya swap ke kanan dan swap ke kiri untuk mengendalikan on/off kipas angin, sensor yang dipakai yaitu apds9960. untuk lebih jelasnya berikut adalah koding dan komponenya.

 

a. Arduino Uno


 

b. Sensor APDS9960


 

c. Modul Relay




d. Skema 




 

e. Program Arduino IDE 

#include <Wire.h>
#include <SparkFun_APDS9960.h>

// Pins
#define APDS9960_INT    2 // Needs to be an interrupt pin

// Constants

// Global Variables
SparkFun_APDS9960 apds = SparkFun_APDS9960();
int isr_flag = 0;

int speedx;

void setup() {
 
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
 
  digitalWrite(3, HIGH);
  digitalWrite(4, HIGH);
  digitalWrite(5, HIGH);
  digitalWrite(6, HIGH);
  digitalWrite(7, HIGH);
  digitalWrite(8, HIGH);
  digitalWrite(9, HIGH);
  digitalWrite(10, HIGH);

  // Set interrupt pin as input
  pinMode(APDS9960_INT, INPUT);

  // Initialize Serial port
  Serial.begin(9600);
  Serial.println();
  Serial.println(F("--------------------------------"));
  Serial.println(F("Y-GESTURE APDS - GestureTest"));
  Serial.println(F("--------------------------------"));
 
  // Initialize interrupt service routine
  attachInterrupt(0, interruptRoutine, FALLING);

  // Initialize APDS-9960 (configure I2C and initial values)
  if ( apds.init() ) {
    Serial.println(F("APDS-9960 initialization complete"));
  } else {
    Serial.println(F("Something went wrong during APDS-9960 init!"));
  }
 
 //  Start running the APDS-9960 gesture sensor engine
  if ( apds.enableGestureSensor(true) ) {
    Serial.println(F("Gesture sensor is now running"));
  } else {
    Serial.println(F("Something went wrong during gesture sensor init!"));
  }
}

void loop() {
  if( isr_flag == 1 ) {
    detachInterrupt(0);
    handleGesture();
    isr_flag = 0;
    attachInterrupt(0, interruptRoutine, FALLING);
  }

if(speedx == 0){
        digitalWrite(3, HIGH);
        digitalWrite(5, HIGH);
        digitalWrite(6, HIGH);
        digitalWrite(7, HIGH);
  }

if(speedx == 1){
        digitalWrite(3, HIGH);
        digitalWrite(5, LOW);
        digitalWrite(6, HIGH);
        digitalWrite(7, HIGH);
  }

if(speedx == 2){
        digitalWrite(3, HIGH);
        digitalWrite(5, HIGH);
        digitalWrite(6, LOW);
        digitalWrite(7, HIGH);
  }  

if(speedx == 3){
        digitalWrite(3, HIGH);
        digitalWrite(5, HIGH);
        digitalWrite(6, HIGH);
        digitalWrite(7, LOW);
  }  


if(speedx > 3){  
  speedx = 3;
}

if(speedx < 0){  
  speedx = 0;
}
}

void interruptRoutine() {
  isr_flag = 1;
}

void handleGesture() {
    if ( apds.isGestureAvailable() ) {
    switch ( apds.readGesture() ) {
      case DIR_UP:
        Serial.println("ATAS");
        speedx++;
        break;
        
      case DIR_DOWN:
        Serial.println("BAWAH");
        speedx--;        
        break;
        
      case DIR_LEFT:
        Serial.println("KIRI");
        digitalWrite(4, HIGH);
        digitalWrite(3, HIGH);
        digitalWrite(5, HIGH);
        digitalWrite(6, HIGH);
        digitalWrite(7, HIGH);
        break;
        
      case DIR_RIGHT:
        Serial.println("KANAN");

        digitalWrite(4, LOW);
        digitalWrite(3, HIGH);
        digitalWrite(5, LOW);
        digitalWrite(6, HIGH);
        digitalWrite(7, HIGH);
        break;
        
      case DIR_NEAR:
        Serial.println("NEAR");

        break;
      case DIR_FAR:
        Serial.println("FAR");

        break;
      default:
        Serial.println("NONE");
    }
  }
}

  

 

 f. VIDEO HASILNYA




Monitor Suhu Tubuh / Object Non-Contact MLX90614 via BLYNK ESPDUINO32 ESP32 ARDUINO

Monitor Suhu Tubuh / Object Non-Contact MLX90614 via BLYNK ESPDUINO32 ESP32
 

           Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang dapat memonitor suhu tubuh maupun suhu object yang berada di depan sensor, sensor yang dipakai pada alat ini yaitu mlx90614 dan monitor dilakukan via aplikasi Blynk. untuk lebih jelasnya berikut adalah skema dan programnya.

 

a. Skema Alat
 
 
 

b. ESPDUINO-32
 

 
 
c. LCD 16x2 I2C
 

 
 
d. Sensor Suhu Non-contact MLX90614
 

 
 
 
e. Program Arduino IDE
 
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#include <Adafruit_MLX90614.h>

Adafruit_MLX90614 mlx = Adafruit_MLX90614();

float TargetC;
BlynkTimer timer;
int dataadc1;
int dataadc2;
 
char auth[] = "hgjhgjttdgf778t87fg7hhuhkjbhvgcgcbjbjh";
char ssid[] = "hotspothpku";
char pass[] = "123456789";

void senddata() {
    Blynk.virtualWrite(V4, TargetC);
}

void setup() {
  mlx.begin();
  pinMode(18,OUTPUT);
  pinMode(19,OUTPUT);
  pinMode(23,OUTPUT);
  pinMode(5,OUTPUT);
 
  Serial.begin(9600);
  lcd.begin();
  lcd.clear();
  lcd.noCursor();
  Blynk.begin(auth, ssid, pass);
  timer.setInterval(1000L, senddata);
}

void loop() {
 
   TargetC = mlx.readObjectTempC();

   lcd.setCursor(0,0);
   lcd.print("Suhu= ");
   lcd.print(TargetC);
   lcd.print(" C    ");

  delay(200);
      
  Blynk.run();
  timer.run();
}
 
 
 
 
f. VIDEO HASILNYA
 
 

 
 


Tutorial ESPDUINO-32 (ESP-32) Monitor ADC Connect to Blynk

Tutorial ESPDUINO-32 (ESP-32) Monitor ADC Connect to Blynk

            Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara mengakses pin ADC ESPDUINO-32 dan terkoneksi ke Blynk. jadi pada aplikasi Blynk akan tertampil nilai 2 buah adc yang mana nilai adc tersebut adalah input dari dua buah potensiometer yang dihubungkan ke pin ADC tersebut. untuk lebih jelasnya berikut adalah koding dan daftar komponennya.


a. ESPDUINO-32


b. LCD 16x2 + I2C
 


c. Potensiometer
 



d. Program Arduino IDE

#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);

BlynkTimer timer;
int dataadc1;
int dataadc2;
 
char auth[] = "hgfhgytddytgfhgjhku768768fgfwqw1265";
char ssid[] = "hotspothp";
char pass[] = "123456789";

void senddata() {
    Blynk.virtualWrite(V4, dataadc1);
    Blynk.virtualWrite(V5, dataadc2);
}

void setup() {
  Serial.begin(9600);
  lcd.begin();
  lcd.clear();
  lcd.noCursor();
  Blynk.begin(auth, ssid, pass);
  timer.setInterval(1000L, senddata);
}

void loop() {

  dataadc1 = analogRead(34);
  dataadc2 = analogRead(35);

   lcd.setCursor(0,0);
   lcd.print("ADC1=");
   lcd.print(dataadc1);
   lcd.print("     ");
   lcd.setCursor (0,1);
   lcd.print("ADC2=");
   lcd.print(dataadc2);
   lcd.print("     ");

  delay(200);
      
  Blynk.run();
  timer.run();
}



e. VIDEO HASILNYA
 



TUTORIAL UPLOAD CODING / SKETCH ESPDUINO-32 (ESP-32)

TUTORIAL UPLOAD CODING / SKETCH ESPDUINO-32 (ESP-32) 


          Pada kesempatan kali ini saya akan memberikan tutorial mengenai bagaimana cara upload sketch atau koding ke board espduino-32 yang mana board ini berbasis esp-32. yang harus diperhatikan yaitu penambahan kapasitor 4.7 uF agar koding / sketch dapat terupload ke dalam board espduino-32. untuk lebih jelasnya berikut adalah komponen dan programnya.



a. ESPDUINO-32




b. Capasitor 4.7 uF





c. Error yang terjadi jika upload tanpa capasitor (ERROR SOLVED)





d Program Arduino IDE

void setup() {                
  pinMode(2, OUTPUT);     
}

void loop() {
  digitalWrite(2, HIGH);   
  delay(1000);               
  digitalWrite(2, LOW);    
  delay(1000);               
}



e. VIDEO HASILNYA