10€ un GPS de randonnée ...

Un GPS pour les randonneurs, cavaliers, cyclistes, fondeurs, etc à moins de 10 €

Deux versions : la dernière, beaucoup plus simple, encore moins chère et avec l'affichage en français:

Gps atmega vu          Voici une version plus récente, plus autonome et plus simple que je viens de sortir, avec un ATMega368 et une multitude d'autres modifications  ! Rendez-vous un peu plus bas !

 

La version originale :

Gps codeur3

 

          Ce petit boîtier va vous éviter de vous perdre en forêt et de rencontrer le grand méchant loup ... Où que vous soyez, vous pourrez vous rapprocher du point mémorisé (en principe point de départ ) et savoir quelle distance, à vol d'oiseau, il vous reste à faire pour rejoindre le refuge ou votre sweet home; Tout cela sans cartographie embarquée et pour moins de 10€uros de matériel .

Que va-t-on pouvoir lire dessus :

  • L'heure ! adaptable au pays en fonction de GMT
  • La boussole ! avec, en plus de la valeur angulaire du pôle, la direction ...
  • La vitesse de progression instantanée en km/h
  • La distance parcourue, en kilomètres, depuis la dernière remise à zéro
  • Le temps de déplacement (oui de déplacement, pauses exclues) cumulé depuis l'allumage et la réception satellite .
  • La distance à vol d'oiseau et la position angulaire du point enregistré => point à rejoindre ... (On voit dans quelle direction aller et si l'on se rapproche ou si l'on s'éloigne du but à atteindre )

Et accessoirement:

  • La latitude / longitude de l'endroit où l'on se trouve .
  • La latitude / longitude du point enregistré  .
  • La tension de la batterie .
  • La distance enregistrée
  • Le temps enregistré depuis le dernier Reset 
  • Le décalage horaire par rapport à GMT
  • La page d'accueil ...
  • etc...

Un seul bouton pour naviguer dans les menus :

  • "Power Off" pour l'arrêt
  • "Lat-Long & WP" pour voir la latitude, la longitude et mémoriser ou non un nouveau point de référence !
  • "Eco Mode" pour économiser la batterie pendant les pauses et les arrêts; réduction du rétro-éclairage et désactivation de la sollicitation du module GPS .
  • "GMT set" Réglage du décalage horaire par rapport à GMT.
  • "Odomètre" pour la remise à zéro de la distance parcourue .

 

Exemple 1: Vitesse, Azimut (valeur angulaire et direction), Heure, Temps de déplacement !

Gps encodeur run1

 

Exemple 2: Vitesse, Azimut (valeur angulaire et direction), Heure, Distance parcourue !

Gps encodeur odo

 

Exemple 3: Vitesse, Azimut (valeur angulaire et direction), Heure, Distance à vol d'oiseau et Azimut à prendre pour se rapprocher du point mémorisé ou point de départ  !

Gps encodeur wp1

(il suffit de se déplacer en ayant les mêmes valeurs d'azimut sur la boussole et sur le point à rejoindre ! sur une distance vol d'oiseau de 13 Km dans ce cas )

Exemple 4: Latitude et Longitude ( avec possibilité de conserver comme point de référence )  !

Gps encodeur lat

Voilà, vous savez tout sur le mode d'emploi ...

          Le boîtier est réalisé avec une imprimante 3D; le concentré d'électronique  est fourni par les Chinois pour un prix dérisoire (Chez Aliexpress ) et le tout est alimenté par des batteries de récupération de 3,7 volts (la capacité de la batterie définira l'autonomie: la mienne est petite, composée de 3 éléments de 850 mAh et me donne plus de 4 heures de fonctionnement ) En plus, il y a de la place dans le boîtier pour en mettre beaucoup plus ... 

 

Comment que ça marche ?

Le schéma électrique:

Gps encodeur sch

          Commençons par l'alimentation: Comme je le disais plus haut, c'est une batterie de 3,7 volt qui va fournir l'énergie à tout les circuits . Un"chargeur" avec fiche micro USB (ref.:TP4056) va permettre la recharge ou le fonctionnement sur une source extérieure dont les deux leds, respectivement rouge et verte, nous renseignent si les accus sont en charge ou complètement chargés. La couleur des leds est visible par le trou de la fiche USB. Le temps de charge va dépendre de la capacité de la batterie et de son avancement dans la décharge ...

