Étape 7: Communication série (partie 1)
J’ai examiné plusieurs options pour l’envoi des données de contrôle entre l’ordinateur portable et la voiture. Wi-Fi ou bluetooth semble être les solutions évidentes, mais ne peut fournir la gamme que je tiens. Plus les projets arduino sans fil semblent utiliser les modules XBee, qui s’appuient sur une communication série, alors j’ai décidé d’utiliser une interface série.
La communication de la voiture ou l’ordinateur portable fonctionne comme ceci :
1. voiture envoie une chaîne de série (avec une structure fixe), avec connu de début et de fin des caractères du message.
2. programme c# continuellement interroge l’ordinateur portable de série interface. Lorsqu’il reçoit une chaîne série, contenant le début attendu et la fin des caractères, le programme c# prépare sa propre chaîne de série (avec une structure fixe) et l’envoie à la voiture.
3. la voiture reçoit la chaîne série, effectue une vérification rapide (basée sur un terme de caractère du message et de la longueur du message), sort et traite les informations, si le message est "valid" et attend un délai spécifié avant de préparer et d’envoyer un autre message - et le cycle se répète.
Remarque : Si le message reçu n’est pas jugé « valid » à l’Arduino, le sketch Arduino va arrêter la voiture et centre de la direction.
La structure de message pour les messages envoyés à la voiture, depuis le programme c#, est :
500 500, F, D00, Z
La signification de cette chaîne est :
Tout d’abord sur le terrain : accélérateur (centrée autour de 500)
Deuxième champ : direction (centrée autour de 500)
Troisième champ : Slowmode - F: Fast, S: Slow (max throttle est halfspeed)
Quatrième sur le terrain : phares
Premier caractère : D: Dark (lumières), L: s’allume
Deuxième caractère : luminosité (0 - 9)
Troisième personnage : séquence de la lumière (0 - 9)
Champ final : fin du caractère de message (Z)
Plus de détails sur certains champs seront donnés dans les étapes ultérieures
La structure de message pour les messages envoyés à partir de la voiture, pour le programme c#, est :
A, 500, 500, F, R, D00, Z
Tout d’abord sur le terrain : début de caractère message (A)
Deuxième champ : Accélérateur (centrée autour de 500)
Troisième champ : Direction (centrée autour de 500)
Quatrième zone : Slowmode - F: Fast, S: Slow (max throttle est halfspeed)
Cinquième champ : phares
Premier caractère : D: Dark (lumières), L: s’allume
Deuxième caractère : luminosité (0 - 9)
Troisième personnage : séquence de la lumière (0 - 9)
Sixième champ : rumble (R - rumble, O - off)
Champ final : fin du caractère de message (Z)
La plupart de ces champs est juste faisant écho à ce qui a été reçu par l’Arduino. Cela a été fait comme un indicateur visuel de la santé de l’interface série. Si l’interface ne fonctionne pas correctement, doivent correspondre à la sortie et entrée des chaînes affichées dans le programme c#.
Cette méthode de communication série a été initialement développée en utilisant une connexion série câblée (c'est-à-dire en utilisant le câble USB Arduino). J’ai été en mesure de régler le retard du côté de l’Arduino à 20ms, afin que la fréquence du message était environ 50Hz. Avec le câble USB, j’ai eu aucun problème avec la communication et pourrait obtenir stable message reçu aux deux extrémités. Le taux de baud était fixé à 38400.