Translate

Monitor Suhu dan Debu ONLINE BLYNK Sensor DHT11 dan GP2Y1010AU0F

Monitor Suhu dan Debu ONLINE BLYNK Sensor DHT11 dan GP2Y1010AU0F


          Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang bisa mengukur suhu dan debu secara online dengan menggunakan Blynk. alat ini menggunakan sensor DHT11 dan GP2Y1010AU0F. untuk lebih jelasnya berikut adalah komponen dan kodingnya. 



a. Nodemcu ESP8266




b. Sensor DHT11




c. Sensor Debu GP2Y1010AU0F




d. LCD + I2C





e. Program Arduino IDE

#define BLYNK_PRINT Serial    // Comment this out to disable prints and save space
#include <SPI.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>
#include <DHT.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);

int ledx = D6;
int h;
int t;
float Dustval;
int dataadc;
float v;

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "TMJHGJ764HFJGF434NVNBCVXNBVNHMMVBVX";

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "Yanuar Iphone";
char pass[] = "13579ynr";

#define DHTPIN 0          // D3 dan led di D4

// Uncomment whatever type you're using!
#define DHTTYPE DHT11     // DHT 11
//#define DHTTYPE DHT22   // DHT 22, AM2302, AM2321
//#define DHTTYPE DHT21   // DHT 21, AM2301

DHT dht(DHTPIN, DHTTYPE);
SimpleTimer timer;

// This function sends Arduino's up time every second to Virtual Pin (5).
// In the app, Widget's reading frequency should be set to PUSH. This means
// that you define how often to send data to Blynk App.
void sendSensor()
  Blynk.virtualWrite(V9, t);
  Blynk.virtualWrite(V10, Dustval);
}

void setup()
{

  lcd.begin(); //set lcd i2c
  lcd.noCursor(); //biar gak ada cursor di lcd
  lcd.clear(); //clear lcd
  pinMode(ledx,OUTPUT); 
  
  // Debug console
  Serial.begin(9600);

  Blynk.begin(auth, ssid, pass);
  // You can also specify server:
  //Blynk.begin(auth, ssid, pass, "blynk-cloud.com", 8442);
  //Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,100), 8442);

  dht.begin();

  // Setup a function to be called every second
  timer.setInterval(1000L, sendSensor);
}

void loop()
{

  h = dht.readHumidity();
  t = dht.readTemperature(); // or dht.readTemperature(true) for Fahrenheit

  if (isnan(h) || isnan(t)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

//aktif low
//GP2Y1010AU0F_SAMPLEDELAY should be 280us to perform the correct reading
//this delay should consider that ADC conversion takes 13 ADC clock cycles
//ADCtime(s) = (1/ADCclock)*13 = (1/FCPU/ADCprescaler)*13
// es (1/(8000000/64))*13 = 0.000104s = 104us
//so to perform reading at correct time
//280 - (1/FCPU/ADCprescaler)*13*1000000   , 1000000 is the conversion factor from s to us
// es. 280 - 104 = 176

digitalWrite(ledx,LOW);    //on
delayMicroseconds(176);

dataadc = analogRead(A0);
delayMicroseconds(40);

digitalWrite(ledx,HIGH);   //off
delayMicroseconds(9680);

v = dataadc * (5.0 / 1023.0);

//y = 0.166x - 0.129
Dustval = (v * 0.166) - 0.129;

   lcd.setCursor(0, 0);
   lcd.print("Suhu: ");
   lcd.print(t);
   lcd.print(" C   ");
   lcd.setCursor(0, 1);
   lcd.print("Dust= ");
   lcd.print(Dustval);
   lcd.print(" mg/m3   ");
   
  Blynk.run();
  timer.run();
}




f. VIDEO HASILNYA







Monitor Ketinggian Air (Water Level) dan Berat sampah Serta Hujan + SMS GATEWAY

 Monitor Ketinggian Air (Water Level) dan Berat sampah Serta Hujan + SMS GATEWAY 


           Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang menggunakan beberapa sensor beserta fitur sms. alat ini digunakan untuk monitoring ketinggian air / water level dan juga berat serta air hujan, untuk notifikasi menggunakan sms. untuk lebih jelasnya berikut adalah program dan daftar komponennya. 



a. Arduino Uno




b. Loadcell




c. Sensor Jarak HC-SRF04




d. Sensor Air / Hujan




e. Modul SMS SIM900A






f. Program Arduino IDE

#include <Wire.h>
#include "HX711.h"
#include "SIM900.h"
#include <SoftwareSerial.h>
#include <stdlib.h>
#include "sms.h"
SMSGSM sms;

#define trigPin 10
#define echoPin 11

// HX711.DOUT    - pin #4
// HX711.PD_SCK    - pin #5
HX711 scale(4, 5);       

long duration, distance;
float tera = 0;
int berat;
float fix;
int x;
int dataadc;
char string[160];
int numdata;
boolean started=false;
char smsbuffer[160];
char n[20];
char strsms[5];
int mark = 0;

//gerbang pintu air
int motor1 = 9;
int motor2 = 8;
//pengangkut sampah
int motor3 = 7;
int motor4 = 6;

void setup(){
  
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);  
pinMode(motor1, OUTPUT);
pinMode(motor2, OUTPUT);  
pinMode(motor3, OUTPUT);
pinMode(motor4, OUTPUT);  
   
scale.set_scale(2280.f);       // this value is obtained by calibrating the scale with known weights; see the README for details
scale.tare();                  // reset the scale to 0

Serial.println("GSM Shield testing.");

if (gsm.begin(2400)) {
   Serial.println("\nstatus=READY");
   started=true;
  } else Serial.println("\nstatus=IDLE");

if(started) {
    //Enable this two lines if you want to send an SMS.
    if (sms.SendSMS("085123456789", "Alat Ready"))
    Serial.println("\nSMS sent OK");
}
     
}  