Gps encodeur charg

          Cette batterie va être reliée à un relais dont la bobine sera collée par l'appui sur le bouton/contact de l'encodeur rotatif; en appuyant dessus on vient fermer le circuit, via la diode D1 1N4148, en tirant à la masse. Le relais s'actionne, fermant son contact, et permettant l'alimentation de tous les circuits; on garde le doigt sur le bouton jusqu'à ce que l'Arduino prenne vie et assure, via son programme et sa sortie D12 (PWR), l'auto-maintient du relais par la mise en conduction du transistor T1 2N2222, à travers la résistance de limitation R4 de 2K2,  pour confirmer la mise à la masse de la bobine jusqu'à ........ ce qu'on lui dise d'arrêter (on ne va pas garder le doigt en permanence sur le bouton tout de même !) . Une diode de roue-libre D2 1N4148 est placée aux bornes de la bobine du relais pour absorber les courants de self rupture.

          J'ai prévu deux types de relais pour que chacun puisse y mettre ce qu'il a dans ses stocks ! la sérigraphie du circuit est prévue à cette fin . Le relais sera de type miniature en 5 volts mais ça fonctionne très bien avec 3,7 volt, jusqu'à 2,8 volt (là la batterie est bien déchargée !) Attention de choisir un relais avec un pouvoir de coupure assez conséquent, car lors de la mise sous tension, il y a un appel de courant non négligeable par l'onduleur d'élévation de tension qui risque de souder le contact ...( pas de relais DIL, j'en ai fait l'expérience ...Grrr).

          Pour générer du 5 volts, à partir du 3,7 volts, je confie la tâche à un circuit convertisseur DC/DC 3,6 -->5v Boost converter qui va me monter, redresser et filtrer la tension à 5 volts pour l'alimentation de tous les composants; Une led bleue sur le circuit nous renseigne sur son bon état de fonctionnement lorsque le contact du relais est fermé . 

Gps encodeur conver

          La résistance R5 prend la tension de la batterie et la transmet, juste pour information, à une entrée analogique (A3) de l'Arduino Nano dans le but de l'afficher lors du démarrage. De toutes façons, si elle n'a pas la valeur suffisante, le relais ne pourra pas coller, et le GPS s'arrêtera au relâché du bouton .

          Vous l'avez sans doute compris, un Arduino Nano va gérer toutes les fonctions des éléments qui lui sont attachés; A commencer par le module GPS du type NEO-6M, dont l'alimentation est "raffraichie" par l'électro-chimique C1 de 25µF. La communication est assurée à 9600 bauds par les lignes D2/D3, dédiées à cet effet sut le microcontrôleur. Une led rouge nous indique que le GPS est correctement alimenté et une led verte clignotante nous indiquera que des satellites sont "en vue" ! Attention il faut parfois un certain temps avant que les premières données soient interprétées ... Et tant que la réception n'est pas effective, on ne peut arrêter le GPS que par coupure la batterie .

Gps encodeur gps1

Le GPS et son antenne ...

 

          Un codeur incrémental va permettre de se déplacer dans les différents menus par rotation avant ou arrière et validation par appui sur l'axe ! Pas de résistances de 'pull up' physiques, car Arduino permet de les déclarer dans le programme; profitons de cette aubaine ... Les entrées analogiques A0 à A2 ont été traitées en digitale pour ce cas. La pin A3, elle reste en analogique afin d'exploiter la mesure de tension de batterie et pour l'afficher dans les présentations au démarrage .

          Un afficheur 2x16 caractères nous permet de visualiser toutes ces données ... Le rétro éclairage, dans un soucis de prolonger l'autonomie, est piloté par une sortie PWM qui va ajuster la luminosité suivant le besoin et la réduire si le mode "Eco" est validé . Un transistor CMS 2N2222 interface la sortie à travers une résistance de base de 22K (R2) et une limitation de courant de 100 (R1) . Le contraste du LCD peut être réglé par un ajustable de 10K; personnellement je le prérègle par deux résistances SMD de 8K2 (R3) et 1K (R7) : c'est moins cher et ça simplifie bien le tracé du circuit imprimé ... Le pilotage est fait dans la facilité de 4 lignes de données (D4..D7) et deux pour la commande (E) & (RS) ... Classic !

 

Le circuit Imprimé:

Gps encodeur pcb2  Gps encodeur mtge

Le circuit câblé sans l'afficheur ...

