icône de l'avion
Livraison à
Livraison express depuis l'Europe avec DHL. Recevez votre commande partout dans le monde en 2 à 4 jours !
Achetez en ligne et faites-vous livrer en 2 à 4 jours par nos partenaires locaux, comme faire vos achats dans un magasin de proximité !
Nous expédions depuis l'Europe avec DHL, recevez votre commande sans surprise en 1 à 3 jours !
Livraison express depuis l'Europe avec DHL. Recevez votre commande sous 14 à 21 jours !
Nous livrons à Singapour en 2 à 4 jours ouvrables. Besoin d'aide ? Contactez notre équipe au +65 3174 3631
Nous livrons à Hong Kong avec DHL en 2 à 4 jours ouvrables. Besoin d'aide ? Contactez notre équipe au +852 5808 4561.
Nous livrons en Chine en 2 à 4 jours ouvrables. Besoin d'aide ? Contactez notre équipe au +86 18367375467
Nous livrons à Taïwan en 2 à 4 jours ouvrables. Besoin d'aide ? Contactez notre équipe au +886 2 7734 4400.
Mise à jour (19 / 01 / 2026): Nous avons beaucoup de stock sur tous nos produits, retrouvez-nous aussi dans que le béton ey    Boutique

Comment configurer un serveur Node-RED pour recevoir NMEA à distance

GNSS La technologie RTK peut être utilisée dans de nombreuses applications. Généralement, on prend des mesures, puis on les exporte vers un ordinateur pour analyser les données. C'est le cas le plus courant.
Mais pour certaines applications, vous devrez peut-être envoyer vos données GNSS RTK à votre ordinateur/serveur en temps réel, afin de pouvoir agir immédiatement sans attendre quelques heures pour traiter les données.

Les applications courantes qui nécessitent l'envoi de la position en temps réel à un serveur incluent : la gestion de flotte et la logistique, les services de covoiturage et les transports publics, le suivi des actifs, la surveillance de la faune, …

Dans ce tutoriel, nous expliquerons comment configurer un serveur avec Node-RED, qui est un outil populaire pour la programmation visuelle, afin que vous puissiez démarrer votre propre projet, nous verrons également comment configurer votre récepteur GNSS et votre plugin pour envoyer les données à ce serveur.

Matériel requis

Logiciel requis

  • GNSS Master application pour Android

Installation de Node-RED

Serveur Linux distant

Dans notre cas, nous utilisons la distribution AlmaLinux.
Ouvrez un terminal sur votre serveur et exécutez les commandes suivantes :

sudo dnf module reset -y nodejs
sudo dnf module enable -y nodejs:20
sudo dnf install -y nodejs npm gcc-c++ make
# then:
sudo npm i -g --unsafe-perm node-red

Vous pouvez vérifier si l'installation a réussi en tapant :
/usr/local/bin/node-red --version

Si tout va bien, vous verrez la version affichée sur le terminal.

Autres appareils/systèmes d'exploitation

Vous pouvez trouver des instructions sur la page officielle du projet Node-RED pour différents systèmes.

Ouvrez le port TCP sur votre serveur

Cela n’est peut-être pas toujours nécessaire, mais vous devrez peut-être ouvrir le port TCP pour autoriser les connexions entrantes.
Nous utiliserons le port TCP 2222 pendant tout cet exemple, vous devrez taper sur votre terminal serveur :
iptables -A INPUT -p tcp --dport 2222 -j ACCEPT

Exécuter Node-RED

Tapez cette commande:
 /usr/local/bin/node-red &

Accédez à votre navigateur et tapez :
172.123.123.123:1880
Où 172.123.123.123 doit être l'adresse IP de votre serveur.
Si tout va bien, vous devriez voir quelque chose comme ceci :

Préparez votre premier flux

Dans Node-RED, les projets sont appelés flux.
Nous allons préparer un nouveau flux pour écouter les connexions TCP entrantes et pour imprimer tout ce qui est reçu dans une fenêtre de débogage.

Recherchez sur le panneau de gauche, le nœud appelé TCP dans, faites-le glisser et déposez-le sur le canevas du flux.
Rechercher également le déboguer nœud et connectez-les ensemble comme ceci :

Dans Node-RED, les projets sont appelés flux.
Nous allons préparer un nouveau flux pour écouter les connexions TCP entrantes et pour imprimer tout ce qui est reçu dans une fenêtre de débogage.

Recherchez sur le panneau de gauche, le nœud appelé TCP dans, faites-le glisser et déposez-le sur le canevas du flux.
Rechercher également le déboguer nœud et connectez-les ensemble comme ceci :

Double-cliquez sur le nœud TCP et définissez le port TCP sur lequel vous souhaitez écouter, dans cet exemple : 2222.
Définissez également les chaînes de diffusion délimitées par \r\n.

