mardi 29 mai 2012

Simulation d'une sonde de température

Avant de faire le montage de la sonde de température, j'ai voulu tester mon programme de récupération de valeurs. J'ai donc simulé la sonde grâce à un potentiomètre.
Potentiomètre 4K7 (20%)
Il s'agit d'une résistance variable : la base tourne et créé plus ou moins de résistance. Lorsque le potentiomètre est en butée d'un coté, il laisse passer 0V, de l'autre coté il laisse passer 5V et entre les 2 c'est variable. Cela simule la sonde de température car cette dernière va laisser passer entre 0 et 5V selon la température qu'elle va analyser.

Voici le montage du potentiomètre sur la carte Arduino :
Montage du potentiomètre sur la carte Arduino

Le potentiomètre est branché sur les pins suivantes : 5V, GND et A0. Je récupère donc les valeurs du potentiomètre sur la pin A0 comme le montre mon programme ci-dessous :
Résultats du test avec le potentiomètre

L'important dans le code affiché est la fonction "analogRead(broche)" qui lit la valeur de la tension présente sur la broche spécifiée et transforme cette tension d'entrée entre 0 et 5V en une valeur numérique entière comprise entre 0 et 1023. On voit donc qu'au début le potentiomètre est en butée de manière à laisser passer 0V (valeur affichée : 0), puis en tournant le potentiomètre la valeur augmente jusqu'à 1023, valeur de la butée de l'autre côté.

mardi 22 mai 2012

Réunion du mardi 22 mai 2012

Horaire : 17h à 18h
Lieu : salle A498
Personnes présentes : Carina Roels, Marianne Bénad, Abdelali Ghoulam, Saliou Diallo, Aro Ranaivondrambola

Ordre du jour
Refaire le planning initial au propre puis faire le planning du pilotage v2 à partir de cette "bonne version".

Choix du cycle
Voici notre façon de travailler :
  1. Conception générale
    1. Niveau 0
      1. Conception détaillée
      2. Réalisation
      3. Tests
    2. Niveau 1
      1. Conception détaillée
      2. Réalisation
      3. Tests
  2.  Intégration
  3. Tests finaux
Nous en déduisons que nous suivons le modèle d'un cycle en V.

Temps de travail
Nous travaillons le mercredi de 9h à 18h sans compter la pause déjeuner. Nous pouvons donc considérer que nous travaillons 7h le mercredi. D'après une estimation de notre part, nous travaillons encore 7h environ dans la semaine de manière éclatée (parfois les soirs de semaine, parfois le samedi...). Nous décidons pour plus de facilité dans la création de notre planning initial d'attribuer ces 7h en bloc le samedi. Nous avons donc 14h de travail par semaine.

Date de début/fin
Nous avons convenu que notre date de lancement de projet avait eu lieu le 27 septembre 2012 et que la date de fin sera le 16 juin 2012.


lundi 14 mai 2012

Programmer sur l'Arduino

Pour développer sur la carte Arduino Uno SMD, il faut installer le logiciel Arduino. Il s'agit d'un espace de développement intégré (EDI) dédié au langage Arduino.

Le logiciel Arduino a pour fonctions principales :
  • de pouvoir écrire et compiler des programmes pour la carte Arduino,
  • de se connecter avec la carte Arduino pour y transférer les programmes,
  • de communiquer avec la carte Arduino.

Après installation, il faut configurer le logiciel Arduino en choisissant la carte sur laquelle on va développer puis le port utilisé :



Une fois la configuration correctement effectuée, nous pouvons commencer à coder.

