Construire un compteur de vitesse numérique - SparkFun Electronics
Niveau: Débutant
Je ne suis pas une mamie, et je ne conduis pas
comme l'un ou l'autre, mais il y a deux semaines, je conduisais ma voiture de fiancée et a remarqué que les gens étaient tout simplement voler par moi sur l'autoroute. Le compteur de vitesse a dit que je conduisais un peu plus la limite de vitesse. Par hasard, je suis passé un de ces remorques piège de vitesse que la police a mis sur le côté de la route. À ma grande surprise il y avait un différentiel de 10 milles à l'heure entre la vitesse indiquée sur le piège et la vitesse indiquée sur mon compteur de vitesse! Je me demandais instantanément combien de fois ma fiancée a été klaxonné à. Donc, je l'ai fait ce que tout bon enginerd / petit ami ferait; Je lui construit un nouveau! Dans ce tutoriel, je vais vous montrer comment je 4 différents produits SparkFun pour construire un GPS assez cool alimenté compteur de vitesse numérique.

J'ai commencé avec le Tracker Package (parce que j'avais un de rechange sur mon bureau), mais vous pouvez utiliser un appareil GPS autour de vous qui a un UART disponible. Le code de ce tutoriel a été écrit pour le LPC2148 ARM7, qui est sur le Tracker Package, mais il serait assez simple de le modifier pour travailler sur toute plate-forme. Avec le Tracker Package je besoin d'un module GPS; J'ai choisi le EM408 parce que je suis familier avec elle. J'ai aussi besoin d'une carte microSD pour que je puisse utiliser le câble USB pour charger ARM Bootloader mon code sur la carte.

Il y a quatre produits différents, nous devons connecter pour obtenir cette chose prêt pour la programmation: Tracker Package, l'écran LCD graphique, le sac à dos graphique en série, et le 5V carte Step-Up. Comme cela devrait être évident, le module GPS se branche directement dans le Tracker Package et la carte microSD aussi juste est insérée dans la prise microSD sur la carte. Obtenir le sac à dos LCD sur l'écran LCD est aussi facile que la soudure d'une tête femelle sur une des planches, et un en-tête mâle sur l'autre, et les brancher.

Puisque nous ne pouvons pas utiliser la CCV sur l'en-tête, nous devrons juste prendre le pouvoir directement de la batterie à la carte élévateur 5V. Je mets la carte de step-up sur une planche à pain de sorte qu'il était plus facile de travailler avec, mais vous pouvez probablement trouver un moyen d'obtenir ce travail sans lui. Une fois que nous avons le pouvoir au conseil d'évasion, nous allons connecter la sortie de 5 V au dos série et nous sommes bon pour vous!

La rédaction du code
Le code de ce projet peut être divisé
en deux parties générales: obtenir les données de vitesse à partir du module GPS, et d'envoyer les données à l'écran LCD. La première chose que nous devons faire, cependant, est tirer l'indicateur de vitesse. Le compteur de vitesse est vraiment juste un cercle avec un tas de chiffres placés à l'intérieur de celui-ci. Pete a fait un excellent travail sur le firmware de série Sac à dos graphique et inclus une commande de cercle, ainsi que des commandes de texte. Tout ce que je devais faire était à comprendre la taille que je voulais placer le cercle et où le placer, ainsi que là où je voulais placer tout le texte. Une fois que je savais que ces choses que je viens d'avoir à envoyer les commandes série au dos LCD. Les commandes de série pour le sac à dos LCD peuvent être trouvés ici dans la série Fiche technique Sac à dos Graphic.
Pour être honnête, je trouve la taille et l'emplacement du cercle et des chiffres en utilisant tâtonnement (. Beaucoup d'erreur, laissez-moi vous le dire!). Vous pouvez voir tous les numéros dans la fonction drawSpeedometerOutline du fichier Speedometer.c et le fichier Speedometer.h, mais je peux rapidement vous dire que j'ai utilisé un cercle avec un rayon de 34 pixels centrés sur la coordonnées X, Y 34, 26. Est-il semble bizarre que le centre du cercle est à une hauteur de 26 pixels, mais le rayon du cercle est de 34? Il semblerait que si le cercle courrait le fond de l'écran LCD. Et il le fait! Mais ce fut précisément le regard que je visais.

Maintenant que j'ai le contour de mon compteur de vitesse, je juste besoin d'un? Aiguille? pour indiquer la vitesse actuelle. Je pensais que la meilleure façon de le faire serait d'utiliser la commande LINE sur le sac à dos de série, mais je aurais besoin encore de connaître les coordonnées de la ligne qui correspond à chaque tique sur le compteur de vitesse. Malheureusement, cela a appelé à un peu de trigonométrie! Je suppose que je aurais pu coincé avec ma méthode d'essai et d'erreur, mais je voulais terminer quelque temps de ce siècle; donc je fait sortir la calculatrice (bien, en fait je busted Excel, mais vous obtenez l'image). Jetez un oeil à ce chiffre et les équations pour voir comment j'ai pu obtenir les coordonnées de la ligne.

Nous savons un ensemble de coordonnées pour l'aiguille sera le centre du cercle; la longueur de l'aiguille est à vous. J'ai choisi mon aiguille pour être 20 pixels de long parce qu'il semblait que l'aiguille pourrait aller tout autour de l'indicateur de vitesse sans courir sur les chiffres à l'intérieur du cercle. La connaissance de ces deux choses me permettrait de trouver le deuxième ensemble de coordonnées X, Y pour chaque MPH sur le compteur de vitesse. La première chose que j'ai été rapporte les degrés du cercle à une vitesse. Je veux que le compteur de vitesse pour afficher jusqu'à 100 mph (même si il n'y a aucun moyen que la voiture ne sera jamais atteint cette vitesse). Donc, si j'estime que si je le cercle entier pour la vitesse que j'aurais 133 mph. Avec ce numéro, j'ai trouvé que (1 MPH) est égal à (2,7 degrés) sur le cercle. Maintenant, je peux utiliser les fonctions trigonométriques de base pour trouver toutes mes coordonnées. Pour trouver le Coordonnée X J'utilise l'équation:
X Longueur = sin (MPH * 2,7) * 20
Et pour trouver la coordonnée Y J'utilise l'équation:
Y Longueur = cos (MPH * 2,7) * 20
Je besoin d'effectuer cette équation pour chaque unité de MPH sur le compteur pour obtenir toutes les coordonnées X, Y; mais une feuille de calcul simple peut effectuer pour moi en un éclair. Vous pouvez voir la feuille de calcul je dans ce fichier. Après avoir exécuté le calcul que je viens de copier toutes les coordonnées dans un tableau dans mon code.
Ouf! C'est certainement assez de mathématiques pour un jour. Après avoir exécuté quelques tests avec mes nouvelles coordonnées, j'ai eu quelques bonnes nouvelles et de mauvaises nouvelles. Les bonnes nouvelles sont que les équations ont travaillé et l'aiguille du compteur de vitesse semblait être sur la bonne voie. Les mauvaises nouvelles que la commande LINE ne va être assez rapide à utiliser dans le système. Ce ne fut pas trop de tracas, je pris le code pour le sac à dos à cristaux liquides et a ajouté une nouvelle commande appelée SPEED; il faut juste fondamentalement une vitesse d'entrée et dessine une ligne.

Une fois que j'ai la vitesse du module GPS, j'ai juste besoin de l'afficher à l'écran en envoyant ma commande SPEED. Cependant, mon module GPS met à jour une seule fois à chaque seconde. Cela signifie que la valeur de ma vitesse peut sauter. Je ne veux pas l'aiguille sur mon compteur de vitesse sautiller! Je veux que l'aiguille à incrémenter de sa position actuelle à sa nouvelle position un mile par heure à la fois. Ceci est assez facile à faire en utilisant deux variables différentes pour la vitesse: l'une des variables garde la trace de la vitesse du GPS, et les autres actes variables comme un chasseur? qui est toujours en essayant d'attraper la vitesse GPS. Ainsi, la vitesse GPS peut aller de 0 à 5 MPH en une seule lecture; mais le? Chaser? La valeur doit augmenter sa vitesse en passant de 0 à 1, 1 à 2 et ainsi de suite. Ensuite, au lieu d'envoyer la vitesse GPS que nous envoyons à l'écran LCD droite, le? Chaser? vitesse à l'écran LCD ainsi nous obtenons un plus réaliste visuel sur l'écran LCD.
Où aller en partant d'ici
Vous savez que vous n'avez pas à cône op avec une table de données à utiliser dans le bon code Arduino? Arduino est capable de faire vraiment efficace trigonométrie embarqué utilisant la bibliothèque math.h. vous ne saviez ce droit? ou au moins découvert après avoir fait ce projet.
C'est bien! Je vais utiliser ce code pour ma conception senior. J'ai quelques questions bien.
Avez-vous modifié en fait le firmware de sac à dos LCD série? J'ai remarqué que vous avez dit que vous avez fait une commande de vitesse, car la commande LINE est trop lent. Est-ce que cela signifie que je vais avoir des problèmes si j'utilise cette commande en ligne? Je ne comprends pas comment il est trop lent .... de toute façon
Aussi, suis-je raison de dire que vous mettez l'indicateur de vitesse LCD coordonnées dans le code du firmware. Puis-je obtenir de ne pas déconner avec le code du firmware du tout et toujours faire de ce compteur de vitesse?
J'ai essayé la méthode ci-dessus et utilisé trigonométrie et formule ci-dessus, mais mon aiguille est partout.
J'ai même essayé tout en lui donnant des valeurs manuellement, mais le début aiguille somehwere et saute ici et tehre chaque fois qu'une nouvelle valeur est entrée!
Qu'est-ce que je fais mal?
Salut,
Merci de partager votre projet.
Je pensais à l'aide de la voiture
ordinateur de bord pour obtenir compteur de vitesse
l'information, mais je pense que le GPS
serait certainement le rendre indépendant
de toute l'électronique de la voiture.
Je pense que l'on peut modifier ce projet
être un fabricant de bruit automobile pour
les voitures électriques et hybrides qui sont
actuellement si calme, vous pouvez facilement obtenir
courir plus par eux.
David
Bonne idée Starvin. Malheureusement, j'ai une Buick que j'ai acheté des pièces neuves et il y a 20 ans sont de plus difficiles à trouver. Je suis à mon troisième VSS, qui a été acheté récupéré, et il est intermittent tout comme l'écran lui-même.
Un speedo GPS serait une solution relativement rapide et quelque chose d'intéressant pour concevoir et construire aussi bien. Quelque chose que je pouvais grattable de ma liste de choses à vous soucier :-)
j'aime la sortir de la pensée de la boîte, mais aurait suggéré un signal du capteur de vitesse du véhicule (situé sur la transmission) Je ne sais pas ce que les tensions sont honda mais mon esquive est 5V. Donc, vous pouvez le vérifier sur le GPS sig comprendre ce que la différence était alors apporter des corrections au signal du VSS (qui a été lecture lente sur le stock speedo)
Je suis un écrou de voiture et je suis apprendre beaucoup plus chaque jour sur ma voiture compliquée. J'espère contribuer ce que je sais sur les voitures en échange d'un certain apprentissage EE!