void loop(){
  
digitalWrite(trigPin, LOW);  // Added this line
delayMicroseconds(2); // Added this line
digitalWrite(trigPin, HIGH);
delayMicroseconds(10); // Added this line
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;
 
berat = scale.get_units(10) * 1;
//fix = ((berat + 1.523) / 0.223) - tera ;

dataadc = analogRead(A0);

Serial.print("Berat= ");
Serial.print(berat);
Serial.print(" ");
Serial.print("Jarak= ");
Serial.print(distance);
Serial.print(" ");
Serial.print("Hujan= ");
Serial.println(dataadc);

if((distance <= 5)&&(mark == 0)){
digitalWrite(motor1,HIGH);
digitalWrite(motor2,LOW);
delay(5000);
digitalWrite(motor1,LOW);
digitalWrite(motor2,LOW);
mark = 1;  
}

if((distance >= 10)&&(mark == 1)){
digitalWrite(motor1,LOW);
digitalWrite(motor2,HIGH);
delay(5000);  
digitalWrite(motor1,LOW);
digitalWrite(motor2,LOW);
mark = 0;
}

//jika berat > 10gr
if(berat > 10){
if (sms.SendSMS("085123456789", "SAMPAH MENUMPUK"))
Serial.println("\nSMS sent OK");
digitalWrite(motor3,HIGH);
digitalWrite(motor4,LOW);
}

//jika berat < 10gr
if(berat < 10){
digitalWrite(motor3,LOW);
digitalWrite(motor4,LOW);
}

scale.power_down();                  
delay(1000);
scale.power_up();

}  




g. VIDEO HASILNYA





Input Score Keypad Interface LED Modul P10

Input Score Keypad Interface LED Modul P10


        Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang bisa digunakan untuk menampilkan nilai atau angka / score ke led modul P10 dengan input keypad matrik 4x4. jadi alat ini untuk memulai menampilkan nilai tekan * pada keypad lalu jika ingin melakukan input nilai baru tekan # untuk clear nilai pada lcd lalu input nilainya. untuk lebih jelasnya berikut adalah koding dan skemanya.



a. Skema





b. Program Arduino IDE

#include <Wire.h>
#include <SPI.h>        //SPI.h must be included as DMD is written by SPI (the IDE complains otherwise)
#include <DMD.h>        //Library DMD yang menyediakan fungsi penampilan teks, gambar dsb
#include <TimerOne.h>   //Library peripheral Timer1 untuk menjalankan prosedur pindai panel DMD
#include <Time.h>     //Library waktu yang menyediakan tipe data, struktur, dan obyek waktu
#include "Arial_black_16.h"
#include "Arial_Black_16_ISO_8859_1.h"
#include "Arial14.h"
#include "DejaVuSans9.h"
#include "DejaVuSansBold9.h"
#include "DejaVuSansItalic9.h"
#include "Droid_Sans_12.h"
#include "Droid_Sans_16.h"
#include "Mono5x7.h"
#include "SystemFont5x7.h"
#include <Keypad.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);

