AFSK DRA818 APRS Tracker

aprs_start

Caractéristiques :

  • Module DRA818 Vhf 134~174MHz ou
  • Module DRA818 Uhf 400~470MHz
  • 1W max
  • Arduino Nano
  • Afficheur LCD 4×20
  • Support carte mSd (sauvegarde KML)
  • Afficheur OLED 128×64 (update Tracker V33)
  • Cout 35€

PCB available, mail me, f4goh at orange.fr

Introduction

C’est tout d’abord F1EDG (Jean-Pierre) qui m’a parlé du module DRA818, ensuite j’ai vu sur le net le tracker chinois AP510 (APRS Tracker VHF with GPS/Bluetooth/Thermometer/TF Card Support APRSdroid)

Etant donné que j’avais déjà développé des routines d’émission APRS, je me suis dit qu’une réalisation plus simpliste, modulaire et moins cher ne devrait pas me prendre plus de 2 à 3 jours d’étude.

Depuis, j’ai amélioré la version précédente en réalisant un circuit imprimé plus compact et plus polyvalent.

De plus l’ensemble me sera utile pour être embarqué dans un prochain ballon sonde école afin de remplacer le Baofeng UV-3R après 4 vols consécutifs.

TOUCHARD prend de la hauteur 2016 from Herisson Patrice on Vimeo.

http://www.qrz.com/db/tm72bst

Description du module DRA818

dra

Je vous recommande de lire le site suivant décrivant de façon très clair l’utilisation du DRA818. http://raqi.ca/braq/equip/DRA818V/DRA818.htm

Je rappelle que les E/S sont compatible 3.3V, il faudra alors faire une adaptation à l’aide de diviseurs de tension (chose que je n’avais pas faite sur mon proto, puis ajouté ensuite)

La diode D1 1N4007 est utile pour abaisser la tension d’alimentation du module autour de 4.5V par sécurité.

Le transistor Q1 permet de commander le PTT du module

Si le cavalier  J2 est présent le module fonctionne en QRP 0.2W

Si le cavalier  J2 est retiré le module fonctionne en QRO 1W


Description du module Tracker

nano


Mise a jour du schéma : modification du filtre d’entrée analogique (R12,R13,R7,C8)mini-dra818v2_1

mini-dra818v2_1_copper

Mise à jour sur github

Ce module est constitué principalement d’un Arduino NANO ainsi que de ses connecteurs périphériques.

  • J4 pour l’afficheur LCD
  • J7 pour le support de carte mSd
  • J9 pour la connectique GPS TTL
  • J6 le connecteur qui sera relié au module DRA818 (J1)

J’ai choisi de laisser à l’utilisateur le choix de l’implantation en fonction de l’utilisation ou l’implantation dans un boitier :

  • Soit on utilise le circuit imprimé dans sa totalité (sans le couper), auquel cas il n’ya pas besoin de souder des connecteurs du J6 (arduino) Vers J1 DRA818.
  • Soit on coupe le circuit imprimé en deux et les deux cartes seront superposées avec des entretoises de 11mm
IMAG0399
L’ensemble sur une seule plaque
IMAG0402
La plaque est coupée en deux et superposée

La modulation AFSK est réalisée par lePWM de l’arduino, il faut alors ajouter deux filtres  passe-bas du 1er ordre en cascade. Sans oublier le réglage de GAIN par potentiomètre afin de ne pas saturer l’étage d’entrée du DRA818.


En ce qui concerne le GPS (exemple VK2828A8G5 : par défaut : 9600 bauds ), les E/S doivent être compatible TTL 5V. Il faudra alors ajouter une interface série si vous utiliser un GPS classique RS232 sur DB9. Le fil noir correspond à la masse.

IMAG0407

Vous trouverez des liens de matériel dans le fichier « Bill Of Materials For track.txt »

Le diviseur de tension formé par R1 et R2 me permettra de faire des essais de décodage à l’avenir en utilisant l’ADC interne de l’Arduino.


Montage et alimentation

Vous trouverez ici l’ensemble : implantation des composants et software.

