อยากให้ช่วยแนะนำการแก้โค้ดครับสิ่งที่ต้องการคือส่ง IP ของ gps module ไปที่ไลน์ทุกครั้งที่กดปุ่มครับ
โค้ดครับ
#include <TinyGPS++.h>
#include <SoftwareSerial.h>
#include <ESP8266WiFi.h>
#include <TridentTD_LineNotify.h>
TinyGPSPlus gps;
SoftwareSerial SerialGPS(5, 4);
#define Trig_PIN D5 //กำหนดขา D5 in NodeMCU ESP8266
#define Echo_PIN D6 //กำหนดขา D6 in NodeMCU ESP8266
// ตั้งค่า ชื่อ และ password wifi เพื่อเชื่อมต่ออินเทอร์เน็ต.
#define SSID “fuse” // ชื่อ wifi ที่จะเชื่อมต่อ ในส่วนของผู้สอนใช้ wifi ชื่อ Registers
#define PASSWORD “AD444???” // รหัส wifi ที่จะเชื่อมต่อ ในส่วนของผู้สอนใช้ รหัส wifi 12345678
#define LINE_TOKEN “WGaREiEs6iq1fh1GifhjHluA1vS56px0GEw1k2hDHcQ” // ใส่ Token ที่ได้มาจากขั้นตอนก่อนหน้า
float Latitude , Longitude;
int year , month , date, hour , minute , second;
String DateString , TimeString , LatitudeString , LongitudeString;
int Switch1 = D7;
WiFiServer server(80);
void setup()
{
pinMode(D4,OUTPUT);
pinMode(D8,OUTPUT);
Serial.begin(115200); Serial.println();
Serial.println(LINE.getVersion());
Serial.begin(9600);
SerialGPS.begin(9600);
Serial.println();
Serial.print(“Connecting”);
WiFi.begin(SSID, PASSWORD);
Serial.printf(“WiFi connecting to %sn”, SSID);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(“.”);
}
Serial.println(“”);
Serial.println(“WiFi connected”);
server.begin();
Serial.println(“Server started”);
Serial.println(WiFi.localIP());
pinMode(Echo_PIN, INPUT);
pinMode(Trig_PIN, OUTPUT);
LINE.setToken(LINE_TOKEN);
{
pinMode(Switch1,INPUT_PULLUP);
delay(500);
}
}
void loop()
{
int Unso = US(); //นำฟังก์ชันการทำงานของ เซนเซอร์มาเก็บไว้ในตัวแปล Unso
Serial.print(Unso);
Serial.println(" : เซนติเมตร");
delay(100);
// เช็กเงื่อนไข หาก เซนเซอวัดระยะวัดว่ามีวัตถุเข้ามาในระยะ 30 เซนทำการส่งข้อความแจ้งเตือน
if(Unso<=50){
digitalWrite(D8,HIGH);
digitalWrite(D4,HIGH);
delay(1000);
digitalWrite(D8,LOW);
digitalWrite(D4,LOW);
delay(1000);
}
else {
digitalWrite(D8,LOW);
digitalWrite(D4,LOW);
}
int Switch1State = digitalRead(Switch1);
if(Switch1State == LOW){
LINE.notify("มีการกดขอความช่วยเหลือ");
delay(500);
}
else{
}
int Locate = WiFi.localIP();
if(Switch1State == LOW){
LINE.notify("https:// (Locate)");
delay(500);
}
else{
}
{
while (SerialGPS.available() > 0)
if (gps.encode(SerialGPS.read()))
{
if (gps.location.isValid())
{
Latitude = gps.location.lat();
LatitudeString = String(Latitude , 6);
Longitude = gps.location.lng();
LongitudeString = String(Longitude , 6);
}
if (gps.date.isValid())
{
DateString = "";
date = gps.date.day();
month = gps.date.month();
year = gps.date.year();
if (date < 10)
DateString = '0';
DateString += String(date);
DateString += " / ";
if (month < 10)
DateString += '0';
DateString += String(month);
DateString += " / ";
if (year < 10)
DateString += '0';
DateString += String(year);
}
if (gps.time.isValid())
{
TimeString = "";
hour = gps.time.hour()+ 7; //adjust UTC
minute = gps.time.minute();
second = gps.time.second();
if (hour < 10)
TimeString = '0';
TimeString += String(hour);
TimeString += " : ";
if (minute < 10)
TimeString += '0';
TimeString += String(minute);
TimeString += " : ";
if (second < 10)
TimeString += '0';
TimeString += String(second);
}
}
WiFiClient client = server.available();
if (!client)
{
return;
}
//Response
String s = “HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n NEO-6M GPS Readings ”;
s += “table, th, td {border: 1px solid blue;} <h1 style=”;
s += “font-size:300%;”;
s += " ALIGN=CENTER>NEO-6M GPS Readings“;
s += “<p ALIGN=CENTER style=”“font-size:150%;””";
s += “> Location Details
s += “width:50%”;
s += “> Latitude”;
s += “”;
s += LatitudeString;
s += “ Longitude ”;
s += LongitudeString;
s += “ Date ”;
s += DateString;
s += “ Time ”;
s += TimeString;
s += " ";
if (gps.location.isValid())
{
s += “
<a style=”“color:RED;font-size:125%;”" href=““Google Maps”;
s += LatitudeString;
s += “+”;
s += LongitudeString;
s += “”” target=“”_top"“>Click here to open the location in Google Maps.
}
s += “ \n”;
client.print(s);
delay(100);
}
}
/// เป็นฟังชันก์การทำงานของเซนเซอร์วัดระยะ Ultrasonic sensor
long US(){
long duration, cm;
pinMode(Trig_PIN, OUTPUT);
digitalWrite(Trig_PIN, LOW);
delayMicroseconds(2);
digitalWrite(Trig_PIN, HIGH);
delayMicroseconds(5);
digitalWrite(Trig_PIN, LOW);
pinMode(Echo_PIN, INPUT);
duration = pulseIn(Echo_PIN, HIGH);
return cm = duration /29 / 2;
delay(1000);
}
ตรงนี้ต้องแก้ตรงไหนหรอคับ