Project IoT ESP8266 ESP12E

Back to Blog

Project IoT ESP8266 ESP12E

Project yang ada di artikel ini sepenuh nya dicetak pada https://pcbway.com

Nah kalau ngomongin project IoT atau yang kepanjangan nya internet of things ini pas kita perlu sebuah akses internet agar alat yang dibuat bisa ambil data atau posting data ke internet.

Kalau di project project sebelum nya saya masih menggunakan modul GSM SIM900 atau SIM800L sebagai modul yang memberikan akses internet melalui jalur GPRS.

Tapi sekarang ada yang lebih praktis lagi yaitu sebuah mikrokontroler yang sudah ter integrasi dengan module WIFI sehingga biaya yang kita pakai untuk membuat project ini jauh lebih murah.

Pada artikel ini saya ingin membuat sebuah alat dengan sebutan Kebun Telegram.

Project IoT untuk kebun atau perkebunan ini saya buat untuk dapat memantau kebun khusus nya untuk kelembaban tanah, suhu, dan juga kelembaban udara di sekitar kebun yang ingin saya pantau.

Tapi juga alat yang saya buat sebagai IoT ini saya dapat fungsikan sebagai kontrol untuk menyalakan mesin pompa irigasi sehingga saya bisa menyiram tanaman dari jarak jauh melalui alat yang saya buat ini.

Untuk dapat berkomunikasi dengan alat ini saya menggunakan aplikasi chatting Telegram sebagai perantara, jadi untuk memantau data serta mengontrol nya saya hanya perlu chatting seperti biasa nantinya.

Komponen yang Diperlukan

  1. ESP8266 12E
  2. DHT11
  3. Relay 5V 5 Pin
  4. Regulator 3.3V AMS1117
  5. Optocoupler PC817
  6. Transistor 3904 x2
  7. Buzzer 5V
  8. Led x3
  9. Capacitor 10uF/16v x2
  10. Terminal Screw 2p
  11. Terminal Screw 3p
  12. Tactile switch
  13. Diode 4007
  14. Capacitor 22pf x2
  15. Capacitor 100nf x2
  16. Resistor 680 x9

Untuk komponen kalian bisa menggunakan komponen standar, tidak perlu menggunakan komponen SMD seperti yang saya buat di artikel ini untuk mempermudah penyolderan.

 

Gambar Skematik

Dari gambar rangkaian diatas kalian bisa perhatikan ada beberapa header yang masing masing adalah menuju ke sensor DHT11, komunikasi serial, dan sensor kelembaban tanah.

Jika kalian bingung dengan gambar rangkaian nya, kalian bisa download skematik nya dalam format eagle PCB pada akhir dari artikel ini.

[ads1]

Coding Arduino

#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
#include <DHT.h>
#define DHTPIN 4
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);


char ssid[] = "SSID KAMU";     // your network SSID (name)
char password[] = "PASSWORDNYA"; // your network key


#define BOTtoken "493614521:AAH7HlmTj53_ym3yc70qMytrUo-4inh3qBQ"  // your Bot Token (Get from Botfather)

WiFiClientSecure client;
UniversalTelegramBot bot(BOTtoken, client);
int led1=14;
int led2=13;
int relay=5;
int buzzer=12;
float h=0;
float t=0;
int val=0;
int Bot_mtbs = 1000; //mean time between scan messages
long Bot_lasttime;   //last time messages' scan has been done
bool Start = false;

void handleNewMessages(int numNewMessages) {
  Serial.println("handleNewMessages");
  Serial.println(String(numNewMessages));

  for (int i=0; i<numNewMessages; i++) {
    String chat_id = String(bot.messages[i].chat_id);
    String text = bot.messages[i].text;

    String from_name = bot.messages[i].from_name;
    if (from_name == "") from_name = "Guest";

    if (text == "/on") {
      bot.sendChatAction(chat_id, "typing");
      String welcome = "Relay dinyalakan";
      digitalWrite(buzzer,HIGH);
      delay(50);
      digitalWrite(buzzer,LOW);
      delay(50);
      digitalWrite(buzzer,HIGH);
      delay(50);
      digitalWrite(buzzer,LOW);
      digitalWrite(relay,HIGH);
      bot.sendMessage(chat_id, welcome);
    }
    if (text == "/off") {
      bot.sendChatAction(chat_id, "typing");
      String welcome = "Relay dimatikan";
      digitalWrite(buzzer,HIGH);
      delay(50);
      digitalWrite(buzzer,LOW);
      delay(50);
      digitalWrite(buzzer,HIGH);
      delay(50);
      digitalWrite(buzzer,LOW);
       delay(50);
      digitalWrite(buzzer,HIGH);
      delay(50);
      digitalWrite(buzzer,LOW);
      digitalWrite(relay,LOW);
      bot.sendMessage(chat_id, welcome);
    }
    if (text == "/sensor") {
        val = analogRead(0);
        Serial.println(val);
      bot.sendChatAction(chat_id, "typing");
      digitalWrite(buzzer,HIGH);
      delay(50);
      digitalWrite(buzzer,LOW);
      awal:
        
   h = dht.readHumidity();
   t = dht.readTemperature();
  if (isnan(h) || isnan(t)) {
    Serial.println("Failed to read from DHT sensor!");
    delay(10);
    goto awal;
  }
val= map(val,350,235,0,100);
if(val<0)val=0;
else if (val>100)val=100;
      String welcome = "Data sensor untuk " + from_name + ".\nSoil moisture: ";
      welcome += val;
      welcome += "%.\nSuhu ";
      welcome += t;
      welcome += "C.\nKelembaban ";
      welcome += h;
      welcome += "%.\nRelay dalam kondisi ";
      boolean a=digitalRead(relay);
      if(a)welcome += "menyala.";
      else welcome += "mati.";
      bot.sendMessage(chat_id, welcome);
    }
  }
}


void setup() {
  Serial.begin(115200);
  
  dht.begin();
  // Set WiFi to station mode and disconnect from an AP if it was Previously
  // connected
  WiFi.mode(WIFI_STA);
  WiFi.disconnect();
  delay(100);
  pinMode(buzzer,OUTPUT);
  pinMode(relay,OUTPUT);
  pinMode(led1,OUTPUT);
  pinMode(led2,OUTPUT);
  Serial.print("Connecting Wifi: ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    digitalWrite(led1,HIGH);
    delay(500);
  }

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
  digitalWrite(led1,LOW);
}

void loop() {
if (WiFi.status() != WL_CONNECTED) {
    delay(1);
    digitalWrite(led1,HIGH);
    WiFi.begin(ssid, password);
    return;
}
digitalWrite(led1,LOW);
  if (millis() > Bot_lasttime + Bot_mtbs)  {
    int numNewMessages = bot.getUpdates(bot.last_message_received + 1);
    digitalWrite(led2,HIGH);
    delay(10);
    digitalWrite(led2,LOW);
    while(numNewMessages) {
      Serial.println("got response");
      handleNewMessages(numNewMessages);
      numNewMessages = bot.getUpdates(bot.last_message_received + 1);
    }

    Bot_lasttime = millis();
  }
  
}

Download File

[button color=”orange” size=”medium” link=”http://yoitect.com/5NTo” icon=”” target=”false”]LIBRARY TELEGRAM[/button]

[button color=”blue” size=”medium” link=”http://yoitect.com/5NbX” icon=”” target=”false”]SKEMATIK EAGLE[/button]

[button color=”green” size=”medium” link=”http://yoitect.com/5Ngp” icon=”” target=”false”]CODING ARDUINO[/button]

 

Share this post

Komentar anda

Back to Blog