Le montage ne pose pas de problème d’assemblage particulier. On commence par souder les quelques composants CMS 1206 sur les deux cartes, puis les connecteurs femelles au pas de 2.54 mm.

L’alimentation est réalisée à partir de pack Accu USB (pour recharger un téléphone quand on est en déplacement).

L’alimentation se compose de l’accu 3.7V en-lui-même et du hacheur qui permet de recharger la batterie par la prise micro USB et aussi d’élever la tension à 5V pour alimenter le tracker.

IMAG0404

Il suffira de démonter le chargeur et de suivre le plan de câblage ci-dessous :

batterie

Je propose une mise en boitier dans le coffret suivant :

Waterproof Cover Plastic Electronic Project Box Enclosure Case115x90x55mm G1CG

IMAG0408

Un circuit imprimé découpé aux bonnes dimensions fera office de support aux entretoises du tracker et l’accu sera maintenu à l’aide d’un collier. Le chargeur et le GPS seront maintenus avec un double adhésif. Il existe d’autres solutions, mais j’ai essayé de rechercher la version la moins chère possible.

IMAG0411


Le logiciel :

La dernière version est trackerV32.ino. Les autres versions sont des programmes d’essais mais qui peuvent être bien utiles pour ceux qui voudront comprendre le logiciel.

La difficulté est de produire un signal sinusoïdal suffisamment propre en sortie des filtres. Pour cela une fréquence d’échantillonnage de 13157.9hz est suffisante. Pourquoi 13157.9hz ?

J’utilise l’interruption du timer1 : Timer1.initialize(76); donc 1/76µs=13157.9 Hz

Au départ j’ai voulu utiliser une fréquence d’échantillonnage de 26400hz, mais les 38 µs d’intervalle ne suffisaient pas à effectuer les opérations nécessaires dans le sous-programme d’interruption.

J’ai d’ailleurs utilisé la même technique décrite ici pour la fabrication d’un DDS logiciel,

Sauf que j’ai préféré utiliser le timer1 pour générer une interruption plutôt que le timer2

L’avantage d’utiliser un DDS logiciel c’est que l’on n’est pas seulement limité à la génération d’un signal AX25(1200Hz, 2200Hz), mais il est possible de générer un signal Rtty, Hellschreiber, PSK, QPSK.

Un montage utilisant cette même technique sera bientôt décrit sur ce site pour fabriquer une balise WSPR connecté sur un TRX du commerce.


Installation de la carte mSD  (option)

Micro Storage Board Mciro Pour SD TF Card Memory Shield Module SPI Pr Arduino

msd

Il faudra utiliser un module mSD tout prêt et bien veiller à ce que le modèle dispose d’un convertisseur de niveau 3.3V5V pour l’arduino. Cela est repérable facilement avec les circuits intégrés CMS soudé sur le module.

Le brochage est compatible broche à broche avec le connecteur J7 du tracker. Bien repérer le coté GND du connecteur avant branchement.


Programmation de l’arduino nano

Il y a deux possibilités :

Soit il faut utiliser Adruino IDE et compiler le code source comme indiqué ici, ou alors utiliser les fichiers HEX tout prêts. Dans ce cas il faut utiliser xloader pour charger le programme dans le nano.(fichier prog sans compilV2.zip)

2 programmes ont été compilés :

  • trackerV32_sdcard_menu sans lcd.ino : l’afficheur lcd est désactivé
  • trackerV32_sdcard_menu_avec lcd_sans rtty : le mode rtty est désactivé

Lancer l’utilitaire xloader comme l’indique l’image ci-desous choisir le bon port COM puis cliquer sur UPLOAD.

upload

Si l’Arduino nano a été acheté en chine, les drivers seront dans le fichier ch341_hl-340.zip.


A l’origine j’ai conçu le programme TRACKER avec un afficheur lcd 4×20 caractères. Celui-ci prenant trop de place, j’ai opté pour un afficheur OLED 128×64 pixels de format plus réduit. il n’y aura pas de problème pour l’intégrer dans le boitier à façade transparente.

