GPS 08: Frame Class Utility
This is the basic code to create a frame with some GPS location information
Required Materials
1 x Waspmote 1 x Battery 1 x GPS module 1 x GPS antenna
Notes
- Keep in mind that external antennas are not valid for indoor locations. - This example can be executed in Waspmote v12 and Waspmote v15. - The battery has to be connected.
Code
/*
------------ [GPS_08] - Frame Class Utility --------------
Explanation: This is the basic code to create a frame with
the GPS information.
Copyright (C) 2017 Libelium Comunicaciones Distribuidas S.L.
http://www.libelium.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Version: 3.0
Design: David Gascón
Implementation: Eduardo Hernando
*/
#include <WaspGPS.h>
#include <WaspFrame.h>
// define GPS timeout when connecting to satellites
// this time is defined in seconds (240sec = 4minutes)
#define TIMEOUT 240
// define status variable for GPS connection
bool status;
char node_ID[] = "Node_01";
void setup()
{
USB.ON();
USB.println(F("Frame Utility Example for GPS"));
// Set the Waspmote ID
frame.setID(node_ID);
// Set GPS ON
GPS.ON();
}
void loop()
{
///////////////////////////////////////////
// 1. Turn on board and wait for GPS signal
///////////////////////////////////////////
GPS.ON();
status = GPS.waitForSignal(TIMEOUT);
delay(100);
///////////////////////////////////////////
// 2. Read data if GPS is connected
///////////////////////////////////////////
if( status == true )
{
// getPosition function gets all basic data
status = GPS.getPosition();
}
else
{
USB.println("Could not connect GPS");
}
///////////////////////////////////////////
// 3. Create ASCII frame
///////////////////////////////////////////
// Create new frame (ASCII)
frame.createFrame(ASCII);
if( status == true )
{
//Add global position [degrees]
frame.addSensor(SENSOR_GPS,
GPS.convert2Degrees(GPS.latitude, GPS.NS_indicator),
GPS.convert2Degrees(GPS.longitude, GPS.EW_indicator) );
//Add altitude [m]
frame.addSensor(SENSOR_ALTITUDE,GPS.altitude);
//Add speed [km/h]
frame.addSensor(SENSOR_SPEED,GPS.speed);
//Add course [degrees]
frame.addSensor(SENSOR_COURSE,GPS.course);
//Add time
frame.addSensor(SENSOR_TIME,GPS.timeGPS);
//Add date
frame.addSensor(SENSOR_DATE,GPS.dateGPS);
}
// Show the frame
frame.showFrame();
///////////////////////////////////////////
// 4. Turn off the board
///////////////////////////////////////////
GPS.OFF();
//wait 2 seconds
delay(2000);
}
Output
H#
GPS_07 example
Power Mode: GPS_ON
--------------------------------
----------------------
Connected
----------------------
Time [hhmmss.sss]: 124434.549
Date [ddmmyy]: 220517
Latitude [ddmm.mmmm]: 4140.1414
North/South indicator: N
Latitude (degrees):41.6690216064
Longitude [dddmm.mmmm]: 00051.4204
East/West indicator: W
Longitude (degrees):-0.8570066452
Altitude [m]: 199.2
Speed [km/h]: 0.48
Course [degrees]: 0.00
--------------------------------
===============================
Current ASCII Frame:
Length: 64
Frame Type: 134
frame (HEX): 3C3D3E86022331463243373836334439333734323543234E6F64655F30312330234750533A34312E3636393032323B2D302E383537303037234241543A393023
frame (STR): <=>�#1F2C7863D937425C#Node_01#0#GPS:41.669022;-0.857007#BAT:90#
===============================
Last updated