Translate

Robot Pendeteksi Warna Arduino

Robot Pendeteksi Warna Arduino


        Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana membuat sebuah robot beroda yang dapat mendeteksi beberapa warna sekaligus. alat yang dideteksi yaitu kuning, merah, hijau, hitam, biru. alat ini menggunakan sensor Tcs3200 dan Arduino Uno. untuk lebih jelasnya berikut adalah koding dan komponennya. 



a. Komponen




b. Program Arduino IDE

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

#define S0 12
#define S1 11
#define S2 8
#define S3 7
#define sensorOut 9
int frequency = 0;

int fmerah;
int fgreen;
int fblue;
int btkuning = 2;
int bthitam = 3;
int bthijau = 4;
int btbiru = 5;
int btmerah = 6;
int btkuningx;
int bthitamx;
int bthijaux;
int btbirux;
int btmerahx;
int btonmotor = 13;
int btonmotorx;

int motorkiri1 = A3;
int motorkiri2 = A2;
int motorkanan1 = A0;
int motorkanan2 = A1;

int fmerahatasku,fmerahatashi,fmerahatashij,fmerahatasbi,fmerahatasme;
int fmerahbawahku,fmerahbawahhi,fmerahbawahhij,fmerahbawahbi,fmerahbawahme;
int fgreenatasku,fgreenatashi,fgreenatashij,fgreenatasbi,fgreenatasme;
int fgreenbawahku,fgreenbawahhi,fgreenbawahhij,fgreenbawahbi,fgreenbawahme;
int fblueatasku,fblueatashi,fblueatashij,fblueatasbi,fblueatasme;
int fbluebawahku,fbluebawahhi,fbluebawahhij,fbluebawahbi,fbluebawahme;

void setup()
{
 lcd.begin();
 lcd.clear();
 lcd.noCursor();

  pinMode(btkuning,INPUT_PULLUP);
  pinMode(bthitam,INPUT_PULLUP);
  pinMode(bthijau,INPUT_PULLUP);
  pinMode(btbiru,INPUT_PULLUP);
  pinMode(btmerah,INPUT_PULLUP);
  pinMode(btonmotor,INPUT_PULLUP);
  pinMode(S0, OUTPUT);
  pinMode(S1, OUTPUT);
  pinMode(S2, OUTPUT);
  pinMode(S3, OUTPUT);
  pinMode(sensorOut, INPUT);
  digitalWrite(S0,HIGH);
  digitalWrite(S1,LOW);

  pinMode(motorkiri1, OUTPUT);
  pinMode(motorkiri2, OUTPUT);
  pinMode(motorkanan1, OUTPUT);
  pinMode(motorkanan2, OUTPUT);
 
}