Le circuit imprimé est 'simple face' réalisé suivant ma méthode habituelle expliquée ?ICI ! Le typon et tous les fichiers nécessaires à la réalisation sont dans le ZIP plus bas .

          Trois straps permettent de s'affranchir de la double face. J'ai également fait une double empreinte pour le relais: le but étant de mettre ce que l'on a dans les stocks sans courrir chez le revendeur de composants; un relais de 5 volts, avec une bonne valeur ohmique de bobine (pour la consommation) fonctionne très bien sous 3 volts et reste collé jusqu'à 2,8 volts (là, la batterie est bien à plat; de plus, ça la préserve pour ne pas la vider jusqu'à la moelle ) . Après réalisation et perçage du circuit imprimé, on commence par souder les résistances, diodes et transistor CMS puis les straps et enfin les composants traversants, avec une attention particulière pour les connecteurs femelles en barrettes  sécables, à monter bien perpendiculairement . Le chargeur et le convertisseur sont soudés sur des picots mâle/mâle . j'ai monté mon relais à l'horizontale sur des pinuches coudées à 90° pour une question de longueur d'entretoises de l'afficheur; les miennes étaient si petites que le relais entrait en conflit avec les sertissages de l'écran. Le codeur incrémental est juste à la bonne hauteur et son corps métallique sert de pont de continuité de masse. Le connecteur de la batterie dispose volontairement  de 3 pins pour ne pas faire de dégâts, si par étourderie, on le branche à l'envers . 

 

Le programme ou sketch :

          Comme d'habitude, on ne change pas une équipe qui gagne et puisque c'est un Arduino Nano le coeur du projet,  pour le développement et chargement, j'ai utilisé l'IDE Arduino; ce qui m'a permis d'importer et d'adapter certaines parties qui avaient le privilège d'exister sur un appareil de navigation maritime. Pour faciliter la  compréhension de ce que j'ai fait, j'ai ajouté de nombreux commentaires sur chaque ligne (ou presque !) La version complète se trouve dans le fichier .ZIP plus bas !

Gps codeur skt

 

 

On est bien plus beau avec de beaux habits !

Le Boîtier : 

           La boîte est réalisée à l'imprimante 3D aux dimensions du circuit batterie incluse bien sûr . En deux pièces: une partie haute  et un couvercle en partie basse qui s'emboîte et se fixe par vis Parker.  La fenêtre de l'afficheur est ajustée sur le périmètre extérieur du LCD et une ouverture latérale a été aménagée pour introduire la fiche micro-usb pour la recharge de(s) la batterie(s) . La fixation du circuit dans sa box est faite par des vis de 2,5 mm en empilage condition, sur les vis de maintien de l'afficheur, séparée de celui-ci par deux rondelles de 3 mm d'épaisseur. Le boitier est créé avec DesignSpark Mechanical  puis exporté en .STL pour le modéliser pour l'imprimante 3D .

Gps codeur box

          Attention à la fragilité des pattes de fixation du couvercle extérieur ... Suivant le degré de remplissage demandé à l'imprimante, il peut y avoir une certaine faiblesse lors de l'opération de vissage . Ce boîtier est bien loin de l'étanchéité "WaterProof" ... En utilisation extérieure, puisque c'est le rôle premier de mon GPS, il est prudent de l'emballer dans un film ou sac pastique transparent si la météo n'est pas des plus sûre ! Suivant les utilisateurs, rien n'empêche de compléter la fixation sur l'équipement utilisé, par des pattes ou brides, pour un maintient adapté de la boîte sur le guidon du vélo, par exemple  ...

 

Et pour la réalisation :

          Vous trouverez dans le fichier ZIP ci-dessous tout ce qui est nécessaire pour reproduire ce GPS et vous pouvez modifier à votre gré, pour adapter chacun à vos besoins et particularités .

Gps codeurGps codeur (174.75 Ko)

  • Le schéma format Eagles Cadsoft
  • Le tracé du circuit format Eagles et accepté par toutes les unités de production et de prototypage
  • Le sketch pour l'IDE Arduino
  • Les fichiers du boitier au format STL standard 
  • Les fichiers du boitier pour retravaille sur DesignSpark Mechanical 

 

 

La version avec l' ATMega328

           Commençons par voir les modifications, par rapport à la version originale :

  • L'autonomie à été augmentée avec une batterie plus conséquente
  • Le remplacement de l'Arduino Nano par un microcontrôleur Atmel ATMega 328
  • Simplification du circuit de charge et de l'élévateur de tension de l'afficheur
  • Interrupteur de marche classique sans passer par un relais ou un "shut-down" de programme
  • Affichage des informations dans la langue de Molière
  • Prise de chargeur USB mini et entrée pour alimentation par panneau solaire de 4 à 8 volts ...
  • Ergonomie revue pour être facilement monté sur les supports de guidons

Gps atmega scr

 

L'examen du schéma nous parle de lui-même :

Gps atmega sch

          Commençons par le haut à gauche. Un circuit chargeur de Li-Ion type 18650 fournit l'alimentation à l'ensemble la tension de 5 volts (réglage par potentiomètre ). Ce circuit présente le double avantage d'assurer en sécurité la charge et décharge de l'accu, suivant la source qui est raccordée. Deux leds, une rouge et une verte, renseignent sur l'état de charge de la batterie. Puis un interrupteur marche/Arrêt commande la mise en route du GPS .Chg li ion 18650

          Une résistance de 100K (R5) vient prélever un échantillon de tension pour l'envoyer sur une entrée analogique ADC3 du microcontrôleur afin de nous indiquer, sur le premier écran, si la batterie est bien chargée. Comme unique bouton, pour se déplacer dans les menus, un codeur bi-phasé fait le job... Deux signaux déphasés à 90° dans un sens et 270° dans l'autre, permettent de savoir dans quel sens on tourne le bouton; ce qui  incrémente ou décrémente les valeurs ou les menus ! Un appui sur celui-ci valide ce ou cette dernière. Cela se traduit par 3 entrées en pull-up sur l'ATMega (PC0 à PC2) . La résistance R2 (10K) maintient à l'état logique "haut" l'entrée reset (PC6) pour pouvoir fonctionner. Le cadencement de l'horloge est fait par un quartz extérieur de 16MHz (Q1) tirée par ses deux condensateurs de 18 pF (C2 & C3). La référence de tension pour le convertisseur analogique numérique est stabilisée par C4 (100nF) et donnée par l'entrée AVCC reliée à l'alimentation . L'afficheur 2 lignes de 16 caractères est piloté sur un demi octet ( 4 bits ) et en plus avec les classiques commandes, de validation (E) de présence des data, la discrimination instructions / caractères (RS)  et la saturation du contraste par une valeur "potentiométrisé" sur la pin VO. La commande R/W n'est pas utilisée ici car les données ne sont transférées que dans le sens écriture. Une résistance de 100 Ohms (R1) limite le courant dans les leds du rétro-éclairage . Une communication bi-directionnelle est émulée en RX - TX croisée avec la carte GPS NEO-6M, sur les pins PD2-PD3, avec une vitesse de transmission / réception adaptée par logiciel. Les requests sont envoyées et des trames de datas sont restituées par le module, puis extraites et traitées par le programme. Il n'y a rien de plus ...

Un circuit imprimé pour regrouper tout ça :

Gps atmega ci         Pas de difficulté dans la réalisation du circuit imprimé comme décrit ici. Du simple face, avec trois straps pour les croisements qui n'ont pas pu être dessinés. Les modules alimentation et GPS sont montés avec des pins sécables soudées sur les deux éléments. Des cosses tulipes reçoivent le microcontrôleur et l'afficheur. Ce dernier est monté le plus bas possible, grâce à un connecteur mâle / mâle soudé après fixation de l'écran sur les deux entretoises opposées au terminal. Le rotacteur incrémental est soudé sur le circuit, avec le maintient mécanique assuré par les pads plus larges. 

La mise en boîte:

Gps atmega box          Le boîtier composé de 3 pièces imprimées en PLA . Un fond sans réserve particulière, juste les passages de vis avec les fraisages de tête. Le dessus est ajouré pour l'écran et l'axe du codeur, et latéralement sur l'avant pour la fiche USB de recharge 5 volts, sur le côté pour l'interrupteur ON/OFF et pour une fiche alimentation par panneau solaire . Tout le circuit est fixé par les deux même vis qui tiennent l'afficheur, et se reprend sur les entretoises, d'où la réalisation d'un cache enjoliveur pour dissimuler les têtes. Les fichiers de réalisation sont au format DXF dans le zip ci-dessous .

Un petit bout de programme pour lui donner vie :

          Je n'ai fait que reprendre et adapter le soft existant de la réalisation originale à ces nouvelles fonctionnalités. J'ai supprimé les menus dont je n'avais plus besoins et traduit les séquences d'affichage dans notre langue . Les nombreux commentaires permettent de suivre ce que j'ai voulu faire avec la ligne ou le morceau exécuté. Je me suis servi de l'IDE Arduino pour élaborer ce sketch et j'ai utilisé la fonction "Croquis, Exporter les binaires compilés " pour générer le fichier hex. Un data IO de chez Dataman ou autre, m'a programmé l'ATMega328, en cochant les flags adéquats pour l'horloge et les options.

Les fichiers de réalisation :

          Trois répertoires respectivement pour l'électronique, le programme et la boîte, sous différents formats, pour que chacun y retrouve ses habitudes 

Gps atmegaGps atmega (887.38 Ko)

 

Et pour conclure:

          Deux versions d'un montage sans prétention mais qui a surtout un rôle pédagogique par la réception des signaux GPS et l'utilisation d'un encodeur incrémental... Dont la précision est souvent meilleure que celle des applications pour Smartphones ... 

Pour les plus curieux, un lien vers la Datasheet du module GPS.

 

 

Commentaires

  • francois
    • 1. francois Le 09/03/2019
    Merci d'avoir partagé ce très joli montage, pratique et bien conçu.
    C'est inspirant et bien expliqué.
    • amazing-vacuum-tubes
      • amazing-vacuum-tubesLe 10/03/2019
      Merci François ... Si ça peut servir et donner des idées le but est atteint ... J'aime bien, également lire les publications des autres personnes et m'en inspirer ; c'est les joies du partage ...

Ajouter un commentaire