GEO Data Logger : Arduino + GPS + SD + accéléromètre pour enregistrer, horodatage et les données des capteurs géo-tag (5 / 10 étapes)

Étape 5: Le programme ARDUINO qui tire tous ensemble

Ce programme lit le récepteur GPS de LS20031 et enregistre les phrases NMEA générées par le récepteur comme-est sur la carte SD.  Le programme lit également le X, Y, broches Z de l’accéléromètre ADXL335 et enregistre avec chaque ligne NMEA sauvés.

Le programme Arduino, que j’ai développé pour ce prototype utilise la bibliothèque de SD. Je n’utilise pas de TinyGPS pour interagir avec le récepteur GPS ou SoftwareSerial.  Je n’ai pas TinyGPS pour ce projet, étant donné que j’enregistre des messages NMEA bruts sur la carte SD. Quant à la bibliothèque de SoftwareSerial, après j’ai rencontré quelques problèmes qui ont été longs à résoudre, j’ai décidé de s’en tenir à la bibliothèque de serial Arduino par défaut.

L’inconvénient de ne pas utiliser SoftwareSerial dans ce projet, c’est que le récepteur GPS utiliseront broches RX/TX de l’Arduino pour lire des commandes de configuration et d’envoyer des données GPS à l’Arduino.  Cela signifie que nous n’avons pas l’Arduino Serial Monitor disponible pour le débogage.

Plus important encore, nous allons devoir débrancher PIN0 (RX du Arduino Uno) de broche TX du récepteur GPS avant de télécharger un programme Arduino. Si nous ne PIN0 (RX de l’Arduino) Débrancher le récepteur GPS, il échouera probablement Télécharger le programme Arduino du PC à l’Arduino en raison de conflits de série. J’ai trouvé ceci pour être un petit prix pour le gain de codage compacité et raccourcir le cycle de développement.

Les données enregistrées par ce programme à la carte SD ressemblera à la liste ci-dessous. Théoriquement, cinq lignes de données GPS et capteur seront générés par seconde. Ce journal peut être importé dans un fichier délimité par des virgules dans une foule d’applications telles que des feuilles de calcul ou de bases de données pour le nettoyage, analyse et cartographie :

  • 446,425,542, GPBOD, 093116.200, A, N-3158.0155, 03551.5032, E, 18,78, 291,56, 111112,,, A * 54
  • 443,442,542, GPBOD, 093116.400, A, N-3158.0159, 03551.5020, E, 18,78, 291.79, 111112,,, A * 50
  • 444,435,523, GPBOD, 093116.600, A, N-3158.0163, 03551.5009, E, 18,77, 292,32, 111112,,, A * 53
  • 444,432,525, PRMC, 093116.800, A, N-3158.0167, 03551.4998, E, 18,75, 292.88, 111112,,, A * 5 A

// ====================== START PROGRAM ==========================
/*

PROJET : Bump-O-Meter (enregistreur de données de Geo pour capteurs)

Développeur : Hazim Bitar (techbitar arobase gmail point com)

DESCRIPTION : Ce programme lit les données du capteur accéléromètre ADXL335 (X, Y, Z) ou tout
données du capteur, puis enregistre ces données sur une carte SD avec géo-localisation et un timbre de date/heure
générée par le récepteur GPS LS20031

LICENCE : je suis placer ce code dans le domaine public

DATE : 16 NOVEMBRE 2012

*/

#include
#define LED 8 / / statut LED pour les opérations de SD
#define BUFF_MAX 100 / / taille de tampons GPS & SD

Fichier GPSlog ;

