Advertisement
andretafta

Smarthome - Blynk

Jun 9th, 2021 (edited)
262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #define BLYNK_PRINT Serial //Untuk Komunikasi Serial Blynk
  2. #include <ESP8266WiFi.h> //Untuk Library NodeMCU WiFi
  3. #include <BlynkSimpleEsp8266.h> //Untuk Konek Blynk dan NodeMCU
  4. #include <DHT.h> //Library DHT
  5. #include <MQUnifiedsensor.h> //Library MQ
  6. #include <Servo.h> //Library Servo
  7. char auth[] = "Token Blynk Kalian"; //Token Blynk
  8. char ssid[] = "Wi-Fi Kalian"; //SSID Wi-Fi
  9. char pass[] = "Pass Wi-Fi kalian"; //Password Wi-Fi
  10. #define DHTPIN D4 //Pin DHT di NodeMCU
  11. #define DHTTYPE DHT11 //Jenis DHT yang digunakan
  12. #define Board ("ESP8266")
  13. #define Pin (A0) //Pin MQ-9 di NodeMCU
  14. #define Type ("MQ-9") //MQ9
  15. #define Voltage_Resolution (5) //Tegangan yang digunakan
  16. #define ADC_Bit_Resolution (10) //Nilai Bit ADC NodeMCU
  17. #define RatioMQ9CleanAir (9.6) //Parameter
  18. #define Lampu D0 //Relay 1
  19. #define Kipas D1 //Relay 2
  20.  
  21. DHT dht(DHTPIN, DHTTYPE); //Identifikasi DHT dan aktifkan fungsi
  22. DHT
  23. Servo servo; //Mengaktifkan fungsi Servo
  24. MQUnifiedsensor MQ9(Board, Voltage_Resolution, ADC_Bit_Resolution,
  25. Pin, Type); //Identifikasi MQ dan Aktifkan fungsi MQ
  26. BlynkTimer timer; //Blynk Timer
  27. //Untuk melakukan pembacaan sensor
  28. void sendSensor()
  29. {
  30. //Untuk melakukan pembacaan nilai LPG dan CO
  31.  MQ9.update();
  32.  MQ9.setA(1000.5); MQ9.setB(-2.186);
  33.  float LPG = MQ9.readSensor();
  34.  MQ9.setA(599.65); MQ9.setB(-2.244);
  35.  float CO = MQ9.readSensor();
  36. //Untuk melakukan pembacaan nilai Suhu dan Humidity
  37.  float h = dht.readHumidity();
  38.  float t = dht.readTemperature();
  39.  if (isnan(h) || isnan(t)) {
  40.  Serial.println("Failed to read from DHT sensor!");
  41.  return;
  42.  
  43. }
  44. //Mengirimkan nilai ke Blynk
  45.  Blynk.virtualWrite(V5, t);
  46.  Blynk.virtualWrite(V6, h);
  47.  Blynk.virtualWrite(V7, LPG);
  48.  Blynk.virtualWrite(V8, CO);
  49. }
  50. //Untuk fungsi menggerakkan Servo
  51. BLYNK_WRITE(V3)
  52. {
  53. //Kondisi apabila nilai yang diterima 1, maka servo bergerak ke
  54. 180 derajat, dan apabila nilai yang diterima 0, maka servo
  55. bergerak ke 0 derajat
  56.  int pinValue = param.asInt();
  57.  if (pinValue == 1) {
  58.  servo.write(180);
  59.  }
  60.  if (pinValue == 0) {
  61.  servo.write(0);
  62.  } }
  63. void setup()
  64. {
  65.  Serial.begin(115200); //Komunikasi Serial Baudrate 115200
  66.  pinMode(Lampu, OUTPUT); //Set Relay 1 jadi Output
  67.  pinMode(Kipas, OUTPUT); //Set Relay 2 jadi Output
  68.  digitalWrite(Lampu, HIGH); //Set nilai Awal Relay 1
  69.  digitalWrite(Kipas, HIGH); //Set nilai Awal relay 2
  70.  Blynk.begin(auth, ssid, pass); //Komunikasi ke Wifi dan Blynk
  71.  servo.attach(12); //Pin Servo di NodeMCU
  72.  dht.begin(); //Memulai aktif DHT
  73.  MQ9.setRegressionMethod(1); //Mengatur Metode Kalibrasi MQ
  74.  MQ9.init(); //Memulai aktif MQ
  75. //Kalkulasi untuk Kalibrasi MQ-9
  76.  float calcR0 = 0;
  77.  for(int i = 1; i<=10; i ++)
  78.  {
  79.  MQ9.update();
  80.  calcR0 += MQ9.calibrate(RatioMQ9CleanAir);
  81.  Serial.print(".");
  82.  }
  83.  MQ9.setR0(calcR0/10);
  84. //Timer untuk interval pengiriman hasil pembacaan sensor ke Blynk
  85.  timer.setInterval(1000L, sendSensor);
  86. }
  87. void loop()
  88. {
  89.  Blynk.run(); //Menjalankan Blynk
  90.  timer.run(); //Mengaktifkan fungsi Timer
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement