Table des matières:

Projet de surveillance GPS avec écran OLED : 5 étapes (avec photos)
Projet de surveillance GPS avec écran OLED : 5 étapes (avec photos)

Vidéo: Projet de surveillance GPS avec écran OLED : 5 étapes (avec photos)

Vidéo: Projet de surveillance GPS avec écran OLED : 5 étapes (avec photos)
Vidéo: EB_#520 Projet - Référence 10MHz asservie au GPS, Partie 2 - Échantillonnage 10 MHz (Mise à Jour) 2024, Juillet
Anonim
Surveillance GPS avec projet d'affichage OLED
Surveillance GPS avec projet d'affichage OLED
Surveillance GPS avec projet d'affichage OLED
Surveillance GPS avec projet d'affichage OLED
Surveillance GPS avec projet d'affichage OLED
Surveillance GPS avec projet d'affichage OLED
Surveillance GPS avec projet d'affichage OLED
Surveillance GPS avec projet d'affichage OLED

Bonjour à tous, dans cet article rapide je vais partager avec vous mon projet:Module GPS ATGM332D avec microcontrôleur SAMD21J18 et écran SSD1306 OLED 128*64, j'ai construit un PCB spécial pour cela sur Eagle Autodesk, et le programme en utilisant Atmel studio 7.0 et ASF4 donc dans cet article, je vais partager avec vous ce voyage et les fichiers que j'ai utilisés si vous êtes intéressé à le faire par vous-même.

Maintenant, si vous programmez votre MCU/carte de développement à l'aide d'Arduino, ce projet devrait vous être relativement facile, mais ici, j'utiliserai ASF4 (Advanced software framwork 4) d'Atmel/Microchip qui est basé sur le langage C et vous donnerait une idée pour savoir comment lire le message GPS NMEA à l'aide du pilote asynchrone USART (Rappel) et vous fournir une bibliothèque simple que vous pouvez utiliser avec n'importe quel micro-contrôleur et plate-forme différente en ajoutant simplement le pilote approprié que vous utilisez pour recevoir le message du GPS (message NMEA).

Je diviserai cet article en:

  1. Conception de PCB.
  2. BOM dont vous avez besoin pour assembler le PCB
  3. Regard rapide sur le logiciel et le code lui-même et un test pour le matériel et le logiciel.
  4. enfin et surtout un point d'amélioration pour ce projet.

Vous trouverez tout le matériel lié à ce projet sur Github (Ici)

Étape 1: Conception de circuits imprimés à l'aide d'Eagle

Conception de circuits imprimés à l'aide d'Eagle
Conception de circuits imprimés à l'aide d'Eagle
Conception de circuits imprimés à l'aide d'Eagle
Conception de circuits imprimés à l'aide d'Eagle
Conception de circuits imprimés à l'aide d'Eagle
Conception de circuits imprimés à l'aide d'Eagle
Conception de circuits imprimés à l'aide d'Eagle
Conception de circuits imprimés à l'aide d'Eagle

Ce projet est principalement basé sur le module GPS ATGM332D, un GPS simple à utiliser car il n'a besoin que de quelques composants passifs pour fonctionner, et nous pourrions ajouter une batterie de secours pour économiser l'heure/la date si nous arrêtons la source d'alimentation principale du module.

et pour contrôler tous les signaux du circuit, je suis allé avec le microcontrôleur ATSAMD21J18B, le package TQFP64 car il dispose de 128 Ko de stockage de mémoire de programme et de 32 Ko de mémoire de données (et j'en ai beaucoup autour de mon établi).

le circuit doit être alimenté par une source USB 5V, l'USB peut également servir de port COM virtuel (CDC USB) et vous pouvez ajouter un code pour cela si vous souhaitez communiquer avec l'appareil via USB.

pour l'affichage, j'ai sélectionné l'écran OLED SSD1306 0.96' avec bus SPI, il est petit mais il convient à la taille de PCB que je voulais, la dimension de la carte 100x31 mm.

la programmation du microcontrôleur se fera via le programmeur SWD (j'utilise Atmel ICE) et le connectera via une embase à broches de 1,27 mm 10p.

J'ai également utilisé Fusion360 pour obtenir une vue 3D du tableau et vous pouvez également voir une image rendue pour celui-ci.

Étape 2: Souder le PCB

Souder le PCB
Souder le PCB
Souder le PCB
Souder le PCB
Souder le PCB
Souder le PCB

Vous avez le choix de commander un pochoir avec votre PCB, il est plus facile d'appliquer la pâte à souder sur la carte à l'aide du pochoir, j'ai utilisé une plaque chauffante pour souder les composants ensemble, utiliser de l'air chaud est également OK mais soyez prudent lors de la soudure de la LED car ils sont si sensibles à la chaleur.

souder la face inférieure est un peu plus facile car il ne contient que l'en-tête de broche SWD et la batterie de secours, que vous pouvez souder à l'aide d'un fer à souder.

avant de connecter le circuit à une source d'alimentation USB, vérifiez l'absence de court-circuit.

connectez votre antenne GPS et assurez-vous de bien souder son connecteur, j'ai fixé l'antenne sur la face inférieure de la carte.

Étape 3: Logiciel… Fonctionnalité… résultats

Image
Image
Logiciel… Fonctionnalité…résultats
Logiciel… Fonctionnalité…résultats
Logiciel… Fonctionnalité…résultats
Logiciel… Fonctionnalité…résultats

Le logiciel sera divisé en 4 parties:

  1. USART pour communiquer avec le module GPS ATGM332.
  2. SPI pour communiquer avec OLED.
  3. CDC USB.
  4. GPIO pour contrôler les LED

connectez d'abord le connecteur USB pour allumer le circuit, puis connectez le câble plat avec le connecteur SWD.

Téléchargez le code sur github (lien ici).

pour obtenir la géolocalisation, vous disposez de 3 options de messages NMEA différentes:

  1. GPGGA
  2. GPRMC
  3. GPGLL

J'ai utilisé la phrase GPRMC pour obtenir l'emplacement, l'heure et la date (l'heure est 0.0 GMT) donc dans le code vous trouverez:

GPRMC. Enable=1;/*0 si ce message n'est pas nécessaire*/

GPGGA. Enable=0;/*0 si ce message n'est pas nécessaire*/

GPGLL. Enable=0;/*0 si pas besoin de ce message*/

vous pouvez les activer tous ensemble et les lire en même temps obtenir les données dont vous avez besoin.

une fois qu'il y a une phrase GPRMC valide, le GPRMC. Ready deviendra 1 et vous pourrez obtenir toutes les données disponibles dans cette phrase, consultez ce lien pour voir les données disponibles dans cette phrase.

simplement si Fix est 'A' cela signifie que l'emplacement est disponible, si Fix est 'V' cela signifie que l'emplacement n'est pas disponible.

notez que ATSAMD21 a RTC interne, mais ici je ne l'utilise pas et à la place j'utilise l'heure et la date directement à partir du GPS, donc si vous ne voulez pas utiliser la batterie de secours CR1220, une fois que vous avez déconnecté la source d'alimentation USB, vous perdez l'heure/date et pour la prochaine mise sous tension du circuit, la zone heure/date sur l'affichage sera vide jusqu'à ce que le GPS ait une valeur heure/date valide.

l'écran vous montrera l'état actuel du GPS et affichera la géolocalisation une fois qu'elle sera disponible, cependant il y a 3 LED sur la carte:

  1. LED verte connectée à PA06, et clignotera s'il y a une valeur de géolocalisation valide.
  2. LED orange connectée au PA07 et clignotera une fois par seconde s'il n'y a pas de géolocalisation valide.
  3. La LED rouge est connectée à la broche PPS du module GPS et ne clignotera que lorsqu'il y a un signal valide lié à l'emplacement.

Résultats

Le circuit a très bien fonctionné avec moi, obtenir la géolocalisation du GPS a pris 20 à 30 secondes en extérieur avec une vue dégagée vers le ciel et entre les bâtiments sans aucun problème, même avec l'antenne en bas de la carte.

Étape 4: boîtier imprimé en 3D… en quelque sorte

Étui imprimé en 3D… en quelque sorte
Étui imprimé en 3D… en quelque sorte

J'ai préparé un étui simple (support plus précis) pour ce circuit mais à cause de l'épidémie de COVID-19 et du confinement dans lequel je suis en ce moment, je n'ai pas pu joindre mon imprimante 3d pour l'imprimer, donc je mettrai à jour cette section avec stl dossier et une photo pour le titulaire une fois disponible.

Étape 5: choses à améliorer…

Choses à améliorer…
Choses à améliorer…
Choses à améliorer…
Choses à améliorer…
Choses à améliorer…
Choses à améliorer…
  1. Déplacer le connecteur SWD vers le haut car il est plus facile de le connecter à votre programmateur.
  2. En alimentant le circuit à partir d'une batterie au lithium, je l'ai fait en soudant un cavalier et cela a bien fonctionné, sachant que le régulateur linéaire (LDO) a une tension de chute de V si la (Vbat - Vout) est inférieure à la limite de Vdrop, le circuit pourrait ne pas fonctionner correctement.
  3. rendre un bouton utilisateur un peu plus gros pour qu'il soit plus facile d'appuyer.
  4. en ajoutant le code USB CDC afin que vous puissiez communiquer/concevoir un programme spécial pour MAC/PC/linux.
  5. Pour l'antenne GPS, j'ai utilisé une antenne active pour ce projet, l'utilisation d'une antenne passive est possible, en ajoutant un amplificateur opérationnel à faible bruit comme l'AT2659 (consultez également le schéma sur la fiche technique ATGM332 P.14).
  6. pour OLED 0.96' SSD1306, la bibliothèque officielle de microchip à l'origine pour l'affichage 128*32, pour modifier le code pour qu'il fonctionne avec 128*64, vous devez aller sur ssd1306.c et modifier le code (vérifier l'image).

Conseillé: