esp-idf-GPS-Repeater

Transfer GPS NMAE messages over Wifi

Stars
15

esp-idf-GPS-Repeater

Transfer GPS NMEA messages over Wifi/Bluetooth

Background

I live in an apartment. GPS signal does not reach my room. I put my ESP32 and GPS receiver by the window and forward NMEA messages over WiFi.

Software requirements

ESP-IDF V5.0 or later. ESP-IDF V4.4 release branch reached EOL in July 2024.

Hardware requirements

GPS module like NEO-6M

Wireing to GPS module

GPS ESP32 ESP32-S2/S3 ESP32-C2/C3/C6
VCC -- 3.3V 3.3V 3.3V
GND -- GND GND GND
TXD -- GPIO16 GPIO1 GPIO0

You can change GPIO to any pin using menuconfig.

Installation

git clone https://github.com/nopnop2002/esp-idf-GPS-Repeater
cd esp-idf-GPS-Repeater
idf.py menuconfig
idf.py flash

Configure

You can configure UART-RX GPIO port and transfer protocol using menuconfig.

Transfer using TCP Socket

Select WiFi mode. config-tcp-sta

You can use tcp.py as receiver. python3 ./tcp.py

Transfer using UDP Broadcast

Select WiFi mode. config-udp-sta

You can use udp.py as receiver. python3 ./udp.py

Transfer using Classic Bluetooth SPP (ESP32 only)

You can use iPhone/Android as receiver. 0003

GPS Server for u-center

u-center is a very powerful NMEA message analysis tool. You can use ESP32 as u-center's GPS Server. ESP32 acts as a TCP Server. Build the firmware using TCP socket.

Start u-center and connect to ESP32. You can use mDNS host name as IP. Default port is 5000.

tcp://esp32-server.local:5000

GPS Server for Bluetooth GPS (Android Application)

You can download from here. Android acts as a SPP Initiator, and ESP32 acts as a SPP Acceptor. Build ESP32's firmware using Classic Bluetooth SPP.

1.Pair with ESP_SPP_ACCEPTOR. 2.Open application. 3.CONNECT.

GPS Server for GPS Connector (Android Application)

You can download from here. Android acts as a SPP Initiator, and ESP32 acts as a SPP Acceptor. Build ESP32's firmware using Classic Bluetooth SPP.

1.Pair with ESP_SPP_ACCEPTOR. 2.Open application. 3.Open setting page. 4.Select Bluetooth Classic as NMEA input source.

References

Repository with UI is here.