gps differentiates between case 0 and case 1
This commit is contained in:
@@ -1,11 +1,10 @@
|
||||
// ===================================================================
|
||||
// Auth: alex
|
||||
// File: gps_conn_static.ino
|
||||
// Revn: 08-01-2023 2.0
|
||||
// Revn: 08-08-2023 3.0
|
||||
// Func: connect GPS module to Golang's net.Conn via ESP8266
|
||||
//
|
||||
// TODO: first loop static bool to distinguish between case 0 and 1
|
||||
// store data in EEPROM, retrieve it after power failure
|
||||
// TODO: store data in EEPROM, retrieve it after power failure
|
||||
// ===================================================================
|
||||
// CHANGE LOG
|
||||
// -------------------------------------------------------------------
|
||||
@@ -19,6 +18,10 @@
|
||||
// (very broken)
|
||||
//*08-01-2023: ac removed spin loop, added isUpdated() condition to
|
||||
// client sending block
|
||||
// 08-07-2023: ac rough bones for separating case 0 from case 1
|
||||
//*08-08-2023: ac fleshed out the rough bones
|
||||
// moved smart delay and updated/valid prints out of
|
||||
// mode if/else blocks
|
||||
//
|
||||
// ===================================================================
|
||||
|
||||
@@ -33,6 +36,7 @@
|
||||
|
||||
// wifi credentials
|
||||
#ifndef STASSID
|
||||
//#define STASSID "kaer fdsafdsafdsa"
|
||||
#define STASSID "kaer morhen"
|
||||
#define STAPSK "project:sentinel"
|
||||
#endif
|
||||
@@ -57,6 +61,8 @@ const uint16_t port = 1202;
|
||||
|
||||
// literally keep track of how many messages have been sent
|
||||
int count = 0;
|
||||
int attempts = 0; // keep track of connection attempts
|
||||
bool mode = false; // keep track of connection status
|
||||
|
||||
// Create an Instance of the TinyGPS++ object called gps
|
||||
TinyGPSPlus gps;
|
||||
@@ -79,21 +85,64 @@ void setup() {
|
||||
WiFi.begin(ssid, password);
|
||||
|
||||
// wait for connection to be established
|
||||
while (WiFi.status() != WL_CONNECTED) {
|
||||
while (WiFi.status() != WL_CONNECTED && attempts < 10) {
|
||||
delay(500);
|
||||
Serial.print(".");
|
||||
attempts++;
|
||||
}
|
||||
|
||||
// print connection details
|
||||
// keep track of whether connected or not
|
||||
mode = WiFi.status() != WL_CONNECTED;
|
||||
|
||||
Serial.println("");
|
||||
if( mode ) { // attempt to connect to wifi
|
||||
// print connection details
|
||||
Serial.println("WiFi NOT connected");
|
||||
} else {
|
||||
// print connection details
|
||||
Serial.println("WiFi connected");
|
||||
Serial.print("IP address: ");
|
||||
Serial.println(WiFi.localIP());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void loop() {
|
||||
|
||||
Serial.print( "isUpdated: " );
|
||||
Serial.println( gps.location.isUpdated() );
|
||||
Serial.print( "isValid: " );
|
||||
Serial.println( gps.location.isValid() );
|
||||
delay( 1000 * 30 );
|
||||
// 1000 milliseconds in one second
|
||||
// 30 seconds in one-half minute
|
||||
|
||||
// XXX This is case 0, where the GPS does not connect to WiFi XXX
|
||||
if( mode ) { // mode is true when WiFi is not connected
|
||||
// only send message if client is connected and location is valid
|
||||
if (gps.location.isValid()) {
|
||||
// This will only show gps info
|
||||
Serial.println("showing gps data");
|
||||
switch( count ) {
|
||||
case 0: // on the first message
|
||||
Serial.println("start/ot");
|
||||
count++;
|
||||
break;
|
||||
case 15: // on the last message
|
||||
Serial.println("fin/za");
|
||||
count = 0; // restart count
|
||||
break;
|
||||
default: // data messages
|
||||
// print data to serial monitor
|
||||
Serial.print(gps.location.lat(), 6); // 6 decimals of precision
|
||||
Serial.print(",");
|
||||
Serial.println(gps.location.lng(), 6);
|
||||
count++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
// XXX This is case 0, where the GPS connects to WiFi XXX
|
||||
} else { // mode is false when WiFi is connected
|
||||
// print connecty things every loop
|
||||
// it disconnects every loop. Don't love this tbh
|
||||
Serial.print("connecting to ");
|
||||
@@ -109,19 +158,10 @@ void loop() {
|
||||
//return;
|
||||
}
|
||||
|
||||
Serial.print( "isUpdated: " );
|
||||
Serial.println( gps.location.isUpdated() );
|
||||
Serial.print( "isValid: " );
|
||||
Serial.println( gps.location.isValid() );
|
||||
delay( 1000 * 30 );
|
||||
// 1000 milliseconds in one second
|
||||
// 30 seconds in one-half minute
|
||||
// }
|
||||
|
||||
// This will send gps info
|
||||
Serial.println("sending gps data");
|
||||
// only send message if client is connected and location is valid
|
||||
if (client.connected() && gps.location.isValid()) {
|
||||
// This will send and show gps info
|
||||
Serial.println("sending gps data");
|
||||
switch( count ) {
|
||||
case 0: // on the first message
|
||||
// send start message
|
||||
@@ -148,14 +188,15 @@ void loop() {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
smartDelay(500); // Run Procedure smartDelay
|
||||
|
||||
// if GPS is not connected correctly
|
||||
if (millis() > 5000 && gps.charsProcessed() < 10)
|
||||
Serial.println(F("No GPS data received: check wiring"));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Custom version of delay() ensures gps object is being "fed"
|
||||
static void smartDelay(unsigned long ms) {
|
||||
|
||||
Reference in New Issue
Block a user