<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="da">
	<id>https://www.htxarduino.dk/index.php?action=history&amp;feed=atom&amp;title=Prog_Shield_GPS1</id>
	<title>Prog Shield GPS1 - Versionshistorie</title>
	<link rel="self" type="application/atom+xml" href="https://www.htxarduino.dk/index.php?action=history&amp;feed=atom&amp;title=Prog_Shield_GPS1"/>
	<link rel="alternate" type="text/html" href="https://www.htxarduino.dk/index.php?title=Prog_Shield_GPS1&amp;action=history"/>
	<updated>2026-04-20T19:00:16Z</updated>
	<subtitle>Versionshistorie for denne side i HTX Arduino</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://www.htxarduino.dk/index.php?title=Prog_Shield_GPS1&amp;diff=2372&amp;oldid=prev</id>
		<title>Bar: 1 version importeret</title>
		<link rel="alternate" type="text/html" href="https://www.htxarduino.dk/index.php?title=Prog_Shield_GPS1&amp;diff=2372&amp;oldid=prev"/>
		<updated>2022-10-22T14:16:06Z</updated>

		<summary type="html">&lt;p&gt;1 version importeret&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;da&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Ældre version&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versionen fra 22. okt. 2022, 16:16&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;da&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Ingen forskel)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Bar</name></author>
	</entry>
	<entry>
		<id>https://www.htxarduino.dk/index.php?title=Prog_Shield_GPS1&amp;diff=2371&amp;oldid=prev</id>
		<title>htx_&gt;Bar med 8. sep. 2016, 09:34</title>
		<link rel="alternate" type="text/html" href="https://www.htxarduino.dk/index.php?title=Prog_Shield_GPS1&amp;diff=2371&amp;oldid=prev"/>
		<updated>2016-09-08T09:34:11Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ny side&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[fil:Gps-modul.png|thumb|right|Det blå GPS Modul]]&lt;br /&gt;
