From 86881253f736b6e6b4511ec9eb04e82011bb2997 Mon Sep 17 00:00:00 2001 From: RagaMulya Date: Fri, 19 Jul 2024 13:41:02 +0700 Subject: [PATCH] Upload files to "/" --- Program Sabuk Pintar.ino | 163 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 163 insertions(+) create mode 100644 Program Sabuk Pintar.ino diff --git a/Program Sabuk Pintar.ino b/Program Sabuk Pintar.ino new file mode 100644 index 0000000..dc735f4 --- /dev/null +++ b/Program Sabuk Pintar.ino @@ -0,0 +1,163 @@ +#include +#include +#include +#include + +const char* ssid = "ragamulya"; +const char* password = "ragamulyapratama"; + +// inisialisasi Bot Token +#define BOTtoken "7067525572:AAHYFVB9PzGCGuB07TteNHDprgCt1yNI8SI" // Bot Token dari BotFather + +// chat id dari @myidbot +#define CHAT_ID "6288849710" + +WiFiClientSecure client; +UniversalTelegramBot bot(BOTtoken, client); + +int botRequestDelay = 100; +unsigned long lastTimeBotRan; + +#include +#include + +HardwareSerial GPSSerial(1); +TinyGPSPlus gps; + +// Inisialisasi pin buzzer +const int buzzerPin = 23; +// Inisialisasi pin push button +const int buttonPin = 26; +bool buttonState = false; +bool lastButtonState = false; + +// Variabel untuk menyimpan histori lokasi +String locationHistory[5]; +int historyIndex = 0; + +void handleNewMessages(int numNewMessages) { + Serial.println("handleNewMessages"); + Serial.println(String(numNewMessages)); + + for (int i=0; i 10) { + float currentLat = gps.location.lat(); + float currentLng = gps.location.lng(); + + if (text == "/start") { + String control = "Selamat Datang, " + from_name + ".\n"; + control += "Gunakan Commands Di Bawah Untuk Mengetahui Lokasi Anak \n\n"; + control += "/start Untuk Memulai \n"; + control += "/lokasi Untuk Mengetahui lokasi saat ini \n"; + control += "/buzzer Untuk Menyalakan Buzzer\n"; + control += "/matikan Untuk Mematikan Buzzer\n"; + control += "/history Untuk Melihat 5 Histori Terakhir\n"; + bot.sendMessage(chat_id, control, ""); + } + + if (text == "/lokasi"){ + String lokasi = "lokasi : https://www.google.com/maps/place/"; + lokasi +=String(currentLat,6); + lokasi +=","; + lokasi +=String(currentLng,6); + bot.sendMessage(chat_id, lokasi, ""); + + // Menyimpan lokasi ke dalam histori + locationHistory[historyIndex] = lokasi; + historyIndex = (historyIndex + 1) % 5; + } + + // Menyalakan buzzer saat menerima pesan /buzzer + if (text == "/buzzer") { + digitalWrite(buzzerPin, HIGH); + bot.sendMessage(chat_id, "Buzzer telah dinyalakan.", ""); + } + + // Mematikan buzzer saat menerima pesan /matikan + if (text == "/matikan") { + digitalWrite(buzzerPin, LOW); + bot.sendMessage(chat_id, "Buzzer telah dimatikan.", ""); + } + + // Mengirimkan histori lokasi saat menerima pesan /history + if (text == "/history") { + String historyMsg = "Histori Lokasi:\n"; + for (int i = 0; i < 5; i++) { + if (locationHistory[i] != "") { + historyMsg += String(i + 1) + ". " + locationHistory[i] + "\n"; + } + } + bot.sendMessage(chat_id, historyMsg, ""); + } + } + } +} + +void setup() { + Serial.begin(115200); + pinMode(buzzerPin, OUTPUT); // Mengatur pin buzzer sebagai output + pinMode(buttonPin, INPUT_PULLUP); // Mengatur pin push button sebagai input dengan resistor pull-up internal + GPSSerial.begin(9600, SERIAL_8N1, 16, 17); + // Koneksi Ke Wifi + WiFi.mode(WIFI_STA); + WiFi.begin(ssid, password); + #ifdef ESP32 + client.setCACert(TELEGRAM_CERTIFICATE_ROOT); + #endif + while (WiFi.status() != WL_CONNECTED) { + delay(1000); + Serial.println("Connecting to WiFi.."); + } + // Print ESP32 Local IP Address + Serial.println(WiFi.localIP()); +} + +void loop() { + // Membaca status tombol tekan + buttonState = digitalRead(buttonPin); + + // Jika tombol tekan ditekan (LOW) dan status sebelumnya HIGH + if (buttonState == LOW && lastButtonState == HIGH) { + sendLocation(); + delay(2000); // Debouncing delay + } + + lastButtonState = buttonState; + + if (millis() > lastTimeBotRan + botRequestDelay) { + 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); + } + lastTimeBotRan = millis(); + } +} + +void sendLocation() { + float currentLat = gps.location.lat(); + float currentLng = gps.location.lng(); + String lokasi = "Lokasi : https://www.google.com/maps/place/"; + lokasi +=String(currentLat,6); + lokasi +=","; + lokasi +=String(currentLng,6); + bot.sendMessage(CHAT_ID, lokasi, ""); + + // Menyimpan lokasi ke dalam histori + locationHistory[historyIndex] = lokasi; + historyIndex = (historyIndex + 1) % 5; +}