Skip to product information
1 of 3

GNSS/GPS Sensor (ATGM336H-6N-74)

GNSS/GPS Sensor (ATGM336H-6N-74)

SKU:AX22-0058

Pinpoint location without the wait. This module runs on ZHONGKEWEI's AT6668 chip and locks onto Beidou-2, Beidou-3, GALILEO, GPS, QZSS, and GLONASS all at once, so it finds and holds a fix faster and more reliably than single-system GPS, even in cities, forests, and other tough spots. Expect roughly 2.5 m accuracy and 1–10 updates per second, backed by −162 dBm tracking sensitivity for reception in deep shadow, all from a footprint small enough to drop into any project.

With AX22, there's nothing to wire or solder. Snap it onto your Genesis board, prompt Axie in Genesis Studio, and start streaming location data in seconds or wire it into any Arduino, MicroPython, or MicroBlocks project.

An SMA connector on the edge takes an external antenna, which does most of the work. GPS signals are faint and line-of-sight, so walls and roofs block them, meaning indoors you'll get a slow, drifting fix or none at all.


Antenna is included!

Regular price $12.99
Regular price Sale price $12.99
Sale Sold out
View full details

Technical Details

- ZHONGKEWEI ATGM336H-6N-74 GNSS module
- Multi-constellation: GPS, BeiDou, GLONASS, Galileo, QZSS & SBAS
- Simultaneous all-constellation reception (AT6668 chip)
- ≤2.5 m positioning accuracy
- Up to 10 Hz update rate
- −162 dBm tracking sensitivity
- Standard NMEA 0183 output over UART
- PPS (pulse-per-second) timing output
- 22 mm × 22 mm square
- 4× ⌀2.7 mm Mounting Holes
- Arduino IDE Compatible
- MicroPython Compatible
- MicroBlocks Compatible

Material Datasheet →

Pinout

Technical Resources

GNSS/GPS Sensor (ATGM336H-6N-74) - (AX22-0058)
🖱️ Click & drag to rotate
#include <HardwareSerial.h>
#include <TinyGPSPlus.h>

HardwareSerial GPS(1);
TinyGPSPlus gps;

volatile bool ppsFired = false;

void IRAM_ATTR onPPS() {
  ppsFired = true;
}

void setup() {
  Serial.begin(115200);
  GPS.begin(9600, SERIAL_8N1, P1_IO1, P1_IO2);
  pinMode(P1_IO0, INPUT);
  attachInterrupt(digitalPinToInterrupt(P1_IO0), onPPS, RISING);
  Serial.println("GNSS receiver started — waiting for fix...");
}

void loop() {
  while (GPS.available()) {
    gps.encode(GPS.read());
  }

  if (ppsFired) {
    ppsFired = false;

    if (gps.location.isValid()) {
      Serial.print("PPS | Lat: ");
      Serial.print(gps.location.lat(), 6);
      Serial.print("  Lon: ");
      Serial.print(gps.location.lng(), 6);
      Serial.print("  Alt: ");
      Serial.print(gps.altitude.meters(), 1);
      Serial.print("m  Sats: ");
      Serial.print(gps.satellites.value());
      Serial.print("  UTC: ");
      if (gps.time.isValid()) {
        char t[9];
        snprintf(t, sizeof(t), "%02d:%02d:%02d",
                 gps.time.hour(), gps.time.minute(), gps.time.second());
        Serial.print(t);
      } else {
        Serial.print("--:--:--");
      }
      Serial.println();
    } else {
      Serial.print("PPS | No fix yet — satellites seen: ");
      Serial.println(gps.satellites.isValid() ? gps.satellites.value() : 0);
    }
  }
}