void loop(){

btonmotorx = digitalRead(btonmotor);
btkuningx = digitalRead(btkuning);
bthitamx = digitalRead(bthitam);
bthijaux = digitalRead(bthijau);
btbirux = digitalRead(btbiru);
btmerahx = digitalRead(btmerah);

  digitalWrite(S2,LOW);
  digitalWrite(S3,LOW);
  frequency = pulseIn(sensorOut, LOW);
  fmerah = frequency;

  lcd.setCursor(0,0);
  lcd.print(fmerah);
  lcd.print(" ");
  delay(100);

  digitalWrite(S2,HIGH);
  digitalWrite(S3,HIGH);
  frequency = pulseIn(sensorOut, LOW);
  fgreen = frequency;

  lcd.print(fgreen);
  lcd.print(" ");
  delay(100);

  digitalWrite(S2,LOW);
  digitalWrite(S3,HIGH);
  frequency = pulseIn(sensorOut, LOW);
  fblue = frequency;

  lcd.print(fblue);
  lcd.print("  ");
  delay(800);

if(btkuningx == 0){
  delay(200);
  fmerahatasku = fmerah + 5;
  fmerahbawahku = fmerah - 5;
  fgreenatasku = fgreen + 5;
  fgreenbawahku = fgreen - 5;
  fblueatasku = fblue + 5;
  fbluebawahku = fblue - 5;    
}

if(bthitamx == 0){
  delay(200);
  fmerahatashi = fmerah + 5;
  fmerahbawahhi = fmerah - 5;
  fgreenatashi = fgreen + 5;
  fgreenbawahhi = fgreen - 5;
  fblueatashi = fblue + 5;
  fbluebawahhi = fblue - 5;    
}

if(bthijaux == 0){
  delay(200);
  fmerahatashij = fmerah + 5;
  fmerahbawahhij = fmerah - 5;
  fgreenatashij = fgreen + 5;
  fgreenbawahhij = fgreen - 5;
  fblueatashij = fblue + 5;
  fbluebawahhij = fblue - 5;    
}

if(btbirux == 0){
  delay(200);
  fmerahatasbi = fmerah + 5;
  fmerahbawahbi = fmerah - 5;
  fgreenatasbi = fgreen + 5;
  fgreenbawahbi = fgreen - 5;
  fblueatasbi = fblue + 5;
  fbluebawahbi = fblue - 5;    
}

if(btmerahx == 0){
  delay(200);
  fmerahatasme = fmerah + 5;
  fmerahbawahme = fmerah - 5;
  fgreenatasme = fgreen + 5;
  fgreenbawahme = fgreen - 5;
  fblueatasme = fblue + 5;
  fbluebawahme = fblue - 5;    
}

if(btonmotorx == 0){
  delay(200);
  digitalWrite(motorkiri1,HIGH);
  digitalWrite(motorkiri2,LOW);
  digitalWrite(motorkanan1,HIGH);
  digitalWrite(motorkanan2,LOW);
}

if(btonmotorx == 1){
  delay(200);
  digitalWrite(motorkiri1,LOW);
  digitalWrite(motorkiri2,LOW);
  digitalWrite(motorkanan1,LOW);
  digitalWrite(motorkanan2,LOW);
}

if((fmerah < fmerahatasku)&&(fmerah > fmerahbawahku)&&(fgreen < fgreenatasku)&&(fgreen > fgreenbawahku)&&(fblue < fblueatasku)&&(fblue > fbluebawahku)){
  lcd.setCursor(0,1);
  lcd.print("KUNING        ");    
}

if((fmerah < fmerahatashi)&&(fmerah > fmerahbawahhi)&&(fgreen < fgreenatashi)&&(fgreen > fgreenbawahhi)&&(fblue < fblueatashi)&&(fblue > fbluebawahhi)){
  lcd.setCursor(0,1);
  lcd.print("HITAM        ");    
}

if((fmerah < fmerahatashij)&&(fmerah > fmerahbawahhij)&&(fgreen < fgreenatashij)&&(fgreen > fgreenbawahhij)&&(fblue < fblueatashij)&&(fblue > fbluebawahhij)){
  lcd.setCursor(0,1);
  lcd.print("HIJAU       ");    
}

if((fmerah < fmerahatasbi)&&(fmerah > fmerahbawahbi)&&(fgreen < fgreenatasbi)&&(fgreen > fgreenbawahbi)&&(fblue < fblueatasbi)&&(fblue > fbluebawahbi)){
  lcd.setCursor(0,1);
  lcd.print("BIRU       ");    
}

if((fmerah < fmerahatasme)&&(fmerah > fmerahbawahme)&&(fgreen < fgreenatasme)&&(fgreen > fgreenbawahme)&&(fblue < fblueatasme)&&(fblue > fbluebawahme)){
  lcd.setCursor(0,1);
  lcd.print("MERAH      ");    
}
}



c. VIDEO HASILNYA



Monitor Arus dan Tegangan 3 Fasa IOT BLYNK GRAFIK REALTIME

Monitor Arus dan Tegangan 3 Fasa IOT BLYNK GRAFIK REALTIME


         Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang digunakan untuk monitor arus dan tegangan 3 fasa dengan menggunakan IOT Blynk sehingga bisa dilakukan monitor secara jarak jauh menggunakan web atau handphone. untuk lebih jelasnya berikut adalah koding dan komponennya.



a. Komponen




b. Program Arduino Mega

#include <Wire.h>  // i2C Conection Library
#include <LiquidCrystal_I2C.h>
#include <SPI.h>
#include <PZEM004Tv30.h>
#include <SoftwareSerial.h>
LiquidCrystal_I2C lcd(0x27,16,2); 
PZEM004Tv30 pzem1(A12, A13);
PZEM004Tv30 pzem2(A8, A9);
PZEM004Tv30 pzem3(A10, A11);
int voltage1, voltage2, voltage3;
float arusR, arusS, arusT;

void setup() {
  lcd.begin();   
  lcd.noCursor();
  lcd.clear();
  Serial.begin(9600);    
}

void loop() {
  
voltage1 = pzem1.voltage();
voltage2 = pzem2.voltage();
voltage3 = pzem3.voltage();
arusR = pzem1.current();
arusS = pzem2.current();
arusT = pzem3.current();

lcd.setCursor(0, 0);
lcd.print(voltage1);
lcd.print("/");
lcd.print(voltage2);
lcd.print("/");
lcd.print(voltage3);
lcd.print(" ");

lcd.setCursor(0, 1);
lcd.print(arusR);
lcd.print("/");
lcd.print(arusS);
lcd.print("/");
lcd.print(arusT);
lcd.print(" ");

Serial.print("*");
Serial.print(arusR * 100.0);
Serial.print(",");
Serial.print(arusS * 100.0);
Serial.print(",");
Serial.print(arusT * 100.0);
Serial.println("#");  

delay(200);
}



c. Program NodeMCU ESP8266

#define BLYNK_TEMPLATE_ID "TMPL6lXvbTxXX"
#define BLYNK_TEMPLATE_NAME "MONITOR ARUS"
#define BLYNK_AUTH_TOKEN "6WRDw9uHuqd0543E7fG2wccvWWxxxxxx"

