Simulator

A GPS module simulator: a NEO-6M on an Arduino

Mokxi is a free online NEO-6M GPS module simulator that runs in your browser, with nothing to install and no account needed. A NEO-6M GPS module with its TX on pin 4 of an Arduino Uno, read with SoftwareSerial and the TinyGPS++ library. The serial monitor prints latitude, longitude, satellites, altitude and time once a second, and you choose where on Earth the module is.

  • 505parts on the bench
  • 45boards running now
  • 1.00xreal time, on every board
Arduino Uno: a NEO-6M printing its positionlive0.000 s 0.00x
Hold the button
Click the circuit to open it in the editor and watch the serial monitor. Change the module’s latitude and longitude to move it, or click the module to take its fix away.

What you can do here

In the circuit above, or in the editor it opens.

  • Read latitude and longitude with TinyGPS++, as on real hardware
  • Set the module anywhere on Earth by typing coordinates
  • Take the fix away and test what your sketch does without one
  • Read satellites, altitude and UTC time from the same sentences
  • Pull the TX wire and see the sketch’s wiring check answer
  • Test parsing code indoors, where a real module cannot see the sky

What the running circuit shows

A position, once a second.

A GPS module talks without being asked. Once a second it sends a burst of text sentences at 9600 baud, and all the sketch has to do is listen on one pin and hand the characters to TinyGPS++. The monitor prints “Lat: 38.889469 Lng: -77.035232 Sats: 8 Alt: 18.0 m UTC 12:00:00”. Those are the coordinates of the Washington Monument, which is where the module starts.

Type 48.85837 and 2.294481 into the module’s latitude and longitude and the line becomes “Lat: 48.858371 Lng: 2.294481”: the Eiffel Tower. Click the module to take its fix away and the sketch prints “No fix yet: waiting for satellites.”, which is what a real module does for the first minutes after power-on and any time it is indoors. Pull the TX wire and you get “No data from the GPS: check TX goes to pin 4.” A sketch that tells those two cases apart is much easier to debug outdoors.

How the NEO-6M is modeled

The sentences are real; the sky is not.

The module sends standard NMEA sentences, about 450 bytes of them a second, bit by bit on its TX pin at 9600 baud. That is why the usual libraries work on it unchanged, and why the usual mistakes fail the usual way: listen at the wrong baud rate, or on the wrong pin, and nothing parses.

There are no satellites here. The position is whatever you type, it does not drift, and a fix arrives the moment you allow it; a real NEO-6M needs a view of the sky and can take minutes from a cold start. Speed and heading from a moving receiver are not simulated. Use this to get the wiring and the parsing right, then take the hardware outside.

How it works

Three steps from a blank tab to a running circuit.

  1. Open the editor

    It runs in your browser tab. Nothing to install, and you need no account to start.

    Your first project
  2. Wire it and write the code

    Drag parts onto a breadboard, run each wire from pin to pin, and write the sketch beside it.

    Wiring
  3. Press Run

    Your sketch compiles in the tab and runs on a model of the chip, with the Serial Monitor beside it.

    Run and serial
Reviews

What makers say about Mokxi.

“The AI checker helps check and correct my circuits, and it has way more components than Tinkercad. As a student I really appreciate the tool.”

ChloeEngineering student

“I’d been looking for a real online electronic simulator that was intuitive and complete when I found Mokxi. I was able to quickly import a Fritzing file and my Arduino sketch and start testing. Mokxi has all of the makings for the best online Arduino simulator I have been able to find!”

JayModel builderFeatured in his DioramaOS post

“I’m using Mokxi to develop and simulate an STM32-based four-wheel-drive robot car before building the actual hardware. It allows me to experiment with DC motor control, PWM, RPM measurement using photointerrupters, and different acceleration, braking, and reversing strategies, helping me understand and refine the system before implementing it in real life.”

NusretRobot car builder, Hamburg

Share your story

FAQ

Questions, answered.

Is it free?

Yes. The circuit on this page, every part in it and the editor it opens in are on the free plan, with no card.

Do I need an account?

No. The circuit runs the moment the page does, and the editor opens without one. A free account is only for saving a project to the cloud and sharing it by link.

Can I simulate a GPS module on an Arduino?

Yes. The NEO-6M here sends the same NMEA sentences a real one does, so SoftwareSerial and TinyGPS++ parse them unchanged. You set the coordinates; there is no real satellite signal.

Why does my NEO-6M show no fix?

On real hardware it needs a clear view of the sky and up to a few minutes after power-on; indoors it may never fix. If your sketch receives no characters at all, the problem is wiring or baud rate instead. This circuit lets you cause each case and see the difference.

Which baud rate does a NEO-6M use?

9600 by default, 8 data bits, no parity. Its TX goes to the pin your sketch listens on, pin 4 in this circuit.

More simulators

Each one opens on a circuit that is already running.

Read a position

Open the circuit, type in a latitude and longitude and watch the monitor follow. Nothing to install, and no account needed.