void setup()
{
Serial.Begin(4800) ; Le récepteur GPS de LS20031 doit être défini sur 4800 pour programme fonctionne

Vous pouvez utiliser les instructions ci-dessous pour envoyer des commandes de configuration du GPS de LS20031.
Mais pour ce faire, le débit en bauds doit être défini sur le récepteur GPS de LS20031 à 4800.
Vous pouvez utiliser l’utilitaire de Psiloc 1.4 pour configurer ou interrogez le récepteur GPS LS20031.
//
LS20031 COMMANDES :
Serial.Print("$PMTK251,4800*27\r\n") ;  Définir le taux en bauds GPS
Serial.Print("$PMTK314,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*2C\r\n") ; Valeur du CMR 5 correctifs/seconde.
Serial.Print("$PMTK220,200*2C\r\n") ;  Taux de mise à jour GPS à 5Hz

pinMode (sortie 10,) ;   Par notes de SD de bibliothèque, broche 10 doit être définie à la sortie
pinMode (LED, sortie) ;

if (!. SD.begin(4)) {/ / SD carte détectée ?
digitalWrite(LED,LOW) ;   désactiver le voyant d’État si SD détection échoue
retour ;
}
d’autre digitalWrite (LED, haute) ; LED s’allume si la détection de la SD est OK

GPSlog = SD.open (« GPS.log », O_CREAT | O_WRITE) ;  ouvrir/ajouter à un fichier GPS.log
if (!. GPSlog) {/ / test si le fichier peut être ouvert
digitalWrite(LED,LOW) ;     éteindre la LED de statut si échec du fichier ouvert
retour ;
}
d’autre digitalWrite (LED, haute) ;  VOYANT d’État s’allume si le fichier ouvert est OK
}

void loop()
{
inBuffer Char [BUFF_MAX] ;    tampon utilisé pour lire des lignes NMEA du GPS
outBuffer octet [BUFF_MAX] ;   tampon utilisé pour écrire les lignes NMEA sur carte SD
int sizeBuffer = 0 ;        compteur du nombre de caractères par ligne

ICI, NOUS DÉCLARONS UN CAPTEUR ANALOGIQUE PLUS OU MOINS VARIABLES
char an0 [4], an1 [4], an2 [4] ;  variables char pour stocker des valeurs analogiques broches. Totales 6 broches de 0-5

tandis que (Serial.available() > 0) / / si les données séries de GPS
{
sizeBuffer = Serial.readBytesUntil ('\n', inBuffer, BUFF_MAX) ;  lire une seule ligne NMEA GPS jusqu’en fin de ligne

C’EST OÙ NOUS LISONS DES VALEURS DE CAPTEUR
EGTI (analogRead(A0), an0, 10) ;    X lire et convertir char broche analogique numérique
EGTI (analogRead(A1), an1, 10) ;    // Y  ..
EGTI (analogRead(A2), an2, 10) ;    // Z  ..
pour (int i = 0; i < BUFF_MAX; i ++) outBuffer [i] = inBuffer [i] ;   créer le fichier CSV sur le DD
int j = 0 ;

C’EST OÙ NOUS ÉCRIRE DES DONNÉES DE CAPTEUR DANS LE DOSSIER DU DÉVELOPPEMENT DURABLE
Si {(GPSlog)
GPSlog.print(an0) ;    écrire ANALOG0 (X) sur carte SD
GPSlog.print (",") ;
GPSlog.print(an1) ;    écrire ANALOG1 (Y) SD
GPSlog.print (",") ;
GPSlog.print(an2) ;    écrire ANALOG2 (Z) sur carte SD
GPSlog.print (",") ;
Si vous voulez seulement sortie NMEA connecté, toutes ces déclarations GPSlog.print commentaire
GPSlog.write (outBuffer, sizeBuffer) ;  écrire la sortie NMEA GPS sur carte SD
GPSlog.print("\r\n") ;
GPSlog.flush() ;
digitalWrite (LED, haute) ;  Garder allumée tant que l’enregistrement SD fonctionne.
}
else {}
Si le fichier n’a pas ouvert, éteignez LED
digitalWrite (LED, faible) ;  Éteignez LED en cas d’échec de l’écriture dans le fichier
}
}
}
// ================ END PROGRAM =====================

COMMENT AJOUTER/SUPPRIMER DES CAPTEURS POUR L’ENREGISTREUR DE DONNÉES DE GEO

Ce programme va lire jusqu'à 6 capteurs analogiques et conserver leurs valeurs sur la carte SD. Il y a deux places dans le programme où vous avez besoin d’apporter des modifications à vos besoins :

1. DÉCLARATION DE VARIABLES DE CAPTEUR

Dans la section Déclaration, nous créons des variables de texte qui contiennent les valeurs numériques convertis des capteurs avant de nous écrire sur la carte SD.  Ici, nous sommes déclarant pour un maximum de 6 capteurs analogiques. Réduire au besoin.

char an0 [4], an1 [4], an2 [4] ; an3 [4] ; AN4 [4] ; an5 [4] ;

2. LECTURE CAPTEURS

Dans cette partie du programme, nous convertissons les lectures du capteur numérique de texte avant de nous écrire sur la carte SD. Changer le segment de code suivant dans le programme pour ajouter/supprimer des capteurs selon les besoins. Vous pouvez avoir jusqu'à 6 capteurs analogiques lire dans ce programme :

EGTI (analogRead(A0), an0, 10) ;
EGTI (analogRead(A1), an1, 10) ;
EGTI (analogRead(A2), an2, 10) ;
EGTI (analogRead(A3), an0, 10) ;
EGTI (analogRead(A4), an1, 10) ;
EGTI (analogRead(A5), an2, 10) ;

3. ÉCRIRE DES VALEURS DE CAPTEURS SUR LA CARTE SD

Après que nous avons lu l’ou les capteurs qui précède, nous écrivons leurs valeurs de texte sur la carte SD. Dans le segment de code ci-dessous, nous ajoutons une virgule entre chaque valeur de la sonde écrit sur la carte SD, donc nous pouvons les séparer. Cela rend plus facile de les importer dans un tableur comme texte délimité par des virgules :

GPSlog.print(an0) ;    écrire ANALOG0 sur carte SD
GPSlog.print (",") ;
GPSlog.print(an1) ;    écrire ANALOG1 sur carte SD
GPSlog.print (",") ;
GPSlog.print(an2) ;    écrire ANALOG2 sur carte SD
GPSlog.print (",") ;
GPSlog.print(an0) ;    écrire ANALOG3 sur carte SD
GPSlog.print (",") ;
GPSlog.print(an1) ;    écrire ANALOG4 sur carte SD
GPSlog.print (",") ;
GPSlog.print(an2) ;    écrire ANALOG5 sur carte SD
GPSlog.print (",") ;

Articles Liés

Bouclier de l’accéléromètre pour cours de physique et au-delà

Bouclier de l’accéléromètre pour cours de physique et au-delà

lors d'un cours de physique nous étions préformage une expérience de physique pour mesurer l'accélération due à graivty - 9,8 m/s ^ 2 et alors que nous n'a pas fait des nouvelles découvertes de la physique j'ai eu une idée pour améliorer l'expérience
Arduino Nano - tutoriel accéléromètre numérique 3 axes 12 bits/8 bits MMA8452Q

Arduino Nano - tutoriel accéléromètre numérique 3 axes 12 bits/8 bits MMA8452Q

Le MMA8452Q est un accéléromètre intelligente, faible puissance, trois axes, capacitif, micro-usinés avec une résolution de 12 bits. Options programmables d'utilisateur flexible sont fournies avec l'aide des fonctions incorporées dans l'accéléromètre
MPU6050 : Arduino 6 axes accéléromètre + Gyro - GY 521 Test & Simulation 3D

MPU6050 : Arduino 6 axes accéléromètre + Gyro - GY 521 Test & Simulation 3D

Sont vous qui cherchent à faire votre propre drone quadcopter ou RC avion avec Arduino, mais ne sais pas comment faire pour obtenir le travail de gyroscope ? Peut-être vous avez déjà acheté quelques modules de 6 axes MPU6050 (sur les conseils de brea
Arduino / traitement ADXL330 accéléromètre

Arduino / traitement ADXL330 accéléromètre

C'est encore un work in progress. Actuellement seulement montrant le déplacement d'axe X et Y, encore pour montrer quoi que ce soit sur l'axe z. J'espère qu'un jour il sera. S'il vous plaît noter et commenter aussi bien.Visitez http://retardokiddo.bl
Arduino Nano : Sonde d’I2C accéléromètre Gyroscope boussole MPU9250 avec Visuino

Arduino Nano : Sonde d’I2C accéléromètre Gyroscope boussole MPU9250 avec Visuino

MPU9250est l'un des plus avancés combiné accéléromètre, Gyroscope et boussole capteurs de petite taille actuellement disponibles. Ils ont de nombreuses fonctionnalités avancées, y compris le filtrage passe-bas, détection de mouvement et même un proce
Comment programmer un accéléromètre Arduino pour les molettes de contrôle

Comment programmer un accéléromètre Arduino pour les molettes de contrôle

Commande de mouvement est toujours quelque chose qui a atteint un sommet de mon intérêt. Il s'agit surtout si récemment quand j'ai découvert combien il est facile Arduino rend au programme. Une fois mis en place correctement, cela peut facilement dev
Robot de peinture fenêtre (arduino, traitement, accéléromètre)

Robot de peinture fenêtre (arduino, traitement, accéléromètre)

l'idée de ce projet provient d'un de mes préférés ' ibles : le polargraph. J'ai aimé le style de dessin et de la pensée comment cool serait de le faire sur le côté d'un bâtiment ? Malheureusement, les défis pour la mise en place de tel un grand polar
Guide de gyroscope et accéléromètre avec Arduino, y compris le filtrage de Kalman

Guide de gyroscope et accéléromètre avec Arduino, y compris le filtrage de Kalman

ce guide a été publié tout d'abord lors du forum de l'Arduino et peut être trouvé ici : http://arduino.cc/forum/index.php/topic, 58048.0.htmlJ'ai juste elle publiée, donc encore plus obtiendrez utilisation de celui-ci. Le code peut être trouvé ici :h
Utiliser un accéléromètre et un Gyroscope avec Arduino

Utiliser un accéléromètre et un Gyroscope avec Arduino

j'ai acheté récemment une combinaison 3 axes accéléromètre et le gyroscope 2 axes de Sparkfun et je voulais mettre du code j'ai utilisé pour le faire marche.  Je suis décidé de l'utiliser dans un Arduino base contrôleur MIDI que je vais poster bientô
Capture de mouvement avec un accéléromètre Arduino w / XBee Comms

Capture de mouvement avec un accéléromètre Arduino w / XBee Comms

***************************************MIS À JOUR LE 10 JUIN 2014 ***Comme promis, ce Instructable a été mis à jour afin d'inclure une section concernant la communication XBee. En outre, un nouveau Instructable sera publié prochainement concernant le
ACCÉLÉROMÈTRE & enregistreur + MAKE & utilisation

ACCÉLÉROMÈTRE & enregistreur + MAKE & utilisation

Contexte et butIl y a quelques semaines, un ami a brisé son avant-bras : elle était dans un autobus dont le chauffeur a violemment tiré les freins, et elle est tombée. Cela m'a rappelé les quelques fois où j'ai eu (poliment) rappelle le chauffeur de
Planeur accéléromètre Shirt

Planeur accéléromètre Shirt

Ce sommet a été inspiré par la joie que j'en retire étant à l'envers et faire la roue !Juste un cercle de LEDs qui commencent à tourner (un peu comme le ballon de plage de rotation de la mort).Profitez !Etape 1: Besoin de chosesMatériauxLilypad Ardui
Inclinez la visualisation de l’angle avec Edison, accéléromètre et Python

Inclinez la visualisation de l’angle avec Edison, accéléromètre et Python

J'ai récemment acheté une carte arduino de Intel Edison. Après le clignotement de la LED intégrée, j'ai voulu faire quelque chose d'un peu plus intéressant mais assez simple. Après avoir lu en ligne vers le haut, j'ai décidé sur accéléromètre basé in
Accéléromètre & Gyro tutoriel

Accéléromètre & Gyro tutoriel

IntroductionCe guide est destiné à tous ceux intéressés à utiliser des accéléromètres et Gyroscopes ainsi que dispositifs combinés d'IMU (Unité de mesure inertielle) dans leurs projets d'électroniqueNous allons aborder :Que mesure un accéléromètre ?Q