Le langage Arduino est basé sur du C/C++. Nous retrouvons la plupart des types de variables (boolean, char, byte, int...) et de structures (if...else, for, switch case, while...). Il y a cependant quelques constantes et fonctions particulières :
  • HIGH | LOW
    • Lorsqu'on lit ou on écrit sur une broche numérique, seuls deux états distincts sont possible, la broche ne peut être qu'à deux valeurs : HIGH ou LOW.
  • INPUT | OUTPUT
    • Les broches d'une carte Arduino configurées en mode INPUT sont dites en état de "haute-impédance" (en état de "haute résistance" en quelque sorte). Une broche configurée en INPUT ne consomme qu'une toute petite intensité sur le circuit sur laquelle elle est connectée.
    • Les broches configurées en mode OUTPUT sont en état dit de "basse-impédance" (en état de "basse résistance"). Cela veut dire qu'elle peuvent fournir une quantité significative de courant aux autres circuits.
  • pinMode(broche, mode)
    • Configure la broche spécifiée pour qu'elle se comporte soit en entrée, soit en sortie.
  • digitalWrite(broche, valeur) 
    • Met un niveau logique HIGH ou LOW sur une broche numérique.
  • int digitalRead(broche)
    • Lit l'état (= le niveau logique) d'une broche précise en entrée numérique, et renvoie la valeur HIGH ou LOW.
  • int analogRead(broche)
    • Lit la valeur de la tension présente sur la broche spécifiée et transforme cette tension d'entrée entre 0 et 5V en une valeur numérique entière comprise entre 0 et 1023.
  • analogWrite(broche, valeur) - PWM (Pulse Width Modulation)
    • Génère une impulsion de largeur / période voulue sur une broche de la carte Arduino.


Voici un exemple de programme permettant de faire clignoter une LED :


mercredi 9 mai 2012

Point sur les tâches au 9 mai

Légende :
Fait
A faire

Marianne
Arrosage
  • Monter le capteur de niveau d'eau
  • Tester le capteur de niveau d'eau
  • Trouver une source d'alimentation mobile
  • Mettre en place la source d'alimentation
  • Récupérer les données du capteur
  • Coder sur la Gumstix le comportement du Roomba en fonction des valeurs du capteurs
  • Trouver une pompe adaptée
  • Mettre en place le déclenchement de la pompe
SAP
  • Installer le logiciel Arduino
  • Tester un programme sur la carte Arduino
  • Brancher la sonde de température terrestre
  • Récupérer les données de la sonde
  • Traiter les données de la sonde sur l'Arduino
  • Mettre en place la communication ZigBee sur l'Arduino
  • Envoyer les infos traitées de la sonde via le ZigBee

Saliou
  • Tester Ubuntu
  • Installer Ubuntu / Angstrom
  • Installer les packages
  • Faire les configurations
    • Wifi
    • Ethernet
    • Pilotes de la vidéo
  • Tester la cross-compilation

Aro
  • Installer le logiciel XBee + Arduino
  • Communiquer basiquement entre 2 modules XBee
  • Communiquer basiquement entre 1 module XBee + 1 module XBee avec Arduino
  • Fixer les protocoles
  • Tester les protocoles
  • Tester le réseau mesh

Ali
  • Mettre en place le déplacement du robot
  • Détecter un objet à partir d'une couleur
  • Découper l'image en 9
  • Se déplacer en fonction de l'endroit où se trouve l'objet par rapport aux 9 zones
  • Définir la condition d'arrêt
  • Fusionner le déplacement avec la condition d'arrêt

mercredi 2 mai 2012

Test du capteur de niveau d'eau

Voici une vidéo présentant le test de notre capteur de niveau d'eau.
Il y a 4 LEDS :


Légende des LEDs
Le relais est mis sous tension dès que le liquide a atteint le niveau "trop haut" et est débranché lorsque le liquide atteint le niveau "trop bas".


Explication de la vidéo ci-dessous :
  • Au début, le capteur est sec et hors de l'eau. La LED verte est donc allumée.
  • Puis le capteur est plongé dans l'eau et la LED jaune s'allume.
  • Lorsque le capteur est entièrement immergé, la LED rouge et la LED relais s'allument.
  • En ressortant un peu le capteur de l'eau, la LED jaune s'allume signe de retour à un niveau normal. La LED relais reste allumée.
  • Une fois le capteur sorti de l'eau et sec (on le secoue pour faire tomber les gouttes), la LED verte s'allume à nouveau.

Le test nous permet de voir que notre matériel et notre branchement fonctionnent à merveilles !

Montage du capteur de niveau d'eau

Afin de remplir les réservoir des robots lorsqu'ils n'ont plus d'eau, nous avons acheter de quoi détecter les niveaux d'eau. Voici ce à quoi ressemble le kit à l'achat :

Kit à plat du capteur de niveau d'eau.
Capteur de niveau et carte permettant l'analyse du niveau d'eau.

Après une matinée de montage, voilà à quoi ressemble la carte avec tous ces composants.
Une fois tous les composants mis en place...

L'aide de Benoît nous est précieuse pour trouver notre source d'alimentation peu commune : 16 à 18V.
...test du branchement de la carte.
L'allumage de la LED verte indique que tout est correctement soudé et branché.