#define BLYNK_PRINT Serial    

#include <SPI.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

int temp;
int x = 5;
int y;

int value1;
int value2;

float tegangan1 = 0;
float tegangan2 = 0;
float tegangan3 = 0;
float arusR = 0;
float arusS = 0;
float arusT = 0;

float datain1;
float datain2;
float datain3;
float datain4;
float datain5;
float datain6;

String dataIn;
String dt[10];
int i;
boolean parsing=false;

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "4G MIFI-6499";
char pass[] = "1234567891";

BlynkTimer timer;


void sendSensor()
{

 Blynk.virtualWrite(V5, arusR);
 Blynk.virtualWrite(V6, arusS);
 Blynk.virtualWrite(V7, arusT);
 delay(1000);

}

void setup()
{
  
  dataIn=""; 
  // Debug console
  Serial.begin(9600);
  Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
  timer.setInterval(1000L, sendSensor);
  
}

void loop()
{

while(Serial.available()>0) {
//   dataIn="";
    char inChar = (char)Serial.read();
    dataIn += inChar;
    if (inChar == '\n') {
    parsing = true;
  }
}

if(parsing){
  parsingData();
    
  Blynk.run();
  timer.run();
}

}

void parsingData(){
int j=0;

//kirim data yang telah diterima sebelumnya
//Serial.print("data masuk : ");
//Serial.print(dataIn);
//Serial.print("\n");

//inisialisasi variabel, (reset isi variabel)
dt[j]="";
//proses parsing data
for(i=1;i<dataIn.length();i++){
//pengecekan tiap karakter dengan karakter (#) dan (,)
if ((dataIn[i] == '#') || (dataIn[i] == ','))
{
//increment variabel j, digunakan untuk merubah index array penampung
j++;
dt[j]="";       //inisialisasi variabel array dt[j]
}
else
{
//proses tampung data saat pengecekan karakter selesai.
dt[j] = dt[j] + dataIn[i];
}
}

datain1 = dt[0].toInt();
datain2 = dt[1].toInt();
datain3 = dt[2].toInt();

/*
//kirim data hasil parsing
Serial.print("data 1 : ");
Serial.print(datain1);
Serial.print("\n");
Serial.print("data 2 : ");
Serial.print(datain2);
Serial.print("\n");
Serial.print("data 3 : ");
Serial.print(datain3);
Serial.print("\n");
Serial.print("data 4 : ");
Serial.print(datain4);
Serial.print("\n");
Serial.print("data 5 : ");
Serial.print(datain5);
Serial.print("\n");
Serial.print("data 6 : ");
Serial.print(datain6);
Serial.print("\n");
*/

 arusR = datain1 / 100.0;
 arusS = datain2 / 100.0;
 arusT = datain3 / 100.0;

}



d, VIDEO HASILNYA



ROBOT LENGAN ARDUINO

ROBOT LENGAN ARDUINO  
 

          Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah robot lengan untuk edukasi atau belajar program dengan menggunakan Arduino. jadi robot ini menggunakan 4 buah servo sehingga robot ini bisa melakukan gerakan kanan kiri, atas bawah, maju mundur, dan japit lepas. untuk lebih jelasnya berikut adalah program dan komponennya.



a. Robot Lengan



 
 
b. Program Arduino IDE

#include<Wire.h>
#include<Servo.h>

Servo myservo1;
Servo myservo2;
Servo myservo3;
Servo myservo5;

int a;
int b;
int c;
int d;
int e;

void setup(){
myservo1.attach(11); //kanan kiri
myservo2.attach(9); //maju mundur
myservo3.attach(10); //turun naik
myservo5.attach(6); //japit lepas

 myservo1.write(70);
 myservo2.write(130);
 myservo3.write(150);
 myservo5.write(150);
 delay(3000);
}

void loop(){
 
kanan();  
turun();
maju();
japit();
mundur();
naik();

kiri();  
turun();
maju();
lepas();
mundur();
naik();

}

void kanan(){
  for(a=70;a<=150;a++){
  myservo1.write(a);
  delay(50);
  }
  return;
}

void kiri(){
  for(a=150;a>=70;a--){
  myservo1.write(a);
  delay(50);
  }
  return;
}

void mundur(){
  for(b=130;b>=100;b--){
  myservo2.write(b);
  delay(50);
  }
  return;
}

void maju(){
  for(b=100;b<=130;b++){
  myservo2.write(b);
  delay(50);
  }
  return;
}

void naik(){
  for(c=150;c>=90;c--){
  myservo3.write(c);
  delay(50);
  }
  return;
}

void turun(){
  for(c=90;c<=150;c++){
  myservo3.write(c);
  delay(50);
  }
  return;
}

void japit(){
  for(e=100;e>=30;e--){
  myservo5.write(e);
  delay(50);
  }
  return;
}

void lepas(){
  for(e=30;e<=100;e++){
  myservo5.write(e);
  delay(50);
  }
  return;
}
 
 
 
c. VIDEO HASILNYA