oled

Attention au câblage, il faudra faire attention au branchement VCC, GND SDA et SCL qui n’est pas dans le même ordre que sur la carte PCB du TRACKER.

Coté programmation, il faudra utiliser la librairie modifiée LiquidCrystal_SSD1306 et utiliser le programme TRACKER V33 .

track-oled


Chargement du fichier csv

Afin d’éviter d’utiliser un logiciel de configuration propre à chaque système d’exploitation, j’ai opté pour une configuration par chargement d’un fichier csv dans l’Eeprom de l’arduino nano.

Pour cela vous devez modifier avec libre office, le fichier exemple f4goh.csv (avec libre office par exemple)

  • Ligne A : Indicatif
  • Ligne B : Ssid
  • Ligne C : Message
  • Ligne D : symbole
  • Ligne E : fréquence du dr818

Laisser pour le moment les autres lignes( G à T), ce sera fait plus tard en ligne de commande

Attention la ligne A (indicatif) doit comporter 6 caractères, ajouter un espace si votre indicatif ne comporte que 5 caractères.

aprs-csv
Ouverture du fichier csv avec Libre Office
aprs-csv2
Données de configuration

Utilisation d’Hterm et chargement du fichier CSV

Télécharger et installer l’utilitaire HTERM

Procéder comme il suit pour charger votre fichier csv dans l’EEPROM du micro-contrôleur :

  • Lancez HTERM 57600 bps sur le bon port COM.
  • Réinitialiser le micro-contrôleur : cliquez sur DTR
  • Vous avez 5 secondes pour taper la touche m (puis valider par la touche entrée) afin d’entrer dans le menu de programmation EEPROM.
  • Taper LOAD
  • Wait csv file devrait apparaitre
  • Cliquez maintenant sur Send File, sélectionner votre csv, puis Start.
  • Vous pouvez ensuite vérifier le contenu de l’EEPROM commande READ.

Paramètrage de Hterm : (ou charger le fichier de configuration pour HTERM : tracker aprs.cfg)

hterm_load config
charger le fichier de configuration (attention il faudra adapter le numéro du port COM)
  • 57600 bauds
  • newline at CR+LF
  • Décocher show newline characters
  • Type ASC
  • DTR pour le reset avec un Arduino nano
  • Send on entrer LF
hterm_config_aprs
Configuration manuelle du terminal
hterm_config_aprs_load
DTR puis 5 secondes pour envoyer le caractère m
hterm_config_aprs_load_csv
Chargement du fichier csv : LOAD
hterm_config_aprs_read_csv
Vérification de l’enregistrement du fichier csv : READ

Configuration finale du tracker APRS

Toujours dans Hterm taper HELP :

Cela liste toutes les commandes de configuration du tracker

hterm_help
Liste des commandes : HELP

Maintenant taper TRACK

Cette commande affiche la configuration en cours

hterm_track
Bilan de la configuration : TRACK

Programmation de la fréquence dans le DRA818

Par défaut, l’arduino nano ne programme pas la fréquence du DRA818

Il faut vérifier la fréquence afin de vérifier si le DRA818 est bien programmé

Pour cela taper :

Freq 144.8000

Si le DRA818 est bien câblé sur le nano il devrait y avoir « freq update done » sur le terminal Hterm

hterm_freq

Pour paramétrer l’intervalle de temps entre chaque transmission utiliser les commandes

  • INTERVAL
  • SECOND
  • NEO

Pour tester le bon fonctionnement du GPS connecté au NANO utiliser la commande

  • GPS

Finir par saisir la commande QUIT

– La led d2 est eteinte, alors le GPS n’est pas branché ou mal configuré,
– La led d2 clignote donc le fix du gps n’est pas fait,
– La led d2 est fixe, alors le fix du gps est ok, il y aura une trame en fonction de l’intervalle de temps programmé.


Liste des commandes

LOAD

Charge un fichier CSV dans l’eeprom de l’arduino

READ

Affiche le contenu de l’eeprom de l’arduino

GPS

Teste le GPS connecté en affichant la trame NMEA

HELP

Affiche une liste des commandes

TRACK

Affiche un bilan de la configuration

QUIT

Permet de quitter le menu afin de lancer mettre la balise en route


Commandes avec argument

CALL

Sans argument cette commande affiche l’indicatif.

Avec un argument, le nouvel indicatif est mémorisé dans l’Eeprom.

Exemple : CALL F4GOH

SSID

Affiche ou change le numéro d’SSID

Exemple : SSID 12

SYMBOL

Affiche ou change le symbole

Exemple : SYMBOL >

symbols_aprs

GBAUD

Affiche ou change la vitesse de transmission GPS

Exemple : GBAUD 9600

FREQ

Affiche ou change la fréquence du DRA818V

Exemple : FREQ 144.8000

DRA818V : 134 — 174MHz

INTERVAL

Affiche ou change la durée d’intervalle de transmission (en secondes de 10 à 999)

Exemple : INTERVAL 20

SECOND

Affiche ou change la seconde de synchronisation entre plusieurs balises (en secondes de 0 à 59)

Exemple : SECOND 30

MODE

Affiche ou change le mode de transmission

Exemple : MODE 0

La transmission aura lieu toutes les durées fixée par la commande INTERVAL

Exemple : MODE 1

La transmission aura lieu toutes les durées fixée par la commande NEO et SECOND

NEO

Fixe la parité de la minute de synchronisation.

N : none

E ; Even (pair)

O : Odd (Impair)

Exemple :

NEO N

SECOND 30

La transmission aura lieu toutes les minutes à l’instant 30 secondes

NEO E

SECOND 20

La transmission aura lieu toutes les minutes paires à l’instant 20 secondes

NEO O

SECOND 50

La transmission aura lieu toutes les minutes impaires à l’instant 50 secondes

Exemple :

15h13 et 50 secondes

15h15 et 50 secondes

15h17 et 50 secondes

Etc…

APRS

Affiche ou change l’activation la transmission APRS

Exemple :

APRS 1 : transmission APRS activée

APRS 0 : transmission APRS desactivée

RTTY

Affiche ou change l’activation la transmission RTTY

Exemple :

RTTY 1 : transmission RTTY activée

RTTY 0 : transmission RTTY desactivée

HELL

Affiche ou change l’activation la transmission HELL

Exemple :

HELL 1 : transmission hellschreiber activée

HELL 0 : transmission hellschreiber desactivée

LCD

Affiche ou change l’utilisation de l’afficheur LCD

SDCARD

Affiche ou change l’utilisation de l’afficheur de la carte mSD

DEBUG

Affiche ou change l’option debug sur le moniteur série

DUMP

Affiche ou change l’affichage des trames NMEA sur le moniteur série durant la transmission

LCD, SDCARD, DEBUG, DUMP ont pour argument 0 (désactivé) ou 1 (activé)

SHIFT

Affiche ou change le shift du RTTY

(la vitesse reste fixée à 45 Bauds)

Exemple : SHIFT 350

SEND (Commande à caractère expérimentale)

Envoie un message en RTTY ou hellschreiber suivant la configuration

RTTY et HELL

Exemple : SEND HELLO

La taille du message est limitée à 50 caractères (sans espaces).


Réception en rtty et hellschreiber

Cette fonction est utile dans les lancers de ballon sonde lorsque l’on recherche la nacelle au sol avec un signal faible. On note l’intérêt du hellschreiber puisque il n’y a pas de checksum comme dans l’AX25. De plus interprétation de la transmission est graphique

dm780


Conclusion

La facilité de mise en œuvre du module DRA818 est de bon augure et vous rendra probablement service sans pour cela dépenser une fortune.

Des mises à jour logiciels seront bientôt disponibles, notamment l’ajout d’un utilitaire sur PC permettant de convertir des coordonnées GPS dans un fichier KML compatible avec Google Earth.

Cette même carte sera utilisée prochainement pour réaliser une passerelle entre une station météo et aprs.fi en ajoutant un module de réception 433.92 MHz.

73 et bonnes bricoles

Anthony

Mise à jour de la version tracker V32 effectuée. (9/8/2016)

compare


Digipeater software:

digi

Le DRA818 peut décoder les trames APRS.

Le programme digipeater est maintenant disponible a l’adresse suivante :

https://github.com/f4goh/TNC

Attention, vous devez choisir le programme dans l’Arduino NANO entre le tracker et le digipeater. je n’ai pas pu regrouper l’intégralité des deux programmes dans un seul.

Le DRA818 doit être correctement configuré. pour cela j’ai ajouté un menu permettant de programmer le volume au maximum et de pas utiliser les filtres intégré au module de transmission.

Il suffit d’activer les menus 1,2,3 une seule fois.

TNC-config

Le digipeater peut, à la mise sous tension, envoyer sa trame de position. Cela est facultatif. en fonction de la ligne de code suivante :

//#define SETDIGI

Attention le digipeater transmet ce qu’il reçoit. je n’ai pas encore ajouté le routage avec le callsign du montage. (ce sera fait prochainement)

Les commandes KISS TNC sont aussi disponibles en 9600 bauds.

j’ajouterai d’ici peu la gestion de l’afficheur OLED et un igate à partir d’un ESP8266

J’ai testé l’excellent logiciel SARTrack

Ce logiciel vous permet d’afficher les positions APRS même hors connexion Internet. (il faut charger les cartes au préalable)

SAT-general

SAT-setup
Configuration de la Station
SAT-server
Utilisation du serveur APRS
SAT-TNC
Sélectionner le tinyTrack4 pour la compatibilité KISS du digipeater

Publicités
AFSK DRA818 APRS Tracker

