Fork from: GLAY-AK2/NTRIP-client-for-Arduino
NTRIP client library for ESP32 (Arduino). Receives RTCM3 correction data from NTRIP Caster and outputs via RS232 to GNSS receivers.
flowchart TD
subgraph group_package["Arduino package"]
node_repo["NTRIP client<br/>Arduino library"]
end
subgraph group_core["Core bridge"]
node_src_ntrip["NTRIPClient<br/>core bridge<br/>[NTRIPClient.cpp]"]
node_src_ntrip_h["Client API<br/>header<br/>[NTRIPClient.h]"]
end
subgraph group_examples["Example apps"]
node_m5stack_wps["M5Stack WPS<br/>example app<br/>[M5Stack_WPS.ino]"]
node_m5stack_wifi["M5Stack WiFiManager<br/>example app"]
node_m5atom_wps["M5Atom WPS<br/>example app<br/>[M5Atom_WPS.ino]"]
node_m5atom_wifi["M5Atom WiFiManager<br/>example app"]
node_wps_helper_stack["WPS helper<br/>provisioning helper<br/>[wpsConnector.cpp]"]
node_wps_helper_atom["WPS helper<br/>provisioning helper<br/>[wpsConnector.cpp]"]
node_wifi_manager["WiFiManager<br/>external lib"]
node_ui_stack["LCD status<br/>device UI"]
node_ui_atom(("LED status<br/>device UI"))
node_button(("Server button<br/>control input"))
end
subgraph group_external["External systems"]
node_caster[("NTRIP caster<br/>remote source")]
node_wifi{{"Wi-Fi network<br/>connectivity"}}
node_gnss[("GNSS receiver<br/>serial sink")]
node_serial2["Serial2 RS232<br/>hardware link"]
end
node_repo -->|"packages"| node_src_ntrip
node_repo -->|"includes"| node_m5stack_wps
node_repo -->|"includes"| node_m5stack_wifi
node_repo -->|"includes"| node_m5atom_wps
node_repo -->|"includes"| node_m5atom_wifi
node_src_ntrip -->|"API"| node_src_ntrip_h
node_m5stack_wps -->|"uses"| node_src_ntrip
node_m5stack_wifi -->|"uses"| node_src_ntrip
node_m5atom_wps -->|"uses"| node_src_ntrip
node_m5atom_wifi -->|"uses"| node_src_ntrip
node_m5stack_wps -->|"provisions"| node_wps_helper_stack
node_m5atom_wps -->|"provisions"| node_wps_helper_atom
node_m5stack_wifi -->|"provisions"| node_wifi_manager
node_m5atom_wifi -->|"provisions"| node_wifi_manager
node_m5stack_wps -->|"shows status"| node_ui_stack
node_m5stack_wifi -->|"shows status"| node_ui_stack
node_m5atom_wps -->|"shows status"| node_ui_atom
node_m5atom_wifi -->|"shows status"| node_ui_atom
node_m5stack_wps -->|"cycles server"| node_button
node_m5stack_wifi -->|"cycles server"| node_button
node_m5atom_wps -->|"cycles server"| node_button
node_m5atom_wifi -->|"cycles server"| node_button
node_m5stack_wps -->|"connects via"| node_wifi
node_m5stack_wifi -->|"connects via"| node_wifi
node_m5atom_wps -->|"connects via"| node_wifi
node_m5atom_wifi -->|"connects via"| node_wifi
node_src_ntrip -->|"fetches RTCM3"| node_caster
node_caster -->|"rides on"| node_wifi
node_src_ntrip -->|"writes bytes"| node_serial2
node_serial2 -->|"feeds corrections"| node_gnss
click node_src_ntrip "https://github.com/yasunorioi/NTRIP-client-for-Arduino/blob/master/src/NTRIPClient.cpp"
click node_src_ntrip_h "https://github.com/yasunorioi/NTRIP-client-for-Arduino/blob/master/src/NTRIPClient.h"
click node_m5stack_wps "https://github.com/yasunorioi/NTRIP-client-for-Arduino/blob/master/examples/M5Stack_WPS/M5Stack_WPS.ino"
click node_m5stack_wifi "https://github.com/yasunorioi/NTRIP-client-for-Arduino/blob/master/examples/M5Stack_WiFiManager/M5Stack_WiFiManager.ino"
click node_m5atom_wps "https://github.com/yasunorioi/NTRIP-client-for-Arduino/blob/master/examples/M5Atom_WPS/M5Atom_WPS.ino"
click node_m5atom_wifi "https://github.com/yasunorioi/NTRIP-client-for-Arduino/blob/master/examples/M5Atom_WiFiManager/M5Atom_WiFiManager.ino"
click node_wps_helper_stack "https://github.com/yasunorioi/NTRIP-client-for-Arduino/blob/master/examples/M5Stack_WPS/wpsConnector.cpp"
click node_wps_helper_atom "https://github.com/yasunorioi/NTRIP-client-for-Arduino/blob/master/examples/M5Atom_WPS/wpsConnector.cpp"
classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_repo toneBlue
class node_src_ntrip,node_src_ntrip_h toneAmber
class node_m5stack_wps,node_m5stack_wifi,node_m5atom_wps,node_m5atom_wifi,node_wps_helper_stack,node_wps_helper_atom,node_wifi_manager,node_ui_stack,node_ui_atom,node_button toneMint
class node_caster,node_wifi,node_gnss,node_serial2 toneRose
4 combinations of hardware and WiFi configuration method:
| Example | Hardware | WiFi Config | RS232 Port |
|---|---|---|---|
M5Stack_WPS |
M5Stack + RS232 Kit | WPS | Serial2 (TX=17, RX=16) |
M5Stack_WiFiManager |
M5Stack + RS232 Kit | WiFiManager (captive portal) | Serial2 (TX=17, RX=16) |
M5Atom_WPS |
M5Atom + Atomic RS232 Base | WPS | Serial2 (TX=19, RX=22) |
M5Atom_WiFiManager |
M5Atom + Atomic RS232 Base | WiFiManager (captive portal) | Serial2 (TX=19, RX=22) |
- M5Stack + RS232 Kit: M5Stack RS232 Module via I2C port. LCD display shows NTRIP status and data rate.
- M5Atom + Atomic RS232 Base: Atomic RS232 Kit. LED color indicates active NTRIP server.
- WPS: Press WPS button on your WiFi router. No PC/smartphone required.
- WiFiManager: Connect to AP "M5stack" (password: "m5stackpass") from smartphone/PC, then configure WiFi via captive portal at http://192.168.4.1/
Edit eniwa-agriICT.h (WPS/M5Stack examples) or the inline config in the .ino file (M5Atom_WiFiManager) to set your NTRIP caster host, port, mount point, user, and password. Up to 4 servers can be configured; press the button to cycle between them.
- Download this repository as ZIP
- Arduino IDE → Sketch → Include Library → Add .ZIP Library
- Open examples from File → Examples → NTRIPClient
arduino-cli lib install --git-url https://github.com/yasunorioi/NTRIP-client-for-Arduino.git| Library | Required by |
|---|---|
| M5Stack | M5Stack examples |
| M5Atom | M5Atom examples |
| WiFiManager | WiFiManager examples |
WRH1200A must receive GPS + GLONASS only data. If you input other RTCM3 data (e.g. Galileo, BeiDou), it will not achieve RTK fix.
LGPL-3.0 (inherited from original)
