Ameba Arduino: [RTL8195] [RTL8710] UART – 在Ameba上取得 GPS定位

材料准备

范例说明

市面上常看到的GPS模组大多都是UART介面,资料格式也大多遵循NMEA sentence。这边介绍使用Adafruit Ultimate GPS Breakout。它的资料格式是文字介面,所以可以直接接在USB to TTL Adapter上直接看GPS内容:
12
它的格式使用NMEA sentence, 详细内容可以参考 http://aprs.gids.nl/nmea/
但在室内不太容易收到GPS讯号,上一张图尚未收到讯号,称之为还没“fix”。带GPS模组到室外做测试,等到fix有讯号的内容长的像这样:
3这边我们目前关心的内容是$GPRMC (Global Positioning Recommended Minimum Coordinates):
$GPRMC,032122.000,A,2446.8181,N,12059.7251,E,0.39,78.89,270116,,,A*53
每个栏位都用逗号隔开

    • 第1栏是GMT(Greenwich Mean Time), 这边的例子是032122.000, 格式为HHmmss.SSS, 也就是03:21:22.000。时区与日光节约需要自行调整
    • 第2栏是status code
      • V: Void (Invalid)
      • A: Active, 这个状态下GPS可以fix
    • 3~6栏是地理位置定位(geolocation)

例子中,2446.8181,N 表示北半球纬度24度46.8181分,12059.7251,E 表示东半球经度120度59.7251分,
我们可以在google map的搜寻栏输入 +24 46.8181', +120 59.7251' 就可以检查位置是否正确
4

  • 第7栏是相对地面速度, 单位是节(knot), 每节等同于时速1.852公里, 例子中是0.39节
  • 第8栏是行进角度, 这是根据之前的轨迹算出来的
  • 第9栏是日期, 格式是ddMMyy, 例子中270116为27日, 1月, 2016年
  • 最后1栏为checksum, 例子中是*53

这些栏位可以交给Ameba处理, 我们先如图接线
5

RTL8710 接线图如下:
5

打开范例程式, “Files” -> “Examples” -> “AmebaSoftwareSerial” -> “Adafruit_GPS_parsing”, 编译并上传到Ameba, 完成之后按Reset按钮, 结果会输出到Serial Monitor上, 所以带着笔电到户外试试看:
6

下图是拿到fix之后:
7