Outils d'utilisateurs

Outils du Site


projets:conception_d_un_robot_a_base_d_arduino

Différences

Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.

Lien vers cette vue

projets:conception_d_un_robot_a_base_d_arduino [2017/11/18 15:49]
doudoulolita
projets:conception_d_un_robot_a_base_d_arduino [2018/02/18 15:45] (Version actuelle)
thierry_dasse
Ligne 10: Ligne 10:
 liens: liens:
 tags: tags:
-usager:thierry_dasse doudoulolita ivan emmanuel sarah +usager: "le contenu est le fruit du travail des participants"
 licence:cc-by-sa licence:cc-by-sa
 }}} }}}
Ligne 21: Ligne 21:
  
 <!-- Présentez ici la phase de réflexion et de conception de votre projet, vos choix, etc. ... --> <!-- Présentez ici la phase de réflexion et de conception de votre projet, vos choix, etc. ... -->
 +
 +==== Séance du samedi 17 février 2018 ====
 +
 +Pour cette séance du samedi robots, nous nous attaquons à la programmation d'une petite librairie de gestion de la pince avec pricipalement deux commandes : ouvrir la pince et fermer la pince. Pour cette dernière commande, l'activation du bouton poussoir servira de fin de course et arrêtera la fermeture.
 +
 +Schéma conceptuel de la pince
 +
 +{{:projets:conception_d_un_robot_a_base_d_arduino:pince.png?200|Schéma conceptuel de la pince}}
 +
 +
 +Schéma de montage du prototype pour tester le programme
 +
 +{{:projets:conception_d_un_robot_a_base_d_arduino:pince_robot_bb.png?200|Schéma de montage du prototype}}
 +
 +
 +
 +Pour le programme, nous avons réalisé une librairie contenant une classe TactilServo fille de la classe Servo
 +
 +Fichier tactilservo.h à insérer dans le répertoire Arduino/librairies/TactilServo
 +
 +<code c++>
 +
 +#ifndef tactilservo_h
 +#define tactilservo_h
 +
 +#include "Arduino.h"
 +#include <Servo.h>
 +
 +class TactilServo : public Servo {
 +  public:
 +  void init(int servoPin, int switchPin);
 +  void setOpenPos(int pos);
 +  void setClosePos(int pos);
 +  void setAngleSpeed(int s);
 +  void open();
 +  int close();
 +
 +  private:
 +  int servoPin, switchPin;
 +  int openPos,closePos,angleDelay;   
 +};
 +
 +#endif
 +
 +</code>
 +
 +
 +Fichier tactilservo.cpp à insérer dans le répertoire Arduino/librairies/TactilServo
 +
 +Pendant la séance du 17 février, nous n'avons pas eu le temps d'implémenter toutes les méthodes. Il nous faudra finir.
 +
 +<code c++>
 +
 +#include "tactilservo.h"
 +
 +void TactilServo::init(int servoPin, int switchPin) {
 +  this->servoPin = servoPin;
 +  this->switchPin = switchPin;
 +  this->openPos = 180;
 +  this->closePos = 0;
 +  this->angleDelay = 15;
 +  this->attach(this->servoPin);
 +  pinMode(this->switchPin,INPUT);
 +  digitalWrite(this->switchPin,HIGH);
 +}
 +
 +void TactilServo::setOpenPos(int pos) {
 +  // A faire
 +}
 +
 +void TactilServo::setClosePos(int pos) {
 +  // A faire
 +}
 +
 +void TactilServo::setAngleSpeed(int s) {
 +  // A faire
 +}
 +  
 +void TactilServo::open() {
 +  this->write(this->openPos);
 +}
 +
 +int TactilServo::close() {
 +  int pos = this->read();
 +  while ((digitalRead(this->switchPin) != 0) && (pos > this->closePos)) {
 +    pos -= 1;
 +    this->write(pos);
 +    delay(this->angleDelay);
 +  }
 +}
 +
 +</code>
 +
 +Programme de test testpince.ino
 +
 +<code c++>
 +#include "tactilservo.h"
 +
 +TactilServo mapince;
 +
 +void setup() {
 +  mapince.init(3,2); 
 +}
 +
 +void loop() {
 +  mapince.open();
 +  delay(2000);
 +  mapince.close(); //si on appuie sur le poussoir, la pince s'arrête
 +  delay(5000);
 +}
 +
 +</code>
 +
 +
 +==== Séance du samedi 20 janvier 2018 ====
 +
 +Aujourd'hui, on a décidé de travailler sur la conception/ modélisation de la pince. Elle sera constitué d'un servo moteur, d'un capteur de pression/contact et de pièces d'assemblage que l'on réalisera en impression 3D.
 +
 +Nous avons choisi le servo moteur Hitec HS 422 (couple de ~3.5Kg.cm) et un bouton poussoir comme capteur de contact.
 +
 +La modélisation du moteur est disponible sur GrabCad ([[https://grabcad.com/]]). Il faut se créer un compte pour pouvoir télécharger(gratuit).
 +
 +Nous avons récupéré un fichier .step qui peut s'ouvrir sur Freecad. 
 +{{:projets:conception_d_un_robot_a_base_d_arduino:hs-422.step|Moteur Hitec Hs 422}}
 +
 +Sources d'inspiration pour la pince : 
 +
 +{{:projets:conception_d_un_robot_a_base_d_arduino:pince_ecrevisse.jpg?100 |}}
 +{{:projets:conception_d_un_robot_a_base_d_arduino:pince_robot.jpg?100 |}}
 +
 +
 +==== Séance du samedi 16 décembre 2017 ====
 +
 +Aujourd'hui on a testé fritzing, un logiciel qui permet de dessiner un circuit sur breadboard (idéal pour la documentation) et même d'aller jusqu'à
 +la conception du circuit imprimé.
 +
 +=== Circuit on off ===
 +
 +L'objectif est de faire un circuit contenant une led et un bouton relié à un arduino qui permettra de changer l'état d'un système entre on et off.
 +Au départ, l'état est off et à chaque pression du bouton poussoir on inverse l'état entre off(false) et on(true). L'état est rendu par la led.
 +
 +=== Le montage sur breadboard ===
 +
 +{{:projets:conception_d_un_robot_a_base_d_arduino:on_off_bb.png?100 |}}
 +
 +=== Le circuit imprimé ===
 +
 +{{:projets:conception_d_un_robot_a_base_d_arduino:on_off_circuit_imprime.png?100 |}}
 +{{:projets:conception_d_un_robot_a_base_d_arduino:on_off_pistes.svg|}}
 +
 +=== Le programme ===
 +
 +le fichier onofflib.h à placer dans le repertoire libraries du dossier Arduino
 +<code c++>
 +/*
 +  onofflib.h - Library for button
 +  Created by samedi robot, dec 16 2017
 +  Released into the public domain.
 +*/
 +#ifndef onofflib_h
 +#define onofflib_h
 +
 +#include "Arduino.h"
 +
 +class OnOffButton {
 +  public:
 +  OnOffButton(int buttonPin,int ledPin);
 +  bool inspect();
 +  bool isOn();
 +
 +  private:
 +  int bpin,lpin;
 +  bool on;
 +  int previous;
 +};
 +
 +#endif
 +</code>
 +
 +le fichier onofflib.cpp à placer dans le repertoire libraries du dossier Arduino
 +<code c++>
 +/*
 +  onofflib.h - Library for button
 +  Created by samedi robot, dec 16 2017
 +  Released into the public domain.
 +*/
 +
 +#include "Arduino.h"
 +#include "onofflib.h"
 +
 +OnOffButton::OnOffButton(int buttonPin,int ledPin) {
 +  bpin = buttonPin;
 +  lpin = ledPin;
 +  pinMode(bpin,INPUT);
 +  digitalWrite(bpin,HIGH); //active la resistance pullup
 +  pinMode(lpin,OUTPUT);
 +  on = false;
 +  digitalWrite(lpin,LOW);
 +  previous = digitalRead(bpin); // test bouton 
 +}
 +
 +bool OnOffButton::inspect() {
 +  int result = digitalRead(bpin);
 +  if (result == 0 && previous) {
 +    on = !on;
 +    digitalWrite(lpin,on);
 +  }
 +  previous = result;
 +  return on;
 +}
 +
 +bool OnOffButton::isOn() {
 +  return on;
 +}
 +</code>
 +
 +Le programme de test
 +
 +<code c++>
 +/* 
 + *  Programme de test de la librairie de gestion de bouton on off
 + */
 +
 +#include <onofflib.h>
 +
 +OnOffButton button(3,7);
 +
 +
 +void setup() {
 +  // put your setup code here, to run once:
 +  Serial.begin(115600);
 +  Serial.println("onofflib !!!");
 +
 +}
 +
 +
 +void loop() {
 +  // put your main code here, to run repeatedly:
 +  bool state = button.inspect();
 +  Serial.println(state);
 +  delay(20); 
 +}
 +
 +</code>
 +
 +
  
 ==== Séance du samedi 17 décembre 2016 ==== ==== Séance du samedi 17 décembre 2016 ====
Ligne 105: Ligne 351:
  
 === Servomoteur commandé par bouton poussoir === === Servomoteur commandé par bouton poussoir ===
 +//Séance du samedi 18 novembre 2017//
 +
 +{{:projets:conception_d_un_robot_a_base_d_arduino:20171118_160710.jpg?200|}}
  
 <code C++> <code C++>
Ligne 117: Ligne 366:
 */ */
  
-#include <Servo.h>+#include <Servo.h> // librairie pour le servomoteur
  
-Servo myservo;  // create servo object to control a servo +Servo myservo;  // crée l'objet myservo 
-const int pushbutton = 2; // numéro de la broche sur laquelle la led est connectée+const int pushbutton = 2; // numéro de la broche sur laquelle le bouton poussoir est connecté
 char inputButtonState; char inputButtonState;
  
 void setup() { void setup() {
-  myservo.attach(3);  // attaches the servo on pin 9 to the servo object +  myservo.attach(3);  // attache l'objet servomoteur à la pin 3 
-  myservo.write(0); +  myservo.write(0); // initialisation de la position du servo 
-  pinMode(pushbutton,INPUT); +  pinMode(pushbutton,INPUT); // la bouton poussoir est une entrée 
-  digitalWrite(pushbutton, HIGH);+  digitalWrite(pushbutton, HIGH); // envoie du courant dans le bouton poussoir
 } }
  
 void loop() { void loop() {
      
-  inputButtonState = digitalRead(pushbutton); //Read the Pushbutton state.+  inputButtonState = digitalRead(pushbutton); // lit l'état du bouton poussoir
    
-  if (inputButtonState == HIGH) +  if (inputButtonState == HIGH) // si le bouton poussoir n'est pas pressé 
   {   {
-     +       myservo.write(0); 
-      myservo.write(0); +
   }    } 
-  else +  else // sinon (le bouton est appuyé)
   {    { 
-      myservo.write(90);                  // sets the servo position according to the scaled value +      myservo.write(90);                  // met le servomoteur à 90°
-        +
   }     }  
-  +}
-  }+
  
 </code> </code>
projets/conception_d_un_robot_a_base_d_arduino.1511016556.txt.gz · Dernière modification: 2017/11/18 15:49 par doudoulolita