Engineering Reference · PHYSICALLY PROVEN / CLOSED
Authoritative u-blox NEO-8 UART1 wiring, live NMEA, fix data and checksum-valid UBX request/response physical proof.
Hardware Example 05 — GPS / GNSS
Device Console: After flashing, use MONITOR for unchanged UART, NMEA, fix, and UBX output. Explicit
FG_GPS_UIfix/satellite and UART activity lines can populate the read-only I/O view. I/O deliberately does not decode coordinates from raw NMEA, so MONITOR and the generated example UI remain authoritative for the complete GPS proof.
Status: PHYSICALLY PROVEN
Public reference:
- Repository:
RTechAI/ForgeUI-P4-UART-GPS-GNSS - Release:
v1.0.0 - Public baseline commit:
2c6e6a6
This example is physically proven on the Waveshare ESP32-P4-WIFI6-Touch-LCD-7B with a u-blox NEO-8 GPS/GNSS receiver and ESP-IDF 5.5.4. It proves a generated Studio UI bound to a developer-owned full-duplex UART1 GPS implementation, standalone export, and the real Build & Flash path.
Hardware and wiring
Power the receiver from the dedicated UART connector and route its data signals through the bottom GPIO header:
| NEO-8 connection | Waveshare 7B connection |
|---|---|
| NEO VCC | UART connector VCC / Core_5V |
| NEO GND | UART connector GND |
| NEO TX | IO3 / GPIO3 → P4 UART1 RX |
| NEO RX | IO4 / GPIO4 ← P4 UART1 TX |
GPIO3 and GPIO4 use 3.3 V UART logic. The proof's Core_5V module supply does not make either data pin 5 V tolerant. Power down before changing wiring and keep a common ground between the module and board.
Why GPIO37 and GPIO38 are avoided
GPIO38/RXD is not used for GPS RX because it shares the CH343P TX net. GPIO37/TXD is not used for GPS TX because it shares the CH343P RX net. Those nets are not isolated, so the connector labels do not make them a safe independent GPS pair.
GPIO3/GPIO4 are the physically proven ForgeUI GPS pair:
- GPIO3: P4 UART1 RX, receiving NEO TX
- GPIO4: P4 UART1 TX, driving NEO RX
UART settings
- Interface: full-duplex UART1
- Baud: 9600
- Data bits: 8
- Parity: none
- Stop bits: 1
- Flow control: none
Proven NMEA and fix behavior
The UART task receives NMEA and validates each sentence checksum before using its data. The generated Studio UI receives live semantic updates for:
- UART RX state
- NMEA state
- 2D / 3D fix state
- satellite count
- latitude and longitude
- altitude
- speed
- HDOP
- UTC
FG_GPS: UART RX alive followed by FG_GPS: NMEA alive proves the receiver and NMEA link. Checksum-valid NMEA may be received indoors before a position fix is available, so NO FIX does not mean UART or NMEA has failed. The UI distinguishes no fix, 2D fix, and 3D fix. Physical certification reached a real 3D GPS fix and observed 12 satellites, with live latitude/longitude, altitude, speed, HDOP, and UTC updates.
Full-duplex TX and UBX-MON-VER proof
After the first checksum-valid NMEA sentence, the P4 sends one read-only UBX-MON-VER poll on UART1 TX / GPIO4. The receiver replies on UART1 RX / GPIO3; the implementation validates the UBX checksum and reads the bounded receiver version response. Physical proof recorded a valid response, including SW="ROM SPG 5.10 (7b202e)" and HW="000A0000".
UBX-MON-VER only requests version information. This example does not change or save receiver configuration and does not claim persistent UBX configuration.
Studio Load Example workflow
- Open ForgeUI Studio and select Hardware Examples.
- Find Example 05 — GPS / GNSS and choose Load Example.
- Confirm replacement of the current editable project when prompted. Hardware
Example selection is exclusive; examples do not accumulate.
- Keep the generated GPS semantic field names intact so export can select and
bind the Example 05 implementation.
- Use Guide on the Example 05 card to reopen the concise in-Studio wiring
and proof summary.
Standalone export workflow
- With Example 05 loaded, run the normal Standalone Export workflow.
- Choose the Waveshare ESP32-P4-WIFI6-Touch-LCD-7B profile and an export
destination.
- Confirm the export completes without missing-source or mixed-example errors.
- The standalone project contains the generated UI contract and the selected
developer-owned 99_Hardware_Example_05_GPS.c/.h implementation. The generated UI does not duplicate UART or parser behavior.
Build & Flash workflow
- Connect the Waveshare 7B to the development computer and wire the NEO-8 as
shown above.
- Use ForgeUI Studio's normal Build & Flash workflow, or build and flash the
standalone project with ESP-IDF 5.5.4.
- Confirm clean firmware startup and the UART1 configuration on GPIO3/GPIO4.
- Confirm UART RX alive, NMEA alive, and checksum-valid NMEA. Obtain open-sky
reception to verify 2D/3D fix behavior and live position fields.
- Confirm the one-shot UBX-MON-VER transmit log, checksum-valid response, and
continuing generated UI updates.
The real ESP-IDF 5.5.4 build, flash, UART operation, generated Studio UI live updates, and standalone export are all PHYSICALLY PROVEN on ESP32-P4.
Certification boundary
The proven scope is UART RX, checksum-valid NMEA, 2D/3D fix presentation, a 3D fix with 12 satellites observed, latitude/longitude, altitude, speed, HDOP, UTC, UART1 TX, a read-only UBX-MON-VER request with checksum-valid response, generated Studio UI live updates, standalone export, and ESP-IDF 5.5.4 Build & Flash.
This example does not claim mapping, navigation, routing, production vehicle navigation, or persistent UBX configuration.
