{"id":7497,"date":"2019-03-13T22:27:57","date_gmt":"2019-03-13T13:27:57","guid":{"rendered":"https:\/\/y2tech.net\/blog\/?p=7497"},"modified":"2019-03-19T19:35:09","modified_gmt":"2019-03-19T10:35:09","slug":"trying-gnss-receiving-function-on-spresence","status":"publish","type":"post","link":"https:\/\/y2tech.net\/blog\/gudget\/trying-gnss-receiving-function-on-spresence-7497\/","title":{"rendered":"Spresense\u306eGNSS(GPS)\u53d7\u4fe1\u6a5f\u80fd\u3092\u8a66\u3057\u3066\u307f\u308b"},"content":{"rendered":"<h3>Spresense\u3067GNSS\u4fe1\u53f7\u3092\u53d7\u4fe1\u3057\u3066\u307f\u308b<\/h3>\r\n<br>\r\n<p>\u5148\u65e5\u5165\u624b\u3057\u305fSpresense\u306e\u76ee\u7389\u6a5f\u80fd\u306e\u4e00\u3064\u3067\u3042\u308bGNSS\u306e\u53d7\u4fe1\u6a5f\u80fd\u304c\u3069\u3093\u306a\u7269\u304b\u78ba\u8a8d\u3059\u308b\u305f\u3081\u3001\u304a\u624b\u8efd\u306aArduiono\u958b\u767a\u74b0\u5883\u3092\u4f7f\u3063\u3066\u3069\u306e\u7a0b\u5ea6GNSS\u885b\u661f\u3092\u6349\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u306e\u304b\u78ba\u8a8d\u3057\u3066\u307f\u305f\uff0e\u4eca\u56de\u306f\u5916\u4ed8\u3051\u306e\u53d7\u4fe1\u30a2\u30f3\u30c6\u30ca\u306f\u7528\u3044\u305a\u306b\u3001Spresense\u306e\u30e1\u30a4\u30f3\u30dc\u30fc\u30c9\u5074\u306e\u30c1\u30c3\u30d7\u30a2\u30f3\u30c6\u30ca\u306b\u3088\u308b\u53d7\u4fe1\u30c6\u30b9\u30c8\u3060\uff0e<\/p>\r\n<br>\r\n<p>\u4eca\u56de\u306f\u3001GNSS\u306e\u53d7\u4fe1\u6a5f\u80fd\u3092\u8a66\u3059\u305f\u3081\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3068\u3057\u3066\u3001SONY\u304c\u63d0\u4f9b\u3057\u3066\u3044\u308bArduino\u958b\u767a\u74b0\u5883\u7528\u306e\u30e9\u30a4\u30d6\u30e9\u30ea <a href=\"https:\/\/developer.sony.com\/ja\/develop\/spresense\/developer-tools\/get-started-using-arduino-ide\/set-up-the-arduino-ide#_spresense_arduino_library_\u306e\u4f7f\u3044\u65b9\" rel=\"noopener noreferrer\" target=\"_blank\">&#8220;Spresense Arduino Library&#8221; <\/a>\u3092\u7528\u3044\u308b\u3053\u3068\u306b\u3059\u308b\uff0e<\/p>\r\n<br>\r\n<p>Spresense\u306e\u57fa\u672c\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f<a href=\"http:\/\/nuttx.org\" rel=\"noopener noreferrer\" target=\"_blank\">NuttX<\/a>\u3068\u3044\u3046\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0OS\u3067\u3001NuttX\u30d9\u30fc\u30b9\u3067\u958b\u767a\u304c\u884c\u308f\u308c\u3066\u3044\u308b\uff0e\u30e6\u30fc\u30b6\u306f\u516c\u958b\u3055\u308c\u3066\u3044\u308bNuttX\u306eSDK\u3092\u7528\u3044\u3066Spresense\u306e\u30cf\u30fc\u30c9\u30a6\u30a7\u30a2\u3092\u30ed\u30fc\u30ec\u30d9\u30eb\u3067\u5236\u5fa1\u53ef\u80fd\u3060\uff0e\u4f46\u3057\u3001\u4e00\u822c\u306e\u30e6\u30fc\u30b6\u306b\u3068\u3063\u3066\u306f\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0OS\u3092\u30ed\u30fc\u30ec\u30d9\u30eb\u3067\u3044\u3058\u304f\u308a\u56de\u3059\u306e\u306f\u6577\u5c45\u304c\u9ad8\u3044\u306e\u3067\u3001NuttX\u3092\u3082\u3046\u5c11\u3057\u4e0a\u4f4d\u30ec\u30d9\u30eb\u3067\u5236\u5fa1\u3067\u304d\u308b\u3088\u3046\u306bArduino\u30e9\u30c3\u30d1\u30fc\u3092\u3001NuttX\u306e\u4e0a\u306b\u88ab\u305b\u305fArduino\u4e92\u63db\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u30e6\u30fc\u30b6\u306b\u63d0\u4f9b\u3057\u3066\u3044\u308b\uff0e<\/p>\r\n<br>\r\n<div style=\"width: 100%; margin: 0 auto; text-align: center;\">\r\n<img decoding=\"async\" src=\"\r\nhttps:\/\/static.developer.sony.com\/images\/image\/s3\/uploads\/2018\/11\/overview_software_SDK_structure-2.png\" width=586 height=368 alt=\"Spresense Arduino Library Layers\" \/>\r\n<br>\r\n<span>Spresense Arduino Library \u306e\u69cb\u9020\uff08SONY\u30db\u30fc\u30e0\u30da\u30fc\u30b8\u3088\u308a\u5f15\u7528\uff09<\/span><br>\r\n<span>https:\/\/static.developer.sony.com\/images\/image\/s3\/uploads\/2018\/11\/overview_software_SDK_structure-2.png<\/span><br>\r\n<\/div>\r\n<br>\r\n<p>\u3053\u306eArduino\u4e92\u63db\u30e9\u30a4\u30d6\u30e9\u30ea\u306bGNSS\u53d7\u4fe1\u30b5\u30f3\u30d7\u30eb\u30b9\u30b1\u30c3\u30c1\uff08Arduino\u3067\u306f\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u3053\u3068\u3092\u30b9\u30b1\u30c3\u30c1\u3068\u547c\u3093\u3067\u3044\u308b\uff09\u304c2\u3064\u7a0b\u7d44\u307f\u8fbc\u307e\u308c\u3066\u3044\u308b\u306e\u3067\u3001\u3053\u308c\u3092\u305d\u306e\u307e\u307e\u5229\u7528\u3059\u308b\u3053\u3068\u306b\u3059\u308b\uff0e<\/p>\r\n<br>\r\n<p>\r\n<a href=\"https:\/\/www.arduino.cc\" rel=\"noopener noreferrer\" target=\"_blank\">Arduino<\/a>\u306f\u5c0f\u578b\u30dc\u30fc\u30c9\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u306e\u30cf\u30fc\u30c9\u30a6\u30a7\u30a2\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306e\u30c7\u30d5\u30a1\u30af\u30c8\u30b9\u30bf\u30f3\u30c0\u30fc\u30c9\u3068\u306a\u3063\u3066\u304a\u308a\u3001Arduino\u5bfe\u5fdc\u5468\u8fba\u6a5f\u5668\u3084\u95a2\u9023\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u3001\u6570\u591a\u304f\u306eArduino\u89e3\u8aac\u672c\u304c\u51fa\u56de\u3063\u3066\u3044\u308b\u306e\u3067\u3001\u521d\u5fc3\u8005\u3067\u3082\u53d6\u308a\u4ed8\u304d\u6613\u3044\u826f\u3044\u624b\u8efd\u3067\u8eab\u8fd1\u306a\u958b\u767a\u74b0\u5883\u3060\uff0e<\/p>\r\n<br>\r\n<p>\u3068\u306f\u8a00\u3048\u3001\u79c1\u81ea\u8eab\u304cArduino\u3067\u306e\u30b7\u30b9\u30c6\u30e0\u958b\u767a\u306b\u306f\u4e0d\u6163\u308c\u306a\u306e\u3067\u3001\u5148\u305a\u306fArduino\u306e\u958b\u767a\u74b0\u5883\u306e\u6574\u5099\u304b\u3089\u59cb\u3081\u308b\u3053\u3068\u306b\u3059\u308b\uff0e\u5e78\u3044\u3001SONY\u306e\u30db\u30fc\u30e0\u30da\u30fc\u30b8\u306b\u5206\u304b\u308a\u6613\u3044\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u304c\u8f09\u3063\u3066\u3044\u308b\u306e\u3067\u3001\u305d\u306e\u8aac\u660e\u5185\u5bb9\u3092\u8fbf\u308a\u306a\u304c\u3089\u3001\u9806\u306b\u74b0\u5883\u3092\u6574\u3048\u3066\u884c\u304f\u69d8\u5b50\u3092\u7d39\u4ecb\u3059\u308b\uff0e<\/p>\r\n<br>\r\n<h4>Arduino\u958b\u767a\u74b0\u5883\u306e\u6e96\u5099<\/h4>\r\n<br>\r\n<p>\u4e00\u756a\u6700\u521d\u306b\u884c\u3046\u4f5c\u696d\u3068\u3057\u3066\u3001\u624b\u5143\u306ePC\u3084Mac\u74b0\u5883\u306bArduino\u958b\u767a\u74b0\u5883\u3092\u5c0e\u5165\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\uff0eArduino\u306e\u516c\u5f0f\u30db\u30fc\u30e0\u30da\u30fc\u30b8\u304b\u3089\u3001\u7121\u6599\u3067\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u53ef\u80fd\u306a\u306e\u3067\u81ea\u5206\u306e\u74b0\u5883\u306b\u5408\u308f\u305b\u305f<a href=\"https:\/\/www.arduino.cc\/en\/Main\/Software\" rel=\"noopener noreferrer\" target=\"_blank\">IDE\uff08\u7d71\u5408\u958b\u767a\u74b0\u5883\uff09<\/a>\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\uff0eMac OS\u3001Linux (Intel\u7cfb32\/64bit\u3001ARM\u7cfb\uff09\u3001Windows\u306e\u74b0\u5883\u304c\u7528\u610f\u3055\u308c\u3066\u3044\u308b\uff0e\u5c1a\u3001ARM mbed\u7cfb\u306e\u958b\u767a\u74b0\u5883\u3068\u540c\u3058\u3088\u3046\u306b\u3001\u30af\u30e9\u30a6\u30c9\u30b5\u30fc\u30d3\u30b9\u30d9\u30fc\u30b9\u306e\u30aa\u30f3\u30e9\u30a4\u30f3\u958b\u767a\u74b0\u5883\u3082\u63d0\u4f9b\u3055\u308c\u3066\u3044\u308b\u304c\u3001\u30aa\u30f3\u30e9\u30a4\u30f3\u958b\u767a\u74b0\u5883\u306b\u3064\u3044\u3066\u306f\u5225\u306a\u6a5f\u4f1a\u306b\u8aac\u660e\u3059\u308b\u4e88\u5b9a\u3060\uff0e<\/p>\r\n<br>\r\n<p>Arduino\u3092\u7acb\u3061\u4e0a\u3052\u308b\u3068\u3001\u521d\u671f\u72b6\u614b\u3067\u6b21\u306e\u3088\u3046\u306a setup()\u3001loop() \u3068\u3044\u3046\u7a7a\u306e\u95a2\u6570\u3060\u3051\u304c\u66f8\u304b\u308c\u305f\u30b9\u30b1\u30c3\u30c1\u7de8\u96c6\u753b\u9762\u304c\u73fe\u308c\u308b\uff0e\u3053\u306e\u72b6\u614b\u3067\u30e1\u30cb\u30e5\u30fc\u304b\u3089 &#8220;Tools&#8221; \u21d2 &#8220;Boads:Arduino\/Genuino Uno&#8221; \u21d2 &#8220;Borads Manager&#8221; \u3068\u8fbf\u3063\u3066\u884c\u304f\uff0e<\/p>\r\n<br>\r\n<br>\r\n<div style=\"width: 100%; margin: 0 auto; text-align: center;\">\r\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/ArduinoIDE.png\" alt=\"Arduino IDE Initial Startup Pane\" width=\"640\" height=\"305\" class=\"size-full wp-image-7510\" srcset=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/ArduinoIDE.png 640w, https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/ArduinoIDE-320x153.png 320w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/>\r\n<br>\r\n<span>Arduino IDE\u306e\u521d\u671f\u7acb\u3061\u4e0a\u3052\u6642\u306e\u30b9\u30b1\u30c3\u30c1\u7de8\u96c6\u753b\u9762<\/span>\r\n<br>\r\n<br>\r\n<\/div>\r\n<p>&#8220;Arduino&#8221;\u30e1\u30cb\u30e5\u30fc\u306e&#8221;Preferences&#8230;&#8221;\u306e\u8a2d\u5b9a\u30c0\u30a4\u30a2\u30ed\u30b0\u4e0b\u90e8\u306b\u3042\u308b\u3001&#8221;Additional Boards Manager URLs: &#8221; \u306e\u9805\u76ee\u306b\u3001\r\n<br>\r\n<pre class=\"line-numbers\"><code class=\"language-textile\">https:\/\/github.com\/sonydevworld\/spresense-arduino-compatible\/releases\/download\/generic\/package_spresense_index.json\u3000\r\n<\/code><\/pre>\r\n\u3092\u8a2d\u5b9a\u3059\u308b\uff0e<\/p>\r\n<br>\r\n<div style=\"width: 100%; margin: 0 auto; text-align: center;\">\r\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/AddSpresenceLibPath.png\" alt=\"Set Spresence Library Path\" width=\"640\" height=\"514\" class=\"size-full wp-image-7512\" srcset=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/AddSpresenceLibPath.png 640w, https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/AddSpresenceLibPath-320x257.png 320w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/>\r\n<span>Spresence\u7528\u306e\u30cf\u30fc\u30c9\u30a6\u30a7\u30a2\u60c5\u5831\u3092\u53d6\u5f97\u3059\u308b\u30d1\u30b9\u3092IDE\u306b\u8ffd\u52a0<\/span>\r\n<br>\r\n<br>\r\n<\/div>\r\n<p>\u3053\u306e\u4f5c\u696d\u306b\u3088\u3063\u3066\u3001SONY\u304c\u63d0\u4f9b\u3057\u3066\u3044\u308bArduino\u74b0\u5883\u7528\u306eSpresence\u30cf\u30fc\u30c9\u30a6\u30a7\u30a2\u5b9a\u7fa9\u60c5\u5831\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3001Arduiono IDE\u74b0\u5883\u306b\u53d6\u308a\u8fbc\u3080\u3053\u3068\u304c\u53ef\u80fd\u306b\u306a\u308b\uff0e<\/p>\r\n<br>\r\n<div style=\"width: 100%; margin: 0 auto; text-align: center;\">\r\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/ArduinoAddingTheBoard.png\" alt=\"Adding a board\" width=\"640\" height=\"453\" class=\"size-full wp-image-7511\" srcset=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/ArduinoAddingTheBoard.png 640w, https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/ArduinoAddingTheBoard-320x227.png 320w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/>\r\n<br>\r\n<span>Spresence\u306e\u30cf\u30fc\u30c9\u30a6\u30a7\u30a2\u60c5\u5831\u3092IDE\u74b0\u5883\u306b\u53d6\u308a\u8fbc\u3080<\/span>\r\n<br>\r\n<br>\r\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/ArduinoSelectSpresenceLib.png\" alt=\"Searching Spresence Lib\" width=\"640\" height=\"360\" class=\"size-full wp-image-7513\" srcset=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/ArduinoSelectSpresenceLib.png 640w, https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/ArduinoSelectSpresenceLib-320x180.png 320w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/>\r\n<br>\r\n<span>\u691c\u7d22\u6b04\u306b &#8220;sp&#8221; \u3068\u5165\u529b\u3059\u308b\u3068\u7d20\u65e9\u304fSpresence\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u308b<\/span>\r\n<br>\r\n<br>\r\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/InstallingSpresenceLib.png\" alt=\"Installing Spresence Hardware Info\" width=\"640\" height=\"360\" class=\"size-full wp-image-7525\" srcset=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/InstallingSpresenceLib.png 640w, https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/InstallingSpresenceLib-320x180.png 320w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/>\r\n<br>\r\n<span>GitHub\u304b\u3089Spresence\u306e\u30cf\u30fc\u30c9\u30a6\u30a7\u30a2\u60c5\u5831\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u4e2d<\/span>\r\n<br>\r\n<br>\r\n<\/div>\r\n<p>\u6b21\u306b\u3001Arduino IDE\u306e&#8221;Tools&#8221;\u30e1\u30cb\u30e5\u30fc\u304b\u3089 \u5148\u307b\u3069\u3068\u540c\u3058\u3088\u3046\u306b\u3001&#8221;Tools&#8221; \u21d2 &#8220;Boads:Arduino\/Genuino Uno&#8221; \u3068\u8fbf\u3063\u3066\u884c\u304d\u3001\u4e00\u756a\u4e0b\u306b\u3042\u308b &#8220;Spresence&#8221; \u3092\u9078\u629e\u3059\u308b\u3053\u3068\u3067\u3001IDE\u306e\u958b\u767a\u30bf\u30fc\u30b2\u30c3\u30c8\u3092 &#8220;Spresence&#8221; \u306b\u8a2d\u5b9a\u3059\u308b\uff0e<\/p>\r\n<br>\r\n<div style=\"width: 100%; margin: 0 auto; text-align: center;\">\r\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/ChooseTheSpresenceBoard.png\" alt=\"Choosing the Spresence Board\" width=\"640\" height=\"550\" class=\"size-full wp-image-7538\" srcset=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/ChooseTheSpresenceBoard.png 640w, https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/ChooseTheSpresenceBoard-320x275.png 320w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/>\r\n<br>\r\n<span>Arduino IDE\u306e\u30bf\u30fc\u30b2\u30c3\u30c8\u3092\u3000&#8221;Spresence&#8221; \u306b\u8a2d\u5b9a<\/span>\r\n<br>\r\n<br>\r\n<\/div>\r\n<p>\u3053\u308c\u3067\u3001Arduino IDE\u306e\u74b0\u5883\u8a2d\u5b9a\u306f\u7d42\u4e86\u3067\u3042\u308b\u304c\u3001\u307e\u3060\u3053\u306e\u72b6\u614b\u3067\u306f\u3001\u624b\u5143\u306e\u306ePC\u3084Mac\u3068 &#8220;Spresence&#8221; \u30dc\u30fc\u30c9\u304cUSB\u30dd\u30fc\u30c8\u3092\u4ecb\u3057\u3066\u901a\u4fe1\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u306a\u3044\u306e\u3067\u3001USB\u5efb\u308a\u306e\u30c7\u30d0\u30a4\u30b9\u30c9\u30e9\u30a4\u30d0\u30fc\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\uff0e<\/p>\r\n<\/br>\r\n<h4>Spresence\u7528USB\u30b7\u30ea\u30a2\u30eb\u901a\u4fe1\u30c9\u30e9\u30a4\u30d0\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/h4>\r\n<br>\r\n<p>Spresence\u306eUSB\u30dd\u30fc\u30c8\u3092\u30b7\u30ea\u30a2\u30eb\u30b3\u30f3\u30bd\u30fc\u30eb\u30dd\u30fc\u30c8\u3068\u3057\u3066\u5229\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u3001\u30dc\u30fc\u30c9\u306b\u5185\u8535\u3055\u308c\u3066\u3044\u308bSiLab\u88fd\u306eUSB\u30b7\u30ea\u30a2\u30eb\u5909\u63db\u30c1\u30c3\u30d7\u7528\u30c9\u30e9\u30a4\u30d0\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\uff0eMac OS\u7528\u3068Windows\u7528\u306e\u30c9\u30e9\u30a4\u30d0\u304c\u7528\u610f\u3055\u308c\u3066\u3044\u308b\u306e\u3067\u3001\u81ea\u5206\u306e\u74b0\u5883\u306b\u5408\u308f\u305b\u3066\u30c9\u30e9\u30a4\u30d0\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\uff0e<\/p>\r\n<br>\r\n<p>\u3010SiLab CP210x USB to UART Bridge VCP\u30c9\u30e9\u30a4\u30d0\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u30da\u30fc\u30b8\u3011<\/p>\r\n<br>\r\n\u3000\u30fb<a href=\"https:\/\/www.silabs.com\/products\/development-tools\/software\/usb-to-uart-bridge-vcp-drivers\" rel=\"noopener noreferrer\" target=\"_blank\">CP210x USB to UART Bridge VCP Drivers<\/a>\r\n<br>\r\n<br>\r\n<p>CP210x USB to UART Bridge VCP\u30c9\u30e9\u30a4\u30d0\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u304c\u5b8c\u4e86\u5f8c\u3001Spresence\u306eUSB\u30dd\u30fc\u30c8\u3092\u624b\u5143\u306ePC\/Mac\u306b\u3064\u306a\u304e\u3001PC\/Mac\u5074\u3067\u30c9\u30e9\u30a4\u30d0\u304c\u6b63\u3057\u304f\u8a8d\u8b58\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304a\u304f\uff0e<\/p>\r\n<br>\r\n<br>\r\n<div style=\"width: 100%; margin: 0 auto; text-align: center;\">\r\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/PK52160.jpg\" alt=\"Connecting USB cable\" width=\"640\" height=\"427\" class=\"size-full wp-image-7535\" srcset=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/PK52160.jpg 640w, https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/PK52160-320x214.jpg 320w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/>\r\n<br>\r\n<span>PC\/Mac\u3068Spresence\u3092USB\u30b1\u30fc\u30d6\u30eb\u3067\u3064\u306a\u3050<\/span>\r\n<br>\r\n<br>\r\n<\/div>\r\n<p>Mac OS \u306e\u5834\u5408\u306f\u3001&#8221;Terminal&#8221;\u30a2\u30d7\u30ea\u306e\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u3067\u3001&#8221;%ls -la  \/dev\/{tty,cu}.*&#8221; \u3068\u5165\u529b\u3059\u308b\u3068\u3001<br>\r\n\r\n<pre><code class=\"language-textile\">iMac27:~ yasuaki$ ls -la \/dev\/{tty,cu}.*\r\ncrw-rw-rw-  1 root  wheel   21,   5 Mar  8 07:08 \/dev\/cu.Bluetooth-Incoming-Port\r\ncrw-rw-rw-  1 root  wheel   21,  15 Mar 13 18:53 \/dev\/cu.SLAB_USBtoUART\r\ncrw-rw-rw-  1 root  wheel   21,   1 Mar  8 07:08 \/dev\/cu.usbserial-00203414\r\ncrw-rw-rw-  1 root  wheel   21,   4 Mar  8 07:08 \/dev\/tty.Bluetooth-Incoming-Port\r\ncrw-rw-rw-  1 root  wheel   21,  14 Mar 13 18:53 \/dev\/tty.SLAB_USBtoUART\r\ncrw-rw-rw-  1 root  wheel   21,   0 Mar  8 07:08 \/dev\/tty.usbserial-00203414\r\n<\/code><\/pre>\r\n<br>\r\n&#8220;\/dev\/tty.SLAB_USBtoUART&#8221; \u3068 &#8220;\/dev\/cu.SLAB_USBtoUART&#8221; \u304c\u5b58\u5728\u3057\u3066\u3044\u308c\u3070\u3001\u30c9\u30e9\u30a4\u30d0\u306f\u304d\u3061\u3093\u3068\u8a8d\u8b58\u3055\u308c\u3066\u3044\u308b\uff0e<\/p>\r\n<br>\r\n<p>Windows\u306e\u5834\u5408\u306f\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u30d1\u30cd\u30eb\u304b\u3089\u201d\u30c7\u30d0\u30a4\u30b9\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u201d\u3092\u958b\u304d\u3001Port(COM&#038;LPT\uff09\u306e\u9805\u76ee\u3092\u78ba\u8a8d\u3057\u3001&#8221;Sillicon Labs CP210x USB to UART &#8230;&#8221; <\/p>\u304c\u8868\u793a\u3055\u308c\u3066\u3044\u308c\u3070OK\u3060\uff0e\u3053\u306e\u969b\u306b\u3001Windows\u5074\u304c\u5272\u308a\u5f53\u3066\u3066\u3044\u308bSerial Port\u756a\u53f7\u3092\u78ba\u8a8d\u3057\u3066\u304a\u304f\u3068\u826f\u3044\u3060\u308d\u3046\uff0e<\/p>\r\n<br>\r\n<h4>Spresence\u306b\u30d6\u30fc\u30c8\u30ed\u30fc\u30c0\u30fc\u3092\u66f8\u304d\u8fbc\u3080<\/h4>\r\n<br>\r\n<p>Arduino\u3092\u4f7f\u3063\u3066\u4f55\u304b\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u52d5\u304b\u305d\u3046\u3068\u3059\u308b\u3068\u3001\u201d\u30d6\u30fc\u30c8\u30ed\u30fc\u30c0\u30fc\u201d\u3068\u3044\u3046\u8a00\u8449\u304c\u5fc5\u305a\u73fe\u308c\u308b\uff0eLinux\u3084UNIX\u7cfb\u306eOS\u306e\u6271\u3044\u306b\u6163\u308c\u3066\u3044\u308c\u3070\u3001\u201d\u30d6\u30fc\u30c8\u30ed\u30fc\u30c0\u30fc\u201d\u304cOS\u306e\u8d77\u52d5\u6642\u306b\u91cd\u8981\u306a\u5f79\u5272\u3092\u679c\u305f\u3057\u3066\u3044\u308b\u4e8b\u3050\u3089\u3044\u306f\u3054\u5b58\u3058\u3060\u308d\u3046\uff0e<\/p>\r\n<br>\r\n<p>Spresence\u3082\u540c\u3058\u3088\u3046\u306b\u30e6\u30fc\u30b6\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\uff08\u30b9\u30b1\u30c3\u30c1\uff09\u3092\u3001\u30d5\u30e9\u30c3\u30b7\u30e5\u30e1\u30e2\u30ea\u7b49\u306e\u5185\u8535\u30c7\u30d0\u30a4\u30b9\u304b\u3089\u30e1\u30e2\u30ea\u4e0a\u306b\u8aad\u307f\u8fbc\u3093\u3067\u3001\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u5b9f\u884c\u3055\u305b\u308b\u305f\u3081\u30d6\u30fc\u30c8\u30ed\u30fc\u30c0\u30fc\u304c\u5fc5\u8981\u306b\u306a\u308b\uff0e<\/p>\r\n<br>\r\n<p>Spresence\u306e\u8cfc\u5165\u76f4\u5f8c\u306f\u3001\u3053\u306e\u30d6\u30fc\u30c8\u30ed\u30fc\u30c0\u30fc\u6a5f\u80fd\u304c\u5b9f\u88c5\u3055\u308c\u3066\u3044\u306a\u3044\u306e\u3067\u3001Spresence\u306b\u30d6\u30fc\u30c8\u30ed\u30fc\u30c0\u30fc\u3092\u66f8\u304d\u8fbc\u3080\u4f5c\u696d\u304c\u5fc5\u8981\u3060\uff0e\u3053\u306e\u4f5c\u696d\u3092\u884c\u308f\u306a\u3044\u3068\u30e6\u30fc\u30b6\u304c\u4f5c\u6210\u3057\u305f\u30d7\u30ed\u30b0\u30e9\u30e0\uff08\u30b9\u30b1\u30c3\u30c1\uff09\u3092Spresence\u306b\u5b9f\u884c\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u306a\u3044\uff0e<\/p>\r\n<br>\r\n<p>\u30d6\u30fc\u30c8\u30ed\u30fc\u30c0\u30fc\u3092\u66f8\u304d\u8fbc\u3080\u4f5c\u696d\u306f\u3001USB\u30b1\u30fc\u30d6\u30eb\u3092Spresence\u306e\u30e1\u30a4\u30f3\u30dc\u30fc\u30c9\u5074\u306eMicro USB\u7aef\u5b50\u306b\u3064\u306a\u3044\u3060\u72b6\u614b\u3067\u3001Arduino IDE\u306e &#8220;Tools&#8221; \u30e1\u30cb\u30e5\u30fc\u306e &#8220;Port&#8221; \u3092\u9078\u3073\u3001\u30b5\u30d6\u30e1\u30cb\u30e5\u30fc\u306b\u73fe\u308c\u308b \u5148\u307b\u3069\u78ba\u8a8d\u3057\u305fUSB\u30b7\u30ea\u30a2\u30eb\u5909\u63db\u30c9\u30e9\u30a4\u30d0\u3000&#8221;\/dev\/cu.SLAB_USBtoUART&#8221; \uff08Windows\u306e\u5834\u5408\u306f &#8220;COMx&#8221;\uff09\u3092\u9078\u629e\u3059\u308b\uff0e\u3053\u308c\u3067\u624b\u5143\u306ePC\/Mac\u3068Spresence\u3068\u306e\u9593\u3067\u3001\u30b7\u30ea\u30a2\u30eb\u901a\u4fe1\u306b\u3088\u308b\u60c5\u5831\u306e\u3084\u308a\u3068\u308a\u304c\u53ef\u80fd\u3068\u306a\u3063\u305f\uff0e<\/p>\r\n<br>\r\n<br>\r\n<div style=\"width: 100%; margin: 0 auto; text-align: center;\">\r\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/SelectingSerialPort.png\" alt=\"Selecting Serial Port\" width=\"640\" height=\"427\" class=\"size-full wp-image-7542\" srcset=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/SelectingSerialPort.png 640w, https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/SelectingSerialPort-320x214.png 320w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/>\r\n<br>\r\n<span>Serial Port\u306e\u8a2d\u5b9a\u3092\u884c\u3046<\/span>\r\n<br>\r\n<br>\r\n<\/div>\r\n<p> Arduino IDE\u306e &#8220;Tools&#8221; \u30e1\u30cb\u30e5\u30fc\u306e\u4e0b\u304b\u3089\uff12\u3064\u76ee\u306b&#8221;Programmer:&#8221;AVRISP mkII&#8221; \u3068\u3044\u3046\u9805\u76ee\u304c\u3042\u308b\u306e\u3067\u3001\u3053\u306e\u9805\u76ee\u3092\u9078\u3093\u3067\u8868\u793a\u3055\u308c\u308b\u30b5\u30d6\u30e1\u30cb\u30e5\u30fc\u306e\u4e00\u756a\u4e0b\u306b\u3042\u308b\u3001&#8221;Spresence Firmware Updater&#8221; \u3092\u9078\u629e\u3059\u308b\uff0e<\/p>\r\n<br>\r\n<div style=\"width: 100%; margin: 0 auto; text-align: center;\">\r\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/SpresenceBootloader.png\" alt=\"Spresence Bootloader\" width=\"640\" height=\"426\" class=\"size-full wp-image-7546\" srcset=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/SpresenceBootloader.png 640w, https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/SpresenceBootloader-320x213.png 320w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/>\r\n<br>\r\n<span>&#8220;Programmer&#8221; \u3068\u3057\u3066&#8221;Spresence Firmware Updater&#8221;\u3092\u9078\u629e<\/span>\r\n<br>\r\n<br>\r\n<\/div>\r\n<p>\u3053\u3053\u304b\u3089\u306e\u624b\u9806\u306f\u4e00\u5bf8\u8907\u96d1\u3067\u3001Arduino IDE\u306e &#8220;Tools&#8221; \u30e1\u30cb\u30e5\u30fc\u306e\u4e00\u756a\u4e0b\u306b\u3042\u308b &#8220;Burn Bootloader&#8221; \u3092\u9078\u629e\u3059\u308b\u3068\u3001&#8221;flash_writer&#8221;\u3068\u3044\u3046Arduino IDE\u3068\u306f\u5225\u306a\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30d7\u30ed\u30b0\u30e9\u30e0\u304c\u8d77\u52d5\u3057\u3001&#8221;End User License Agreement&#8221; \u753b\u9762\u304c\u73fe\u308c\u308b\uff0e\u753b\u9762\u4e0b\u306b\u3042\u308b\u3001&#8221;Go to download page&#8221;\u3068\u3044\u3046\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b\u3068\u3001\u4eca\u5ea6\u306fWEB\u30d6\u30e9\u30a6\u30b6\u753b\u9762\u304c\u958b\u304d\u3001SONY\u306e\u30d5\u30a1\u30fc\u30e0\u30a6\u30a7\u30a2\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u30b5\u30a4\u30c8\uff08&#8221;https:\/\/developer.sony.com\/file\/download\/download-spresense-firmware-v1-1-000&#8243; 2019\/3\/13\u73fe\u5728\uff09\u304c\u958b\u304f\uff0e<\/p>\r\n<br>\r\n<p>\u3053\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u30b5\u30a4\u30c8\u304b\u3089\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u305f\u6700\u65b0\u30d5\u30a1\u30fc\u30e0\u30a6\u30a7\u30a2\u30d5\u30a1\u30a4\u30eb &#8220;spresense-binaries-v1.1.0.zip&#8221; \u3092\u3001\u5148\u307b\u3069\u306e&#8221;flash_writer&#8221;\u306e&#8221;End User License Agreement&#8221;\u753b\u9762\u4e0a\u306b\u30c9\u30e9\u30c3\u30b0\uff06\u30c9\u30ed\u30c3\u30d7\u3059\u308b\u3053\u3068\u3067\u6700\u65b0\u30d5\u30a1\u30fc\u30e0\u30a6\u30a7\u30a2\u304cSpresence\u306b\u66f8\u304d\u8fbc\u307e\u308c\u308b\uff0e<\/p>\r\n<br>\r\n<br>\r\n<div style=\"width: 100%; margin: 0 auto; text-align: center;\">\r\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/SpresenceBootloaderUpdater.png\" alt=\"Spresence Bootloader Updater\" width=\"640\" height=\"601\" class=\"size-full wp-image-7548\" srcset=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/SpresenceBootloaderUpdater.png 640w, https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/SpresenceBootloaderUpdater-320x301.png 320w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/>\r\n<br>\r\n<span>&#8220;flash_writer&#8221;\u30a2\u30d7\u30ea\u306e&#8221;End User License Agreement&#8221;\u753b\u9762<\/span>\r\n<br>\r\n<br>\r\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/FirmwareDownloadPage.png\" alt=\"Firmware Download Page\" width=\"640\" height=\"427\" class=\"size-full wp-image-7550\" srcset=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/FirmwareDownloadPage.png 640w, https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/FirmwareDownloadPage-320x214.png 320w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/>\r\n<br>\r\n<span>WEB\u30d6\u30e9\u30a6\u30b6\u304c\u958b\u304dFirmware\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u30b5\u30a4\u30c8\u306b\u98db\u3076<\/span>\r\n<br>\r\n<br>\r\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/DragAndDropTheUpdaterFile.png\" alt=\"Drag And Drop The Updater File\" width=\"640\" height=\"426\" class=\"size-full wp-image-7552\" srcset=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/DragAndDropTheUpdaterFile.png 640w, https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/DragAndDropTheUpdaterFile-320x213.png 320w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/>\r\n<br>\r\n<span>\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u305fFirmware\u3092&#8221;End User License Agreement&#8221;\u753b\u9762\u4e0a\u3078\u30c9\u30e9\u30c3\u30b0\uff06\u30c9\u30ed\u30c3\u30d7\u3059\u308b<\/span>\r\n<br>\r\n<br>\r\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/BootloaderWasUpdated.png\" alt=\"bootloader  updated successfully\" width=\"640\" height=\"610\" class=\"size-full wp-image-7554\" srcset=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/BootloaderWasUpdated.png 640w, https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/BootloaderWasUpdated-320x305.png 320w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/>\r\n<br>\r\n<span>\u30d6\u30fc\u30c8\u30ed\u30fc\u30c0\u30fc\u306e\u66f8\u304d\u8fbc\u307f\u304c\u7d42\u308f\u308aSpresence\u304c\u518d\u8d77\u52d5\u3059\u308b\uff0e<\/span>\r\n<br>\r\n<br>\r\n<\/div>\r\n<p>\u4ee5\u4e0a\u3067\u3001Spresence\u306e\u30d6\u30fc\u30c8\u30ed\u30fc\u30c0\u30fc\u306e\u66f8\u304d\u8fbc\u307f\u4f5c\u696d\u306f\u5b8c\u4e86\u3067\u3042\u308b\uff0e\u4ee5\u964d\u306f\u3001\u30e6\u30fc\u30b6\u304c\u30d7\u30ed\u30b0\u30e9\u30e0\uff08\u30b9\u30b1\u30c3\u30c1\uff09\u3092\u4f5c\u6210\u3057\u3001Spresence\u306b\u66f8\u304d\u8fbc\u3093\u3067\u5b9f\u884c\u3055\u305b\u308b\u3053\u3068\u304c\u53ef\u80fd\u306b\u306a\u308b\uff0e<\/p>\r\n<br>\r\n<hr \/>\r\n<br>\r\n<h3>GNSS\u30b5\u30f3\u30d7\u30eb\u30b9\u30b1\u30c3\u30c1\u3092\u52d5\u304b\u3057\u3066\u307f\u308b<\/h3>\r\n<br>\r\n<p>Spresence\u306eArduino\u30e9\u30a4\u30d6\u30e9\u30ea\u306b\u306f\u3001\u4e88\u3081GNSS\u95a2\u9023\u306e\u30b5\u30f3\u30d7\u30eb\u30b9\u30b1\u30c3\u30c1\u304c2\u7a2e\u985e\u7d44\u307f\u8fbc\u307e\u308c\u3066\u3044\u308b\uff0e&#8221;gnss&#8221;\u3068&#8221;gnss_tracker&#8221;\u3068\u3044\u3046\u53d7\u4fe1\u3057\u3066\u3044\u308bGNSS\u306e\u60c5\u5831\u3092\u30b7\u30ea\u30a2\u30eb\u30b3\u30f3\u30bd\u30fc\u30eb\u4e0a\u306b\u30c6\u30ad\u30b9\u30c8\u30c7\u30fc\u30bf\u3068\u3057\u3066\u8868\u793a\u3059\u308b\u7c21\u5358\u306a\u3082\u306e\u3060\uff0e<\/p>\r\n<br>\r\n<p>\u4eca\u56de\u306f\u3001Arduino\u74b0\u5883\u3067\u306eSpresence\u306eGNSS\u53d7\u4fe1\u6a5f\u80fd\u3092\u52d5\u304b\u3057\u3066\u307f\u308b\uff08\u6163\u308c\u308b\uff09\u3053\u3068\u304c\u76ee\u7684\u306a\u306e\u3067\u3001\u30b9\u30b1\u30c3\u30c1\u306e\u4e2d\u8eab\u306b\u3064\u3044\u3066\u306f\u3001\u6b86\u3069\u89e6\u308c\u306a\u3044\u3053\u3068\u306b\u3059\u308b\uff0eSpresence\u304cGNSS\u885b\u661f\u3092\u6349\u3048\u308b\u69d8\u5b50\u3092\u628a\u63e1\u3067\u304d\u308c\u3070\u5341\u5206\u3060\uff0e<\/p>\r\n<br>\r\n<p>GNSS\u53d7\u4fe1\u306e\u30b5\u30f3\u30d7\u30eb\u30b9\u30b1\u30c3\u30c1 &#8220;gnss&#8221; \u306f\u3001&#8221;File&#8221;\u30e1\u30cb\u30e5\u30fc\u306e\u4e2d\u306b\u3001&#8221;Example&#8221; \u21d2 &#8220;GNSS&#8221; \u21d2 &#8220;gnss&#8221;  \u3068\u8fbf\u3063\u3066\u884c\u304f\u3068\u3001\u65b0\u3057\u3044IDE\u30a6\u30a4\u30f3\u30c9\u30a6\u304c\u958b\u304d\u3001&#8221;gnss&#8221; \u30b9\u30b1\u30c3\u30c1\u304c\u7de8\u96c6\u753b\u9762\u306b\u8868\u793a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3060\u308d\u3046\uff0e<\/p>\r\n<br>\r\n<br>\r\n<div style=\"width: 100%; margin: 0 auto; text-align: center;\">\r\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/SelectingAGNSSSampleSketch.png\" alt=\"GNSS Sample Sketch\" width=\"640\" height=\"427\" class=\"size-full wp-image-7561\" srcset=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/SelectingAGNSSSampleSketch.png 640w, https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/SelectingAGNSSSampleSketch-320x214.png 320w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/>\r\n<br>\r\n<span>GNSS\u95a2\u9023\u306e\u30b5\u30f3\u30d7\u30eb\u30b9\u30b1\u30c3\u30c1\u3092\u547c\u3073\u51fa\u3059<\/span>\r\n<br>\r\n<br>\r\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/GNSSSampleSketch.png\" alt=\"GNSS Sample Sketch Window\" width=\"635\" height=\"630\" class=\"size-full wp-image-7562\" srcset=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/GNSSSampleSketch.png 635w, https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/GNSSSampleSketch-320x317.png 320w\" sizes=\"auto, (max-width: 635px) 100vw, 635px\" \/>\r\n<br>\r\n<span>GNSS\u53d7\u4fe1\u30b5\u30f3\u30d7\u30eb\u30b9\u30b1\u30c3\u30c1 &#8220;gnss&#8221; <\/span>\r\n<br>\r\n<br>\r\n<\/div>\r\n<p>\u3053\u306e&#8221;gnss&#8221;\u30b5\u30f3\u30d7\u30eb\u30b9\u30b1\u30c3\u30c1\u3092Spresence\u3067\u5b9f\u884c\u3059\u308b\u306b\u306f\u3001IDE\u30a8\u30c7\u30a3\u30bf\u30fc\u753b\u9762\u306e\u4e0a\u90e8\u306b\u3042\u308b\u3001\u5de6\u304b\u3089\u4e8c\u3064\u3081\u306e\u4e38\u3067\u56f2\u307e\u308c\u305f\u53f3\u77e2\u5370\u306e\u30a2\u30a4\u30b3\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b\u3068\u3001\u30b9\u30b1\u30c3\u30c1\u306e\u30b3\u30f3\u30d1\u30a4\u30eb\u3092\u884c\u3044\u3001\u5b9f\u884c\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u4f5c\u6210\u3068Spresence\u3078\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u307e\u3067\u81ea\u52d5\u7684\u306b\u884c\u3063\u3066\u304f\u308c\u308b\uff0e<\/p>\r\n<br>\r\n<p>\u30d7\u30ed\u30b0\u30e9\u30e0\u30a8\u30e9\u30fc\u304c\u7121\u3051\u308c\u3070\u3001Spresence\u304c\u518d\u8d77\u52d5\u3057\u3001Spresence\u4e0a\u3067\u30b9\u30b1\u30c3\u30c1\u30d7\u30ed\u30b0\u30e9\u30e0\u304c\u7a3c\u50cd\u3057\u3066\u3044\u308b\u3053\u3068\u3060\u308d\u3046\uff0e<\/p>\r\n<br>\r\n<br>\r\n<div style=\"width: 100%; margin: 0 auto; text-align: center;\">\r\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/GNSSSampleSketchReady.png\" alt=\"GNSS Sample Sketch Ready\" width=\"640\" height=\"610\" class=\"size-full wp-image-7563\" srcset=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/GNSSSampleSketchReady.png 640w, https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/GNSSSampleSketchReady-320x305.png 320w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/>\r\n<br>\r\n<span>GNSS\u53d7\u4fe1\u30b5\u30f3\u30d7\u30eb\u30b9\u30b1\u30c3\u30c1 &#8220;gnss&#8221; \u304cSpresence\u4e0a\u3067\u7a3c\u50cd<\/span>\r\n<br>\r\n<br>\r\n<\/div>\r\n<p>\u3053\u306e\u72b6\u614b\u3067Spresence\u4e0a\u3067 &#8220;gnss&#8221;\u30b9\u30b1\u30c3\u30c1\u304c\u7a3c\u50cd\u3057\u3066\u3044\u308b\u306e\u3060\u304c\u3001IDE\u306e\u7de8\u96c6\u753b\u9762\u4e0a\u306b\u306f\u4f55\u3082\u8868\u793a\u3055\u308c\u306a\u3044\u306e\u3067\u3001\u672c\u5f53\u306b\u30b9\u30b1\u30c3\u30c1\u304c\u52d5\u3044\u3066\u3044\u308b\u306e\u304b\u3069\u3046\u304b\u78ba\u304b\u3081\u308b\u306b\u306f\u3001&#8221;gnss&#8221;\u304c\u30b7\u30ea\u30a2\u30eb\u30b3\u30f3\u30bd\u30fc\u30eb\u3078\u5410\u304d\u51fa\u3059\u53d7\u4fe1\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u78ba\u8a8d\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\uff0e<\/p>\r\n<br>\r\n<p>\u4e00\u756a\u7c21\u5358\u306a\u65b9\u6cd5\u306f\u3001IDE\u306e\u7de8\u96c6\u753b\u9762\u306e\u4e0a\u90e8\u53f3\u7aef\u306b\u3042\u308b\u3001&#8221;Serial Monitor&#8221; \u30a2\u30a4\u30b3\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u3001&#8221;Serial Monitor&#8221;\u30a6\u30a4\u30f3\u30c9\u30a6\u3092\u547c\u3073\u51fa\u3057\u3066\u78ba\u8a8d\u3059\u308b\u65b9\u6cd5\u3060\u308d\u3046\uff0e<\/p>\r\n<br>\r\n<p>&#8220;Serial Monitor&#8221;\u306f\u3068\u3066\u3082\u30b7\u30f3\u30d7\u30eb\u306a\u30b7\u30ea\u30a2\u30eb\u30b3\u30f3\u30bd\u30fc\u30eb\u3067\u306f\u3042\u308b\u304c\u3001\u30e6\u30fc\u30b6\u304c\u51fa\u529b\u3092\u30b3\u30d4\u30fc\uff06\u30da\u30fc\u30b9\u30c8\u3057\u305f\u308a\u8868\u793a\u3092\u4e00\u6642\u505c\u6b62\u3057\u305f\u308a\u3059\u308b\u6a5f\u80fd\u304c\u5099\u308f\u3063\u3066\u3044\u306a\u3044\u306e\u3067\u3001\u53ef\u80fd\u3067\u6709\u308c\u3070\u4ed6\u306e\u30b7\u30ea\u30a2\u30eb\u30b3\u30f3\u30bd\u30fc\u30eb\u30c4\u30fc\u30eb\u3092\u4f7f\u3063\u3066\u3001&#8221;gnss&#8221;\u30b5\u30f3\u30d7\u30eb\u30b9\u30b1\u30c3\u30c1\u306e\u51fa\u529b\u3092\u78ba\u8a8d\u3059\u308b\u3068\u826f\u3044\u3060\u308d\u3046\uff0e<\/p>\r\n<br>\r\n<br>\r\n<div style=\"width: 100%; margin: 0 auto; text-align: center;\">\r\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/StartGNSSCapturing.png\" alt=\"GNSS Capturing Start \" width=\"640\" height=\"393\" class=\"size-full wp-image-7565\" srcset=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/StartGNSSCapturing.png 640w, https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/StartGNSSCapturing-320x197.png 320w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/> \r\n<br>\r\n<span>&#8220;Serial Monitor&#8221;\u753b\u9762\u3067\u30b3\u30f3\u30bd\u30fc\u30eb\u51fa\u529b\u3092\u78ba\u8a8d<\/span>\r\n<br>\r\n<br>\r\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/SerialConsoleTool.png\" alt=\"Serial Console Tool \" width=\"640\" height=\"576\" class=\"size-full wp-image-7566\" srcset=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/SerialConsoleTool.png 640w, https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/SerialConsoleTool-320x288.png 320w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/> \r\n<br>\r\n<span>\u9ad8\u6a5f\u80fd\u306a\u30b7\u30ea\u30a2\u30eb\u30b3\u30f3\u30bd\u30fc\u30eb\u30c4\u30fc\u30eb &#8220;zoc7&#8243;\u3067\u78ba\u8a8d<\/span>\r\n<br>\r\n<br>\r\n<\/div>\r\n<p>\u30b5\u30f3\u30d7\u30eb\u30b9\u30b1\u30c3\u30c1 &#8220;gnss&#8221; \u306e\u51fa\u529b\u306f\u3001\u8907\u6570\u306eGNSS\u885b\u661f\u3092\u6349\u3048\u3066\u4f4d\u7f6e\u60c5\u5831\u306e\u691c\u51fa\u304c\u6210\u529f\u3059\u308b(Fix)\u3059\u308b\u3068\u3001\u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7\u3001\u6349\u3048\u305f\u885b\u661f\u306e\u6570\u3001Fix\u60c5\u5831\u3001\u7def\u5ea6\u30fb\u7d4c\u5ea6\u60c5\u5831\u3092\u51fa\u529b\u3059\u308b\u3060\u3051\u306e\u7c21\u5358\u306a\u3082\u306e\u3060\uff0e<\/p>\r\n<br>\r\n<div style=\"width: 100%; margin: 0 auto; text-align: center;\">\r\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/GNSSCapturingSuccessed.png\" alt=\"GNSS Capturing Successed\" width=\"640\" height=\"302\" class=\"size-full wp-image-7568\" srcset=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/GNSSCapturingSuccessed.png 640w, https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/GNSSCapturingSuccessed-320x151.png 320w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/>\r\n<br>\r\n<span>GNSS\u885b\u751f\u3092\u6349\u3048\u3066\u4f4d\u7f6e\u60c5\u5831\u304c\u78ba\u5b9a\u3055\u308c\u308b\u3066\u3044\u308b\u69d8\u5b50<\/span>\r\n<br>\r\n<br>\r\n<\/div>\r\n<p>\u4eca\u56de\u306f\u30de\u30f3\u30b7\u30e7\u30f3\u306e\u30d9\u30e9\u30f3\u30c0\u3067GNSS\u306e\u53d7\u4fe1\u30c6\u30b9\u30c8\u3092\u884c\u3063\u305f\u306e\u3067\u3001\u591a\u304f\u306e\u885b\u661f\u304c\u5efa\u7269\u306e\u9670\u306b\u306a\u3063\u3066\u3057\u307e\u3044\u30017\u301c9\u500b\u7a0b\u5ea6\u306e\u885b\u661f\u3057\u304b\u6355\u6349\u3067\u304d\u306a\u304b\u3063\u305f\u304c\u3001\u898b\u901a\u3057\u306e\u958b\u3051\u305f\u5834\u6240\u3067\u306f\u3082\u3063\u3068\u591a\u304f\u306e\u885b\u661f\u3092\u6355\u6349\u3067\u304d\u305f\u3060\u308d\u3046\uff0e<\/p>\r\n<br>\r\n<p>Spresence\u306e\u5c0f\u3055\u306a\u5185\u8535\u30c1\u30c3\u30d7\u30a2\u30f3\u30c6\u30ca\u3067\u306f\u3001\u3084\u306f\u308a\u5f79\u4e0d\u8db3\u3067\u3042\u308b\u3053\u3068\u306f\u5426\u3081\u306a\u3044\u3060\u308d\u3046\uff0e\u5b9f\u7528\u7684\u306aGNSS\u53d7\u4fe1\u3092\u884c\u3046\u306b\u306f\u5916\u90e8\u30a2\u30f3\u30c6\u30ca\u306f\u5fc5\u9808\u3060\u308d\u3046\uff0e<\/p>\r\n<br>\r\n<p>\u3010\u86c7\u8db3\u3011Spresence\u306e\u30d7\u30ed\u30bb\u30c3\u30b5\u30c1\u30c3\u30d7\u306f\u592a\u967d\u5149\u4e0b\u3067\u306f\u8aa4\u4f5c\u52d5\u3059\u308b\u6a21\u69d8\uff0eSpresence\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u306b\u306f \u201d\u906e\u5149\u30b7\u30fc\u30eb\u201d \u306a\u308b\u7269\u304c\u542b\u307e\u308c\u3066\u304a\u308a\u3001\u6700\u521d\u306f\u4f55\u3067\u3053\u3093\u306a\u7269\u304c\u4ed8\u5c5e\u3057\u3066\u3044\u308b\u306e\u304b\u8a1d\u3057\u3052\u3066\u3044\u305f\u304c\u3001\u3072\u5f31\u306a\u30d7\u30ed\u30bb\u30c3\u30b5\u30c1\u30c3\u30d7\u306f\u592a\u967d\u5149\u306f\u82e6\u624b\u306a\u3088\u3046\u3060\uff0eSpresence\u306b\u9650\u3089\u305a\u3001Raspberry Pi\u3082\u9593\u8fd1\u3067\u30b9\u30c8\u30ed\u30dc\u3092\u767a\u5149\u3055\u305b\u308b\u3068\u30d5\u30ea\u30fc\u30ba\u3057\u3066\u3057\u307e\u3046\u306e\u3067\u3001\u5c0f\u578b\u30dc\u30fc\u30c9\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u306f \u201d\u3082\u3084\u3057\u3063\u5b50\u201d\u3000\u304b\u3082\uff0e<\/p>\r\n<br>\r\n<br \/>\r\n<h4>\u30b5\u30f3\u30d7\u30eb\u30b9\u30b1\u30c3\u30c1 &#8220;gnss&#8221; \u306e\u30b3\u30fc\u30c9 <\/h4>\r\n<pre class=\"line-numbers\"><code class=\"language-c++\">\r\n\/*\r\n *  gnss.ino - GNSS example application\r\n *  Copyright 2018 Sony Semiconductor Solutions Corporation\r\n *\r\n *  This library is free software; you can redistribute it and\/or\r\n *  modify it under the terms of the GNU Lesser General Public\r\n *  License as published by the Free Software Foundation; either\r\n *  version 2.1 of the License, or (at your option) any later version.\r\n *\r\n *  This library is distributed in the hope that it will be useful,\r\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r\n *  Lesser General Public License for more details.\r\n *\r\n *  You should have received a copy of the GNU Lesser General Public\r\n *  License along with this library; if not, write to the Free Software\r\n *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA\r\n *\/\r\n\r\n\/**\r\n * @file gnss.ino\r\n * @author Sony Semiconductor Solutions Corporation\r\n * @brief GNSS example application\r\n * @details Spresense has an built in GNSS receiver which supports GPS and other\r\n *          GNSS satellites. This skecth provides an example the GNSS operation.\r\n *          Simply upload the sketch, reset the board and check the USB serial\r\n *          output. After 3 seconds status information should start to appear.\\n\\n\r\n *\r\n *          This example code is in the public domain.\r\n *\/\r\n\r\n\/* include the GNSS library *\/\r\n#include <GNSS.h>\r\n\r\n#define STRING_BUFFER_SIZE  128       \/**< %Buffer size *\/\r\n\r\n#define RESTART_CYCLE       (60 * 5)  \/**< positioning test term *\/\r\n\r\nstatic SpGnss Gnss;                   \/**< SpGnss object *\/\r\n\r\n\/**\r\n * @enum ParamSat\r\n * @brief Satellite system\r\n *\/\r\nenum ParamSat {\r\n  eSatGps,            \/**< GPS                     World wide coverage  *\/\r\n  eSatGlonass,        \/**< GLONASS                 World wide coverage  *\/\r\n  eSatGpsSbas,        \/**< GPS+SBAS                North America        *\/\r\n  eSatGpsGlonass,     \/**< GPS+Glonass             World wide coverage  *\/\r\n  eSatGpsQz1c,        \/**< GPS+QZSS_L1CA           East Asia &#038; Oceania  *\/\r\n  eSatGpsGlonassQz1c, \/**< GPS+Glonass+QZSS_L1CA   East Asia &#038; Oceania  *\/\r\n  eSatGpsQz1cQz1S,    \/**< GPS+QZSS_L1CA+QZSS_L1S  Japan                *\/\r\n};\r\n\r\n\/* Set this parameter depending on your current region. *\/\r\nstatic enum ParamSat satType =  eSatGps;\r\n\r\n\/**\r\n * @brief Turn on \/ off the LED0 for CPU active notification.\r\n *\/\r\nstatic void Led_isActive(void)\r\n{\r\n  static int state = 1;\r\n  if (state == 1)\r\n  {\r\n    ledOn(PIN_LED0);\r\n    state = 0;\r\n  }\r\n  else\r\n  {\r\n    ledOff(PIN_LED0);\r\n    state = 1;\r\n  }\r\n}\r\n\r\n\/**\r\n * @brief Turn on \/ off the LED1 for positioning state notification.\r\n *\r\n * @param [in] state Positioning state\r\n *\/\r\nstatic void Led_isPosfix(bool state)\r\n{\r\n  if (state)\r\n  {\r\n    ledOn(PIN_LED1);\r\n  }\r\n  else\r\n  {\r\n    ledOff(PIN_LED1);\r\n  }\r\n}\r\n\r\n\/**\r\n * @brief Turn on \/ off the LED3 for error notification.\r\n *\r\n * @param [in] state Error state\r\n *\/\r\nstatic void Led_isError(bool state)\r\n{\r\n  if (state)\r\n  {\r\n    ledOn(PIN_LED3);\r\n  }\r\n  else\r\n  {\r\n    ledOff(PIN_LED3);\r\n  }\r\n}\r\n\r\n\/**\r\n * @brief Activate GNSS device and start positioning.\r\n *\/\r\nvoid setup() {\r\n  \/* put your setup code here, to run once: *\/\r\n\r\n  int error_flag = 0;\r\n\r\n  \/* Set serial baudrate. *\/\r\n  Serial.begin(115200);\r\n\r\n  \/* Wait HW initialization done. *\/\r\n  sleep(3);\r\n\r\n  \/* Turn on all LED:Setup start. *\/\r\n  ledOn(PIN_LED0);\r\n  ledOn(PIN_LED1);\r\n  ledOn(PIN_LED2);\r\n  ledOn(PIN_LED3);\r\n\r\n  \/* Set Debug mode to Info *\/\r\n  Gnss.setDebugMode(PrintInfo);\r\n\r\n  int result;\r\n\r\n  \/* Activate GNSS device *\/\r\n  result = Gnss.begin();\r\n\r\n  if (result != 0)\r\n  {\r\n    Serial.println(\"Gnss begin error!!\");\r\n    error_flag = 1;\r\n  }\r\n  else\r\n  {\r\n    \/* Setup GNSS\r\n     *  It is possible to setup up to two GNSS satellites systems.\r\n     *  Depending on your location you can improve your accuracy by selecting different GNSS system than the GPS system.\r\n     *  See: https:\/\/developer.sony.com\/develop\/spresense\/developer-tools\/get-started-using-nuttx\/nuttx-developer-guide#_gnss\r\n     *  for detailed information.\r\n    *\/\r\n    switch (satType)\r\n    {\r\n    case eSatGps:\r\n      Gnss.select(GPS);\r\n      break;\r\n\r\n    case eSatGpsSbas:\r\n      Gnss.select(GPS);\r\n      Gnss.select(SBAS);\r\n      break;\r\n\r\n    case eSatGlonass:\r\n      Gnss.select(GLONASS);\r\n      break;\r\n\r\n    case eSatGpsGlonass:\r\n      Gnss.select(GPS);\r\n      Gnss.select(GLONASS);\r\n      break;\r\n\r\n    case eSatGpsQz1c:\r\n      Gnss.select(GPS);\r\n      Gnss.select(QZ_L1CA);\r\n      break;\r\n\r\n    case eSatGpsQz1cQz1S:\r\n      Gnss.select(GPS);\r\n      Gnss.select(QZ_L1CA);\r\n      Gnss.select(QZ_L1S);\r\n      break;\r\n\r\n    case eSatGpsGlonassQz1c:\r\n    default:\r\n      Gnss.select(GPS);\r\n      Gnss.select(GLONASS);\r\n      Gnss.select(QZ_L1CA);\r\n      break;\r\n    }\r\n\r\n\r\n    \/* Start positioning *\/\r\n    result = Gnss.start(COLD_START);\r\n    if (result != 0)\r\n    {\r\n      Serial.println(\"Gnss start error!!\");\r\n      error_flag = 1;\r\n    }\r\n    else\r\n    {\r\n      Serial.println(\"Gnss setup OK\");\r\n    }\r\n  }\r\n\r\n  \/* Turn off all LED:Setup done. *\/\r\n  ledOff(PIN_LED0);\r\n  ledOff(PIN_LED1);\r\n  ledOff(PIN_LED2);\r\n  ledOff(PIN_LED3);\r\n\r\n  \/* Set error LED. *\/\r\n  if (error_flag == 1)\r\n  {\r\n    Led_isError(true);\r\n    exit(0);\r\n  }\r\n}\r\n\r\n\/**\r\n * @brief %Print position information.\r\n *\/\r\nstatic void print_pos(SpNavData *pNavData)\r\n{\r\n  char StringBuffer[STRING_BUFFER_SIZE];\r\n\r\n  \/* print time *\/\r\n  snprintf(StringBuffer, STRING_BUFFER_SIZE, \"%04d\/%02d\/%02d \", pNavData->time.year, pNavData->time.month, pNavData->time.day);\r\n  Serial.print(StringBuffer);\r\n\r\n  snprintf(StringBuffer, STRING_BUFFER_SIZE, \"%02d:%02d:%02d.%06d, \", pNavData->time.hour, pNavData->time.minute, pNavData->time.sec, pNavData->time.usec);\r\n  Serial.print(StringBuffer);\r\n\r\n  \/* print satellites count *\/\r\n  snprintf(StringBuffer, STRING_BUFFER_SIZE, \"numSat:%2d, \", pNavData->numSatellites);\r\n  Serial.print(StringBuffer);\r\n\r\n  \/* print position data *\/\r\n  if (pNavData->posFixMode == FixInvalid)\r\n  {\r\n    Serial.print(\"No-Fix, \");\r\n  }\r\n  else\r\n  {\r\n    Serial.print(\"Fix, \");\r\n  }\r\n  if (pNavData->posDataExist == 0)\r\n  {\r\n    Serial.print(\"No Position\");\r\n  }\r\n  else\r\n  {\r\n    Serial.print(\"Lat=\");\r\n    Serial.print(pNavData->latitude, 6);\r\n    Serial.print(\", Lon=\");\r\n    Serial.print(pNavData->longitude, 6);\r\n  }\r\n\r\n  Serial.println(\"\");\r\n}\r\n\r\n\/**\r\n * @brief %Print satellite condition.\r\n *\/\r\nstatic void print_condition(SpNavData *pNavData)\r\n{\r\n  char StringBuffer[STRING_BUFFER_SIZE];\r\n  unsigned long cnt;\r\n\r\n  \/* Print satellite count. *\/\r\n  snprintf(StringBuffer, STRING_BUFFER_SIZE, \"numSatellites:%2d\\n\", pNavData->numSatellites);\r\n  Serial.print(StringBuffer);\r\n\r\n  for (cnt = 0; cnt < pNavData->numSatellites; cnt++)\r\n  {\r\n    const char *pType = \"---\";\r\n    SpSatelliteType sattype = pNavData->getSatelliteType(cnt);\r\n\r\n    \/* Get satellite type. *\/\r\n    \/* Keep it to three letters. *\/\r\n    switch (sattype)\r\n    {\r\n      case GPS:\r\n        pType = \"GPS\";\r\n        break;\r\n\r\n      case GLONASS:\r\n        pType = \"GLN\";\r\n        break;\r\n\r\n      case QZ_L1CA:\r\n        pType = \"QCA\";\r\n        break;\r\n\r\n      case SBAS:\r\n        pType = \"SBA\";\r\n        break;\r\n\r\n      case QZ_L1S:\r\n        pType = \"Q1S\";\r\n        break;\r\n\r\n      default:\r\n        pType = \"UKN\";\r\n        break;\r\n    }\r\n\r\n    \/* Get print conditions. *\/\r\n    unsigned long Id  = pNavData->getSatelliteId(cnt);\r\n    unsigned long Elv = pNavData->getSatelliteElevation(cnt);\r\n    unsigned long Azm = pNavData->getSatelliteAzimuth(cnt);\r\n    float sigLevel = pNavData->getSatelliteSignalLevel(cnt);\r\n\r\n    \/* Print satellite condition. *\/\r\n    snprintf(StringBuffer, STRING_BUFFER_SIZE, \"[%2d] Type:%s, Id:%2d, Elv:%2d, Azm:%3d, CN0:\", cnt, pType, Id, Elv, Azm );\r\n    Serial.print(StringBuffer);\r\n    Serial.println(sigLevel, 6);\r\n  }\r\n}\r\n\r\n\/**\r\n * @brief %Print position information and satellite condition.\r\n *\r\n * @details When the loop count reaches the RESTART_CYCLE value, GNSS device is\r\n *          restarted.\r\n *\/\r\nvoid loop()\r\n{\r\n  \/* put your main code here, to run repeatedly: *\/\r\n\r\n  static int LoopCount = 0;\r\n  static int LastPrintMin = 0;\r\n\r\n  \/* Blink LED. *\/\r\n  Led_isActive();\r\n\r\n  \/* Check update. *\/\r\n  if (Gnss.waitUpdate(-1))\r\n  {\r\n    \/* Get NaviData. *\/\r\n    SpNavData NavData;\r\n    Gnss.getNavData(&NavData);\r\n\r\n    \/* Set posfix LED. *\/\r\n    bool LedSet = (NavData.posDataExist && (NavData.posFixMode != FixInvalid));\r\n    Led_isPosfix(LedSet);\r\n\r\n    \/* Print satellite information every minute. *\/\r\n    if (NavData.time.minute != LastPrintMin)\r\n    {\r\n      print_condition(&NavData);\r\n      LastPrintMin = NavData.time.minute;\r\n    }\r\n\r\n    \/* Print position information. *\/\r\n    print_pos(&NavData);\r\n  }\r\n  else\r\n  {\r\n    \/* Not update. *\/\r\n    Serial.println(\"data not update\");\r\n  }\r\n\r\n  \/* Check loop count. *\/\r\n  LoopCount++;\r\n  if (LoopCount >= RESTART_CYCLE)\r\n  {\r\n    int error_flag = 0;\r\n\r\n    \/* Turn off LED0 *\/\r\n    ledOff(PIN_LED0);\r\n\r\n    \/* Set posfix LED. *\/\r\n    Led_isPosfix(false);\r\n\r\n    \/* Restart GNSS. *\/\r\n    if (Gnss.stop() != 0)\r\n    {\r\n      Serial.println(\"Gnss stop error!!\");\r\n      error_flag = 1;\r\n    }\r\n    else if (Gnss.end() != 0)\r\n    {\r\n      Serial.println(\"Gnss end error!!\");\r\n      error_flag = 1;\r\n    }\r\n    else\r\n    {\r\n      Serial.println(\"Gnss stop OK.\");\r\n    }\r\n\r\n    if (Gnss.begin() != 0)\r\n    {\r\n      Serial.println(\"Gnss begin error!!\");\r\n      error_flag = 1;\r\n    }\r\n    else if (Gnss.start(HOT_START) != 0)\r\n    {\r\n      Serial.println(\"Gnss start error!!\");\r\n      error_flag = 1;\r\n    }\r\n    else\r\n    {\r\n      Serial.println(\"Gnss restart OK.\");\r\n    }\r\n\r\n    LoopCount = 0;\r\n\r\n    \/* Set error LED. *\/\r\n    if (error_flag == 1)\r\n    {\r\n      Led_isError(true);\r\n      exit(0);\r\n    }\r\n  }\r\n}\r\n<\/code><\/pre>\r\n<br>\r\n<p>\u3053\u306e\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\u3067\u306fGPS\u885b\u661f\u3060\u3051\u3057\u304b\u6355\u6349\u3057\u306a\u3044\u8a2d\u5b9a\u306b\u306a\u3063\u3066\u3044\u308b\u306e\u3067\u3001\u300e\u307f\u3061\u3073\u304d\u300f\u3092\u6355\u6349\u3067\u304d\u308b\u3088\u3046\u306b\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\u306e\u4e00\u90e8\u3092\u4fee\u6b63\u3057\u3066\u307f\u308b\uff0e<\/p>\r\n<br>\r\n<pre><code class=\"language-c++\">\r\n\r\n\/* include the GNSS library *\/\r\n#include <GNSS.h>\r\n\r\n#define STRING_BUFFER_SIZE  128       \/**< %Buffer size *\/\r\n\r\n#define RESTART_CYCLE       (60 * 5)  \/**< positioning test term *\/\r\n\r\nstatic SpGnss Gnss;                   \/**< SpGnss object *\/\r\n\r\n\/**\r\n * @enum ParamSat\r\n * @brief Satellite system\r\n *\/\r\nenum ParamSat {\r\n  eSatGps,            \/**< GPS                     World wide coverage  *\/\r\n  eSatGlonass,        \/**< GLONASS                 World wide coverage  *\/\r\n  eSatGpsSbas,        \/**< GPS+SBAS                North America        *\/\r\n  eSatGpsGlonass,     \/**< GPS+Glonass             World wide coverage  *\/\r\n  eSatGpsQz1c,        \/**< GPS+QZSS_L1CA           East Asia &#038; Oceania  *\/\r\n  eSatGpsGlonassQz1c, \/**< GPS+Glonass+QZSS_L1CA   East Asia &#038; Oceania  *\/\r\n  eSatGpsQz1cQz1S,    \/**< GPS+QZSS_L1CA+QZSS_L1S  Japan                *\/\r\n};\r\n\r\n\/* Set this parameter depending on your current region. *\/\r\n\/\/static enum ParamSat satType =  eSatGps;\r\nstatic enum ParamSat satType =  eSatGpsQz1cQz1S;  <=== \u307f\u3061\u3073\u304d\u3082\u5bfe\u8c61\u306b\u3059\u308b\r\n\r\n\u3000...\r\n\r\n<\/code><\/pre>\r\n<pre><code class=\"language-textile\">\r\nnumSatellites: 9\r\n[ 0] Type:GPS, Id:10, Elv:43, Azm:227, CN0:42.419998\r\n[ 1] Type:GPS, Id:15, Elv: 0, Azm:  0, CN0:32.399998\r\n[ 2] Type:GPS, Id:20, Elv: 0, Azm:  0, CN0:30.799999\r\n[ 3] Type:GPS, Id:25, Elv:82, Azm:139, CN0:36.259998\r\n[ 4] Type:GPS, Id:29, Elv: 0, Azm:  0, CN0:33.329998\r\n[ 5] Type:Q1S, Id:183, Elv:53, Azm:204, CN0:18.240000\r\n[ 6] Type:QCA, Id:193, Elv:53, Azm:204, CN0:34.059998\r\n[ 7] Type:QCA, Id:195, Elv:21, Azm:167, CN0:36.200001\r\n[ 8] Type:QCA, Id:199, Elv: 0, Azm:  0, CN0:29.769999\r\n2019\/03\/15 01:34:00.000561, numSat: 9, No-Fix, No Position\r\n2019\/03\/15 01:34:01.000538, numSat: 9, No-Fix, No Position\r\n2019\/03\/15 01:34:01.837953, numSat: 9, Fix, Lat=35.xx3343, Lon=139.xx6819\r\n2019\/03\/15 01:34:02.000572, numSat: 9, Fix, Lat=35.xx3343, Lon=139.xx6819\r\n2019\/03\/15 01:34:03.000588, numSat: 9, Fix, Lat=35.xx3146, Lon=139.xx6951\r\n2019\/03\/15 01:34:04.000567, numSat: 9, Fix, Lat=35.xx3116, Lon=139.xx6987\r\n2019\/03\/15 01:34:05.000575, numSat: 9, Fix, Lat=35.xx3098, Lon=139.xx6981\r\n2019\/03\/15 01:34:06.000584, numSat: 9, Fix, Lat=35.xx3088, Lon=139.xx6971\r\n2019\/03\/15 01:34:07.000563, numSat: 8, Fix, Lat=35.xx3084, Lon=139.xx6964\r\n2019\/03\/15 01:34:08.000572, numSat: 8, Fix, Lat=35.xx3080, Lon=139.xx6954\r\n2019\/03\/15 01:34:09.000580, numSat: 8, Fix, Lat=35.xx3076, Lon=139.xx6948\r\n2019\/03\/15 01:34:10.000589, numSat: 9, Fix, Lat=35.xx3065, Lon=139.xx6955\r\n2019\/03\/15 01:34:11.000567, numSat: 9, Fix, Lat=35.xx3069, Lon=139.xx6949\r\n2019\/03\/15 01:34:12.000576, numSat: 9, Fix, Lat=35.xx3061, Lon=139.xx6954\r\n2019\/03\/15 01:34:13.000643, numSat: 9, Fix, Lat=35.xx3063, Lon=139.xx6949\r\n2019\/03\/15 01:34:14.000564, numSat: 9, Fix, Lat=35.xx3071, Lon=139.xx6941\r\n2019\/03\/15 01:34:15.000572, numSat: 9, Fix, Lat=35.xx3070, Lon=139.xx6937\r\n2019\/03\/15 01:34:16.000581, numSat: 9, Fix, Lat=35.xx3065, Lon=139.xx6932\r\n2019\/03\/15 01:34:17.000559, numSat: 9, Fix, Lat=35.xx3065, Lon=139.xx6930\r\n2019\/03\/15 01:34:18.000600, numSat: 9, Fix, Lat=35.xx3074, Lon=139.xx6923\r\n2019\/03\/15 01:34:19.000578, numSat: 9, Fix, Lat=35.xx3079, Lon=139.xx6918\r\n2019\/03\/15 01:34:20.000587, numSat:10, Fix, Lat=35.xx3083, Lon=139.xx6913\r\n2019\/03\/15 01:34:21.000564, numSat:10, Fix, Lat=35.xx3079, Lon=139.xx6910\r\n2019\/03\/15 01:34:22.000575, numSat:10, Fix, Lat=35.xx3070, Lon=139.xx6916\r\n \r\n<\/code><\/pre>\r\n<p>\u307f\u3061\u3073\u304d\uff11\u53f7\u6a5f(ID=183:L1S\u3001ID=193:L1C\/A)\u3001\u307f\u3061\u3073\u304d\uff14\u53f7\u6a5f(ID=195:L1C\/A)\u3001\u307f\u3061\u3073\u304d\uff13\u53f7\u6a5f(ID=199:L6)\u306e\u60c5\u5831\u304c\u53d6\u5f97\u3067\u304d\u3066\u3044\u308b\u3053\u3068\u304c\u78ba\u8a8d\u3067\u304d\u308b\uff0e<\/p>\r\n<br>\r\n<p>\u885b\u661f\u306eID\u756a\u53f7\u306b\u95a2\u3059\u308b\u60c5\u5831\u306f\u3001\u5185\u95a3\u5e9c\u306e\u300e\u307f\u3061\u3073\u304d\u300f\u60c5\u5831\u30b5\u30a4\u30c8\u3001\u201d<a href=\"http:\/\/qzss.go.jp\/technical\/satellites\/index.html\" rel=\"noopener noreferrer\" target=\"_blank\">\u5404\u56fd\u306e\u6e2c\u4f4d\u885b\u661f<\/a>\u201d \u306b\u8a73\u7d30\u306a\u60c5\u5831\u304c\u8f09\u3063\u3066\u3044\u308b\uff0e<\/p>\r\n<br>\r\n<div style=\"width: 100%; margin: 0 auto; text-align: center;\">\r\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/QZSSView.png\" alt=\"GNSS View\" width=\"640\" height=\"576\" class=\"size-full wp-image-7579\" srcset=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/QZSSView.png 640w, https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/03\/QZSSView-320x288.png 320w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/>\r\n<br>\r\n<span>\u307b\u307c\u540c\u6642\u523b\u306eGNSS\u885b\u661f\uff08GPS+\u307f\u3061\u3073\u304d\uff09\u306e\u914d\u7f6e\u60c5\u5831<\/span><br>\r\n<span>[ <a href=\"http:\/\/app.qzss.go.jp\/GNSSView\/gnssview.html\" rel=\"noopener noreferrer\" target=\"_blank\">http:\/\/app.qzss.go.jp\/GNSSView\/gnssview.html<\/a> ]<span><br>\r\n<\/div>\r\n<br>\r\n<p>\u56e0\u307f\u306b\u3001\u5916\u90e8\u30a2\u30af\u30c6\u30a3\u30d6\u30a2\u30f3\u30c6\u30ca\uff08\u5b89\u7269\uff09\u3092\u3064\u306a\u3044\u3067\u898b\u305f\u5834\u5408\u306eGNSS\u885b\u661f\u306e\u6355\u6349\u7d50\u679c\u306f\u4e0b\u8a18\u306e\u3088\u3046\u306a\u7d50\u679c\u3060\u3063\u305f\uff0e\u5916\u90e8\u30a2\u30af\u30c6\u30a3\u30d6\u30a2\u30f3\u30c6\u30ca\u3092\u3064\u306a\u3050\u3053\u3068\u306b\u3088\u308b\u6355\u6349\u885b\u661f\u6570\u306e\u5897\u52a0\u3068\u53d7\u4fe1\u4fe1\u53f7(CN0:Carrier-to-Noise Density)\u306e\u5411\u4e0a\u304c\u671f\u5f85\u3067\u304d\u308b\uff0e<\/p>\r\n<br>\r\n<div style=\"width: 100%; margin: 0 auto; text-align: center;\">\r\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/02\/PK52162.jpg\" alt=\"Ext. GPS Antenna Connection\" width=\"640\" height=\"427\" class=\"size-full wp-image-7590\" srcset=\"https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/02\/PK52162.jpg 640w, https:\/\/y2tech.net\/blog\/wp-content\/uploads\/2019\/02\/PK52162-320x214.jpg 320w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/>\r\n<br>\r\n<span>\u540c\u8ef8\u30b1\u30fc\u30d6\u30eb\u3092\u30e9\u30f3\u30c9\u30d1\u30bf\u30fc\u30f3\u3068\u30c1\u30c3\u30d7\u30a2\u30f3\u30c6\u30ca\u306e\u91d1\u5c5e\u5916\u76ae\u90e8\u5206\u306b\u76f4\u534a\u7530\u4ed8\u3051\u3057\u305f<\/span>\r\n<br>\r\n<\/div>\r\n<br>\r\n<pre class=\"line-numbers\"><code class=\"language-textile\">numSatellites:16\r\n[ 0] Type:GPS, Id:10, Elv:39, Azm:222, CN0:43.090000\r\n[ 1] Type:GPS, Id:12, Elv:46, Azm: 46, CN0:17.090000\r\n[ 2] Type:GPS, Id:14, Elv:39, Azm: 59, CN0:20.189999\r\n[ 3] Type:GPS, Id:15, Elv: 2, Azm:132, CN0:0.000000\r\n[ 4] Type:GPS, Id:20, Elv:21, Azm:197, CN0:35.380001\r\n[ 5] Type:GPS, Id:22, Elv: 0, Azm: 70, CN0:0.000000\r\n[ 6] Type:GPS, Id:24, Elv:20, Azm: 73, CN0:24.519999\r\n[ 7] Type:GPS, Id:25, Elv:83, Azm: 99, CN0:36.090000\r\n[ 8] Type:GPS, Id:29, Elv:20, Azm:141, CN0:37.270000\r\n[ 9] Type:GPS, Id:31, Elv:24, Azm: 21, CN0:25.879999\r\n[10] Type:GPS, Id:32, Elv:57, Azm: 62, CN0:16.920000\r\n[11] Type:Q1S, Id:183, Elv:51, Azm:204, CN0:39.129997\r\n[12] Type:QCA, Id:193, Elv:51, Azm:204, CN0:39.239998\r\n[13] Type:QCA, Id:194, Elv:85, Azm: 45, CN0:27.699999\r\n[14] Type:QCA, Id:195, Elv:22, Azm:167, CN0:31.939999\r\n[15] Type:QCA, Id:199, Elv:46, Azm:201, CN0:35.279999\r\n2019\/03\/16 01:39:00.000635, numSat:16, Fix, Lat=35.yy3123, Lon=139.xx6830\r\n2019\/03\/16 01:39:01.000656, numSat:16, Fix, Lat=35.yy3122, Lon=139.xx6829\r\n2019\/03\/16 01:39:02.000639, numSat:16, Fix, Lat=35.yy3124, Lon=139.xx6826\r\n2019\/03\/16 01:39:03.000636, numSat:16, Fix, Lat=35.yy3126, Lon=139.xx6825\r\n2019\/03\/16 01:39:04.000628, numSat:16, Fix, Lat=35.yy3127, Lon=139.xx6825\r\n2019\/03\/16 01:39:05.000634, numSat:16, Fix, Lat=35.yy3127, Lon=139.xx6825\r\n2019\/03\/16 01:39:06.000654, numSat:16, Fix, Lat=35.yy3126, Lon=139.xx6826\r\n2019\/03\/16 01:39:07.000645, numSat:16, Fix, Lat=35.yy3127, Lon=139.xx6826\r\n2019\/03\/16 01:39:08.000636, numSat:16, Fix, Lat=35.yy3127, Lon=139.xx6826\r\n  ...\r\n<\/code><\/pre>\r\n<br>\r\n<br>\r\n<h4>\u30b5\u30f3\u30d7\u30eb\u30b9\u30b1\u30c3\u30c1 \"gnss_tracker\" \u306e\u51fa\u529b\u30b5\u30f3\u30d7\u30eb\u3068\u30b3\u30fc\u30c9\uff08\u4e00\u90e8\u629c\u7c8b\uff09 <\/h4>\r\n<br>\r\n<p>\u3082\u3046\u4e00\u3064\u306e\u30b5\u30f3\u30d7\u30eb\u30b9\u30b1\u30c3\u30c1\"gnss_tracker\" \u306f\u3001GNSS\u306e\u53d7\u4fe1\u30c7\u30fc\u30bf\u3092NMEA\u5f62\u5f0f\u3067\u51fa\u529b\u3059\u308b\u30b5\u30f3\u30d7\u30eb\u3060\uff0e\u30b3\u30fc\u30c9\u306f1000\u884c\u4ee5\u4e0a\u3068\u9577\u3044\u306e\u3067\u30e1\u30a4\u30f3\u90e8\u5206\u3060\u3051\u629c\u7c8b\u3057\u3066\u3044\u308b\uff0e<\/p>\r\n<br>\r\n<pre class=\"line-numbers\"><code class=\"language-textile\">$GPGGA,005445.00,,,,,0,00,,,,,,,*48\r\n$GPGGA,005446.00,,,,,0,00,,,,,,,*4B\r\n$GPGGA,005447.00,,,,,0,00,,,,,,,*4A\r\n$GPGGA,005448.00,,,,,0,00,,,,,,,*45\r\n$GPGGA,005449.00,,,,,0,00,,,,,,,*44\r\n$GPGGA,005449.78,35xx.9811,N,139xx.4145,E,1,05,4.7,31.7,M,,M,,*41\r\n$GPGGA,005450.00,35xx.9811,N,139xx.4145,E,1,05,4.7,31.7,M,,M,,*46\r\n$GPGGA,005451.00,35xx.9913,N,139xx.4005,E,1,04,4.8,28.1,M,,M,,*41\r\n$GPGGA,005452.00,35xx.9840,N,139xx.4099,E,1,04,4.8,30.1,M,,M,,*49\r\n$GPGGA,005453.00,35xx.9782,N,139xx.4150,E,1,04,4.8,32.9,M,,M,,*47\r\n$GPGGA,005454.00,35xx.9797,N,139xx.4135,E,1,04,4.8,32.5,M,,M,,*4B\r\n$GPGGA,005455.00,35xx.9808,N,139xx.4117,E,1,04,4.8,31.8,M,,M,,*4D\r\n$GPGGA,005456.00,35xx.9866,N,139xx.4052,E,1,05,4.7,42.6,M,,M,,*42\r\n$GPGGA,005457.00,35xx.9923,N,139xx.3976,E,1,05,4.7,59.3,M,,M,,*44\r\n$GPGGA,005458.00,35xx.0005,N,139xx.3860,E,1,05,4.7,70.7,M,,M,,*41\r\n$GPGGA,005459.00,35xx.0037,N,139xx.3792,E,1,05,4.7,77.9,M,,M,,*4A\r\n$GPGGA,005500.00,35xx.9993,N,139xx.3847,E,1,05,4.7,67.9,M,,M,,*48\r\n\r\n ...\r\n \r\n$GPGGA,005645.00,35xx.9784,N,139xx.4051,E,1,08,2.4,34.8,M,,M,,*45\r\n$GPGGA,005646.00,35xx.9786,N,139xx.4053,E,1,08,2.4,33.0,M,,M,,*49\r\n$GPGGA,005647.00,35xx.9792,N,139xx.4055,E,1,08,2.4,33.7,M,,M,,*4C\r\n$GPGGA,005648.00,35xx.9801,N,139xx.4058,E,1,08,2.4,32.6,M,,M,,*4B\r\n$GPGGA,005649.00,35xx.9804,N,139xx.4061,E,1,08,2.4,29.7,M,,M,,*4E\r\n$GPGGA,005650.00,35xx.9808,N,139xx.4056,E,1,08,2.4,28.1,M,,M,,*49\r\n$GPGGA,005651.00,35xx.9814,N,139xx.4049,E,1,08,2.4,26.8,M,,M,,*4C\r\n ...\r\n<\/code><\/pre>\r\n<br>\r\n<p>\u56e0\u307f\u306b\u3001\u5de6\u304b\u3089NMEA\u30bb\u30f3\u30c6\u30f3\u30b9\uff08GPGGA)\u3001\u6642\u523b\u3001\u7def\u5ea6\u3001\u7d4c\u5ea6\u3001\u6e2c\u4f4d\u30e2\u30fc\u30c9\u3001\u8a08\u7b97\u306b\u4f7f\u7528\u3057\u305f\u885b\u661f\u6570\u3001\u6c34\u5e73\u7cbe\u5ea6\u60c5\u5831(HDOP)\u3001\u6a19\u9ad8\uff08\u6d77\u629c\u9ad8\u5ea6\uff09(m)\u3001\u30c1\u30a7\u30c3\u30af\u30b5\u30e0\u306a\u3069\u306e\u60c5\u5831\u304c\u4e26\u3093\u3067\u3044\u308b\uff0e<\/p>\r\n<br>\r\n<pre class=\"line-numbers\"><code class=\"language-c++\">\/**\r\n * @brief Activate GNSS device and setup positioning\r\n *\/\r\nvoid setup()\r\n{\r\n  \/* put your setup code here, to run once: *\/\r\n\r\n  int error_flag = 0;\r\n  char KeyRead[2] = {0, 0};\r\n\r\n  \/* Initialize the serial first for debug messages. *\/\r\n  \/* Set serial baudeate. *\/\r\n  Serial.begin(SERIAL_BAUDRATE);\r\n  APP_PRINT(\"Please specify the operation mode.\\n\");\r\n  APP_PRINT(\"  0:Run positioning. Output NMEA text.\\n\");\r\n  APP_PRINT(\"\\n\");\r\n\r\n  \/* Wait mode select. *\/\r\n  sleep(3);\r\n\r\n  \/* Turn on all LED:Setup start. *\/\r\n  ledOn(PIN_LED0);\r\n  ledOn(PIN_LED1);\r\n  ledOn(PIN_LED2);\r\n  ledOn(PIN_LED3);\r\n\r\n  \/* Read key input. *\/\r\n  KeyRead[0] = Serial.read();\r\n\r\n  \/* Convet to mode value. *\/\r\n  Mode = strtoul(KeyRead, NULL, 10);\r\n\r\n  APP_PRINT(\"set mode : \");\r\n  APP_PRINT(Mode);\r\n  APP_PRINT(\"\\n\");\r\n  switch (Mode) {\r\n#if 0 \/\/ TBD:Not implemented\r\n    case eModeShell:\r\n      \/* nop *\/\r\n      break;\r\n#endif\r\n\r\n    case eModeNormal:\r\n    default:\r\n      error_flag = SetupPositioning();\r\n      break;\r\n  }\r\n\r\n  SetActiveSec = INITIAL_ACTIVE_TIME;\r\n\r\n  \/* Turn off all LED:Setup done. *\/\r\n  ledOff(PIN_LED0);\r\n  ledOff(PIN_LED1);\r\n  ledOff(PIN_LED2);\r\n  ledOff(PIN_LED3);\r\n\r\n  \/* Set error LED. *\/\r\n  if (error_flag == 1)\r\n  {\r\n    Led_isError(true);\r\n  }\r\n}\r\n\r\n\/**\r\n * @brief GNSS tracker loop\r\n * \r\n * @details Positioning is performed for the first 300 seconds after setup.\r\n *          After that, in each loop processing, it sleeps for SleepSec \r\n *          seconds and performs positioning ActiveSec seconds. \r\n *          The gnss_tracker use SatelliteSystem sattelites for positioning.\\n\\n\r\n *  \r\n *          Positioning result is notificated in every IntervalSec second.\r\n *          The result formatted to NMEA will be saved on SD card if the \r\n *          parameter NmeaOutFile is TRUE, or\/and output to UART if the \r\n *          parameter NmeaOutUart is TRUE. NMEA is buffered for each \r\n *          notification. Write at once when ActiveSec completes. If SleepSec \r\n *          is set to 0, positioning is performed continuously.\r\n *\/\r\nvoid loop() {\r\n  static int State = eStateActive;\r\n  static int TimeOut = IDLE_ACTIVE_TIME;\r\n  static bool PosFixflag = false;\r\n  static int skipUnstableCount = 10;\r\n  static char *pNmeaBuff     = NULL;\r\n  static char *pBinaryBuffer = NULL;\r\n\r\n  \/* Check state. *\/\r\n  if (State == eStateSleep)\r\n  {\r\n    \/* Sleep. *\/\r\n    TimeOut--;\r\n\r\n    sleep(1);\r\n\r\n    APP_PRINT(\">\");\r\n\r\n    \/* Counter Check. *\/\r\n    if (TimeOut <= 0)\r\n    {\r\n      APP_PRINT(\"\\n\");\r\n\r\n      \/* Set active timeout. *\/\r\n      TimeOut = IDLE_ACTIVE_TIME;\r\n      SetActiveSec = Parameter.ActiveSec;\r\n\r\n      \/* Set new mode. *\/\r\n      State = eStateActive;\r\n\r\n      \/* Reset unstable counter *\/\r\n      skipUnstableCount = 10;\r\n\r\n      \/* Go to Active mode. *\/\r\n      SleepOut();\r\n    }\r\n    else if ((TimeOut % 60) == 0)\r\n    {\r\n      APP_PRINT(\"\\n\");\r\n    }\r\n  }\r\n  else\r\n  {\r\n    \/* Active. *\/\r\n    unsigned long BuffSize;\r\n    unsigned long WriteSize;\r\n    bool LedSet;\r\n\r\n    TimeOut -= Parameter.IntervalSec;\r\n\r\n    SpNavData NavData;\r\n    String NmeaString = \"\";\r\n\r\n    \/* Blink LED. *\/\r\n    Led_isActive();\r\n\r\n    int WriteRequest = false;\r\n\r\n    \/* Check update. *\/\r\n    if (Gnss.waitUpdate(Parameter.IntervalSec * 1000))\r\n    {\r\n      \/* Get NavData. *\/\r\n      Gnss.getNavData(&#038;NavData);\r\n\r\n      LedSet = ((NavData.posDataExist) &#038;&#038; (NavData.posFixMode != 0));\r\n      if(PosFixflag != LedSet)\r\n      {\r\n        Led_isPosfix(LedSet);\r\n        PosFixflag = LedSet;\r\n\r\n        if(LedSet == true)\r\n        {\r\n          TimeOut = SetActiveSec;\r\n          WriteRequest = true;\r\n        }\r\n      }\r\n\r\n      \/* Get Nmea Data. *\/\r\n      NmeaString = getNmeaGga(&#038;NavData);\r\n      if (strlen(NmeaString.c_str()) == 0)\r\n      {\r\n        \/* Error case. *\/\r\n        APP_PRINT_E(\"getNmea error\");\r\n        Led_isError(true);\r\n      }\r\n      else\r\n      {\r\n        \/* Output Nmea Data. *\/\r\n        if (Parameter.NmeaOutUart == true)\r\n        {\r\n          \/* To Uart. *\/\r\n          APP_PRINT(NmeaString.c_str());\r\n        }\r\n\r\n        if (Parameter.NmeaOutFile == true)\r\n        {\r\n          \/* To SDCard. *\/\r\n          BuffSize = NMEA_BUFFER_SIZE * (IDLE_ACTIVE_TIME \/ Parameter.IntervalSec);\r\n\r\n          if (pNmeaBuff == NULL)\r\n          {\r\n            \/* Alloc buffer. *\/\r\n            pNmeaBuff = (char*)malloc(BuffSize);\r\n            if (pNmeaBuff != NULL)\r\n            {\r\n              \/* Clear Buffer *\/\r\n              pNmeaBuff[0] = 0x00;\r\n            }\r\n          }\r\n\r\n          if (pNmeaBuff != NULL)\r\n          {\r\n            \/* Store Nmea Data to buffer. *\/\r\n            strncat(pNmeaBuff, NmeaString.c_str(), BuffSize);\r\n          }\r\n        }\r\n\r\n        \/* Output Binary Data. *\/\r\n        if (Parameter.BinaryOut == true)\r\n        {\r\n          BuffSize = Gnss.getPositionDataSize();\r\n          if (pBinaryBuffer == NULL)\r\n          {\r\n            \/* Alloc buffer. *\/\r\n            pBinaryBuffer = (char*)malloc(Gnss.getPositionDataSize());\r\n            if (pBinaryBuffer != NULL)\r\n            {\r\n              \/* Clear Buffer. *\/\r\n              pBinaryBuffer[0] = 0x00;\r\n            }\r\n          }\r\n          if (pBinaryBuffer != NULL)\r\n          {\r\n\r\n            if (Gnss.getPositionData(pBinaryBuffer) == BuffSize)\r\n            {\r\n              \/* Write Binary Data. *\/\r\n              GnssPositionData *pAdr = (GnssPositionData*)pBinaryBuffer;\r\n              Led_isSdAccess(true);\r\n              WriteSize  = WriteBinary((char*)&#038;pAdr->MagicNumber, FilenameBin, sizeof(pAdr->MagicNumber), (FILE_WRITE | O_APPEND));\r\n              WriteSize += WriteBinary((char*)&pAdr->Data,        FilenameBin, sizeof(pAdr->Data),        (FILE_WRITE | O_APPEND));\r\n              WriteSize += WriteBinary((char*)&pAdr->CRC,         FilenameBin, sizeof(pAdr->CRC),         (FILE_WRITE | O_APPEND));\r\n              Led_isSdAccess(false);\r\n\r\n              \/* Check result. *\/\r\n              if (WriteSize != BuffSize)\r\n              {\r\n                Led_isError(true);\r\n              }\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n\r\n    \/* Counter Check. *\/\r\n    if (TimeOut <= 0)\r\n    {\r\n      if (Parameter.SleepSec > 0)\r\n      {\r\n        \/* Set new mode. *\/\r\n        State = eStateSleep;\r\n\r\n        \/* Go to Sleep mode. *\/\r\n        SleepIn();\r\n\r\n        \/* Set sleep timeout. *\/\r\n        TimeOut = Parameter.SleepSec;\r\n      }\r\n      else\r\n      {\r\n        \/* Set sleep timeout. *\/\r\n        TimeOut = Parameter.SleepSec;\r\n      }\r\n\r\n      WriteRequest = true;\r\n    }\r\n\r\n    \/* Check NMEA buffer. *\/\r\n    if(strlen(pNmeaBuff) > (BuffSize - NMEA_BUFFER_SIZE))\r\n    {\r\n      \/* There is no capacity for writing in the next NMEA. *\/\r\n    }\r\n\r\n    \/* Write NMEA data. *\/\r\n    if(WriteRequest == true)\r\n    {\r\n      if (pNmeaBuff != NULL)\r\n      {\r\n        \/* Write Nmea Data. *\/\r\n        Led_isSdAccess(true);\r\n        WriteSize = WriteChar(pNmeaBuff, FilenameTxt, (FILE_WRITE | O_APPEND));\r\n        Led_isSdAccess(false);\r\n\r\n        \/* Check result. *\/\r\n        if (WriteSize != strlen(pNmeaBuff))\r\n        {\r\n          Led_isError(true);\r\n        }\r\n\r\n        \/* Clear Buffer *\/\r\n        pNmeaBuff[0] = 0x00;\r\n      }\r\n    }\r\n  }\r\n}\r\n<\/code><\/pre>","protected":false},"excerpt":{"rendered":"\u5148\u65e5\u5165\u624b\u3057\u305fSpresense\u306e\u76ee\u7389\u6a5f\u80fd\u306e\u4e00\u3064\u3067\u3042\u308bGNSS\u306e\u53d7\u4fe1\u6a5f\u80fd\u304c\u3069\u3093\u306a\u7269\u304b\u78ba\u8a8d\u3059\u308b\u305f\u3081\u3001\u304a\u624b\u8efd\u306aArduiono\u958b\u767a\u74b0\u5883\u3092\u4f7f\u3063\u3066\u3069\u306e\u7a0b\u5ea6GNSS\u885b\u661f\u3092\u6349\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u306e\u304b\u78ba\u8a8d\u3057\u3066\u307f\u305f\uff0e\u4eca\u56de\u306f\u5916\u4ed8\u3051\u306e\u53d7\u4fe1\u30a2\u30f3\u30c6\u30ca\u306f\u7528\u3044\u305a\u306b\u3001Spresense\u306e\u30e1\u30a4\u30f3\u30dc\u30fc\u30c9\u5074\u306e\u30c1\u30c3\u30d7\u30a2\u30f3\u30c6\u30ca\u306b\u3088\u308b\u53d7\u4fe1\u30c6\u30b9\u30c8\u3060\uff0e","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[299,6],"tags":[849,848,847,549],"class_list":["post-7497","post","type-post","status-publish","format-standard","hentry","category-gps","category-gudget","tag-arduino","tag-gnss","tag-spresence","tag-549"],"_links":{"self":[{"href":"https:\/\/y2tech.net\/blog\/wp-json\/wp\/v2\/posts\/7497","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/y2tech.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/y2tech.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/y2tech.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/y2tech.net\/blog\/wp-json\/wp\/v2\/comments?post=7497"}],"version-history":[{"count":2,"href":"https:\/\/y2tech.net\/blog\/wp-json\/wp\/v2\/posts\/7497\/revisions"}],"predecessor-version":[{"id":7661,"href":"https:\/\/y2tech.net\/blog\/wp-json\/wp\/v2\/posts\/7497\/revisions\/7661"}],"wp:attachment":[{"href":"https:\/\/y2tech.net\/blog\/wp-json\/wp\/v2\/media?parent=7497"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/y2tech.net\/blog\/wp-json\/wp\/v2\/categories?post=7497"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/y2tech.net\/blog\/wp-json\/wp\/v2\/tags?post=7497"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}