25 réflexions sur “AFSK DRA818 APRS Tracker

  1. Dmitry dit :

    Hello!
    You wrote that for get supply voltage 3.3-4.5V for DRA possible to use voltage divider.
    But as I understand the current in transmit mode is about 700mA.
    What do you think will voltage divider work properly with such load?

    J'aime

    1. Hello Dmitry

      Voltage divider is only use for shift level conversion between arduino and DRA RX /power down lines.
      I use 1N4007 on VCC to have about 4.5V for DRA. So Voltage divider is not used for power supply.
      73
      Anthony

      J'aime

    1. Hello,
      You must check Arduino and dra818.
      Use an oscilloscope, and compare mic in signal between your models.
      Remplace arduino with sinus LF frequency generator on DRA mic_in and listen it.
      you may have not distorsion.
      73
      Anthony

      J'aime

      1. ELFROCK dit :

        Oh..thanks!!!
        I’ve checked it at oscilloscope and understood my falt 🙂
        I changed « mic » to D11 output but didn’t changed pwm divider in txing () function.
        Anthony, don’t you know if it’s possible to set d11 to 62500hz? or only 31250 ?

        J'aime

  2. Hello

    Only 31250

    change timer 2 settings

    TCCR2B = TCCR2B & 0b11111000 | 1;

    and modify pin pwm in source code

    look the output signal with your scope

    It may be works

    73

    Anthony

    http://www.arduino.cc/playground/Main/TimerPWMCheatsheet

    Pins 5 and 6: controlled by Timer 0

    Setting Divisor Frequency
    0x01 1 62500
    0x02 8 7812.5
    0x03 64 976.5625 default
    0x04 256 244.140625
    0x05 1024 61.03515625

    TCCR0B = TCCR0B & 0b11111000 | ;

    Pins 9 and 10: controlled by timer 1

    Setting Divisor Frequency
    0x01 1 31250
    0x02 8 3906.25
    0x03 64 488.28125 default
    0x04 256 122.0703125
    0x05 1024 30.517578125

    TCCR1B = TCCR1B & 0b11111000 | ;

    Pins 11 and 3: controlled by timer 2

    Setting Divisor Frequency
    0x01 1 31250
    0x02 8 3906.25
    0x03 32 976.5625
    0x04 64 488.28125 default
    0x05 128 244.140625
    0x06 256 122.0703125
    0x07 1024 30.517578125

    TCCR2B = TCCR2B & 0b11111000 | ;

    Default: delay(1000) or 1000 millis() ~ 1 second

    0x01: delay(64000) or 64000 millis() ~ 1 second
    0x02: delay(8000) or 8000 millis() ~ 1 second
    0x03: is the default
    0x04: delay(250) or 250 millis() ~ 1 second
    0x05: delay(62) or 62 millis() ~ 1 second

    J'aime

  3. Bonjour à tous,

    J’ai réalisé le tracker de base avec code primitif de 2015 (https://github.com/f4goh/DRAPRS/blob/master/exemples/trackerV1.1/trackerV1.1.ino)
    D’abord essayé avec un vieux GPS, récupéré sur un Intellitrac X8, il fonctionnait sans problèmes.
    J’ai ensuite commandé un GPS V.KEL VK2828U7G5LF bien plus compact et surtout bien plus sensible.
    Le résultat fut décevant en raison du formatage des sentences GGA qui différaient de celles de mon ancien GPS en ce sens que la latitude et longitude avaient 5 digits au lieu de 4 après la décimale.
    Intellitrac: $GPGGA,193831.514,4716.7171,N,00128.8561,W,1,04,6.0,73.8,M,48.5,M,0.0,0000*53
    V-KEL : $GPGGA,190736.00,4716.71939,N,00128.85613,W,1,10,0.96,46.1,M,48.0,M,,*76

    Le problème a été résolu en utilisant une fonction configurable par l’outil de management U-Center (version 8.21).
    Il s’agit de la fonction « Compatibility mode » accessible dans la page CFG-NMEA
    Lorsque ce flag est positionné, les latitudes & longitudes sont formatées à 4+4 digits (abcd.wxyz) et l’affichage redevient cohérent ,le tracker retrouve également ses fonctionnalités.
    Ce flag affecte aussi l’heure UTC mais dans le cas présent, c’est sans incidence.

    ——–Extrait de la doc U-Blox —————
    Compatibility Mode
    Some older NMEA applications expect the NMEA output to be formatted in a specific
    way, for example, they will only work if the latitude and longitude have exactly four
    digits behind the decimal point. u-blox receivers offer a compatibility mode to support
    these legacy applications.
    ————————————————
    Bonnes bidouilles et félicitations à Anthony pour ces belles réalisations.
    73,
    Jeff, F5BCB

    J'aime

  4. bonjour et bonne 73
    je crois que je vais en parler sur aprs facile 🙂 voici clairement un montage bien expliqué qui va faire progresser les OMs (et non om) sur des arduino et les DRA818…

    J'aime

  5. Jose Silva dit :

    Il est possible de programmer quelque chose comme PTT id avec les modules et MCU ?
    J’ai besoin d’identifier chaque module que cette radiodiffusion.
    TKS !

    J'aime

      1. Jose Silva dit :

        J’ai 3 tableaux munis de dra818v et atmega en 144 MHz et devez identifier lorsque vous diffusez (Ptt ID_POS) comme préfixe (PY1YPY).
        Je me demande si c’est possible et ce qui est le meilleur moyen de le faire.

        J'aime

  6. Hi!
    This is a really neat project! I’m considering to purchase the PCB to use it in our high altitude balloon project as a backup tracker. I might have to make some minor modifications and custom software to fit in our flight computer if it would be OK with you. We would give you credit in our documentations and on our website.
    Also could you please give me the dimensions of the PCB so I can prepare for the design while I order the boards.

    J'aime

    1. hello
      thanks for tracker interest,
      the dimensions of the PCB is 10cm by 5cm.
      this is 2 squares 5cm x 5cm.
      ok for site credits.
      Please, send me software update if you made some modifications.
      73
      Anthony

      J'aime

  7. Peter Navoy dit :

    Good day, it is possible to use both GPS module and RS232 interface. It can not be taken with TTL. Do I use the modifications? Thank you for your response.

    J'aime

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s