#define WAKTU_TAMPIL_JAM      10    //detik
#define WAKTU_TAMPIL_KALENDAR 5     //detik

#define DISPLAY_COLUMN_COUNT  2
#define DISPLAY_ROW_COUNT     1

#define PIXELS_PER_COLUMN  32
#define PIXELS_PER_ROW    16

DMD dmd(DISPLAY_COLUMN_COUNT, DISPLAY_ROW_COUNT);
unsigned char show = 0;

char lineBuff[20];
char lineBuffx[20];

long dataku = 0;

char customKey;
const byte ROWS = 4;
const byte COLS = 4;

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

//initialize an instance of class NewKeypad
Keypad customKeypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS);
 
void ScanDMD()
{
  dmd.scanDisplayBySPI();
}

void setup(void)
{
  dmd.clearScreen( true );   //true is normal (all pixels off), false is negative (all pixels on)
  Serial.begin(9600);
  lcd.begin();
  lcd.noCursor();
  lcd.clear();
   //initialize TimerOne's interrupt/CPU usage used to scan and refresh the display
  Timer1.initialize( 1000 );           //period in microseconds to call ScanDMD. Anything longer than 5000 (5ms) and you can see flicker.
  Timer1.attachInterrupt( ScanDMD );   //attach the Timer1 interrupt to ScanDMD which goes to dmd.scanDisplayBySPI()

  //clear/init the DMD pixels held in RAM
  dmd.clearScreen( true ); 
 
}

void loop(void)
{
customKey = customKeypad.getKey();

if(customKey >= '0' && customKey <= '9')
{
 dataku = dataku * 10 + (customKey - '0');
 lcd.setCursor(0,0);
 lcd.print("MASUKKAN SCORE");
 lcd.setCursor(8,1);
 lcd.print(dataku);
}
    
if(customKey == '*'){
 delay(200);
 tampil(); 
}

if(customKey == '#'){
 delay(200);
 lcd.clear();
 dataku = 0; 
}
      
delay(200);
}

void tampil(){
 sprintf(lineBuffx, "%d ", dataku);
 dmd.selectFont(DejaVuSans9);
 dmd.selectFont(Mono5x7);
 dmd.drawString( 33,  0, lineBuffx, strlen(lineBuffx), GRAPHICS_NORMAL);   
//tampil();  
}




c. VIDEO HASILNYA






Monitor DC Voltage Current (Tegangan dan Arus DC) serta RPM Generator Thingspeak

 Monitor DC Voltage Current (Tegangan dan Arus DC) serta RPM Generator Thingspeak


         Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang menggunakan generator sebagai penghasil tegangan dan alat ini digunakan untuk memonitor tegangan dan arus dc yang dihasilkan oleh generator DC tersebut, untuk lebih jelasnya berikut adalah koding dan daftar komponennya.



a. Arduino Uno




b. Nodemcu ESP8266




c. Sensor Arus ACS712




d. Sensor Tegangan DC




e. Sensor RPM





f. Program Arduino Uno

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SoftwareSerial.h>
SoftwareSerial RFID(4, 5); // RX and TX
LiquidCrystal_I2C lcd(0x27,16,2);

//id kartu55 = 620099C7D3
//id kartu95 = 040088F9FB

volatile byte half_revolutions;
unsigned int rpm;
unsigned long timeold;

String Teks;
String NoKartu  ;  //No kartu RFID

int adcteg;
float tegangan;
int adcarus;
float v;
float arus;
int relay = 8;
boolean state=false;
char c;

int teganganx;
int arusx;
int rpmx;

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

attachInterrupt(0, rpm_fun, RISING);
half_revolutions = 0;
rpm = 0;
timeold = 0;
 
lcd.begin();  
lcd.clear();
lcd.noCursor();
pinMode(relay,OUTPUT);
digitalWrite(relay,HIGH);

}

