GNSS Module
GNSS Module 是一款全球定位无线通信模块,搭载 NEO-M9N-00B GPS 模块。它集成了 BMI270、BMM150 以及气压传感器。
支持以下产品:
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 应用示例:
class GNSSModule
Constructors
方法
- 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.5gyro_odr – 范围为 25 Hz … 6.4 kHz。可选项:-
25:25 -50:50 -100:100 -200:200 -400:400 -800:800 -1600:1600 -3200:3200
UIFLOW2:

- GNSSModule.set_accel_range(accel_scale)
设置加速度计量程范围。
- 参数:
accel_scale – 量程范围为 ±2g、±4g、±8g 和 ±16g。选项:-
2:2 -4:4 -8:8 -16:16
UIFLOW2:

- GNSSModule.set_gyro_range(gyro_scale)
设置陀螺仪量程范围。
- 参数:
gyro_scale – 选项:-
125:125 -250:250 -500:500 -1000:1000 -2000:2000
UIFLOW2:

- 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:

- GNSSModule.set_gyro_offsets(x, y, z)
设置手动陀螺仪校准的偏移量值。
- 参数:
x – 陀螺仪校准的 X 轴偏移量值。
y – 陀螺仪校准的 Y 轴偏移值。
z – 陀螺仪校准 Z 轴的偏移值。
UIFLOW2:

- GNSSModule.get_gyroscope()
获取陀螺仪的 x、y 和 z 值元组,以及陀螺仪矢量,单位为 rad/sec。
- Return (tuple):
陀螺仪元组(float, float, float)
UIFLOW2:

- GNSSModule.get_accelerometer()
以重力单位(9.81 m/s^2)获取加速度计的 x、y 和 z 值元组以及加速度向量。
- Return (tuple):
加速度计元组(float, float, float)
UIFLOW2:

- GNSSModule.get_magnetometer()
获取磁力计的 x、y 和 z 值元组,以及以 uT 为单位的磁力计矢量。
- Return (tuple):
magnetometer 元组(float、float、float)
UIFLOW2:

- GNSSModule.get_compass()
获取罗盘航向角的值,范围为 0º ~ 360º。
- Return (float):
范围为 0 至 360 度。
UIFLOW2:

- GNSSModule.get_attitude()
以度为单位获取偏航角、俯仰角和横滚角姿态角。
- Return (tuple):
偏航角、俯仰角和横滚角的元组(float, float, float)
UIFLOW2:

- GNSSModule.get_temperature()
从 BMP280 传感器获取以摄氏度为单位的温度值。
- Return (float):
范围为 -40 ~ +85 °C。
UIFLOW2:

- GNSSModule.get_pressure()
从 BMP280 传感器获取以帕斯卡为单位的压力值。
- Return (float):
范围为 300 ~ 1100 hPa。
UIFLOW2:

- GNSSModule.get_time_zone()
获取时区函数。
- Return (int):
timezone 值
UIFLOW2:

- GNSSModule.get_satellite_num()
获取卫星数量。
- Return (str):
卫星数量值。
UIFLOW2:

- GNSSModule.get_altitude()
获取海拔高度。
- Return (str):
高度单位为米。
UIFLOW2:

- GNSSModule.get_time()
获取时间。
- Return (str):
时间(hh:mm:ss)
UIFLOW2:

- GNSSModule.get_date()
获取日期。
- Return (str):
date(日/月/年)
UIFLOW2:

- GNSSModule.get_latitude()
获取纬度。
- Return (str):
纬度,使用度分格式(ddmm.mmmmmN/S)。
UIFLOW2:

- GNSSModule.get_longitude()
获取经度。
- Return (str):
经度,使用度分格式(ddmm.mmmmmE/W)。
UIFLOW2:

- GNSSModule.get_latitude_decimal()
获取十进制纬度。
- Return (float):
纬度十进制(dd.dddd)。
UIFLOW2:

- GNSSModule.get_longitude_decimal()
获取经度(十进制度)。
- Return (float):
经度十进制(dd.dddd)。
UIFLOW2:

- GNSSModule.get_speed(type)
获取速度。
- Return (str):
速度。
- 参数:
type (int) – 速度类型,0 为 km/h,1 为 knot/h。选项:-
km/h:0 -knot/h:1
UIFLOW2:

- GNSSModule.get_course()
获取课程。
- Return (str):
课程单位为 °。
UIFLOW2:

- GNSSModule.is_locate_valid()
获取定位状态。
- Return (bool):
定位状态,true 表示已定位,false 表示未定位。
UIFLOW2:




