Y0xJr4ZyhulzH5RDMM3o5sTUqACs4sWSSKEos0Fl
Bookmark

cara membuat keamanan pintu otomatis berbasis iot




kali ini kita akan belajar membuat alat keamanan pintu otomatis menggunakan selenoid door lock berbasis iot.

#penting yang harus diperhatikan :
instal library
instal port arduino
board disesuaikan yang saat kita gunakan (arduino, nodemcu, dll)

komponen yang dibutuhkan :
1. adapter 12 volt (bisa gunakan carging HP kalian)
2. sensor sentuh / touch sensor
3. selenoid door lock
4. kabel jumper (male to male, male to female, female to female)
5. breadboard arduino
6. nodemcu (ESP8266)
7. modul relay
8. jack DC

skema rangkaian yang harus diperhatikan

penjelasan pin gambar diatas


Sensor Sentuh NodeMCU
VCC 5V
GND GND
SIG D7
Module Relay NodeMCU
IN 1 D4
GND GND
VCC 5V
Module Relay Door Lock
NO + (merah)
COM + Jack DC
Selenoid (hitam) ke (-) Jack DC

source code (coding)

#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>

// Wifi network station credentials
#define WIFI_SSID "Redmi Note 9 Pro"
#define WIFI_PASSWORD "123456789"
// Telegram BOT Token (Get from Botfather)
#define BOT_TOKEN "5123947571:AAGhTz2-aHVHBUN_-oFA9F5NG8g5SgGmDV0"

#define TouchSensor 13 // Pin Di gunakan untuk capactitive touch sensor

#define RELAY_ON 0
#define RELAY_OFF 1
#define RELAY_1  2   // pin yang digunakan yaitu pin 2

boolean currentState = LOW;
boolean lastState = LOW;
boolean RelayState = LOW;

const unsigned long BOT_MTBS = 1000; // mean time between scan messages

X509List cert(TELEGRAM_CERTIFICATE_ROOT);
WiFiClientSecure secured_client;
UniversalTelegramBot bot(BOT_TOKEN, secured_client);
unsigned long bot_lasttime; // last time messages' scan has been done

const int ledPin = 2;
int ledStatus = 0;

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

  for (int i = 0; i < numNewMessages; i++)
  {
    String chat_id = 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 == "/kuncibuka")
    {
      digitalWrite(ledPin, LOW); // turn the LED on (HIGH is the voltage level)
      ledStatus = 1;
      bot.sendMessage(chat_id, "Led is ON", "");
    }

    if (text == "/kuncitutup")
    {
      ledStatus = 0;
      digitalWrite(ledPin, HIGH); // turn the LED off (LOW is the voltage level)
      bot.sendMessage(chat_id, "Led is OFF", "");
    }

    if (text == "/status")
    {
      if (ledStatus)
      {
        bot.sendMessage(chat_id, "Led is ON", "");
      }
      else
      {
        bot.sendMessage(chat_id, "Led is OFF", "");
      }
    }

    if (text == "/start")
    {
      String welcome = "Welcome to Universal Arduino Telegram Bot library, " + from_name + ".\n";
      welcome += "This is Flash Led Bot example.\n\n";
      welcome += "/kuncibuka : to switch the Led ON\n";
      welcome += "/kuncitutup : to switch the Led OFF\n";
      welcome += "/status : Returns current status of LED\n";
      bot.sendMessage(chat_id, welcome, "Markdown");
    }
  }
}


void setup()
{
  Serial.begin(9600);
  pinMode(RELAY_1, OUTPUT);
  digitalWrite(RELAY_1, RELAY_OFF);
  pinMode(TouchSensor, INPUT);
  
  Serial.begin(115200);
  Serial.println();

  pinMode(ledPin, OUTPUT); // initialize digital ledPin as an output.
  delay(10);
  digitalWrite(ledPin, HIGH); // initialize pin as off (active LOW)

  // attempt to connect to Wifi network:
  configTime(0, 0, "pool.ntp.org");      // get UTC time via NTP
  secured_client.setTrustAnchors(&cert); // Add root certificate for api.telegram.org
  Serial.print("Connecting to Wifi SSID ");
  Serial.print(WIFI_SSID);
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  while (WiFi.status() != WL_CONNECTED)
  {
    Serial.print(".");
    delay(500);
  }
  Serial.print("\nWiFi connected. IP address: ");
  Serial.println(WiFi.localIP());

  // Check NTP/Time, usually it is instantaneous and you can delete the code below.
  Serial.print("Retrieving time: ");
  time_t now = time(nullptr);
  while (now < 24 * 3600)
  {
    Serial.print(".");
    delay(100);
    now = time(nullptr);
  }
  Serial.println(now);
}

void loop()
{
  currentState = digitalRead(TouchSensor);
  if (currentState == HIGH && lastState == LOW) {
    Serial.println("pressed");
    delay(1);

    if (RelayState == HIGH) {
      digitalWrite(RELAY_1, RELAY_OFF);
      RelayState = LOW;
    } else {
      digitalWrite(RELAY_1, RELAY_ON);
      RelayState = HIGH;
    }
  }
  lastState = currentState;
  
  if (millis() - bot_lasttime > BOT_MTBS)
  {
    int numNewMessages = bot.getUpdates(bot.last_message_received + 1);

    while (numNewMessages)
    {
      Serial.println("got response");
      handleNewMessages(numNewMessages);
      numNewMessages = bot.getUpdates(bot.last_message_received + 1);
    }

    bot_lasttime = millis();
  }
}

link video youtube


1

1 komentar

  • Muhamad Irfandi
    Muhamad Irfandi
    Minggu, Juli 03, 2022 3:07:00 PM
    Tes comment
    Reply