IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Projet Arduino avec GPS Neo 7M


Sujet :

Arduino

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2021
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2021
    Messages : 158
    Points : 5
    Points
    5
    Par défaut Projet Arduino avec GPS Neo 7M
    Tout d'abord Bonjour a tous,

    je suis en cours de développement d'un projet commercial,
    je cherche quelqu'un qui pourrais m'aider a développer un système GPS ...
    en fait j'ai besoin d'un signal TTL en sortie d'un module avec un GPS qui selon "un perimetre défini " en cas de dépassement de ce dernier ma sortie passe du niveau Haut au niveau bas ou inversement.
    Ex: si par rapport a la position inisialisé par un poussoir (point de ref) le GPS sort d'un perimetre de 100 metres de rayon, ma sortie passe d'un etat a un autre.

    Merci d'avance

    Philippe

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2021
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2021
    Messages : 158
    Points : 5
    Points
    5
    Par défaut une idée
    bon ....
    je vais être plus explicite....


    - un point de reference GPS
    -mémorisé par un Switch

    un rayon defini (25,50,100 metres) au prealable

    si la "fence" est dépassé, un niveau haut ou bas sort de l'interface.

  3. #3
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    [...] suppression d'une partie de mon message car en relation avec les deux postes supprimés un peu plus haut dans la discussion. Nous nous étions mal compris et ça n'apporte pas d'intérêt au projet.[...]

    Si dans quelques jours tu n'as pas de réponses je déplacerai ton message dans le forum Arduino pour augmenter la visibilité. A moins que tu avais déjà en-tête cette carte de développement ? Un peu comme ce projet qui répond quasiment à ton cahier des charges https://create.arduino.cc/projecthub...project-d88500.

    Dit le moi si c'est le cas.

    A+
    Vincent
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2021
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2021
    Messages : 158
    Points : 5
    Points
    5
    Par défaut salut Vincent
    en Arduino je n'y comprend rien....
    dans le projet dont tu ma mis le lien, je ne vois pas bien comment ca fonctionne... si tu pouvais m'apporter tes lumieres...
    je t'explique ce que je veux faire, ce sera plus simple....

    j'ai une entreprise de maintenance de Yacht dans le golf de St Tropez, avec mon fils on a développé une alarme spécial bateau (eh oui ca n’existè pas...)
    nos clients vont déjeuner ou diner au plage avec leur bateaux, qu'ils laisse au mouillage.
    ils ont souvent un phénomène de "ripage de l'ancre" donc le bateau ce déplace ...
    mon alarme fonctionne via des message push et SMS, je voudrais a indiquer au proprietaire du bateau que son bateau a quitté le point initiale de quelques metres.
    pour cela: le mec clic un bouton avant de quitter le bord(memo du point GPS)
    si le bateau bouge: j'ai besoin d'un pulse haut ou bas pour generer mon alarme.

    si tu peux m'aider ce serais cool car en prog arduino je suis nul

    cordialement

    Philippe

  5. #5
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    Ok pour le contexte, ce n'est donc pas le genre de projet que je pensais (production en série, répondant à des normes industrielles etc...)

    Pour faire simple ; Arduino c'est une sorte de micro-ordinateur dans lequel tu mets un programme spécial, que seul Arduino comprend. Pour concevoir un programme Arduino il faut le faire depuis un ordinateur classique. Tu créais le programme Arduino et tu l'envoies dedans (1), le Arduino se programme et s'exécute (2) et pour mettre au point tout ça, tu t'es arrangé pour que le Arduino réponde à ton ordinateur via le moniteur série qui est une sorte d'écran déporté (3)

    ps : une fois que tout fonctionne bien et que tout est au point, tu peux tout débrancher. Arduino garde le programme en mémoire, il ne s'efface pas. Il faut bien sur alimenter le Arduino (il y a un connecteur dédié pour ça mais on peut aussi alimenter avec des piles ou batterie) pour qu'il démarre et lance le programme tout seul.

    Nom : path2578.png
