Translate

Monitoring Warna dan kekeruhan Air Sensor TCS3200 dan Turbidity ESP32

Monitoring Warna dan kekeruhan Air Sensor TCS3200 dan Turbidity ESP32
 

      Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang dapat memonitoring warna dan kekeruhan air. alat ini mengginakan lcd Nextion dan ESP32 selain itu juga alat ini dimonitoring dengan IOT Blynk. berikut adalah skema dan kodingnya.


1. Skema



2. Program ESP32

#include <WiFi.h>
#include <WiFiClient.h>

#define S2 35 /*Define S2 Pin Number of ESP32*/
#define S3 32 /*Define S3 Pin Number of ESP32*/
#define sensorOut 33 /*Define Sensor Output Pin Number of ESP32*/

#define RXD2 16
#define TXD2 17

String apiKey = "0OIYJ1X0ML1VPKXX";     //  Enter your Write API key from ThingSpeak
const char* resource = "/update?api_key=";

const char *ssid =  "hotspothpku";     // replace with your wifi ssid and wpa2 key
const char *pass =  "123456789";
const char* server = "api.thingspeak.com";

WiFiClient client;

/*Define int variables*/
int Red = 0;
int Green = 0;
int Blue = 0;
int Frequency = 0;
int adctds;
int tds;

void setup() {
  pinMode(S2, OUTPUT); /*Define S2 Pin as a OUTPUT*/
  pinMode(S3, OUTPUT); /*Define S3 Pin as a OUTPUT*/
  pinMode(sensorOut, INPUT); /*Define Sensor Output Pin as a INPUT*/
  Serial.begin(9600); /*Set the baudrate to 115200*/
  Serial2.begin(9600, SERIAL_8N1, RXD2, TXD2);

  // Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, pass);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");

      while (WiFi.status() != WL_CONNECTED)
     {
            delay(500);
            Serial.print(".");
     }
      Serial.println("");
      Serial.println("WiFi connected");

}

void loop() {

  adctds = analogRead(34);
  tds = map(adctds,250,4096,100,0);

  if(tds < 0){
    tds = 0;
  }
    
  Red = getRed();
  delay(200); /*wait a 200mS*/
  Green = getGreen();
  delay(200); /*wait a 200mS*/
  Blue = getBlue();
  delay(200); /*wait a 200mS*/

  lcdCMD("n0.val=" + String(Red));
  lcdCMD("n1.val=" + String(Green));
  lcdCMD("n2.val=" + String(Blue));
  lcdCMD("n3.val=" + String(tds)); 

kirimdata();  
}

int getRed() {
  digitalWrite(S2,LOW);
  digitalWrite(S3,LOW);
  Frequency = pulseIn(sensorOut, LOW); /*Get the Red Color Frequency*/
  return Frequency;
}

int getGreen() {
  digitalWrite(S2,HIGH);
  digitalWrite(S3,HIGH);
  Frequency = pulseIn(sensorOut, LOW); /*Get the Green Color Frequency*/
  return Frequency;
}

int getBlue() {
  digitalWrite(S2,LOW);
  digitalWrite(S3,HIGH);
  Frequency = pulseIn(sensorOut, LOW); /*Get the Blue Color Frequency*/
  return Frequency;
}

void lcdCMD(String cmd) {
  Serial2.print(cmd);
  Serial2.write(0xff);
  Serial2.write(0xff);
  Serial2.write(0xff);
}


void kirimdata(){

   if (client.connect(server,80))   //   "184.106.153.149" or api.thingspeak.com
                   {
                           
                             String postStr = apiKey;
                             postStr +="&field1=";
                             postStr += String(Red);
                             postStr += "\r\n\r\n";

                             client.print(String("GET ") + resource + apiKey + "&field1=" + Red + "&field2=" + Green + "&field3=" + Blue + "&field4=" + tds + " HTTP/1.1\r\n" + "Host: " + server + "\r\n" + "Connection: close\r\n\r\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...");
 
  // thingspeak needs minimum 15 sec delay between updates, i've set it to 30 seconds
  delay(1000);
  
}



3. VIDEO HASILNYA
 

 

No comments:

Post a Comment