µµ¼­(BOOK)
Å°Æ®(KIT)
ƯÆÇ »óÇ°
Á¹¾÷ÀÛÇ°&ÀüÀÚ±âÃÊ
ÀÀ¿ë¸ðµâ
ÀüÀÚºÎÇ°
¸ðÅÍ
±â±¸
¿£Å¬·ÎÁ®
°³ÀΰáÁ¦¿ë
 
°í°´¼¾ÅÍ °Ô½ÃÆÇ
ÀÚÀ¯°Ô½ÃÆÇ
MCU ÅëÇÕ °Ô½ÃÆÇ
°­ÁÂ-RaspberryPi
°­ÁÂ-µå·Ð(ÄõµåÄßÅÍ)
°­ÁÂ-¾ÆµÎÀ̳ë(±âÃÊ)
°­ÁÂ-¾ÆµÎÀ̳ë(ÀÀ¿ë)
½ÅÁ¦Ç°/½Å±â¼ú ¼Ò°³
DIY °øÀÛ °Ô½ÃÆÇ
À±±³¼öÀÇ ¿¬±¸½Ç Ä®·³
 
 
 
1 ÀÚ·á½ÇÀÌ¿ë½Ã Âü°í»çÇ×
 
 
2 2024³â °©Áø³â (Ë£òãÒ´) »õ..
 
 
3 »ç¹«½Ç ÀÌÀü ¾È³»
 
 
4 2023 °è¹¦³â »õÇØ º¹ ¸¹ÀÌ..
 
 
5 AVR128DA64 Á¤º¹ Ãâ°£¾È³»
 
 
 
 
 
 
 ¢Ï : 02-776-4868

 £Æ: 02-779-6757
À̸ÞÀϹ®ÀÇ
 
¢Ñ ÆòÀÏ(¿ù~±Ý) : 10~17½Ã
¢Ñ ÁÖ¸», °øÈÞÀÏ ÈÞ¹«
 
±¹¹Î822437-04-008415
¢Ñ ¿¹±ÝÁÖ : À̹ÎÈñ(¿È»ç(OHM»ç))
 
 
1 À±±³¼öÀÇ ¸¶ÀÌÅ©·ÎÇÁ·Î¼¼¼­ ¿ùµå
 
2 (ÁÖ)¼®¿µºê¶óÀ̽ºÅæ
 

 

 
°­ÁÂ-¾ÆµÎÀ̳ë(ÀÀ¿ë)
 
2014. 07. 18 (09:51)
Á¦¸ñ[¾ÆµÎÀ̳ë ÀÀ¿ë] 3. GPS ½¯µå - 1
ÀÛ¼ºÀÚohmsa Á¶È¸ : 11428


¡Ú÷ºÎÆÄÀÏ¡Ú

circuit.pdf

DataSheet.pdf

TinyGPS.zip

 

 

3. GPS ½¯µå(Shield) – 1

 

À̹ø °­Á¿¡¼­´Â GPS ½¯µåÀÇ »ç¿ë¹ý¿¡ ´ëÇؼ­ ¾Ë¾Æ º¸µµ·Ï ÇÑ´Ù. GPS ¸ðµâÀ» »ç¿ëÇÏ´Â ½¯µå¸¦ ¼Ò°³Çϸç, GPS ¶óÀ̺귯¸®¿Í ¿¹Á¦¸¦ ´Ù·ïº¸µµ·Ï ÇÑ´Ù.

 

¿©±â¼­ »ç¿ëÇÏ´Â GPS ½¯µå´Â Itead»çÀÇ GPS Shield V1.1À̸ç, ¿©±â¿¡ »ç¿ëµÈ GPS ¸ðµâÀº RoyalTek»çÀÇ REB-4216 ¸ðµâÀÌ´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº ÷ºÎ ÆÄÀÏÀ» Âü°íÇϱ⠹ٶõ´Ù.

 





 