Affichages : 575
Taille : 165,6 Ko


    Dans l'exemple que je t'ai donné et qui peut être une très bonne base à modifier, le programme Arduino interroge cycliquement le module GPS et renvoie ces réponses sur le moniteur série. Par exemple cette ligne (ligne 34 du code exemple) veut dire Serial.print(gps.location.lat(), 6); envoie la latitude au moniteur série sur le PC.

    Ça veut dire que cycliquement, tu peux lire sur le moniteur série ; latitude, longitude, jour, mois, année, heure, minute, seconde, milliseconde, issue du GPS. Dans ton cahier des charges toi tu souhaites non pas voir cycliquement toutes ces infos mais que le Arduino mémorise une fois l'info quand un interrupteur est enfoncé. Ensuite tu veux que le Arduino regarde cycliquement les infos pour les comparer à celle qu'il a mémorisé avec l'appuie sur l'interrupteur. Si il voit un différence de 25m, 50m ou 100m il met une de ses sorties (qui sont TTL) dans un état que tu veux (5V ou 0V).

    L'exemple est très proche de ce que tu souhaites.


    Par contre tu parles d'envoi automatique de SMS, tu as déjà un appareil pour ça ?
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2021
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2021
    Messages : 158
    Points : 5
    Points
    5
    Par défaut GPS
    Merci Vincent!!!

    ben les alarmes on en a deja produit 500...
    donc oui on a les module pour les SMS..
    tu peux me modifier le programme?
    pour le choix de différent rayon (25,50 ou 100 mètres) j'ai pensé a des micro switch type DIL ou un micro sélecteur 3 positions...
    tu me dit juste ce qui faut que j’achète comme arduino et comme GPS (j'aimerais que cela reste petit en volume) et ce qu'il faut pour programmer...
    et un grand merci pour tout ces renseignements...

  7. #7
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    Bonjour Philippe,
    Cette discussion est maintenant redirigée dans le forum Arduino, même si tu la vois toujours au même endroit. J'ai également supprimé nos premiers échanges, suite à un malentendu, qui n'apportaient pas grand chose au projet mais si tu souhaites les rendre visible je peux tout remettre comme avant en deux cliques (je suis sensible à la notion de censure.)

    Citation Envoyé par Stantedy
    oui on a les module pour les SMS..
    D'accord donc de ce côté pas de soucis.

    Citation Envoyé par Stantedy
    tu peux me modifier le programme?
    Plusieurs personnes le peuvent ici, je le peux aussi mais je travaille plutôt avec d'autres microcontrôleurs. Le plus compliqué va être de mettre au point à distance, toi tu auras le matériel + l'outil de développement et une autre personne te guidera à distance, ce n'est pas forcément évident puisque cela implique que tu maîtrises un minimum les choses. C'est une des contraintes des forums et c'est très important d'avoir ça en tête : Si tu devais m'expliquer comment intervenir précisément sur quelque chose dans bateau et que je ne comprends rien parce je ne m'y connais pas du tout, tu auras beau être le meilleur des professionnels tu ne pourras pas me guider et ça ne fonctionnera pas.


    Citation Envoyé par Stantedy
    tu me dit juste ce qui faut que j’achète comme arduino et comme GPS (j'aimerais que cela reste petit en volume) et ce qu'il faut pour programmer...
    Là nous entrons dans la phase du prototype. Il va falloir accepter que ça prenne un peu de temps et qu'il y ait des échecs ou de mauvais choix. Par exemple le module GPS n'a pas la précision attendue, ou une antenne extérieure n'était pas prévue et pourtant elle est nécessaire au bon fonctionnement, l'interrupteur mécanique qu'on a choisi pose problème dans le temps (forte humidité, air salin, ...) et un interrupteur capacitif qui fonctionne comme nos écrans de téléphone aurait un meilleur choix en terme d'étanchéité, est ce que les cartes électroniques doivent être tropicalisé (on dépose un vernis dessus afin de protéger l'électronique contre l'humidité, poussière, la corrosion excessive de l'air marin), etc... Il y a des questions à se poser et des erreurs à faire pour avancer.

    Dans un premier temps, je partirais sur cet exemple https://create.arduino.cc/projecthub...project-d88500
    - Tu ne ruineras pas si la précision n'est pas au rendez vous (et pour être franc je n'ai aucune idée de la précision d'un tel module)
    - L'exemple est simple à mettre en oeuvre puisque quelqu'un a déjà développé l'artillerie informatique pour que le Arduino communique assez facilement avec le module.
    - L'exemple est assez proche de ton application.


    Il y a peut être d'autres membres, et de très pointus, qui vont intervenir. On pourra croiser les avis.

    A bientôt,
    Vincent
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2021
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2021
    Messages : 158
    Points : 5
    Points
    5
    Par défaut pas d'idées...
    Bonjour Vincent,

    humm il y a pas trop de Gens chaud pour m'aider apparement...
    je viens de commander une dizaine d'arduino Uno et une dizaine de GPS 7N (j'ai du stock si je les crame...)
    je vais essayer les exemple que tu ma donnée, mais comment ce manifeste physiquement les fonctions de l'arduino? uniquement dans le moniteur virtuel?

    Cordialement

    Philippe

  9. #9
    Membre émérite
    Avatar de jpbbricole
    Homme Profil pro
    Retraité des réseaux informatiques
    Inscrit en
    Février 2013
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Retraité des réseaux informatiques
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 1 012
    Points : 2 341
    Points
    2 341
    Par défaut
    Bonjour Stantedy
    Citation Envoyé par Stantedy Voir le message
    Bonjour Vincent,

    humm il y a pas trop de Gens chaud pour m'aider apparement...
    En même temps il faut laisser aux gens de réfléchir!

    J'ai un 6m, je vais faire quelques essais.

    Cordialement
    jpbbricole
    L'expérience est la seule chose qu'il ne faut acheter que d'occasion!

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2021
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2021
    Messages : 158
    Points : 5
    Points
    5
    Par défaut Merci JPBricole
    Salut

    oui c'est vrai....

    je pense que tu a compris a peux pres ce que je veux faire...
    c'est une alarme de mouillage pour bateau

    un poussoir qui mémorise le point
    3 entrées pour sélectionner un rayon d'action (25,50 et 100metres) par un sélecteur ou autre
    1 sortie qui me donne un niveau bas si possible ou haut .

    en langage plus familier....

    le mec part avec son bateau déjeuner au plage a St Tropez (j'y habite)
    il jette l'ancre et au moment d'aller bouffer il clic le poussoir pour faire un memo du point
    (le réglage 25,50 et 100 m et assez important car il dépend de la longueur de chaine qu'il balance a l'eau)

    quand il est au restau si le bateau sort de ce perimetre, il recois un texto

    la partie electronique est un jeu d'enfant mais "arduino" c'est du chinois pour moi...

  11. #11
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    Citation Envoyé par Stantedy Voir le message
    humm il y a pas trop de Gens chaud pour m'aider apparement...
    Mais si
    Et il y en a même qui touche leur bille ici.

    Citation Envoyé par jpbbricole
    J'ai un 6m, je vais faire quelques essais.
    Merci pour lui JP ça facilitera la mise au point
    A titre perso, j'aimerai connaître la précision d'un tel module GPS ?


    Philippe,
    As tu des retours d'expériences sur des choses qui sont fortement sollicités par l'air marin ? Car si l'interrupteur pose problème tous les 2 mois, j'imagine que ça va être un peu embêtant ? Peut être utilises tu déjà des interrupteurs qui ont fait leurs preuves ?

    Penses au passage de l'antenne du GPS car la qualité de la réception en dépendra. Ce qu'on attend d'un système d'alarme c'est sa fiabilité.

    J'y connais rien en bateau mais en ce qui concerne l'alimentation électrique il y a des batteries ? Un groupe électrogène ? Est ce que le système d'alarme peut être amené à être opérationnel sans alimentation à bord ?
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2021
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2021
    Messages : 158
    Points : 5
    Points
    5
    Par défaut arf enfin je me sent moins seul!!!!
    Bon pour l'experience du milieu marin en electronique....

    ca fait plus de 20 ans que je fais de la maintenance de yacht.... du petit semi rigide a du un peu gros (54 metres)...
    (électricité, électronique, hydraulique, mécanique et tout le reste..
    faite un tour sur www.technical-yachting.fr
    pour les antennes pas de soucis car cette alarmes est faites en grande partie pour des petits bateaux (12 a 20 metres) generalement dit "OPEN " donc l'antenne voit le ciel depuis sont boitier...

    pour le Switch de sélection... on en a des étanches a mort dans le bateaux.

    tout ce qui est PCB j'ai déjà une usine qui nous fait les CI pour les alarmes en double face vernis tropicalisant

    surtout un grand merci a vous tous, et vous l'aurez compris; moi c'est Philippe, je suis dans le golf de St Tropez donc si un de vous passe dans le coin ... je me ferais un grand plaisir de lui payer un restau

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2021
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2021
    Messages : 158
    Points : 5
    Points
    5
    Par défaut precision
    oui l'energie a bord...

    tout d'abord tout est alimenté via les batteries du bateau (sur un bateau de 14m on a en gros 1000Ah)
    ensuite l'alarme que j''ai concu envoi un texto en cas de coupure de chargeur, et ou de batterie faible
    et concernant la qualité des alimentations c'est top et sans parasite, (on a quand meme le pilote auto, la navigation et le GPS de Navigation branché dessus!)

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2021
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2021
    Messages : 158
    Points : 5
    Points
    5
    Par défaut precision
    oui l'energie a bord...

    tout d'abord tout est alimenté via les batteries du bateau (sur un bateau de 14m on a en gros 1000Ah)
    ensuite l'alarme que j''ai concu envoi un texto en cas de coupure de chargeur, et ou de batterie faible
    et concernant la qualité des alimentations c'est top et sans parasite, (on a quand meme le pilote auto, la navigation et le GPS de Navigation branché dessus!)

  15. #15
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 711
    Points : 5 390
    Points
    5 390
    Par défaut
    Quel Arduino envisagez vous pour ce projet ? comment allez vous gérer l'envoi de SMS?
    Vous parlez de l'existence d'une alarme qui envoie un texto. Est-ce avec un Arduino? pouvez vous réutiliser le même système et greffer le GPS dessus?

    ----
    Dans le cadre d'un projet à objectif "sauver la planète", J'ai donné un coup de main au code qui utilisait des cartes SIMCom SIM7000E. Elles offrent l'avantage d'intégrer la communication réseau pour l'IoT (LTE CAT-M1(eMTC) et NB-IoT) et un GPS assez précis sur la même puce. En l'accrochant à un Arduino Micro ça permet de faire un produit assez petit et bien intégré, peu consommateur de courant si on gère des phases de "sleep". On peut ensuite se connecter à internet à travers le LTE pour envoyer de l'information. Le GPS est relativement stable, si on ne bouge pas, on reçoit globalement la même valeur (en le laissant au repos sur ma table dans mon bureau, même pas sous une fenêtre, il captait bien les satellites et "bouge" de moins de 4m). ça devrait le faire pour détecter donc un vrai mouvement de 20, 50 ou 100m par rapport à une position d'origine.

    L'inconvénient c'est qu'il est difficile (impossible ?) de trouver des cartes SIM de ce type en tant que particulier. Il faut être une entreprise, donc pas pour nous les "bricoleurs du dimanche".

  16. #16
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 711
    Points : 5 390
    Points
    5 390
    Par défaut
    PETIT RAJOUT:

    j'ai vu que vous aviez commandé des Arduino Uno. ce n'est pas le materiel le plus intégré.

    Ils n'ont qu'un seul port Série matériel et le GPS NEO-7M communiquant en Série, il faudra utiliser soit SoftwareSerial, soit se passer du moniteur série pour débuguer et si vous voulez rajouter un Module de communication par SMS type SIM800 ou SIM900, ça va compliquer les choses, il faudra sans doute encore un port série supplémentaire

    Une Arduino Mega (ou MEGA mini si la place est un souci) offre 4 ports séries matériels ce qui devrait grandement simplifier le développement

    ---
    EDIT:

    OK... je devrais tout lire en détail avant d'écrire...


    j'ai vu que vous dites "1 sortie qui me donne un niveau bas si possible ou haut" donc je suppose que vous allez interfacer cela avec votre système existant et donc on peut supposer qu'il n'y a pas à se soucier de l'envoi du SMS?

    Dans ce cas une fois le développement stabilisé, vous pourriez prendre un Arduino Nano ou Micro et utiliser le port Série matériel pour le GPS.

  17. #17
    Futur Membre du Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2021
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2021
    Messages : 158
    Points : 5
    Points
    5
    Par défaut Jay M
    Bonjour Jay M.

    toutes la partie SMS est complete et fonctionne depuis 1 an..
    a tel point que j'offre 1 an de com a mes clients...(sms et data)
    oui le GPS vient ce greffer sur le systeme existant (c'est une option)
    concernant le materiel (sachant que je n'y connais rien en arduino et autre ... j'ai suivi un peu la faune des forum qui travail beaucoup sur arduino...
    moi ce que je cherche c'est ce que j'ai décri....
    tans que le truc est precis a 5 ou 6 metre....

  18. #18
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 711
    Points : 5 390
    Points
    5 390
    Par défaut
    OK dans ce cas ce n'est pas très compliqué à écrire un premier jet, en utilisant des bibliothèques existantes. Il conviendra de rendre tout cela robuste

    Attention je n'ai pas vérifié les conditions de licences, certaines sont dites contaminantes (par exemple en LGPL v3, si vous utilisez une de ces bibliothèques vous pourrez avoir à mettre l'intégralité du code de votre produit en open source)

    le câblage:

    - un module Dip Switch x 4, connectés sur les pins 4, 5, 6, 7
    - un bouton momentané connecté sur la pin 8
    ==> La connexion des ces éléments se fait : pin Arduino --- bouton --- GND

    Votre Module GPS doit être alimenté, et son GND connecté au GND de l'Arduino.
    La pin Tx du GPS doit être connecté à la pin 4 de l'Arduino (EDIT: erreur car conflit avec le dip switch, voir le code dans le post plus récent)
    La pin Rx du GPS doit être connecté à la pin 3 de l'Arduino

    - la pin d'alerte est sur 8. HIGH par défaut, elle passe à LOW.

    -------------------------

    Voici un bout de code, absolument non testé car je n'ai pas ce GPS sous la main ni envie d'aller courir dehors pour voir si ça fonctionne car il fait nuit, il pleut et il fait froid

    Ça compile cependant et ce n'est pas trop compliqué à lire donc il y a des chances que ça tombe en marche

    il y'a deux bibliothèques non standard à installer:

    SimpleBouton Library : http://forum.arduino.cc/index.php?topic=375232.0
    TinyGPS++ library : https://github.com/mikalhart/TinyGPSPlus


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    // Library Required on top of the Arduino environment. Those Library are the property of their respective owners
    //  SimpleBouton Library  : http://forum.arduino.cc/index.php?topic=375232.0
    //  TinyGPS++ library     : https://github.com/mikalhart/TinyGPSPlus
     
    /*
      --------------------------------------------------------------
      KEEP THIS INFORMATION IF YOU USE THIS CODE
     
      Copyright (c) 2021 Jay For the Developpez.com forum
      https://www.developpez.net/forums/d2100922/general-developpement/programmation-systeme/embarque/arduino/projet-arduino-gps-neo-7m/
     
      Licenses for libraires included in this program apply
     
      This program is free software; you can redistribute it and/or
      modify it under the terms of the GNU Lesser General Public
      License as published by the Free Software Foundation; either
      version 2.1 of the License, or (at your option) any later version.
     
      This program is distributed in the hope that it will be useful,
      but WITHOUT ANY WARRANTY; without even the implied warranty of
      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      Lesser General Public License for more details.
     
      You should have received a copy of the GNU Lesser General Public
      License along with this library; if not, write to the Free Software
      Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
     
      --------------------------------------------------------------
    */
     
    // ======== CONFIGURATION DU HARDWARE ============
     
    // if you use an Arduino with only one Serial port, uncomment this line
    #define USE_SW_SERIAL
     
    #ifdef USE_SW_SERIAL
    #include <SoftwareSerial.h>
    const uint8_t RXPin = 4; // the arduino pin on which to receive serial data from your GPS
    const uint8_t TXPin = 3; // the arduino pin on which to transmit serial data to your GPS
    SoftwareSerial gpsSerial(RXPin, TXPin);
    #else
    #define gpsSerial Serial1   // otherwise define here which Hardware Serial Port to use
    #endif
     
    // define your GPS baud rate (9600 is the default for GPS Neo 7M)
    const uint32_t GPSBaud = 9600; 
     
    // the pins to set the alert distance  20 + 6 x bitMask (bitMask from LSB to MSB).
    // eg if dip config is 1001 that's 9 in decimal, distance will be 20 + 9x6 = 74m.
    // min distance = 20m, max distance with bitMaks @1111 = 100m
    const uint8_t dipSwitchPins[] = {4, 5, 6, 7};
    const uint8_t nbDipSwitches = sizeof dipSwitchPins / sizeof dipSwitchPins[0];
     
    // button to record position, wired as : pin---But---GND
    const uint8_t recordPositionPin = 8;
     
    // the pin triggering the alert. HIGH by default, turns LOW when distance is above threshold
    const uint8_t alertPin = 9;
     
    // --------------------------------------------------------------
     
    #include <simpleBouton.h>
    simpleBouton boutonPosition(recordPositionPin);
     
    #include <TinyGPS++.h>
    TinyGPSPlus gps;
     
    double recordedLatitude;
    double recordedLongitude;
    bool   recordedPosition = false;
     
     
    // The haversine formula determines the great-circle distance between two points on a sphere given their longitudes and latitudes
    double HaversineDistance(const double lat1, const double long1,  const double lat2, const double long2)
    {
      double latRad1 = radians(lat1);
      double latRad2 = radians(lat2);
      double lonRad1 = radians(long1);
      double lonRad2 = radians(long2);
     
      double half_diffLa = (latRad2 - latRad1) / 2.0;
      double s_half_diffLa = sin(half_diffLa);
     
      double half_doffLo = (lonRad2 - lonRad1) / 2.0;
      double s_half_doffLo = sin(half_doffLo);
     
      double computation = asin(sqrt(s_half_diffLa * s_half_diffLa + cos(latRad1) * cos(latRad2) * s_half_doffLo * s_half_doffLo));
      return 2.0 * 6372795.0 * computation; // in m, approximates earth to a sphere with radius is 6372795m
    }
     
    bool feedGPS()
    {
      bool gotFix = false;
      while (gpsSerial.available() > 0)
        if (gps.encode(gpsSerial.read())) {
          gotFix = true;
          break;
        }
      return gotFix;
    }
     
    uint32_t maxDistance()
    {
      uint8_t dipSwitchByte = 0;
      for (uint8_t i = 0; i < nbDipSwitches; i++)
        if (digitalRead(dipSwitchPins[i]) == LOW) bitSet(dipSwitchByte, i);
      return 20ul + 6 * dipSwitchByte; //  dipSwitchByte between 0 and 15 => distance between 20+0=20 and 20+6*15=100
    }
     
    void checkUserAction()
    {
      static bool recordingAttempt = false;
      uint32_t duree = boutonPosition.dureeEnfonce();
      boutonPosition.actualiser();
      if (boutonPosition.vientDEtreEnfonce()) recordingAttempt = true;
      if (recordingAttempt && (boutonPosition.vientDEtreRelache() || (duree > 2000))) {
        if (gps.location.isValid()) {
          recordedLatitude  = gps.location.lat();
          recordedLongitude = gps.location.lng();
          recordedPosition = true;
          recordingAttempt = false;
          Serial.print(F("Recorded Position = "));
          Serial.print(recordedLatitude, 6); Serial.write(','); Serial.println(recordedLongitude, 6);
        } else {
          Serial.println(F("Can't record position, no valid fix"));
        }
      }
    }
     
    void checkPosition()
    {
      static bool alert = false;
      if (gps.location.isValid()) {
        Serial.print(F("Position: ")); Serial.print(gps.location.lat());
        Serial.write(','); Serial.println(gps.location.lng());
     
        if (recordedPosition) {
          double distance = HaversineDistance(gps.location.lat(), gps.location.lng(), recordedLatitude, recordedLongitude);
          Serial.print(F("Distance from position: ")); Serial.print(distance); Serial.println(F(" m"));
     
          if (distance >= maxDistance()) {
            if (!alert) {
              digitalWrite(alertPin, LOW);
              alert = true;
              Serial.print(F("alert distance = ")); Serial.println(distance);
            }
          } else {
            if (alert) {
              Serial.print(F("Distance back in range : "));
              Serial.println(distance);
              digitalWrite(alertPin, HIGH);
            }
            alert = false;
          }
        }
      }
    }
     
    void setup() {
      for (auto& p : dipSwitchPins) pinMode(p, INPUT_PULLUP);
      pinMode(alertPin, OUTPUT);
      digitalWrite(alertPin, HIGH); // will go low in case of Alert
      Serial.begin(115200);
      gpsSerial.begin(GPSBaud);
    }
     
    void loop() {
      checkUserAction();
      if (feedGPS()) checkPosition();
    }
    Le fonctionnement est simple:

    - compilez et chargez le code dans votre Arduino

    - vous allumez le système. Pour tester, conservez la console Série ouverte à 115200 bauds sur votre PC, il y aura des affichages.

    - vous réglez les dip switches sous forme "binaire", une valeur entre 0 et 15. La distance de déclenchement retenue est le résultat de la formule 20 + 6 x valeur. Par exemple si vous mettez tous les switches sur 0000, la valeur est 0 et donc le déclenchement se fait si vous dépassez 20m. Si vous mettez les switches à 1011 (11 en décimal) la distance sera 20 + 6x11 = 86m. Si tous les switches sont actifs, la valeur est 15 et donc la distance 100m. La formule est facilement modifiable dans le code (fonction maxDistance()). On peut changer les Dip Switches quand on veut, ça modifiera la distance utilisée directement.

    - vous appuyez sur le bouton pendant au moins 2 secondes pour enregistrer la dernière position connue du GPS comme référence

    voilà c'est en route, la pin d'alerte passe à LOW en cas de dépassement de la distance et revient à HIGH si vous retournez à la bonne position (ou enregistrez une nouvelle position de référence)

    Des affichages s'effectuent à chaque nouvelle position obtenue par le GPS.

    évolutions sans doute nécessaires:
    - un voyant pour confirmer que le GPS obtient des coordonnées (éventuellement utiliser la LED intégrée LED_BUILTIN)
    - un beep (piezo) pour confirmer la bonne prise en compte de la position de référence?
    - une alerte sonore en même temps que la notification?
    - éliminer toute la connexion sur Serial pour la dédier au GPS
    - consommation électrique? est-ce un problème, faut-il améliorer le fonctionnement?
    - envoyer une alerte en cas de perte du signal GPS pendant trop longtemps?

    Je vous laisse essayer

  19. #19
    Futur Membre du Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2021
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2021
    Messages : 158
    Points : 5
    Points
    5
    Par défaut Jay M
    Oh Pu...n!

    c'est extra mega super top!

    j'essaie ca tout a l'heure!!!

    si c'est ok... peux on utiliser des arduino plus petit? genre nano ou micro?

    conso... on s'en fou

    le buzer j'y ai pensé...

    la perte de Gps en bord de mer trés peu de chance

    je vais peux etre avoir besoin de vous pour la Prog car je n'ai jamais fais ca...
    franchement Felicitation!!!

  20. #20
    Futur Membre du Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2021
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2021
    Messages : 158
    Points : 5
    Points
    5
    Par défaut Jay M
    Re.... (pas beaucoup dormi...)

    pour etre sur qu'on parle bien le meme langage....

    les DIP switch sur 0 il sont ouvert ok?

    Si Pin 4;5;6 et 7 en l'air =20 Metres
    Si Pin 4 et 7 a la masse = 74 Metres
    Si pin 4;5;6 et 7 a la masse=100 Metres

    juste?

    coté électronique:

    j'active le système via une télécommande 4 boutons

    le récepteur a donc 4 sorties
    la 1;2 et 3 passent par une porte OU qui va me piloter un transistor d'alim du arduino et du GPS
    en meme temps a travers un 555 je génère un pulse de 2 seconde pour initialiser le point de ref

    la voie 1 ne fait que ca
    résultat le système tourne mais les entrées 4;5;6 et 7 sont en l'air donc 20Metres
    la voie 2 va attaquer 2 entrées de commande d'un 4066 (c'est un quadruple inter Cmos)
    ces 2 inter vont me mettre a la masse la pin 4 et 7 de l'arduino
    donc 74 Mètres
    la voie 3 attaque 2 autres inter du 4066 qui me met en plus de la voie 2 les pin 5 et 6 a la masse
    donc si 4;5;6 et 7 sont a la masse =100 Mètres
    la voie 4 qui ne passe pas par la porte OU me désactive le systeme

    quand pensez vous?

    si il est possible de mettre un buzzer qui indique l'activation du systeme ce serais super top

    j'ai telechargé Arduino IDE ainsi que les 2 librairies mais je ne sait pas comment on fait pour les instaler dans le soft arduino....

    est ce que le code est le meme pour un arduino nano ( je suis assez seduit par la petitesse ..)

    merci encore mille fois pour votre aide et votre reactivité....

Discussions similaires

  1. Projet Arduino avec GPS Neo 7M
    Par Stantedy dans le forum Embarqué
    Réponses: 7
    Dernier message: 20/01/2021, 15h34
  2. probleme avec mon projet arduino test de satisfaction
    Par julien77320 dans le forum Arduino
    Réponses: 8
    Dernier message: 20/08/2019, 21h35
  3. Projet Web sur tablette avec GPS
    Par splifferwolf dans le forum Autres systèmes
    Réponses: 0
    Dernier message: 28/09/2015, 11h36
  4. comment structurer une modél. UML - projet J2EE avec pattern
    Par RocketArena dans le forum Architecture
    Réponses: 18
    Dernier message: 20/07/2007, 19h20
  5. projet .war avec Eclipse
    Par CapToMatteo dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 20/04/2004, 14h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo