Translate

Monitor Suhu MLX90614 dan Jarak HC-SRF04 OLED Nodemcu ESP8266 Arduino

Monitor Suhu MLX90614 dan Jarak HC-SRF04 OLED Nodemcu ESP8266 Arduino

        Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang bisa digunakan untuk monitoring suhu dan jarak dengan menggunakan sensor MLX90614 dan HC-SRF04 dengan interface menggunakan OLED display dan mikrokontroller menggunakan Nodemcu ESP8266. untuk lebih jelasnya berikut adalah komponen dan kodingnya.

 

a. Komponen


b. Program Arduino IDE

#include <Wire.h>
#include <ESP8266WiFi.h>
#include <Adafruit_MLX90614.h>  
#include "Wire.h"
#include "Adafruit_GFX.h"
#include "OakOLED.h"
 
#define trigPin D7  //pin trigger hcsrf04
#define echoPin D6  //pin echo

OakOLED oled;
 
Adafruit_MLX90614 mlx = Adafruit_MLX90614();
 
long duration, distance;
float TargetC;

 
void setup()
{
    Serial.begin(115200);
    oled.begin();
    oled.display();
    mlx.begin();
    
    pinMode(trigPin, OUTPUT);
    pinMode(echoPin, INPUT);

}
 
void loop()
{
    
  digitalWrite(trigPin, LOW);  
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = (duration/2) / 29.1;
 
  mlx.begin();
  TargetC = mlx.readObjectTempC();
    
  oled.clearDisplay();
  oled.setTextSize(1);
  oled.setTextColor(1);
  oled.setCursor(0, 0);
  oled.print("Jarak: ");
  oled.println(distance);

  oled.setTextSize(1);
  oled.setTextColor(1);
  oled.setCursor(0, 16);
  oled.print("Suhu: ");
  oled.println(TargetC);
  oled.display();

delay(200);   
}



c. VIDEO HASILNYA


Pertamini Air Pembayaran Pakai Kode Token

Pertamini Air Pembayaran Pakai Kode Token

        Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang digunakan untuk mengisi air dengan menggunakan kode token, jadi alat ini seperti halnya pertamini yang mana bukan bensin yang dialirkan melainkan air sehingga client atau pembeli harus membeli kode token dulu seperti halnya listrik PLN yang menggunakan kode token. untuk lebih jelasnya berikut adalah koding dan skemanya.


a. Skema

 

 

b. Program Arduino IDE

#include <Wire.h>
#include <SPI.h>
#include <Keypad.h>
#include <LiquidCrystal_I2C.h>  //i2C LCD Library
LiquidCrystal_I2C lcd(0x27, 16, 2); //library i2c lcd 16x2

int relay = 11;
char customKey;
const byte ROWS = 4;
const byte COLS = 4;
long passwd = 0;
long isiku;
long beli;

char keys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {3,4,5,6}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {7,8,9,10}; //connect to the column pinouts of the keypad

//initialize an instance of class NewKeypad
Keypad customKeypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS);

byte sensorInterrupt = 0;  // 0 = digital pin 2
byte sensorPin       = 2;

float calibrationFactor = 4.5;

volatile byte pulseCount;  

unsigned int frac;
float flowRate;
unsigned int flowMilliLitres;
long totalMilliLitres;
long totalLitres;

unsigned long oldTime;
long dataku = 0;
unsigned long saldo;
int mark,mark1,mark2;


void setup()
{
 
  pinMode(relay, OUTPUT);
  digitalWrite(relay, HIGH);  
  pinMode(sensorPin, INPUT);
  digitalWrite(sensorPin, HIGH);

  pulseCount        = 0;
  flowRate          = 0.0;
  flowMilliLitres   = 0;
  totalMilliLitres  = 0;
  oldTime           = 0;

  attachInterrupt(sensorInterrupt, pulseCounter, FALLING);
 
  lcd.begin(); //set lcd i2c
  lcd.noCursor(); //biar gak ada cursor di lcd
  lcd.clear(); //clear lcd
  Serial.begin(9600);   // Initiate a serial communication
}

void loop()
{

lcd.setCursor(0,1);
lcd.print("Token: ");
lcd.print(saldo);
lcd.print(" L  ");

  if((millis() - oldTime) > 1000)    // Only process counters once per second
  {

    detachInterrupt(sensorInterrupt);
    flowRate = ((1000.0 / (millis() - oldTime)) * pulseCount) / calibrationFactor;
    oldTime = millis();
    flowMilliLitres = (flowRate / 60) * 1000;
    totalMilliLitres += flowMilliLitres;
    totalLitres = totalMilliLitres / 1000;   
    frac = (flowRate - int(flowRate)) * 10;
     
    // Print the cumulative total of litres flowed since starting
    lcd.setCursor(0,0);
    lcd.print("Pakai: ");             // Output separator
    lcd.print(totalLitres);
    lcd.print(" L  ");

    pulseCount = 0;
    
    attachInterrupt(sensorInterrupt, pulseCounter, FALLING);

  if(totalLitres >= saldo){
    digitalWrite(relay, HIGH); //off
    saldo = 0;
    }

    if(totalLitres < saldo){
    digitalWrite(relay, LOW); //on
    }
    
  }

   
customKey = customKeypad.getKey();
           
 if(customKey == '*'){
 lcd.clear();
 delay(1000);
 beli = 0;
  pulseCount        = 0;
  flowRate          = 0.0;
  flowMilliLitres   = 0;
  totalMilliLitres  = 0;
  totalLitres = 0;
  oldTime           = 0;
 token();
 }
    
delay(200);    
}


void token(){
lcd.setCursor(0,0);
lcd.print("Kode Token");

  customKey = customKeypad.getKey();

  if(customKey >= '0' && customKey <= '9')
    {
     beli = beli * 10 + (customKey - '0');
     lcd.setCursor(0,1);
     lcd.print(beli);
    }
                   
    if(customKey == 'C'){
    lcd.clear();    
    beli = 0;
    }

    if(customKey == '#'){     
       lcd.clear();
       delay(1000);


     if((beli == 12345)&&(mark == 0)){
        saldo = 10;
        mark = 1;
        return;
      }

    if((beli == 12234)&&(mark1 == 0)){
        saldo = 7;
        mark1 = 1;
        return;
     }

    if((beli == 54321)&&(mark2 == 0)){
        saldo = 5;
        mark2 = 1;
        return;
     }

     beli = 0;
     return;    
    }
    
token();  
}


 
void pulseCounter()
{
  pulseCount++;
}



c. VIDEO HASILNYA



Mengakses Sensor Tekanan / Pressure HX710B Arduino

Mengakses Sensor Tekanan / Pressure HX710B Arduino
 
   
        Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara mengakses sensor tekanan yang memiliki range 0 - 40 Kpa dengan menggunakan arduino. sensor ini sangat cocok untuk melakukan sensing pada tekanan yang rendah. untuk lebih jelasnya berikut adalah koding dan skemanya.

 
 
a. Skema 
sumber: https://www.teachmemicro.com/arduino-pressure-sensor-tutorial/



 
 b. Program Arduino IDE
 
#include <Wire.h>  // i2C Conection Library
#include <LiquidCrystal_I2C.h>  //i2C LCD Library
#include "HX710B.h"

LiquidCrystal_I2C lcd(0x27, 16, 2);

int btok = 2;
int btup = 3;
int btdown = 4;
int btset = 5;
int btokx;
int btupx;
int btdownx;
int btsetx;
int dataadc;
int nilaimax = 3;
int nilaimin = 0;
float volt;
float mvolt;
float psi;

const int DOUT = 2;   //sensor data pin
const int SCLK  = 3;   //sensor clock pin

HX710B pressure_sensor;


void setup() {
  Serial.begin(9600);
  lcd.begin();
  lcd.clear();
  lcd.noCursor();
  pinMode(btset,INPUT_PULLUP);
  pinMode(btok,INPUT_PULLUP);
  pinMode(btup,INPUT_PULLUP);
  pinMode(btdown,INPUT_PULLUP);
  pressure_sensor.begin(DOUT,SCLK);
}


void loop() {

  btsetx = digitalRead(btset);
  btupx = digitalRead(btup);
  btdownx = digitalRead(btdown);
  btokx = digitalRead(btok);
  psi = pressure_sensor.psi();
 
  if (pressure_sensor.is_ready()) {
    Serial.print("PSI: ");
    Serial.println(psi);
  } else {
    Serial.println("Pressure sensor not found.");
  }

  lcd.setCursor(0, 0);
  lcd.print("Psi=");
  lcd.print(psi);
  lcd.print("   ");

if(psi > nilaimax){
  lcd.setCursor(0, 1);
  lcd.print("Max pressure   ");
}

if((psi > nilaimin)&&(psi < nilaimax)){
  lcd.setCursor(0, 1);
  lcd.print("Normal        ");
}

if(psi < nilaimin){
  lcd.setCursor(0, 1);
  lcd.print("Min pressure  ");
}


if(btsetx == 0){
  batasatas();
  batasbawah();
}

delay(200);
}


void batasatas(){
 
  btsetx = digitalRead(btset);
  btupx = digitalRead(btup);
  btdownx = digitalRead(btdown);
  btokx = digitalRead(btok);

  lcd.setCursor(0, 0);
  lcd.print("Max=");
  lcd.print(nilaimax);
  lcd.print(" psi  ");  

  if(btupx == 0){
    delay(200);
    nilaimax++;
  }

  if(btdownx == 0){
    delay(200);
    nilaimax--;
  }

  if(btokx == 0){
    lcd.clear();
    delay(2000);
    return;
  }


batasatas();
}



void batasbawah(){
 
  btsetx = digitalRead(btset);
  btupx = digitalRead(btup);
  btdownx = digitalRead(btdown);
  btokx = digitalRead(btok);

  lcd.setCursor(0, 0);
  lcd.print("Min=");
  lcd.print(nilaimin);
  lcd.print(" pai  ");  

  if(btupx == 0){
    delay(200);
    nilaimin++;
  }

  if(btdownx == 0){
    delay(200);
    nilaimin--;
  }

  if(btokx == 0){
    lcd.clear();
    delay(2000);
    return;
  }


batasbawah();
}
 
 
 
 
c. Program Arduino Contoh
 
#include "HX710B.h"

const int DOUT = 2;   //sensor data pin
const int SCLK  = 3;   //sensor clock pin

HX710B pressure_sensor;

void setup() {
  Serial.begin(9600);
  pressure_sensor.begin(DOUT,SCLK);
}

void loop() {

  if (pressure_sensor.is_ready()) {
    Serial.print("PSI: ");
    Serial.println(pressure_sensor.psi());
  } else {
    Serial.println("Pressure sensor not found.");
  }

  delay(1000);
 
}
 
 
 
 
 
d. VIDEO HASILNYA



 
 

Alat Penampil Jam Digital dan Suhu Kelembaban RGB

Alat Penampil Jam Digital dan Suhu Kelembaban RGB 

       Pada kesempatan kali ini saya akan menjelaskan mengenai produk baru yang kami buat yaitu penampil jam digital dan suhu kelembaban berbasis sensor DHT11 yang menggunakan penampil berupa panel RGB sehingga bisa diatur sesuai warna yang diinginkan. alat ini memiliki fungsi yaitu menampilkan jam sekarang yang mana terdapat modul RTC dan selain itu juga bisa menampilkan nilai suhu dan kelembaban dikarenakan terdapat sensor DHT11 yang dapat mengukur suhu dan kelembaban. untuk lebih jelasnya berikut adalah video dan gambar produknya.


a. Gambar Produk



b. VIDEO HASILNYA



Membuat Alat Cek Kadar Gula Darah Non Invasive Arduino

Membuat Alat Cek Kadar Gula Darah Non Invasive Arduino

           Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang dapat mengukur kadar gula darah secara non invasive menggunakan arduino tapi hasilnya masih butuh dikalibrasi dahulu agar didapat nilai mg/dl yang akurat, sehingga membutuhkan pasien yang minimal 100 orang untuk kalibrasi alat ini. untuk metode kalibrasinya bisa menggunakan regresi linier. untuk lebih jelasnya berikut adalah skema dan kodingnya.


a. Skema



b. Program Arduino IDE

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

int bt = 12;
int btx;
int adcsensor;
float fix;
int datafix;
int cacah;
float kalibrasi;

void setup() {

  lcd.begin();
  lcd.clear();
  lcd.noCursor();
  Serial.begin(9600);
  pinMode(bt,INPUT_PULLUP);
 
}

void loop(){

 lcd.setCursor(0,0);
 lcd.print("TEKAN MULAI");
 lcd.setCursor(0,1);
 lcd.print("mg/dl= ");
 lcd.print(fix);
 lcd.print("      ");

 btx = digitalRead(bt);

 if(btx == 0){
 lcd.clear();
 delay(1000);
 cacah = 0;
 datafix = 0;
 fix = 0;
 proses();
 }

delay(1000);
}

void proses(){
 
adcsensor = analogRead(A0);

 lcd.setCursor(0,0);
 lcd.print("ADC= ");
 lcd.print(adcsensor);
 lcd.print("      ");

 cacah++;

datafix = adcsensor + datafix;

delay(100);

if(cacah > 20){
  fix = datafix / 20.0;
  //kalibrasi = (fix - 1022.1) / 0.0967;
  return;
}

proses();
}    



c. VIDEO HASILNYA