void loop() {
lcd.setCursor(0,0);
lcd.print("Dekatkan Kartu");

while(RFID.available()>0){
delay(5);
c=RFID.read();
Teks += c;
}
if(Teks.length()>20){
Cek();

if(Teks == "620099C7D3"){
lcd.clear();
delay(1000);
Teks="";
proses();
}

Teks="";
}

}

void proses(){
     
adcteg = analogRead(A0);
tegangan = adcteg * (5.0 / 1023.0) * 4.8;

adcarus = analogRead(A1);
v = adcarus * (5.0 / 1023.0);
arus = (v - 2.5)/0.1;

detachInterrupt(0);  
rpm = 30*1000/(millis() - timeold)*half_revolutions;
timeold = millis();
half_revolutions = 0;
attachInterrupt(0, rpm_fun, RISING);

lcd.setCursor(0,0);
lcd.print("V=");
lcd.print(tegangan);
lcd.print("  ");
lcd.setCursor(9,0);
lcd.print("R=");
lcd.print(rpm,DEC);
lcd.print("   ");
lcd.setCursor(0,1);
lcd.print("I= ");
lcd.print(arus);
lcd.print("   ");

teganganx = tegangan * 100;
arusx = arus * 100;
rpmx = rpm * 1;

Serial.print("*");
Serial.print(teganganx);
Serial.print(",");
Serial.print(arusx);
Serial.print(",");
Serial.print(rpmx);
Serial.println("#"); 

delay(1000);
proses();
}

void Cek()
{
Teks=Teks.substring(1,11);

lcd.setCursor(0,1);
lcd.print("ID: "+Teks);
delay(3000);
lcd.clear();
}

void rpm_fun()
{
   half_revolutions++;
}
 
 

g. Program Nodemcu ESP8266

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

int temp;
int x = 5;
int y;
int counter;

int value1;
int value2;

float tegangan = 0;
float arus = 0;
float rpm = 0;

float datain1;
float datain2;
float datain3;

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

String apiKey = "HGJHGJHY787BNDFH";     //  Enter your Write API key from ThingSpeak
const char* resource = "/update?api_key=";
const char* server = "api.thingspeak.com";

char ssid[] = "mywifihp";
char pass[] = "123456789";

WiFiClient client;

void setup()
{
  WiFi.begin(ssid, pass);
  dataIn="";
  // Debug console
  Serial.begin(9600);
}

void loop()
{

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

if(parsing){
  parsingData();   
}

counter++;

if(counter > 10){
    counter = 0;
    kirimdata();
}

delay(1000);
}

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 3 : ");
//Serial.print(dt[2].toInt());
//Serial.print("\n\n");

 tegangan = datain1 / 100.0;
 arus = datain2 / 100.0;
 rpm = datain3 / 1;

}

void kirimdata(){
   
if(client.connect(server, 80)){
    String postStr= apiKey;
    postStr += "&field1=";
    postStr += String(tegangan);
    postStr += "\r\n\r\n";

   client.print(String("GET ") + resource + apiKey + "&field1=" + tegangan + "&field2=" + arus + "&field3=" + rpm + " HTTP/1.1\r\n" + "Host: " + server + "\r\n" + "Connection: close\r\n\r\n");
   
    client.print("POST /update HTTP/1.1\n");
    client.print("Host: api.thingspeak.com\n");
    client.print("Connection: close\n");
    client.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n");
    client.print("Content-Type: application/x-www-form-urlencoded\n");
    client.print("Content-Length: ");
    client.print(postStr.length());
    client.print("\n\n");
    client.print(postStr);
    
    Serial.println("%. Send to Thingspeak.");
    
  }

  client.stop();
  Serial.println("Waiting...");
  delay(15000);
  
}



h. VIDEO HASILNYA





Robot Lengan / ARM dan Monitor Suhu LM35 BLYNK (IOT)

Robot Lengan / ARM dan Monitor Suhu LM35 BLYNK (IOT)


       Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuat alat yang bisa mengendalikan robot lengan dan juga monitoring suhu via blynk, alat ini menggunakan nodemcu dan arduino sebagai kontrollernya, untuk lebih jelasnya berikut adalah skema dan programnya. 



a. Skema Alat





b. Program Arduino IDE Robot Lengan

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

Servo myservo1;
Servo myservo2;
Servo myservo3;
Servo myservo4;

