<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://lms.onnocenter.or.id/wiki/index.php?action=history&amp;feed=atom&amp;title=Arduino%3A_GPS_first_trial</id>
	<title>Arduino: GPS first trial - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://lms.onnocenter.or.id/wiki/index.php?action=history&amp;feed=atom&amp;title=Arduino%3A_GPS_first_trial"/>
	<link rel="alternate" type="text/html" href="https://lms.onnocenter.or.id/wiki/index.php?title=Arduino:_GPS_first_trial&amp;action=history"/>
	<updated>2026-04-20T14:20:27Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://lms.onnocenter.or.id/wiki/index.php?title=Arduino:_GPS_first_trial&amp;diff=51366&amp;oldid=prev</id>
		<title>Onnowpurbo: Created page with &quot;thumb  ==Instalasi Library==   wget https://www.monocilindro.com/wp-content/uploads/2016/03/tempo_library_v1.zip  mv tempo_library_v1....&quot;</title>
		<link rel="alternate" type="text/html" href="https://lms.onnocenter.or.id/wiki/index.php?title=Arduino:_GPS_first_trial&amp;diff=51366&amp;oldid=prev"/>
		<updated>2018-06-14T06:01:28Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&lt;a href=&quot;/wiki/index.php?title=File:Gps-connection.jpg&quot; title=&quot;File:Gps-connection.jpg&quot;&gt;center|300px|thumb&lt;/a&gt;  ==Instalasi Library==   wget https://www.monocilindro.com/wp-content/uploads/2016/03/tempo_library_v1.zip  mv tempo_library_v1....&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[File:Gps-connection.jpg|center|300px|thumb]]&lt;br /&gt;
