====== ROBOT SIMON ====== date de début : 11/2015\\ Porteur de projet [[:wiki:utilisateurs:simon_ramos|Simon Ramos]] (contact : [[luc@toimemetusais.com|s]]imon.ramos@sfr.fr)\\ Suivi par [[:wiki:projet:wiki:utilisateurs:emmanuel|Emmanuel]] (contact : emmanuel.thiery@pmclab.fr) /* introduction ici, comprend : - les objectifs de ce projet - brefs comparatifs de ce qui se fait déjà (prix, facilité de fabrications, particularités spécifiques - tes sources d'inspiration */ [[https://docs.google.com/document/d/14pK-qsd6nYxg5nf3BB5iRrXu8RbbzYR0yQgxIfyEQdo/edit#|journal de bord]] date de fin estimée : 11/2015 ===== Machines nécessaires ===== /* Ici il faut lister tout les machines et leur consommables nécessaire, si possible avec une photo */ exemple :\\ [[:http:www.distriedal.com_trotecwpress_wp-content_uploads_2014_02_speedy100-laser-sistema-aspiracion.jpg?direct&200}}|//www.distriedal.com/trotecwpress/wp-content/uploads/2014/02/Speedy100-laser-sistema-aspiracion.jpg]]\\ - découpe laser (30×60 cm) (Ici trotec speedy 100) avec du plexiglace ou équivalent (3 mm d'épaisseur)\\ [[:http:s.3dnatives.com_imprimante_replicator-2x.jpeg?direct&200}}|//s.3dnatives.com/imprimante/replicator-2x.jpeg]]\\ - imprimante 3D (Ici makerboot replicator 2X ou Ultimaker²) avec PLA ou ABS - fer à souder ===== matériels nécessaires ===== -18 jumpers -2 moteurs -planche de bois -étain \\ - 1 arduino Uno ou similaire [[:http:www.electrodragon.com_product_arduino-uno-r3?added-to-cart=6067|fournisseur : Electrodragon]] 9.64 €: [[:http:upload.wikimedia.org_wikipedia_commons_3_38_arduino_uno_-_r3.jpg?direct&200}}|//upload.wikimedia.org/wikipedia/commons/3/38/Arduino_Uno_-_R3.jpg]] ===== Construction ===== /* ici il faut décrire la fabrication de votre projet de A à Z. Il est astucieux de diviser en un maximum de partie votre projet, cela permet d'avoir une vision globale du projet et de "sous terminer" votre projet, ce qui est stimulant. ==== Partie 1 ==== ==== Partie 2: ==== \\ prendre une plaque choisir une ligne pour le positif et une pour le négatif. -Relier, avec des jumpers, le GND des 2 relais aux GND de la carte arduino. -Relier, avec des jumpers, les IN des relais aux pins digitaux de la carte arduino. -Relier, avec des jumpers, les VCC des relais au 5v de la carte arduino. - \\ [[:http:img11.hostingpics.net_pics_327668pcrrelayfrizt.png?direct&1000}}|//img11.hostingpics.net/pics/327668PCRrelayfrizt.png]]\\ Partie 3: Codes nécessaires: int xPin = A1; int yPin = A0; int buttonPin = 2; int xPosition = 0; int yPosition = 0; int buttonState = 0; #define CH3 5 // Connect Digital Pin 7 on Arduino to CH3 on Relay Module #define CH4 6 \\ void setup() { // initialize serial communications at 9600 bps: Serial.begin(9600); pinMode(xPin, INPUT); pinMode(yPin, INPUT); \\ pinMode(CH3, OUTPUT); pinMode(CH4, OUTPUT); digitalWrite(CH4,LOW); digitalWrite(CH3,LOW); //activate pull-up resistor on the push-button pin pinMode(buttonPin, INPUT_PULLUP); // For versions prior to Arduino 1.0.1 // pinMode(buttonPin, INPUT); // digitalWrite(buttonPin, HIGH); } void loop() { xPosition = analogRead(xPin); yPosition = analogRead(yPin); buttonState = digitalRead(buttonPin); Serial.print("X: "); Serial.print(xPosition); Serial.print(" | Y: "); Serial.print(yPosition); Serial.print(" | Button: "); Serial.println(buttonState); delay(100); // add some delay between reads \\ \\ \\ //Setup all the Arduino Pins \\ if(yPosition >600) { digitalWrite(CH3,LOW); digitalWrite(CH4,LOW); } else if( xPosition>600) { digitalWrite(CH3,HIGH); digitalWrite(CH4,LOW); } else if( xPosition<400) { digitalWrite(CH3,LOW); digitalWrite(CH4,HIGH); } else { digitalWrite(CH3, HIGH); digitalWrite(CH4, HIGH); } } */ ===== Journal de bord ===== ===== Lundi 23 novembre ===== 23/11/2015 : Création d’un programme pour faire clignoter une DEL: Matériel: carte arduino, bread board, résistance de 200 ohm,DEL, jumper. Il faut placer la résistance sur le bread board, placer la DEL sur une autre colonne mais la plus grande branche sur la même ligne que la 2ème branche de la résistance. Lier un jumper du bread board au ground de la carte arduino. Lier un autre jumper de la résistance au 5v de la carte arduino. const int…=10 (précise à quelle pin de la carte arduino l’objet est accroché) //( commentaires non pris en compte pour la ligne) /* et */ (tous ce qui est compris entre n’est pas pris en compte) () (quand il y a une fonction) { et } (tous ce qui est compris entre est pris en compte par une fonction) voidsetup() (setup) void loop() (boucle infinie) if (fonction dépendant d’un facteur) const int LED=10; //declaration constante de broche \\ void setup() { // put your setup code here, to run once: pinMode(LED, OUTPUT); } void loop() { // put your main code here, to run repeatedly: digitalWrite(LED,HIGH); // met la broche au niveau haut (5V) – allume la LED delay(15); // pause de 500 millisecondes (ms) digitalWrite(LED,LOW); // met la broche au niveau bas (0V) – éteint la LED delay(15); // pause de 500ms } source: http://www.mon-club-elec.fr/pmwiki_mon_club_elec/pmwiki.php?n=MAIN.ArduinoInitiationLedsClig noterUneLed Création du projet robot Simon Création d’un programme pour faire tourner à 180° un servomoteur 2 fois: Matériel: carte arduino, servomoteur, jumpers. \\ #include //const int servomoteur=5; //declaration constante de broche Servo myservo; // create servo object to control a servo // a maximum of eight servo objects can be created int pos = 0; // variable to store the servo position int vitesse = 5; int tour= 0; void setup() { myservo.attach(5); // attaches the servo on pin 9 to the servo object } void loop() { \\ if (tour<2) { for(pos = 0; pos < 180; pos += 1) // goes from 0 degrees to 180 degrees { // in steps of 1 degree myservo.write(pos); // tell servo to go to position in variable 'pos' delay(vitesse); // waits 15ms for the servo to reach the position } for(pos = 180; pos>=1; pos-=1) // goes from 180 degrees to 0 degrees { myservo.write(pos); // tell servo to go to position in variable 'pos' delay(vitesse); // waits 15ms for the servo to reach the position } tour +=1; } } source: [[http://www.zem.fr/controler-un-mini-servo-avec-arduino/|http://www.zem.fr/controler-un-mini-servo-avec-arduino/ ]] Modélisation 2D d’un chassie pour véhicule à 3 roues avec openscad: Pour actualiser le logiciel et qu’il exécute la commande il faut appuyer sur F5. Pour déplacer un objet: translate([...,...]) Pour faire un carré: square([...,...],center) Pour soustraire: difference() {............} Pour compiler le tout il faut appuyer sue F6. Il faut ensuite enregistrer le fichier. Pour exporter le fichier, il faut le mettre en .dxf difference () { translate([0,0]) square([71,150.55],center); translate([-1,30]) square([22.50,21.20],center); translate([49,30]) square([22.50,21.20],center); } \\ Découpage d’une planche au découpe laser: Matériel: une machine Trotec Une fois le fichier importé dans le logiciel correldraw x7, il faut l’imprimer. Un autre logiciel va s’ouvrir. Placer la plaque dans un coin du Trotec Il faut cliquer sur prêt. faire les réglages: -6mm: puissance=100 et vitesse=0,90 rouge: découpe noir: gravure Faire la focale, lancer la découpe puis attendre que la lumière s’éteigne pour prendre la plaque. Si il y a des flammes en continu, augmenter la vitesse. \\ \\ \\ #define CH3 5 // Connect Digital Pin 7 on Arduino to CH3 on Relay Module #define CH4 6 void setup(){ //Setup all the Arduino Pins pinMode(CH3, OUTPUT); pinMode(CH4, OUTPUT); //Provide power to both LEDs //Turn OFF any power to the Relay channels digitalWrite(CH3,LOW); //delay(2000); //Wait 2 seconds before starting sequence digitalWrite(CH4,LOW); // delay(2000); } void loop(){ digitalWrite(CH3, HIGH); //Relay 3 switches to NO digitalWrite(CH4, HIGH); delay(2000); digitalWrite(CH3, LOW); //Relay 3 switches to NO digitalWrite(CH4, LOW); delay(1000); } \\ ===== Mardi 24 novembre ===== 24/11/2015 : \\ Création d’un programme pour contrôler des moteurs avec un joystick. \\ int xPin = A1; int yPin = A0; int buttonPin = 2; int xPosition = 0; int yPosition = 0; int buttonState = 0; void setup() { // initialize serial communications at 9600 bps: Serial.begin(9600); pinMode(xPin, INPUT); pinMode(yPin, INPUT); //activate pull-up resistor on the push-button pin pinMode(buttonPin, INPUT_PULLUP); // For versions prior to Arduino 1.0.1 // pinMode(buttonPin, INPUT); // digitalWrite(buttonPin, HIGH); } void loop() { xPosition = analogRead(xPin); yPosition = analogRead(yPin); buttonState = digitalRead(buttonPin); Serial.print("X: "); Serial.print(xPosition); Serial.print(" | Y: "); Serial.print(yPosition); Serial.print(" | Button: "); Serial.println(buttonState); delay(100); // add some delay between reads #define CH3 5 // Connect Digital Pin 7 on Arduino to CH3 on Relay Module #define CH4 6 //Setup all the Arduino Pins pinMode(CH3, OUTPUT); pinMode(CH4, OUTPUT); /* //Provide power to both LEDs //Turn OFF any power to the Relay channels digitalWrite(CH3,LOW); //delay(2000); //Wait 2 seconds before starting sequence digitalWrite(CH4,LOW); // delay(2000); digitalWrite(CH3, HIGH); //Relay 3 switches to NO digitalWrite(CH4, HIGH); delay(2000); digitalWrite(CH3, LOW); //Relay 3 switches to NO digitalWrite(CH4, LOW); delay(1000);*/ \\ \\ if( xPosition>500,yPosition >1000){ digitalWrite(CH3,HIGH); digitalWrite(CH4,HIGH);} else if(xPosition=0,yPosition > 500){ digitalWrite(CH3,LOW); digitalWrite(CH4,HIGH);} else if(xPosition>1000,yPosition > 500){ digitalWrite(CH3,HIGH); digitalWrite(CH4,LOW);} } \\ \\ \\ \\ Matériel: Chassie, 2 moteurs, 2 relais, 18 jumpers, 1 bread board et une alimentation . Pour le faire permuter les relais, il faut: -Relier, avec des jumpers, le GND des 2 relais aux GND de la carte arduino. -Relier, avec des jumpers, les IN des relais aux pins digitaux de la carte arduino. -Relier, avec des jumpers, les VCC des relais au V1 en bas du bread board puis sur la même ligne brancher un jumper de la même ligne au 5v de la carte arduino. -Brancher un jumper du ground du bread board au - en haut du bread board \\ \\ J’ai réussi à faire fonctionner les moteurs te les relais, les moteurs tournent pendant 2 secondes et s’arrêtent 1 seconde comme je l’avais demandé à l’arduino dans le programme au-dessus. Bleu 5v Blanc gnd Jaune 5 Bleu 6 Utilisation d’un joystick \\ [[http://42bots.com/tutorials/arduino-joystick-module-example/|http://42bots.com/tutorials/arduino-joystick-module-example/ ]] [[http://www.instructables.com/id/Arduino-2-Servos-Thumbstick-joystick/|http://www.instructables.com/id/Arduino-2-Servos-Thumbstick-joystick/ ]] ===== Mercredi 25 novembre ===== 25/11/2015 : OpenScad \\ \\ \\ difference(){ cylinder($fn = 1000,r=25,h=10); translate([-2.5,-3.6,-1])cube([5,7.2,12]); } Module bluetooth: http://air.imag.fr/mediawiki/index.php/Wireless_Bluetooth_RS232_TTL_Transceiver_Module fv \\ \\ Correction du programme: \\ int xPin = A1; int yPin = A0; int buttonPin = 2; int xPosition = 0; int yPosition = 0; int buttonState = 0; #define CH3 5 // Connect Digital Pin 7 on Arduino to CH3 on Relay Module #define CH4 6 \\ void setup() { // initialize serial communications at 9600 bps: Serial.begin(9600); pinMode(xPin, INPUT); pinMode(yPin, INPUT); \\ pinMode(CH3, OUTPUT); pinMode(CH4, OUTPUT); digitalWrite(CH4,LOW); digitalWrite(CH3,LOW); //activate pull-up resistor on the push-button pin pinMode(buttonPin, INPUT_PULLUP); // For versions prior to Arduino 1.0.1 // pinMode(buttonPin, INPUT); // digitalWrite(buttonPin, HIGH); } void loop() { xPosition = analogRead(xPin); yPosition = analogRead(yPin); buttonState = digitalRead(buttonPin); Serial.print("X: "); Serial.print(xPosition); Serial.print(" | Y: "); Serial.print(yPosition); Serial.print(" | Button: "); Serial.println(buttonState); delay(100); // add some delay between reads \\ \\ \\ //Setup all the Arduino Pins \\ if(yPosition >600) { digitalWrite(CH3,LOW); digitalWrite(CH4,LOW); } else if( xPosition>600) { digitalWrite(CH3,HIGH); digitalWrite(CH4,LOW); } else if( xPosition<400) { digitalWrite(CH3,LOW); digitalWrite(CH4,HIGH); } else { digitalWrite(CH3, HIGH); digitalWrite(CH4, HIGH); } } ===== Jeudi 26 novembre ===== 26 /11/2015 : Rapport de stage. test: Une alimentation de 4,5v peut suffire pour le robot. Modélisation 3d du robot sur openscad: union () { difference(){ cube([150,70,6]); translate([30,45]) cube([20,25,7]); translate([30,0]) cube([20,25,7]); /*translate([88,0]) cube([62,17,7]); translate([88,25]) cube([62,17,7]); translate([88,53]) cube([62,17,7]);*/ } /*rotate(a=[0,90,0]) { translate([90,0,50])cylinder($fn = 100,r=5,h=10); translate([90,50,50])cylinder($fn = 100,r=5,h=10); */ \\ \\ translate([60,35,40])resize([90,45])sphere(d=20);} \\ difference(){ rotate ([25,-20,-50])translate([15,66,-40])cylinder(d=20,10,h=50); color([red]){;translate([0,0,-8])cube([150,150,8]); } } \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ ===== Vendredi 27 novembre ===== 27 /11/2015 : refaire le circuit en vrai: \\ matériel: fer à souder, étain et plaque.