#include <TinyGPS++.h>
#include <HardwareSerial.h>
#include <DHT.h>
#define RXPin 22 // กำหนดพิน RX สำหรับ GPS
#define TXPin 21 // กำหนดพิน TX สำหรับ GPS
#define DHTPIN 15 // กำหนดพินที่เชื่อมต่อกับ DHT22
#define DHTTYPE DHT22 // ใช้ DHT22
static const uint32_t GPSBaud = 4800;
// The TinyGPS++ object
TinyGPSPlus gps;
HardwareSerial ss(1); // กำหนดการใช้งาน HardwareSerial
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
ss.begin(GPSBaud, SERIAL_8N1, RXPin, TXPin); // ตั้งค่าพอร์ต GPS
dht.begin();
Serial.println(TinyGPSPlus::libraryVersion());
}
void loop() {
while (ss.available() > 0) {
int incomingByte = ss.read();
Serial.print(incomingByte, DEC); // แสดงข้อมูลที่ได้รับจาก GPS
if (gps.encode(incomingByte)) {
displayInfo();
}
}
if (millis() > 5000 && gps.charsProcessed() < 10) {
Serial.println(F("No GPS detected: check wiring."));
while (true);
}
}
void displayInfo() {
// กำหนดค่าละติจูดและลองจิจูดที่คุณต้องการ
float lat = 9.094432959189849;
float lng = 99.35661077022291;
float temp = dht.readTemperature(); // อ่านอุณหภูมิ
float hum = dht.readHumidity(); // อ่านความชื้น
if (isnan(temp) || isnan(hum)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
Serial.print(F("Location: "));
// แสดงละติจูดและลองจิจูด
Serial.print(lat, 6);
Serial.print(F(", "));
Serial.print(lng, 6);
Serial.print(F(" | Temp: "));
Serial.print(temp);
Serial.print(F("C | Hum: "));
Serial.print(hum);
Serial.println(F("%"));
// สร้าง URL สำหรับ Google Maps โดยใช้ค่าละติจูดและลองจิจูดที่กำหนด
String googleMapsURL = "https://www.google.com/maps?q=" + String(lat, 6) + "," + String(lng, 6);
// แสดง URL ของ Google Maps ใน Serial Monitor
Serial.print("Google Maps URL: ");
Serial.println(googleMapsURL); // แสดง URL
}