Après avoir fait cela cliquez sur le bouton Déployer en haut à droite de l'écran.
Ce bouton exécutera les blocs après toute modification.

Connectez votre récepteur GNSS à Node-RED

RTK Portable Bluetooth Kit avec un appareil Android

  1. Connectez votre kit Bluetooth portable via BT à votre appareil Android.
  2. Open GNSS Master application, connectez-vous au module BT dans la connexion du récepteur GNSS.
  3. Définir l'entrée de correction si nécessaire
  4. Dans la section « Sortie des données du récepteur », sélectionnez « Client TCP » et saisissez l'adresse IP de votre serveur dans le champ « Adresse TCP » et « 2222 » dans le champ « Port TCP ». Cliquez sur « Connecter ».
  5. C'est tout, si vous double-cliquez sur la fenêtre de débogage dans Node-RED, vous devriez voir quelque chose comme ceci, avec toutes les données reçues :

Autres récepteurs GNSS avec connecteurs 4G, WiFi ou Ethernet

Si vous disposez d'un autre récepteur GNSS, vous pouvez également obtenir les mêmes résultats, même sans appareil Android.
Assurez-vous de sortir vers le port COM du plugin XBee les messages que vous souhaitez envoyer à votre serveur, généralement vous souhaitez envoyer, au moins, messages NMEA GGA.

Ensuite, configurez votre 4G, WiFi ou Ethernet NTRIP Master plugins avec la fonctionnalité client TCP avec les mêmes paramètres qu'auparavant, le serveur TCP est l'adresse IP de votre serveur, le port TCP est 2222.

C'est aussi simple que ça 🙂

Faites quelque chose avec les données

Ok, jusqu'ici ce n'est pas très excitant, n'est-ce pas ?
Il est possible de voir des flux NMEA en direct sur votre serveur, mais nous souhaitons voir certaines des fonctionnalités de Node-RED.
Dans l'exemple suivant, nous vous montrerons comment analyser le flux d'entrée pour obtenir la latitude et la longitude et nous tracerons l'emplacement en direct sur une carte avec une trace montrant les anciens emplacements.

Tout d’abord, supprimez votre flux actuel.
Cliquez sur le menu en haut à droite > Gérer la palette > Installer > rechercher node-red-contrib-web-carte-du-monde et l'installer.

