Étape 3: Matlab : nous allons dompter la bête !
Ici, je suppose que vous êtes familiarisé avec l’environnement Matlab, au moins avec la base. Si mon hypothèse n’est pas correct, ne paniquez pas, et jetez un oeil ici : Matlab pour les débutants!
Je vais aborder le côté Matlab de la manière suivante : J’ai crée un fichier de ".m" seul script qui comprendra toutes les fonctions que nous allons utiliser. De cette façon, une fois que vous aurez l’emprise sur chaque section du script (MainScript), tout ce que vous avez à faire est lancez-le en écrivant son nom dans l’espace de travail, et tout à coup vous aurez Arduino et votre PC à l’échange de données agréablement et facilement ! Assurez-vous que vous enregistrez tous les trois documents que j’ai joint ici dans le même dossier que doit avoir été choisie comme le dossier actif dans la fenêtre « Dossier en cours » dans la vue principale de Matlab ! En règle générale, que vous devez vous rappeler que Matlab doit accéder facilement à la fonction que vous citez dans le script principal, sinon vous obtenez un signal d’erreur d’une fonction non déclarée !
Nous allons commencer le script avec l’enregistrement du nom du port série dans la variable comPort. Comme j’ai dit avant, assurez-vous que vous connaissez le nom exact du Arduino est connecté au port. Le nouvel article, nous nous occupons de l’initialisation de communication série. Nous allons écrire un fonction fichier nommé setupSerial, qui accepte, comme entrée, l’en-tête de port série et redonne l' objet serial arduino et la valeur "serialFlag" qui nous dit que l’objet de série a été créé.
petite astuce très utile: Si vous avez besoin d’aide avec la fonction de la syntaxe ou avec toute autre commande de Matlab, n’hésitez pas à demander à Matlab ! Vous avez juste à taper dans la fenêtre de commande Matab, « aider » suivie de la rubrique que vous souhaitez en savoir plus. Si le sujet existe, Matlab vous donnera une brève réponse directement à la veuve de commande, sinon vous pouvez naviguer dans le navigateur « aide » en tapant « doc » dans l’espace de travail et cliquez sur entrer.
Passons ! Je vais finira analysant le MainScript avant de prendre en considération les autres fonctions.
Il s’agit de la section consacrée à la visualisation graphique des données : une figure h est créé, et un système d’un x et axe des y et une ligne, qui nous aidera à visualiser les données que nous obtenons du capteur., sont créés aussi bien garder à l’esprit que chaque fois que vous créez un objet, quel que soit son type peut être (séries objets une figure, une interface graphique d’objet... ecc) vous créez également une série de propriétés associés à lui. Vous pouvez utiliser ces propriétés pour appeler des fonctions ou à créer des conditions pour les boucles (while, car, si... ecc). La commande « if(~exist('h','var'))... » a-t-il un sens plus maintenant?? NON ? Ecoute : nous voulons vérifier si la propriété var de l' objet h est égal à zéro ! Si c’est le cas, que nous devons créer l’objet de la figure, depuis un 0 dans la propriété var , signifie que le chiffre n’existe pas encore!!
Maintenant venons-en à la dernière section du script. Ici vous avez quelques lignes qui agissent comme le noyau de l’ensemble du programme : avec la boucle « while » nous allons envoyer à l’Arduino, la commande « R », qui signifie « Hé vous, lisez la température pour moi et me renvoyer le résultat de votre lecture! ». Vous remarquerez que nous avons une nouvelle fonction à l’intérieur le tout en boucle, c'est-à-dire, readTemp, brièvement, il s’occupera de la bureaucratie qui se cache derrière la communication sérielle du point de vue de Matlab. Je vais revenir à elle quand je vais analyser les deux fonctions du script. Une information est manquante : le taux d’échantillonnage, au cours de laquelle nous aimerions obtenir des lectures de température. Elle s’exprime par la commande « pause » à la fin du while boucle ! Si vous souhaitez sélectionner une valeur de température toutes les heures, vous devez écrire pause(3600) (commande pause acceptent le paramètre en secondes).
OK, maintenant nous allons analyser les deux fonctions :
setupSerial : ce qui crée l’objet serial Arduino connecté au port série comPort. La commande pour créer l’objet de série est tout simplement nom-de-la-objet = série (nom-de-le-port). Aussi simple que ça ! Notez que, en tant que la propriété de l’objet de série, nous établissons (à l’aide de la commande set , suivie de la propriété dont la valeur que nous voulons créer) le débit en bauds 9600 égale à celle définie sur l’Arduino.
readTemp: peu de choses plus vous devez maintenant : n’oubliez pas les commandes, nous avons utilisé sur Arduino à lire de la mémoire tampon de série et écrire dans Serial.println et Serial.read ? Ici sont respectivement remplacés par fprintf et fscanf . C’est tout. La syntaxe est facile et vous pouvez le vérifier dans le navigateur d’aide de Matlab. fprintf exige, comme la première entrée, l’objet de série que nous voulons écrire, et comme le deuxième élément d’information le personnage, nous tenons à envoyer (dans notre cas "R", ce qui signifie pour nous "Lire"). fscanf veut l’objet série aussi bien, et le format que nous voulons que les données à visualiser, dans notre cas un floating point numéro indiqué avec le simbol "%f" (DHT 22 valeurs de température sont résolus jusqu'à un dixième de degré celsius).
Notez que, la quantité de lectures qui vont être enregistrées sera égale à la valeur de la variable « buf_len » (la valeur par défaut dans le script est 30, changez-le à votre propre gré!). Après la lecture 30, une nouvelle sera remplacée sur la première lecture stockée dans le tableau « tcdata », qui contiendra toutes les valeurs de température dans un ordre chronologique.