GPS ¸ðµâ¿¡ ´ëÇÑ »ç¾çÀº ¾Æ·¡¿Í °°´Ù.


 

GPS ½¯µå¿¡ ´ëÇÑ °£´ÜÇÑ »ç¾çÀº

 

 

GPS ½¯µå º¸µåÀÇ ÇɸÊÀº

 

 

½Ã¸®¾ó ÀÎÅÍÆäÀ̽º·Î GPS µ¥ÀÌÅ͸¦ ÀÔ·Â ¹ÞÀ» ¼ö ÀÖ´Â ÀåÁ¡ÀÌ ÀÖÁö¸¸, GPS ¸ðµâÀÇ Åë½Å ¼Óµµ(4800bps)¿Í GPS ½¯µå º¸µå(38400bps)ÀÇ Åë½Å ¼Óµµ°¡ Â÷ÀÌ°¡ Á» ÀÖ¾ú´Ù. ½ÇÁ¦·Î´Â 9600bps´Ù.

¾îµð¼­ ¹®Á¦°¡ ÀÖ¾ú´ÂÁö´Â ¸ð¸£°ÚÁö¸¸, ÀÏ´Ü 9600bpsÀÇ Åë½Å ¼Óµµ¸¦ °¡Áö°í ÀÔ·ÂÀ» ¹ÞÀ» ¼ö ÀÖ¾ú±â¿¡ ¸ðµâ¿¡¼­ Ãâ·ÂµÇ´Â ½ÅÈ£¸¦ ½Ã¸®¾ó Å͹̳ο¡ Ãâ·ÂÇØ º¸¾Ò´Ù.

 

GPS ½¯µå º¸µå¿Í ¾ÆµÎÀÌ³ë º¸µåÀÇ ¿¬°áÀº D0, D1À¸·Î Ç¥½ÃµÇ¾î ÀÖÁö¸¸, ½ÇÁ¦·Î´Â  Á¡ÆÛÇÉÀ» ÀÌ¿ëÇؼ­ D0~D7±îÁö ¼±ÅÃÀÌ °¡´ÉÇϸç, ÀÌ °­Á¿¡¼­´Â D3(TXD), D4(RXD)¸¦ ÀÌ¿ëÇϱâ·Î ÇÑ´Ù.

Áï, ¾ÆµÎÀÌ³ë º¸µå¿Í GPS ½¯µå º¸µå´Â ¼ÒÇÁÆ®¿þ¾î ½Ã¸®¾óÀ» ÀÌ¿ëÇÏ¿© 9600bpsÀÇ ¼Óµµ·Î ¿¬°áÀ» Çϸç, ¾ÆµÎÀ̳ëÀÇ ½Ã¸®¾ó Æ÷Æ®´Â 115200bpsÀÇ ¼Óµµ·Î ½Ã¸®¾ó Å͹̳ο¡ GPS µ¥ÀÌÅ͸¦ Ãâ·ÂÇϵµ·Ï ÇÑ´Ù.

 

 

#include

 

SoftwareSerial nss(3, 4);

 

void setup()

{

  Serial.begin(115200);

  nss.begin(9600);

}

 

void loop()

{

  if(nss.available()){

    Serial.write(nss.read());

  }

}

 

 

À§ ÄÚµåÀÇ ³»¿ëÀº ¾î·ÆÁö ¾ÊÀ» °ÍÀ¸·Î »ý°¢µÈ´Ù. GPS ½¯µå¿¡¼­ Àü¼ÛµÈ µ¥ÀÌÅ͸¦ ¾ÆµÎÀ̳ë¿Í ¿¬°áµÇ¾î Àִ  PC ½Ã¸®¾ó Æ÷Æ®·Î Àü¼ÛÇÏ´Â ¿¹Á¦·Î ½ÇÁ¦ GPS ¸ðµâ¿¡¼­ Ãâ·ÂµÇ´Â GPS µ¥ÀÌÅ͸¦ Ãâ·ÂÇϱâ À§ÇÑ ÄÚµåÀÌ´Ù. ÀϹÝÀûÀ¸·Î GPS µ¥ÀÌÅÍ´Â 1ÃÊ¿¡ Çѹø¾¿ Ãâ·ÂÀÌ µÇ¸ç, ¾ÏÈ£(?) °°Àº µ¥ÀÌÅ͵éÀÌ Àü¼ÛµÇ´Â °ÍÀ» º¼ ¼ö ÀÖ´Ù.

 

 

À§¿¡ Ç¥½ÃµÇ´Â GPS µ¥ÀÌÅÍ¿¡ ´ëÇؼ­´Â ÀÌ°÷¿¡¼­´Â º°µµ·Î ¼³¸íÇÏÁö´Â ¾Ê°Ú´Ù. Ä£ÀýÇÏ°Ôµµ ÇÊ¿äÇÑ ¶óÀ̺귯¸®°¡ Á¦°øµÇ°í, °£´ÜÇÑ ¿¹Á¦µµ Á¦°øµÇ±â ¶§¹®¿¡ À̸¦ ÀÌ¿ëÇϱâ·Î ÇÑ´Ù. TinyGPS¶ó´Â ¶óÀ̺귯¸®·Î ÷ºÎ ÆÄÀÏ¿¡¼­ È®ÀÎ ÇÒ ¼ö ÀÖ´Ù.

ÀÏ´Ü, ÷ºÎ ÆÄÀÏÀ» ´Ù¿î ¹Þ¾Æ¼­ º»ÀÎÀÇ ¾ÆµÎÀÌ³ë ¶óÀ̺귯¸® Æú´õ¿¡ ¼³Ä¡ÇÑ ÈÄ¿¡, ¾Æ·¡¿Í °°Àº ¿¹Á¦¸¦ ¿­¾î º¸ÀÚ.

 

 

 

#include

 

#include

 

/* This sample code demonstrates the normal use of a TinyGPS object.

   It requires the use of SoftwareSerial, and assumes that you have a

   4800-baud serial GPS device hooked up on pins 3(rx) and 4(tx).

*/

 

TinyGPS gps;

SoftwareSerial nss(3, 4);

 

static void gpsdump(TinyGPS &gps);

static bool feedgps();

static void print_float(float val, float invalid, int len, int prec);

static void print_int(unsigned long val, unsigned long invalid, int len);

static void print_date(TinyGPS &gps);

static void print_str(const char *str, int len);

 

void setup()

{

  Serial.begin(115200);

  nss.begin(4800);

 

Serial.print("Testing TinyGPS library v. ");

Serial.println(TinyGPS::library_version());

  Serial.println("by Mikal Hart");

  Serial.println();

  Serial.print("Sizeof(gpsobject) = "); Serial.println(sizeof(TinyGPS));

  Serial.println();

Serial.println("Sats HDOP Latitude Longitude Fix  Date       Time

       Date Alt     Course Speed Card  Distance Course Card  Chars

 Sentences Checksum");

  Serial.println("          (deg)    (deg)     Age                        Age  (m)     --- from GPS ----  ---- to London  ----  RX    RX        Fail");

  Serial.println("--------------------------------------------------------------------------------------------------------------------------------------");

}

 

void loop()

{

  bool newdata = false;

  unsigned long start = millis();

 

  // Every second we print an update

  while (millis() - start < 1000)

  {

    if (feedgps())

      newdata = true;

  }

 

  gpsdump(gps);

}

 

static void gpsdump(TinyGPS &gps)

{

  float flat, flon;

  unsigned long age, date, time, chars = 0;

  unsigned short sentences = 0, failed = 0;

  static const float LONDON_LAT = 51.508131, LONDON_LON = -0.128002;

 

  print_int(gps.satellites(), TinyGPS::GPS_INVALID_SATELLITES, 5);

  print_int(gps.hdop(), TinyGPS::GPS_INVALID_HDOP, 5);

  gps.f_get_position(&flat, &flon, &age);

  print_float(flat, TinyGPS::GPS_INVALID_F_ANGLE, 9, 5);

  print_float(flon, TinyGPS::GPS_INVALID_F_ANGLE, 10, 5);

  print_int(age, TinyGPS::GPS_INVALID_AGE, 5);

 

  print_date(gps);

 

  print_float(gps.f_altitude(), TinyGPS::GPS_INVALID_F_ALTITUDE, 8, 2);

  print_float(gps.f_course(), TinyGPS::GPS_INVALID_F_ANGLE, 7, 2);

  print_float(gps.f_speed_kmph(), TinyGPS::GPS_INVALID_F_SPEED, 6, 2);

  print_str(gps.f_course() == TinyGPS::GPS_INVALID_F_ANGLE ? "*** " : TinyGPS::cardinal(gps.f_course()), 6);

  print_int(flat == TinyGPS::GPS_INVALID_F_ANGLE ? 0UL : (unsigned long)TinyGPS::distance_between(flat, flon, LONDON_LAT, LONDON_LON) / 1000, 0xFFFFFFFF, 9);

  print_float(flat == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : TinyGPS::course_to(flat, flon, 51.508131, -0.128002), TinyGPS::GPS_INVALID_F_ANGLE, 7, 2);

  print_str(flat == TinyGPS::GPS_INVALID_F_ANGLE ? "*** " : TinyGPS::cardinal(TinyGPS::course_to(flat, flon, LONDON_LAT, LONDON_LON)), 6);

 

  gps.stats(&chars, &sentences, &failed);

  print_int(chars, 0xFFFFFFFF, 6);

  print_int(sentences, 0xFFFFFFFF, 10);

  print_int(failed, 0xFFFFFFFF, 9);

  Serial.println();

}

 

static void print_int(unsigned long val, unsigned long invalid, int len)

{

  char sz[32];

  if (val == invalid)

    strcpy(sz, "*******");

  else

    sprintf(sz, "%ld", val);

  sz[len] = 0;

  for (int i=strlen(sz); i

    sz[i] = ' ';

  if (len > 0)

    sz[len-1] = ' ';

  Serial.print(sz);

  feedgps();

}

 

static void print_float(float val, float invalid, int len, int prec)

{

  char sz[32];

  if (val == invalid)

  {

    strcpy(sz, "*******");

    sz[len] = 0;

        if (len > 0)

          sz[len-1] = ' ';

    for (int i=7; i

        sz[i] = ' ';

    Serial.print(sz);

  }

  else

  {

    Serial.print(val, prec);

    int vi = abs((int)val);

    int flen = prec + (val < 0.0 ? 2 : 1);

    flen += vi >= 1000 ? 4 : vi >= 100 ? 3 : vi >= 10 ? 2 : 1;

    for (int i=flen; i

      Serial.print(" ");

  }

  feedgps();

}

 

static void print_date(TinyGPS &gps)

{

  int year;

  byte month, day, hour, minute, second, hundredths;

  unsigned long age;

  gps.crack_datetime(&year, &month, &day, &hour, &minute, &second, &hundredths, &age);

  if (age == TinyGPS::GPS_INVALID_AGE)

    Serial.print("*******    *******    ");

  else

  {

    char sz[32];

    sprintf(sz, "%02d/%02d/%02d %02d:%02d:%02d   ",

        month, day, year, hour, minute, second);

    Serial.print(sz);

  }

  print_int(age, TinyGPS::GPS_INVALID_AGE, 5);

  feedgps();

}

 

static void print_str(const char *str, int len)

{

  int slen = strlen(str);

  for (int i=0; i

    Serial.print(i

  feedgps();

}

 

static bool feedgps()

{

  while (nss.available())

  {

    if (gps.encode(nss.read()))

      return true;

  }

  return false;

}

 

Ãß°¡ÇÑ ¶óÀ̺귯¸®ÀÇ Çì´õ ÆÄÀÏÀ» Æ÷ÇÔ½ÃÅ°°í,

 

#include

 

GPS ¶óÀ̺귯¸®¿¡ ´ëÇÑ º¯¼ö¸¦ ÁöÁ¤ÇÑ´Ù.

 

           TinyGPS gps;

 

¿ø ¼Ò½ºÀÇ GPS ¸ðµâ°úÀÇ Àü¼Û ¼Óµµ´Â

 

           nss.begin(4800); -> nss.begin(9600);

 

·Î µÇ¾î ÀÖÁö¸¸, ¿©±â¼­´Â 9600bps·Î ¼öÁ¤ÇÑ´Ù.

 

loop() ÇÔ¼ö ÀÌÇÏÀÇ ¼Ò½º´Â GPS µ¥ÀÌÅ͸¦ ´ýÇÁ(dump)ÇÏ´Â ÄÚµå·Î º°µµÀÇ ¼³¸í ¾øÀÌ ³Ñ¾î°¡±â·Î ÇÑ´Ù.

 

ÄÄÆÄÀÏ ÈÄ¿¡ ¾÷·Îµå ÇÑ ÈÄ, ½Ã¸®¾ó Å͹̳ÎÀ» ½ÇÇà ½ÃÅ°¸é, ¾Æ·¡¿Í °°Àº µ¥ÀÌÅÍ°¡ Ãâ·ÂµÇ´Â °ÍÀ» È®ÀÎ ÇÒ ¼ö ÀÖ´Ù.

 

 

ù ¹ø° ¿¹Á¦¿¡¼­ Ãâ·ÂµÈ ¾ÏÈ£¿Í °°Àº Äڵ带 µðÄÚµù ÇÑ °á°ú°¡ À§¿Í °°ÀÌ ³ª¿À¸ç, À§µµ, °æµµ, ½Ã°£ µîÀÇ µ¥ÀÌÅ͸¦ ÃßÃâ ÇÒ ¼ö°¡ ÀÖ´Ù. ¸¸ÀÏ, À§ÀÇ µ¥ÀÌÅÍ°¡ Ãâ·ÂÀÌ µÇÁö ¾Ê°í, ¾Æ·¡¿Í °°ÀÌ Ãâ·ÂÀÌ µÈ´Ù°í Çϸé,

 

 

¾ÈÅ׳ªÀÇ ¿¬°á »óÅÂ¿Í GPS ½¯µå º¸µåÀÇ ½Ã¸®¾ó Æ÷Æ®ÀÇ ¼±ÅÃÀÌ ¹®Á¦ ¾ø´ÂÁö È®ÀÎ ÇØ º»´Ù. ¾ÈÅ׳ª´Â °¡´ÉÇÑ ¿ÜºÎ¿¡ À§Ä¡ÇÏ´Â °ÍÀÌ ÁÁÀ¸¸ç, º»ÀÎÀº Ã¥»óÀÌ Ã¢°¡ ±Ùó¿©¼­ Ã¥»ó À§¿¡ ³õ°íµµ Á¤»ó ¼ö½ÅÀÌ µÇ¾ú´Ù.

 

 

GPS µ¥ÀÌÅ͸¦ ¾î¶² ¸ñÀûÀ¸·Î »ç¿ëµÉÁö´Â ¸ð¸£Áö¸¸, gpsdump() ÇÔ¼öÀÇ ³»¿ëÀ» õõÈ÷ º¸¸é¼­ ÇÊ¿äÇÑ µ¥ÀÌÅ͸¦ ÃßÃâÇÒ ¼ö ÀÖ´Ù. ¿ÜºÎ¿¡¼­ À̵¿ÇÏ´Â ¹°Ã¼¿¡ ÀåÂøÇÏ¿© ÇöÀç À§Ä¡¿Í ¿òÁ÷ÀÌ´Â ¼Óµµµµ ¾Ë ¼ö ÀÖ°í, ÇöÀçÀÇ ½Ã°£À» ¾Ë ¼öµµ ÀÖ´Ù. ¹°·Ð, ½Ã°£Àº Ç¥ÁØ ½Ã°£´ëÀÇ ½Ã°£ÀÌ Ãâ·ÂÀÌ µÇ±â ¶§¹®¿¡ Çѱ¹ÀÇ °æ¿ì´Â +9½Ã°£À» ÇÏ¸é µÈ´Ù.

 

À̹ø °­Á¿¡¼­´Â GPS ½¯µåÀÇ »ç¿ë¹ý¿¡ ´ëÇؼ­ °£´ÜÈ÷ ¾Ë¾Æ º¸¾Ò´Ù. ¾ÕÀ¸·Îµµ ¿¹Á¦´Â °¡´ÉÇÑ ÀÚ¼¼ÇÑ ¼³¸íÀº ÇÏÁö ¾Êµµ·Ï ÇÒ ¿¹Á¤ÀÌ´Ù. ÀÀ¿ë °­ÁÂÀÇ ¸ñÀûÀº ´Ù¾çÇÑ ½¯µå º¸µå¸¦ »ç¿ëÇϴµ¥ ÀÖ´Ù. ÄÚµåÀÇ ÀÚ¼¼ÇÑ ¼³¸íÀº »ç¿ëÀÚÀÇ ¸òÀ¸·Î ÇÏ°í, ½¯µå º¸µå¸¦ »ç¿ëÇϴµ¥ À־ ½±°Ô Á¢±ÙÀ» ÇÒ ¼ö ÀÖµµ·Ï µµ¿òÀÌ µÇ°íÀÚ ÇÑ´Ù.

 

´ÙÀ½ °­Á¿¡¼­´Â GPS ½¯µå¸¦ ÀÌ¿ëÇÏ¿© GPS ½Ã°è¸¦ Çѹø ¸¸µé¾î º¸±â·Î ÇÑ´Ù. ¹®ÀÚÇü LCD¸¦ »ç¿ëÇÏ¿©, ³¯Â¥¿Í ½Ã°£ÀÌ Ãâ·ÂµÇ´Â ½Ã°è¸¦ °£´ÜÈ÷ ±¸¼ºÇÏ¿© ÄÚµùÇØ º¸µµ·Ï ÇÑ´Ù.

 

÷ºÎÆÄÀÏ : circuit.pdf – ȸ·Îµµ

          DataSheet.pdf – ½¯µå º¸µå ¼³¸í¼­

          TinyGPS.zip – ¶óÀ̺귯¸® & ¿¹Á¦

 

ºñ¹Ð¹øÈ£ È®ÀÎ ´Ý±â
name password
  Content name date hits
[¾ÆµÎÀ̳ë ÀÀ¿ë] 3. GPS ½¯µå - 1  
2014/07/18 11428


Copyright ¨Ï µµ¼­ÃâÆÇ ¿È»ç All Rights Reserved. ¢Ï : 02-776-4868 ,£Æ: 02-779-6757
»óÈ£¸í : ¿È»ç(OHM»ç) »ç¾÷Àå¼ÒÀçÁö : ¼­¿ïƯº°½Ã ¿µµîÆ÷±¸ ´ë¸²·Î170-1, 1Ãþ(´ë¸²µ¿)
»ç¾÷ÀÚµî·Ï¹øÈ£ : 416-18-31168 [»ç¾÷ÀÚÁ¤º¸È®ÀÎ] Åë½ÅÆǸž÷½Å°í¹øÈ£ : Á¦2023-¼­¿ï¿ë»ê-1034È£
´ëÇ¥ : À̹ÎÈñ °³ÀÎÁ¤º¸ º¸È£ Ã¥ÀÓÀÚ : Á¤È«±â