GNSS Module

GNSS Module 是一款全球定位无线通信模块,搭载 NEO-M9N-00B GPS 模块。它集成了 BMI270、BMM150 以及气压传感器。

支持以下产品:

GNSSModule

MicroPython 应用示例

  1# SPDX-FileCopyrightText: 2024 M5Stack Technology CO LTD
  2#
  3# SPDX-License-Identifier: MIT
  4
  5import os, sys, io
  6import M5
  7from M5 import *
  8from module import GNSSModule
  9
 10
 11title0 = None
 12label3 = None
 13label4 = None
 14label5 = None
 15label6 = None
 16label10 = None
 17label11 = None
 18label12 = None
 19label13 = None
 20label14 = None
 21label15 = None
 22label16 = None
 23label17 = None
 24label18 = None
 25label19 = None
 26label20 = None
 27label21 = None
 28label22 = None
 29label23 = None
 30line0 = None
 31gnss_0 = None
 32
 33
 34list2 = None
 35
 36
 37def setup():
 38    global \
 39        title0, \
 40        label3, \
 41        label4, \
 42        label5, \
 43        label6, \
 44        label10, \
 45        label11, \
 46        label12, \
 47        label13, \
 48        label14, \
 49        label15, \
 50        label16, \
 51        label17, \
 52        label18, \
 53        label19, \
 54        label20, \
 55        label21, \
 56        label22, \
 57        label23, \
 58        line0, \
 59        gnss_0, \
 60        list2
 61
 62    M5.begin()
 63    Widgets.fillScreen(0x222222)
 64    title0 = Widgets.Title(
 65        "            M135 GNSS Demo", 3, 0xFFFFFF, 0x0000FF, Widgets.FONTS.DejaVu18
 66    )
 67    label3 = Widgets.Label("angle:", 2, 23, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
 68    label4 = Widgets.Label(
 69        "attitude(yaw):", 1, 73, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18
 70    )
 71    label5 = Widgets.Label("temp:", 4, 128, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
 72    label6 = Widgets.Label("pressure:", 2, 180, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
 73    label10 = Widgets.Label("label10", 4, 46, 1.0, 0x3EF815, 0x222222, Widgets.FONTS.DejaVu18)
 74    label11 = Widgets.Label("label11", 5, 102, 1.0, 0xF60505, 0x222222, Widgets.FONTS.DejaVu18)
 75    label12 = Widgets.Label("label12", 5, 154, 1.0, 0x3EF815, 0x222222, Widgets.FONTS.DejaVu18)
 76    label13 = Widgets.Label("label13", 5, 208, 1.0, 0xF60505, 0x222222, Widgets.FONTS.DejaVu18)
 77    label14 = Widgets.Label("lat:", 158, 51, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
 78    label15 = Widgets.Label("long:", 157, 80, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
 79    label16 = Widgets.Label("sta:", 158, 24, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
 80    label17 = Widgets.Label("date:", 158, 108, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
 81    label18 = Widgets.Label("time:", 159, 168, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
 82    label19 = Widgets.Label("label19", 159, 138, 1.0, 0x15F0FF, 0x222222, Widgets.FONTS.DejaVu18)
 83    label20 = Widgets.Label("label20", 159, 197, 1.0, 0xEAFF00, 0x222222, Widgets.FONTS.DejaVu18)
 84    label21 = Widgets.Label("label21", 205, 25, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
 85    label22 = Widgets.Label("label22", 205, 52, 1.0, 0x15F0FF, 0x222222, Widgets.FONTS.DejaVu18)
 86    label23 = Widgets.Label("label23", 205, 81, 1.0, 0xEAFF00, 0x222222, Widgets.FONTS.DejaVu18)
 87    line0 = Widgets.Line(142, 27, 142, 232, 0xFFFFFF)
 88
 89    gnss_0 = GNSSModule(2, 13, 14, 0x69)
 90
 91
 92def loop():
 93    global \
 94        title0, \
 95        label3, \
 96        label4, \
 97        label5, \
 98        label6, \
 99        label10, \
100        label11, \
101        label12, \
102        label13, \
103        label14, \
104        label15, \
105        label16, \
106        label17, \
107        label18, \
108        label19, \
109        label20, \
110        label21, \
111        label22, \
112        label23, \
113        line0, \
114        gnss_0, \
115        list2
116    M5.update()
117    label10.setText(str(gnss_0.get_compass()))
118    label11.setText(str((gnss_0.get_attitude())[0]))
119    label12.setText(str(gnss_0.get_temperature()))
120    label13.setText(str(gnss_0.get_pressure()))
121    if gnss_0.is_locate_valid():
122        label21.setText(str("OK"))
123    else:
124        label21.setText(str("Failed"))
125    label22.setText(str(gnss_0.get_latitude()))
126    label23.setText(str(gnss_0.get_longitude()))
127    label19.setText(str(gnss_0.get_date()))
128    label20.setText(str(gnss_0.get_time()))
129
130
131if __name__ == "__main__":
132    try:
133        setup()
134        while True:
135            loop()
136    except (Exception, KeyboardInterrupt) as e:
137        try:
138            from utility import print_error_msg
139
140            print_error_msg(e)
141        except ImportError:
142            print("please update to latest firmware")

UiFlow2 应用示例:

example.png

gnss_core2_example.m5f2

class GNSSModule

Constructors

class GNSSModule(id, rx, tx, address)

初始化函数。

参数:
  • id (int) – UART 控制器 id,范围为 0 到 2。

  • rx (int) – UART rx 引脚。

  • tx (int) – UART tx 引脚。

  • address (int)

UIFLOW2:

init.png

方法

GNSSModule.set_accel_gyro_odr(accel_odr, gyro_odr)

设置加速度计和陀螺仪输出数据速率。

参数:
  • accel_odr – 范围为 0.78 Hz … 1.6 kHz。选项:- 25:25 - 50:50 - 100:100 - 200:200 - 400:400 - 800:800 - 1600:1600 - 0.78:0.78 - 1.5:1.5 - 3.1:3.1 - 6.25:6.25 - 12.5:12.5

  • gyro_odr – 范围为 25 Hz … 6.4 kHz。可选项:- 25:25 - 50:50 - 100:100 - 200:200 - 400:400 - 800:800 - 1600:1600 - 3200:3200

UIFLOW2:

set_accel_gyro_odr.png

GNSSModule.set_accel_range(accel_scale)

设置加速度计量程范围。

参数:

accel_scale – 量程范围为 ±2g、±4g、±8g 和 ±16g。选项:- 2:2 - 4:4 - 8:8 - 16:16

UIFLOW2:

set_accel_range.png

GNSSModule.set_gyro_range(gyro_scale)

设置陀螺仪量程范围。

参数:

gyro_scale – 选项:- 125:125 - 250:250 - 500:500 - 1000:1000 - 2000:2000

UIFLOW2:

set_gyro_range.png

GNSSModule.set_magnet_odr(magnet_odr)
参数:

magnet_odr – 选项:- 2:2 - 6:6 - 8:8 - 10:10 - 15:15 - 20:20 - 25:25 - 30:30

UIFLOW2:

set_magnet_odr.png

GNSSModule.set_gyro_offsets(x, y, z)

设置手动陀螺仪校准的偏移量值。

参数:
  • x – 陀螺仪校准的 X 轴偏移量值。

  • y – 陀螺仪校准的 Y 轴偏移值。

  • z – 陀螺仪校准 Z 轴的偏移值。

UIFLOW2:

set_gyro_offsets.png

GNSSModule.get_gyroscope()

获取陀螺仪的 x、y 和 z 值元组,以及陀螺仪矢量,单位为 rad/sec。

Return (tuple):

陀螺仪元组(float, float, float)

UIFLOW2:

get_gyroscope.png

GNSSModule.get_accelerometer()

以重力单位(9.81 m/s^2)获取加速度计的 x、y 和 z 值元组以及加速度向量。

Return (tuple):

加速度计元组(float, float, float)

UIFLOW2:

get_accelerometer.png

GNSSModule.get_magnetometer()

获取磁力计的 x、y 和 z 值元组,以及以 uT 为单位的磁力计矢量。

Return (tuple):

magnetometer 元组(float、float、float)

UIFLOW2:

get_magnetometer.png

GNSSModule.get_compass()

获取罗盘航向角的值,范围为 0º ~ 360º。

Return (float):

范围为 0 至 360 度。

UIFLOW2:

get_compass.png

GNSSModule.get_attitude()

以度为单位获取偏航角、俯仰角和横滚角姿态角。

Return (tuple):

偏航角、俯仰角和横滚角的元组(float, float, float)

UIFLOW2:

get_attitude.png

GNSSModule.get_temperature()

从 BMP280 传感器获取以摄氏度为单位的温度值。

Return (float):

范围为 -40 ~ +85 °C。

UIFLOW2:

get_temperature.png

GNSSModule.get_pressure()

从 BMP280 传感器获取以帕斯卡为单位的压力值。

Return (float):

范围为 300 ~ 1100 hPa。

UIFLOW2:

get_pressure.png

GNSSModule.set_time_zone(value)

设置时区函数。

参数:

value (int) – timezone 值

UIFLOW2:

set_time_zone.png

GNSSModule.get_time_zone()

获取时区函数。

Return (int):

timezone 值

UIFLOW2:

get_time_zone.png

GNSSModule.get_satellite_num()

获取卫星数量。

Return (str):

卫星数量值。

UIFLOW2:

get_satellite_num.png

GNSSModule.get_altitude()

获取海拔高度。

Return (str):

高度单位为米。

UIFLOW2:

get_altitude.png

GNSSModule.get_time()

获取时间。

Return (str):

时间(hh:mm:ss)

UIFLOW2:

get_time.png

GNSSModule.get_date()

获取日期。

Return (str):

date(日/月/年)

UIFLOW2:

get_date.png

GNSSModule.get_latitude()

获取纬度。

Return (str):

纬度,使用度分格式(ddmm.mmmmmN/S)。

UIFLOW2:

get_latitude.png

GNSSModule.get_longitude()

获取经度。

Return (str):

经度,使用度分格式(ddmm.mmmmmE/W)。

UIFLOW2:

get_longitude.png

GNSSModule.get_latitude_decimal()

获取十进制纬度。

Return (float):

纬度十进制(dd.dddd)。

UIFLOW2:

get_latitude_decimal.png

GNSSModule.get_longitude_decimal()

获取经度(十进制度)。

Return (float):

经度十进制(dd.dddd)。

UIFLOW2:

get_longitude_decimal.png

GNSSModule.get_speed(type)

获取速度。

Return (str):

速度。

参数:

type (int) – 速度类型,0 为 km/h,1 为 knot/h。选项:- km/h:0 - knot/h:1

UIFLOW2:

get_speed.png

GNSSModule.get_course()

获取课程。

Return (str):

课程单位为 °。

UIFLOW2:

get_course.png

GNSSModule.is_locate_valid()

获取定位状态。

Return (bool):

定位状态,true 表示已定位,false 表示未定位。

UIFLOW2:

is_locate_valid.png