Revenez au menu > Importer > Presse-papiers et collez le code suivant :

    
     [
  {
    "id": "tab1",
    "type": "tab",
    "label": "GNSS Live Map + Track",
    "disabled": false,
    "info": ""
  },
  {
    "id": "tcpInNmea2222",
    "type": "tcp in",
    "z": "tab1",
    "name": "NMEA TCP 2222",
    "server": "server",
    "host": "",
    "port": "2222",
    "datamode": "stream",
    "datatype": "utf8",
    "newline": "\\r\\n",
    "topic": "",
    "base64": false,
    "x": 150,
    "y": 140,
    "wires": [
      [
        "fnGGA"
      ]
    ]
  },
  {
    "id": "fnGGA",
    "type": "function",
    "z": "tab1",
    "name": "Filter GGA → {lat,lon}",
    "func": "// Allman style\nfunction nmeaToDecimal(raw, hemi)\n{\n    if (!raw || !hemi)\n    {\n        return null;\n    }\n    const isLat = (hemi === 'N' || hemi === 'S');\n    const degDigits = isLat ? 2 : 3;\n    const deg = parseInt(raw.slice(0, degDigits), 10);\n    const min = parseFloat(raw.slice(degDigits));\n    if (Number.isNaN(deg) || Number.isNaN(min))\n    {\n        return null;\n    }\n    let dec = deg + (min / 60.0);\n    if (hemi === 'S' || hemi === 'W')\n    {\n        dec = -dec;\n    }\n    return dec;\n}\n\nif (typeof msg.payload !== 'string')\n{\n    return null;\n}\n\nconst line = msg.payload.trim();\nif (!line.startsWith('$') || line.indexOf('GGA,') === -1)\n{\n    return null;\n}\n\nconst f = line.split(',');\nconst lat = nmeaToDecimal(f[2], f[3]);\nconst lon = nmeaToDecimal(f[4], f[5]);\nif (lat == null || lon == null)\n{\n    return null;\n}\n\nmsg.payload = { lat, lon };\nreturn msg;",
    "outputs": 1,
    "noerr": 0,
    "initialize": "",
    "finalize": "",
    "libs": [],
    "x": 410,
    "y": 140,
    "wires": [
      [
        "fnToWorldmap"
      ]
    ]
  },
  {
    "id": "fnToWorldmap",
    "type": "function",
    "z": "tab1",
    "name": "Marker + Track",
    "func": "// Input: msg.payload={lat,lon}\n// Output1 → worldmap marker\n// Output2 → worldmap-tracks polyline (then wired into worldmap)\n\nif (!msg.payload || msg.payload.lat == null || msg.payload.lon == null)\n{\n    return null;\n}\n\nconst lat = Number(msg.payload.lat);\nconst lon = Number(msg.payload.lon);\nconst name = \"GPS-1\"; // keep constant per device\nconst now = Date.now();\n\nconst base =\n{\n    name: name,\n    lat: lat,\n    lon: lon,\n    layer: \"GNSS\",\n    time: now, // helps pruning\n    icon: \"fa-location-arrow\",\n    popup: `Lat: ${lat.toFixed(6)}<br>Lon: ${lon.toFixed(6)}<br>UTC: ${new Date(now).toISOString()}`\n};\n\nreturn [ { payload: base }, { payload: base } ];",
    "outputs": 2,
    "noerr": 0,
    "initialize": "",
    "finalize": "",
    "libs": [],
    "x": 650,
    "y": 140,
    "wires": [
      [
        "worldmap",
        "dbgMarker"
      ],
      [
        "tracks"
      ]
    ]
  },
  {
    "id": "tracks",
    "type": "worldmap-tracks",
    "z": "tab1",
    "name": "Track GNSS (layer GNSS)",
    "depth": "1000",
    "layer": "GNSS",
    "doors": "",
    "x": 930,
    "y": 180,
    "wires": [
      [
        "worldmap"
      ]
    ]
  },
  {
    "id": "worldmap",
    "type": "worldmap",
    "z": "tab1",
    "name": "Live Map (/worldmap)",
    "lat": "0",
    "lon": "0",
    "zoom": "2",
    "layer": "OSM",
    "cluster": "",
    "maxage": "",
    "usermenu": "show",
    "layers": "show",
    "panit": "false",
    "panlock": "false",
    "zoomlock": "false",
    "hiderightclick": "false",
    "coords": "none",
    "showgrid": "false",
    "showruler": "false",
    "showlayer": "true",
    "showmenu": "true",
    "path": "/worldmap",
    "overlist": "DR,CO,RA,DN,HM",
    "maplist": "OSM,Esri Terrain,Esri Satellite",
    "mapname": "",
    "mapurl": "",
    "mapopt": "",
    "kmlurl": "",
    "devicelabel": "name",
    "layercontrol": "false",
    "x": 930,
    "y": 120,
    "wires": []
  },
  {
    "id": "dbgMarker",
    "type": "debug",
    "z": "tab1",
    "name": "Marker payload",
    "active": false,
    "tosidebar": true,
    "console": false,
    "tostatus": false,
    "complete": "payload",
    "statusVal": "",
    "statusType": "auto",
    "x": 930,
    "y": 220,
    "wires": []
  },
  {
    "id": "hint",
    "type": "comment",
    "z": "tab1",
    "name": "Send NMEA (\\r\\n delimited) to TCP 2222. Open http://<host>:1880/worldmap",
    "info": "",
    "x": 330,
    "y": 90,
    "wires": []
  }
]

    
   

Vous devriez voir quelque chose comme ceci:

Double-cliquez sur le nœud de la carte du monde.
Dans la liste déroulante des cartes, sélectionnez OpenStreetMap ou une autre couche, cliquez sur Terminé :

Appuyez sur la touche Déployer .
Vous pouvez accéder depuis votre navigateur à la carte en direct ici :
172.123.123.123:1880/carte du monde/
où l'adresse IP doit être la même que celle de votre serveur.

Vous verrez une carte avec un marqueur indiquant l'emplacement de votre récepteur GNSS, mis à jour en temps réel, vous pouvez zoomer/dézoomer à votre guise.

Nous vous recommandons de jeter un œil à chacun des nœuds de votre flux pour mieux comprendre ce qu'ils font, les modifier et voir ce qui change.

Vous trouverez de nombreux tutoriels et des outils d'IA vous aideront également si vous souhaitez faire quelque chose d'un peu plus avancé.

Amusez-vous!

Si vous souhaitez arrêter Node-RED, procédez comme suit :
iptables -A INPUT -p tcp --dport 2222 -j REJECT

type ps aux | grep node , recherchez le processus du nœud si et tuez le processus en :
kill NODE_PROCESS_ID

Si vous avez aimé ce contenu, vous pouvez nous suivre sur Twitter, YouTube, Facebook or LinkedIn pour rester à jour de contenu comme celui-ci.

Vous avez des questions ou des demandes?
Contactez-nous! Nous vous répondrons en moins de 24 heures !

Icône
Contact ArduSimple
Fermer

Vous souhaitez en savoir plus sur le GPS/RTK ?

1. Notre équipe d'ingénieurs vous contactera pour résoudre toutes les questions
2. Nous vous tiendrons au courant des promotions et des nouvelles versions de produits
3. Vous n'aurez de nos nouvelles que lorsque nous aurons des nouvelles importantes, nous ne spammerons pas votre e-mail