&lt;br /&gt;
Dette modul kan bestemme positionen på jorden ved hjælp af GPS-satelitter. Selve modulet er beskrevet på [[Arduino GPS Modul]].&lt;br /&gt;
&lt;br /&gt;
Modulet kan f.x anskaffes ved aliexpress&amp;lt;ref&amp;gt;[https://www.aliexpress.com/item/Free-Shipping-1PC-Ublox-NEO6MV2-GPS-Module-Aircraft-Flight-Controller-For-Arduino-New/1765520677.html Købsside til det blå GPS-modul]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Specielt om det blå GPS-modul==&lt;br /&gt;
Modulet kan have svært ved at fange satellitter og har det bedst i fri luft før det fanger noget.&lt;br /&gt;
&lt;br /&gt;
Der sidder en grøn LED på modulet. Så længe den ikke lyser, så har modulet ikke bestemt satellitterne - når det sker, så begynder LED&amp;#039;en at blinke.&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Der ligger to eksempler på software til at læse GPS-resultaterne med, hvor den simple &amp;#039;&amp;#039;&amp;#039;simple_GPS_test.ino&amp;#039;&amp;#039;&amp;#039; er gennemgået her. Den angiver om der er kommunikation med modulet, ved at den skriver hvor mange karakterer der er kommunikeret. Det andet eksempel &amp;#039;&amp;#039;&amp;#039;test_with_gps_device.ino&amp;#039;&amp;#039;&amp;#039; printer blot en række stjerne hvis der ikke opnås et GPS-resultat, men til gengæld giver det flere informationer når der er forbindelse til satelitterne. &amp;lt;br&amp;gt;Filerne ligger i denne [[media:Prog-GPS-test.zip|ZIP-fil]]. &lt;br /&gt;
&lt;br /&gt;
Til tolkningen af det der læses i GPS-modulet anvendes et bibliotek fundet på GitHub&amp;lt;ref&amp;gt;[https://github.com/mikalhart/TinyGPS TinyGPS bibliotek] fundet ved GitHub&amp;lt;/ref&amp;gt;. Biblioteket kan hentes her [https://github.com/mikalhart/TinyGPS GitHub TinyGPS]. Biblioteket downloades og installeres som beskrevet under [[Arduinos_Biblioteker#Tilføjelse_af_biblioteker|Arduinos biblioteker]].&lt;br /&gt;
&lt;br /&gt;
===Anvendelsen af softwaren===&lt;br /&gt;
Som alle andre biblioteker skal der sættes de grundlæggende ting op for at kontakte biblioteket og definere et objekt til at kommunikere med.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;SoftwareSerial.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TinyGPS.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TinyGPS gps;&lt;br /&gt;
SoftwareSerial ss(8, 9);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inde i [[setup()]] skal der sættes gang i objektet ved hjælp af begin-metoden som vist her, der printes desuden en velkomst:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  ss.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I [[loop()]] læses fra GPS-modulet, og der tolkes på om det er et gyldigt signal ifølge GPS-biblioteket. Hvert sekund printes resultatet. Hvis det er et gyldigt signal printes naturligvis dette, ellers printes blot aktiviteten på porten med GPS-modulet, eller at der ikke er modtaget noget.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
void loop() {&lt;br /&gt;
  bool newData = false;&lt;br /&gt;
  unsigned long chars;&lt;br /&gt;
  unsigned short sentences, failed;&lt;br /&gt;
&lt;br /&gt;
  // For one second we parse GPS data and report some key values&lt;br /&gt;
  for (unsigned long start = millis(); millis() - start &amp;lt; 1000;)&lt;br /&gt;
  {&lt;br /&gt;
    while (ss.available())&lt;br /&gt;
    {&lt;br /&gt;
      char c = ss.read();&lt;br /&gt;
      // Serial.write(c); // uncomment this line if you want to see the GPS data flowing&lt;br /&gt;
      if (gps.encode(c)) // Did a new valid sentence come in?&lt;br /&gt;
        newData = true;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if (newData)&lt;br /&gt;
  {&lt;br /&gt;
    float flat, flon;&lt;br /&gt;
    unsigned long age;&lt;br /&gt;
    gps.f_get_position(&amp;amp;flat, &amp;amp;flon, &amp;amp;age);&lt;br /&gt;
    Serial.print(&amp;quot;LAT=&amp;quot;);&lt;br /&gt;
    Serial.print(flat == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : flat, 6);&lt;br /&gt;
    Serial.print(&amp;quot; LON=&amp;quot;);&lt;br /&gt;
    Serial.print(flon == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : flon, 6);&lt;br /&gt;
    Serial.print(&amp;quot; SAT=&amp;quot;);&lt;br /&gt;
    Serial.print(gps.satellites() == TinyGPS::GPS_INVALID_SATELLITES ? 0 : gps.satellites());&lt;br /&gt;
    Serial.print(&amp;quot; PREC=&amp;quot;);&lt;br /&gt;
    Serial.print(gps.hdop() == TinyGPS::GPS_INVALID_HDOP ? 0 : gps.hdop());&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  gps.stats(&amp;amp;chars, &amp;amp;sentences, &amp;amp;failed);&lt;br /&gt;
  Serial.print(&amp;quot; CHARS=&amp;quot;);&lt;br /&gt;
  Serial.print(chars);&lt;br /&gt;
  Serial.print(&amp;quot; SENTENCES=&amp;quot;);&lt;br /&gt;
  Serial.print(sentences);&lt;br /&gt;
  Serial.print(&amp;quot; CSUM ERR=&amp;quot;);&lt;br /&gt;
  Serial.println(failed);&lt;br /&gt;
  if (chars == 0)&lt;br /&gt;
    Serial.println(&amp;quot;** No characters received from GPS: check wiring **&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Test af softwaren===&lt;br /&gt;
Når man starter testen, så vil programmet outputte følgende:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Simple TinyGPS library v. 13&lt;br /&gt;
by Mikal Hart&lt;br /&gt;
&lt;br /&gt;
 CHARS=327 SENTENCES=0 CSUM ERR=0&lt;br /&gt;
 CHARS=654 SENTENCES=0 CSUM ERR=0&lt;br /&gt;
 CHARS=981 SENTENCES=0 CSUM ERR=0&lt;br /&gt;
 CHARS=1316 SENTENCES=0 CSUM ERR=0&lt;br /&gt;
 CHARS=1643 SENTENCES=0 CSUM ERR=0&lt;br /&gt;
 CHARS=1944 SENTENCES=0 CSUM ERR=0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Som med alle andre GPS-modtagere, så skal denne også fange satellitter før den giver noget meningsfuldt, når den fanger satellitterne så vil den komme med et output som f.x.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
LAT=56.364513 LON=8.626262 SAT=5 PREC=276 CHARS=38166 SENTENCES=186 CSUM ERR=0&lt;br /&gt;
LAT=56.364521 LON=8.626279 SAT=5 PREC=276 CHARS=38627 SENTENCES=188 CSUM ERR=0&lt;br /&gt;
LAT=56.364532 LON=8.626306 SAT=5 PREC=276 CHARS=39086 SENTENCES=190 CSUM ERR=0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Yderligere muligheder i softwaren===&lt;br /&gt;
Der ligger yderligere muligheder i klassen man kan anvende, hvis man ønsker andre måder at anvende GPS-modulet på:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
  TinyGPS();&lt;br /&gt;
  bool encode(char c); // process one character received from GPS&lt;br /&gt;
  TinyGPS &amp;amp;operator &amp;lt;&amp;lt; (char c) {encode(c); return *this;}&lt;br /&gt;
&lt;br /&gt;
  // lat/long in MILLIONTHs of a degree and age of fix in milliseconds&lt;br /&gt;
  // (note: versions 12 and earlier gave lat/long in 100,000ths of a degree.&lt;br /&gt;
  void get_position(long *latitude, long *longitude, unsigned long *fix_age = 0);&lt;br /&gt;
&lt;br /&gt;
  // date as ddmmyy, time as hhmmsscc, and age in milliseconds&lt;br /&gt;
  void get_datetime(unsigned long *date, unsigned long *time, unsigned long *age = 0);&lt;br /&gt;
&lt;br /&gt;
  // signed altitude in centimeters (from GPGGA sentence)&lt;br /&gt;
  inline long altitude() { return _altitude; }&lt;br /&gt;
&lt;br /&gt;
  // course in last full GPRMC sentence in 100th of a degree&lt;br /&gt;
  inline unsigned long course() { return _course; }&lt;br /&gt;
&lt;br /&gt;
  // speed in last full GPRMC sentence in 100ths of a knot&lt;br /&gt;
  inline unsigned long speed() { return _speed; }&lt;br /&gt;
&lt;br /&gt;
  // satellites used in last full GPGGA sentence&lt;br /&gt;
  inline unsigned short satellites() { return _numsats; }&lt;br /&gt;
&lt;br /&gt;
  // horizontal dilution of precision in 100ths&lt;br /&gt;
  inline unsigned long hdop() { return _hdop; }&lt;br /&gt;
&lt;br /&gt;
  void f_get_position(float *latitude, float *longitude, unsigned long *fix_age = 0);&lt;br /&gt;
  void crack_datetime(int *year, byte *month, byte *day, &lt;br /&gt;
    byte *hour, byte *minute, byte *second, byte *hundredths = 0, unsigned long *fix_age = 0);&lt;br /&gt;
  float f_altitude();&lt;br /&gt;
  float f_course();&lt;br /&gt;
  float f_speed_knots();&lt;br /&gt;
  float f_speed_mph();&lt;br /&gt;
  float f_speed_mps();&lt;br /&gt;
  float f_speed_kmph();&lt;br /&gt;
&lt;br /&gt;
  static int library_version() { return _GPS_VERSION; }&lt;br /&gt;
&lt;br /&gt;
  static float distance_between (float lat1, float long1, float lat2, float long2);&lt;br /&gt;
  static float course_to (float lat1, float long1, float lat2, float long2);&lt;br /&gt;
  static const char *cardinal(float course);&lt;br /&gt;
&lt;br /&gt;
#ifndef _GPS_NO_STATS&lt;br /&gt;
  void stats(unsigned long *chars, unsigned short *good_sentences, unsigned short *failed_cs);&lt;br /&gt;
#endif&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Flere af disse metoder anvendes i det andet eksempel der ligger i ZIP-filen.&lt;br /&gt;
&lt;br /&gt;
==Layout==&lt;br /&gt;
Det blå GPS moduls placering på programmerings-shieldet kan ses her:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[fil:layout-gps1.png|600px]]&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Placering af Det blå GPS modul &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==Referencer==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{template:prog-shield}}&lt;br /&gt;
&lt;br /&gt;
[[Kategori:Programmerings-Shield]]&lt;/div&gt;</summary>
		<author><name>htx_&gt;Bar</name></author>
	</entry>
</feed>