int a;
int b;
int c;
int d;
int e;
int btset = 6;
int btsetx;

void setup(){
myservo1.attach(7);
myservo2.attach(9);
myservo3.attach(10);
myservo4.attach(11);
pinMode(btset,INPUT_PULLUP);

 myservo1.write(40);
 myservo2.write(60);
 myservo3.write(130);
 myservo4.write(150);
 delay(3000);
}

void loop(){

btsetx = digitalRead(btset);

//memanen
if(btsetx == 0){ 
lepas();  
kanan();  
turun();
maju();
japit();
mundur();
naik();

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

//menanam
if(btsetx == 1){
japit();
turun();
maju();
mundur();
naik();     
kananx();
turun();
maju();
mundur();
naik();
tengahx();  
turun();
maju();
mundur();
naik();
kirix();
}

}

void kananx(){
  for(a=40;a<=80;a++){
  myservo1.write(a);
  delay(50);
  }
  return;
}

void tengahx(){
  for(a=80;a<=120;a++){
  myservo1.write(a);
  delay(50);
  }
  return;
}

void kirix(){
  for(a=120;a>=40;a--){
  myservo1.write(a);
  delay(50);
  }
  return;
}

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

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

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

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

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

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

void japit(){
  for(e=150;e>=120;e--){
  myservo4.write(e);
  delay(50);
  }
  return;
}

void lepas(){
  for(e=120;e<=150;e++){
  myservo4.write(e);
  delay(50);
  }
  return;
}



c. Program Arduino IDE Monitor Suhu

#define BLYNK_PRINT Serial    // Comment this out to disable prints and save space
#include <SPI.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>
 
    // You should get Auth Token in the Blynk App.
    // Go to the Project Settings (nut icon).
    char auth[] = "gjghgjThghfxfxdaklhhbhjbhhvGHGhjV";
    char ssid[] = "myhotspothp";
    char pass[] = "1234567890";

    int dataadc;
 
    float suhu;
    int tempPin = A0;   //Output lm35 ke A0 dan LED ke pin D4
 
    SimpleTimer timer;
 
    void setup()
    {
      Serial.begin(9600); // See the connection status in Serial Monitor
      Blynk.begin(auth, ssid, pass);
 
      // Setup a function to be called every second
      timer.setInterval(1000L, sendUptime);
    }
 
    // that you define how often to send data to Blynk App.
    void sendUptime()
    {
     // shows the value temp on virtual pin 10
      Blynk.virtualWrite(V6, suhu);
    }
 
    void loop()
    {
      Blynk.run(); // Initiates Blynk
      timer.run(); // Initiates SimpleTimer
   
       dataadc = analogRead(tempPin);
       suhu = dataadc * (3.2 / 1023.0) * 100.0;
   
    }

    

d. VIDEO HASILNYA





Monitoring Input Relay LDR dan SMS Gateway + RTC

 Monitoring Input Relay LDR dan SMS Gateway + RTC


          Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang menggunakan relay sebagai input untuk mengaktifkan sms, jadi jika sensor ldr terkena suatu kondisi tertentu maka akan melakukan sms ke nomer yang dituju. untuk lebih jelasnya berikut adalah program dan komponenya. 
 
 
 
a. Minimum System ATMega328 / Arduino Uno




b. Modul SIM900A




c. Relay Input LDR





d. Program Arduino IDE

#include <SD.h>
#include <SPI.h>
#include <DS3231.h>
#include <Wire.h>
#include "SIM900.h"
#include <SoftwareSerial.h>
#include <LiquidCrystal_I2C.h>
#include <stdlib.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#include <stdlib.h>
#define DS3231_I2C_ADDRESS 0x68
#include "sms.h"
SMSGSM sms;
File myFile;

DS3231  rtc(SDA, SCL);
int pinCS = 5; // Pin 10 on Arduino Uno

int pinin1 = 8;
int pinin2 = 9;
int pinin1x;
int pinin2x;
int tanda1 = 0;
int tanda2 = 0;
int cek = 0;
const int chipSelect = 10;
int numdata;
boolean started=false;
char smsbuffer[160];
char n[20];

void setup() {
   if (gsm.begin(2400)) {
          //Serial.println("\nstatus=READY");
          started = true;
     } else //Serial.println("\nstatus=IDLE");
     
     if(started) {
          //Enable this two lines if you want to send an SMS.
          if (sms.SendSMS("085123123123", "Alat Ready"));
     }
 
  lcd.begin(); //set lcd i2c
  lcd.noCursor(); //biar gak ada cursor di lcd
  lcd.clear(); //clear lcd
  lcd.setCursor(0, 0);
  lcd.print("LOADING...");
  Serial.begin(9600);
  pinMode(pinCS, OUTPUT);
   pinMode(pinin1,INPUT_PULLUP);
  pinMode(pinin2,INPUT_PULLUP);
 
  Serial.println("GSM Shield testing.");
     //Start configuration of shield with baudrate.
     //For http uses is raccomanded to use 4800 or slower.
     // SD Card Initialization
 
  if (SD.begin())
  {
    Serial.println("SD card is ready to use.");
  } else
  {
    Serial.println("SD card initialization failed");
    return;
  }
     lcd.clear();
  rtc.begin();    
}

void loop() {
rtc.begin();
    
pinin1x = digitalRead(pinin1);
pinin2x = digitalRead(pinin2);

lcd.setCursor(0, 0);
lcd.print(rtc.getTimeStr());
lcd.print("                           ");

lcd.setCursor(0, 1);
lcd.print(pinin1x);
lcd.print("/");
lcd.print(pinin2x);

if((pinin1x == 0)&&(tanda1 == 0)){
gsm.begin(2400);  
if (sms.SendSMS("085123123123", "switch status relay1 ON"));
tanda1 = 1;
//simpan();
}

if((pinin1x == 1)&&(tanda1 == 1)){
gsm.begin(2400);   
if (sms.SendSMS("085123123123", "switch status relay1 ON"));
tanda1 = 0;
//simpan();
}

if((pinin2x == 0)&&(tanda2 == 0)){
gsm.begin(2400);   
if (sms.SendSMS("085123123123", "switch status relay1 ON"));
tanda2 = 1;
//simpan();
}

if((pinin2x == 1)&&(tanda2 == 1)){
gsm.begin(2400);   
if (sms.SendSMS("085123123123", "switch status relay1 ON"));
tanda2 = 0;
//simpan();
}

delay(1000);

}

/*
 void simpan(){

  myFile = SD.open("coba.txt", FILE_WRITE);
  if (myFile) {    
    myFile.print(rtc.getTimeStr());
    myFile.println("                 ");    
    
    if(pinin1x == 1){
  myFile.println("RELAY1 ON");
  }

  if(pinin1x == 0){
  myFile.println("RELAY1 OFF");
  }

  if(pinin2x == 1){
  myFile.println("RELAY2 ON");
  }

  if(pinin2x == 0){
  myFile.println("RELAY2 OFF");
  }
    myFile.close(); // close the file
  }
  // if the file didn't open, print an error:
  else {
    Serial.println("error opening test.txt");
  }
   
  lcd.setCursor(0,0);
  lcd.print("saving.....");
  delay(1000);

}
*/


e. VIDEO HASILNYA
 


   

Tutorial Modul ESP-32 Blynk Monitoring ADC (DOIT ESP32 DEVKIT V1)

Tutorial Modul ESP-32 Blynk Monitoring ADC (DOIT ESP32 DEVKIT V1)


       Pada kesempatan yg berbahagia kali ini saya akan menjelaskan mengenai bagaimana cara mengakses modul esp32 yang memiliki kelebihan dibanding modul nodemcu esp8266 yaitu memiliki jumlah pin ADC yang lebih dari satu sehingga sangat tepat digunakan untuk monitoring sensor analog yg jumlahnya lebih dari satu. untuk lebih jelasnya berikut adalah skema dan kodingnya. library blynk bisa didownload di sini link.



a. Pin Modul ESP-32 
sumber gambar : link 




b. Skema





c. Program Arduino IDE

#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>

BlynkTimer timer;
int dataadc1;
int dataadc2;
 
char auth[] = "gfhg67gfhgchg989hgffhg43gfh545gjh";
char ssid[] = "myhotspotku";
char pass[] = "123456789";

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

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

void loop() {

  dataadc1 = analogRead(34);
  dataadc2 = analogRead(35);
 
  Blynk.run();
  timer.run();
}



d. VIDEO HASILNYA