&lt;br /&gt;
==Instalasi Library==&lt;br /&gt;
&lt;br /&gt;
 wget https://www.monocilindro.com/wp-content/uploads/2016/03/tempo_library_v1.zip&lt;br /&gt;
 mv tempo_library_v1.zip ~/Arduino/libraries/&lt;br /&gt;
 cd ~/Arduino/libraries/&lt;br /&gt;
 unzip tempo_library_v1.zip&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;SoftwareSerial.h&amp;gt;&lt;br /&gt;
 #include &amp;quot;tempo.h&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 bool first_loop_exec;&lt;br /&gt;
 &lt;br /&gt;
 unsigned long time_1=0;&lt;br /&gt;
 unsigned long time_2=0;&lt;br /&gt;
 &lt;br /&gt;
 #define GPS_INFO_BUFFER_SIZE 128&lt;br /&gt;
 char GPS_info_char;&lt;br /&gt;
 char GPS_info_buffer[GPS_INFO_BUFFER_SIZE];&lt;br /&gt;
 unsigned int received_char;&lt;br /&gt;
 &lt;br /&gt;
 int i; // counter&lt;br /&gt;
 bool message_started;&lt;br /&gt;
 &lt;br /&gt;
 SoftwareSerial mySerial_GPS(7, 8); // 7=RX, 8=TX (needed to communicate with GPS)&lt;br /&gt;
 &lt;br /&gt;
 // REAL TIME SCHEDULER PARAMETERS AND VARIABLES&lt;br /&gt;
 #define SCHEDULER_TIME 10000 // scheduler interrupt runs every 20000us = 20ms&lt;br /&gt;
 #define DIVIDER_STD 200 // logging message sent every 100 scheduler times (20ms) 1s&lt;br /&gt;
 #define DIVIDER_DELAY 500 // delay after forwarding meggages is 3s&lt;br /&gt;
 unsigned int divider=0;&lt;br /&gt;
 unsigned int divider_max=DIVIDER_DELAY; &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 // SENDS THE POLLING MESSAGE TO GPS&lt;br /&gt;
 void scheduled_interrupt() &lt;br /&gt;
 {&lt;br /&gt;
   divider++;&lt;br /&gt;
   if (divider==divider_max) {&lt;br /&gt;
     divider=0;&lt;br /&gt;
     divider_max=DIVIDER_STD;&lt;br /&gt;
     time_1 = millis();&lt;br /&gt;
     mySerial_GPS.println(&amp;quot;$PUBX,00*33&amp;quot;); // data polling to the GPS&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void setup() {&lt;br /&gt;
   // Open serial communications and wait for port to open:&lt;br /&gt;
   Serial.begin(9600);&lt;br /&gt;
   while (!Serial) {&lt;br /&gt;
     ; // wait for serial port to connect. Needed for native USB port only&lt;br /&gt;
   }&lt;br /&gt;
   Serial.println(&amp;quot;Connected&amp;quot;);&lt;br /&gt;
   mySerial_GPS.begin(9600);&lt;br /&gt;
   mySerial_GPS.println(&amp;quot;Connected&amp;quot;); &lt;br /&gt;
 &lt;br /&gt;
   first_loop_exec=true;&lt;br /&gt;
   i=0;&lt;br /&gt;
   message_started=false; &lt;br /&gt;
 &lt;br /&gt;
   Timer1.initialize(); // initialize 10ms scheduler timer&lt;br /&gt;
   Timer1.setPeriod(SCHEDULER_TIME); // sets the main scheduler time in microseconds (10ms in this case)&lt;br /&gt;
   Timer1.attachInterrupt(scheduled_interrupt); // attaches the interrupt&lt;br /&gt;
   Timer1.start(); // starts the timer&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() { // run over and over &lt;br /&gt;
 &lt;br /&gt;
   if (first_loop_exec == true){&lt;br /&gt;
     delay(2000);&lt;br /&gt;
     mySerial_GPS.println(F(&amp;quot;$PUBX,40,RMC,0,0,0,0*47&amp;quot;)); //RMC OFF&lt;br /&gt;
     delay(100);&lt;br /&gt;
     mySerial_GPS.println(F(&amp;quot;$PUBX,40,VTG,0,0,0,0*5E&amp;quot;)); //VTG OFF&lt;br /&gt;
     delay(100);&lt;br /&gt;
     mySerial_GPS.println(F(&amp;quot;$PUBX,40,GGA,0,0,0,0*5A&amp;quot;)); //CGA OFF&lt;br /&gt;
     delay(100);&lt;br /&gt;
     mySerial_GPS.println(F(&amp;quot;$PUBX,40,GSA,0,0,0,0*4E&amp;quot;)); //GSA OFF&lt;br /&gt;
     delay(100);&lt;br /&gt;
     mySerial_GPS.println(F(&amp;quot;$PUBX,40,GSV,0,0,0,0*59&amp;quot;)); //GSV OFF&lt;br /&gt;
     delay(100);&lt;br /&gt;
     mySerial_GPS.println(F(&amp;quot;$PUBX,40,GLL,0,0,0,0*5C&amp;quot;)); //GLL OFF&lt;br /&gt;
     delay(1000);&lt;br /&gt;
     first_loop_exec = false;&lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
   // MANAGES THE CHARACTERS RECEIVED BY GPS&lt;br /&gt;
   while (mySerial_GPS.available()) {&lt;br /&gt;
     GPS_info_char=mySerial_GPS.read();&lt;br /&gt;
     if (GPS_info_char == &amp;#039;$&amp;#039;){ // start of message&lt;br /&gt;
       message_started=true;&lt;br /&gt;
       received_char=0;&lt;br /&gt;
     }else if (GPS_info_char == &amp;#039;*&amp;#039;){ // end of message&lt;br /&gt;
       time_2 = millis();&lt;br /&gt;
       Serial.print(&amp;quot;Time,&amp;quot;);&lt;br /&gt;
       Serial.print(time_1);&lt;br /&gt;
       Serial.print(&amp;quot;,&amp;quot;);&lt;br /&gt;
       Serial.print(time_2);&lt;br /&gt;
       Serial.println(&amp;quot;,&amp;quot;);&lt;br /&gt;
       for (i=0; i&amp;lt;received_char; i++){&lt;br /&gt;
         Serial.write(GPS_info_buffer[i]); // writes the message to the PC once it has been completely received&lt;br /&gt;
       }&lt;br /&gt;
       Serial.println();&lt;br /&gt;
       message_started=false; // ready for the new message&lt;br /&gt;
     }else if (message_started==true){ // the message is already started and I got a new character&lt;br /&gt;
       if (received_char&amp;lt;=GPS_INFO_BUFFER_SIZE){ // to avoid buffer overflow&lt;br /&gt;
         GPS_info_buffer[received_char]=GPS_info_char;&lt;br /&gt;
         received_char++;&lt;br /&gt;
       }else{ // resets everything (overflow happened)&lt;br /&gt;
         message_started=false;&lt;br /&gt;
         received_char=0;&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
   } &lt;br /&gt;
 &lt;br /&gt;
   while (Serial.available()) {&lt;br /&gt;
     mySerial_GPS.write(Serial.read());&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Onnowpurbo</name></author>
	</entry>
</feed>