added site files
This commit is contained in:
parent
a6f70a6c78
commit
329148c253
253 changed files with 30486 additions and 0 deletions
376
index/includes/ex2-full.php
Normal file
376
index/includes/ex2-full.php
Normal file
|
@ -0,0 +1,376 @@
|
|||
<div id="ex2d">
|
||||
<h3>Fonctionnement</h3>
|
||||
|
||||
<p>Le robot est composé de plusieurs éléments pour modélier la chauve - souris :</p>
|
||||
|
||||
<ul>
|
||||
<li>Le module à ultrasons et son servo-moteur modélise les cordes vocales et les oreilles de la chauve-souris.</li>
|
||||
<li>Les moteurs et roues modélisent le moyen de déplacement de la chauve-souris.</li>
|
||||
<li>La carte arduino commande tous les éléments, elle modélise le cerveau de la chauve-souris.</li>
|
||||
<li>Le chassis contient tous les composants.</li>
|
||||
</ul>
|
||||
|
||||
<h3 id="composants">Composants</h3>
|
||||
|
||||
<h4>Le module à ultrasons</h4>
|
||||
|
||||
<p>Le module HC-SR04 permet d’évaluer les distances entre un objet mobile et les obstacles rencontrés. Il émet des ultrasons puis les capte après un écho grâce à ses émetteur et récepteur. Il est conçu pour fonctionner simplement avec une carte arduino.</p>
|
||||
|
||||
<figure style="width: 350px;"><img alt="Module HC-SR04" src="https://www.bananarobotics.com/shop/image/cache/data/sku/BR/0/1/0/0/2/BR010020-HC-SR04-Ultrasonic-Distance-Sensor-Module/HC-SR04-Ultrasonic-Distance-Sensor-Module-600x600.png" />
|
||||
<figcaption>
|
||||
<p>Module HC-SR04</p>
|
||||
<a href="https://www.bananarobotics.com/shop">Source de l'image</a></figcaption>
|
||||
</figure>
|
||||
|
||||
<h4>Le servo-moteur</h4>
|
||||
|
||||
<p>Le servo-moteur est un moteur électrique auquel on a ajouter un système lui permettant d'avoir une grande précision lors de sa rotation. Il permet de contrôler avec précision la direction du module à utrasons. Ainsi, le champ de vision du module est augmenté grâce à un mouvement de balayage.</p>
|
||||
|
||||
<figure style="width: 350px;"><img alt="Servo-moteur" src="http://img.banggood.com/thumb/large/upload/2015/06/SKU250601-1.jpg" />
|
||||
<figcaption>
|
||||
<p>Servo moteur</p>
|
||||
<a href="http://www.banggood.com/TowerPro-SG90-Mini-Micro-Digital-Servo-9g-For-RC-Models-p-984114.html">Source</a></figcaption>
|
||||
</figure>
|
||||
|
||||
<h4>Les moteurs</h4>
|
||||
|
||||
<h4>La carte arduino</h4>
|
||||
|
||||
<p>Une carte Arduino est un circuit imprimé en matériel libre sur lequel se trouve un microcontrôleur. Il permet de traiter les informations collectées par les différents ports d'entrés de la carte, et de réagir en conséquence à travers les ports de sortie. On peut ainsi contrôler certains composants, ainsi qu'une variété de périphériques spécialement conçus pour lui. Il fonctionne grâce à du code du language C qui permet de réaliser des actions spécialement commandées.</p>
|
||||
|
||||
<figure style="width: 350px;"><img alt="Carte arduino UNO" src="http://www.innofab.fr/wp-content/uploads/2015/08/ARDUINO_R3.png" />
|
||||
<figcaption>
|
||||
<p>Carte Arduino UNO</p>
|
||||
<a href="http://www.innofab.fr/wp-content/uploads/2015/08/ARDUINO_R3.png">Source de l'image</a></figcaption>
|
||||
</figure>
|
||||
|
||||
<h4>Le chassis</h4>
|
||||
|
||||
<p>Le chassis a pour fonction de relier tous les composants entre eux et faciliter le montage et la conception du robot. C'est un kit pour robot arduino, mais ne fournit pas de code ou de carte.</p>
|
||||
|
||||
<figure style="width: 350px;"><img alt="Le chassis" src="http://img.banggood.com/thumb/large/oaupload/banggood/images/F2/51/c24768b7-3305-49b4-bbd6-64cf7b6107f0.jpg" />
|
||||
<figcaption>
|
||||
<p>Le chassis</p>
|
||||
<a href="http://www.banggood.com/2WD-Smart-Car-Chassis-Tracing-Car-With-Encoder-Battery-Box-For-Arduino-p-906309.html">Source de l'image</a></figcaption>
|
||||
</figure>
|
||||
|
||||
<h4>Les batteries</h4>
|
||||
|
||||
<p>Les batteries ont pour fonction d'alimenter le robot en électricité</p>
|
||||
|
||||
<figure style="width: 350px;"><img alt="La batterie 1" src="http://www.batteryspace.com/images/products/detail/5830.png" /><img alt="La batterie 2" src="https://chioszrobots.files.wordpress.com/2014/04/battery-holder-4aa-chiosz-robots.png?w=593" />
|
||||
<figcaption>
|
||||
<p>Les batteries</p>
|
||||
<a href="http://www.banggood.com/2WD-Smart-Car-Chassis-Tracing-Car-With-Encoder-Battery-Box-For-Arduino-p-906309.html">Source de l'image</a></figcaption>
|
||||
</figure>
|
||||
|
||||
<h3>Construction</h3>
|
||||
|
||||
<p>La contruction du robot a été très complexe, mais nous a appris beaucoup à propos de l'électronique,</p>
|
||||
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam et tellus et tellus euismod congue. Praesent diam ante, pellentesque lacinia vestibulum eget, iaculis eget est. Nullam justo dui, hendrerit eu nulla nec, aliquam posuere libero. Quisque ut ornare nisi, eu gravida sem. Maecenas et lacus sit amet quam maximus aliquet. Suspendisse sodales sapien sit amet arcu efficitur, vel rutrum mi aliquet. Cras mollis facilisis metus id bibendum. Ut vel diam pulvinar, lobortis diam non, placerat tellus. Morbi lacus velit, egestas id elit sit amet, dapibus accumsan justo. Nulla facilisi. Proin vestibulum neque condimentum urna molestie aliquet. Nunc fermentum suscipit libero, ac maximus diam scelerisque vitae. Integer sed auctor magna. Aliquam erat volutpat.</p>
|
||||
|
||||
<h3>Logiciel</h3>
|
||||
|
||||
<p>On utilise pour contôler les composants périphériques la carte Arduino. Celle-ci comporte des ports grâce auquels elle communique avec ses périphériques. Les ports n'ont pas tous les mêmes propriétés, c'est pourquoi il faut décider quels port sera responsable de quelle tâche. Faire un plan aide aussi énormément lors du montage électrique du robot : deux fils sont vite échangés, et retrouver une erreur est une tâche difficile qui fait perdre beaucoup de temps. Une carte arduino standart comporte 13 ports qui ne seront utiles.</p>
|
||||
|
||||
<h3>Plan des ports Entrée/Sortie</h3>
|
||||
|
||||
<h4>Ports I/O (= Input/Output, c'est à dire Entrée/Sortie)</h4>
|
||||
|
||||
<p>Ports 2, 4, 7, 8 et 13</p>
|
||||
|
||||
<h4>Ports I/O capables de MLI (Modulation de la largeur d'impulsion)</h4>
|
||||
|
||||
<p>Port 3, 5, 6, 9, 10 et 11</p>
|
||||
|
||||
<p>La Modulation de la largeur d'impulsion (MLI ; en anglais : Pulse Width Modulation, soit PWM) est une technique couramment utilisée pour synthétiser des signaux continus (analogues) à l'aide de circuits à fonctionnement tout ou rien (numériques). Cela permet de contôler de façon analogique (c'est à dire que le signal peut être de plusieurs valeurs d'intensité) avec un contrôleur numérique qui ne peut avoir que deux signaux : allumé ou éteint)</p>
|
||||
|
||||
<figure style="width: 350px;"><img alt="PWM" src="https://upload.wikimedia.org/wikipedia/commons/thumb/e/e2/Delta_PWM.png/320px-Delta_PWM.png" />
|
||||
<figcaption>
|
||||
<p>Exemple de synthèse d'un signal grâce à la MLI</p>
|
||||
</figcaption>
|
||||
</figure>
|
||||
|
||||
<table>
|
||||
<caption>Plan des ports utilisés, et leur fonction (Entrée ou sortie)</caption>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>Port</th>
|
||||
<th>Entrée ou sortie</th>
|
||||
<th>Fonction</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2</td>
|
||||
<td>Entrée</td>
|
||||
<td>Indication de la position de la roue droite</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>4</td>
|
||||
<td>Entrée</td>
|
||||
<td>Indication de la position de la roue gauche</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>7</td>
|
||||
<td>Entrée</td>
|
||||
<td>Signal du module HC-SR04</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>3</td>
|
||||
<td>Sortie</td>
|
||||
<td>Contrôle de la vitesse de la roue droite</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>5</td>
|
||||
<td>Sortie</td>
|
||||
<td>Contrôle de la vitesse de la roue gauche</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>8</td>
|
||||
<td>Sortie</td>
|
||||
<td>Contrôle de la position du servo-moteur</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>12</td>
|
||||
<td>Sortie</td>
|
||||
<td>Envoi du signal pour le module HC-SR04</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h3 id="code">Le code de la carte arduino</h3>
|
||||
|
||||
<p> Il faut programmer la carte avec du code C pour lui dire quoi faire.</p>
|
||||
|
||||
<p>Les différentes actions à réaliser sont listées ci-dessous :</p>
|
||||
|
||||
<ul>
|
||||
<li>Contôler les moteurs des roues pour se faire déplacer le robot
|
||||
<ul>
|
||||
<li>Tout droit</li>
|
||||
<li>A gauche</li>
|
||||
<li>A droite</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Orienter le module à ultrasons dans la direction souhaitée grâce au servo-moteur</li>
|
||||
<li>Contrôler le module à ultrasons et ainsi connaître la position d'éventuels obstacles</li>
|
||||
<li>Analyser les données et réagir en conséquence</li>
|
||||
</ul>
|
||||
|
||||
<p>A chaque tâche est dédiée une portion du code, qui est au final compacté en un seul document, envoyé à la carte Arduino.</p>
|
||||
|
||||
<h3>Code du module à ultrasons HC-SR04 (source : <a href="http://howtomechatronics.com/tutorials/arduino/ultrasonic-sensor-hc-sr04/" style="display: inline;">HowToMechatronics.com</a>) -<button id="HC-SR04" onclick="showButton('HC-SR04')" value="Afficher">Afficher</button></h3>
|
||||
|
||||
<div id="HC-SR04d" style="display: none;">
|
||||
<pre data-enlighter-language="c">
|
||||
/*
|
||||
* Ultrasonic Sensor HC-SR04 and Arduino Tutorial
|
||||
*
|
||||
* Crated by Dejan Nedelkovski,
|
||||
* www.HowToMechatronics.com
|
||||
*
|
||||
*/
|
||||
|
||||
// defines pins numbers
|
||||
const int trigPin = 9;
|
||||
const int echoPin = 10;
|
||||
|
||||
// defines variables
|
||||
long duration;
|
||||
int distance;
|
||||
|
||||
void setup() {
|
||||
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
|
||||
pinMode(echoPin, INPUT); // Sets the echoPin as an Input
|
||||
Serial.begin(9600); // Starts the serial communication
|
||||
}
|
||||
|
||||
void loop() {
|
||||
// Clears the trigPin
|
||||
digitalWrite(trigPin, LOW);
|
||||
delayMicroseconds(2);
|
||||
|
||||
// Sets the trigPin on HIGH state for 10 micro seconds
|
||||
digitalWrite(trigPin, HIGH);
|
||||
delayMicroseconds(10);
|
||||
digitalWrite(trigPin, LOW);
|
||||
|
||||
// Reads the echoPin, returns the sound wave travel time in microseconds
|
||||
duration = pulseIn(echoPin, HIGH);
|
||||
|
||||
// Calculating the distance
|
||||
distance= duration*0.034/2;
|
||||
|
||||
// Prints the distance on the Serial Monitor
|
||||
Serial.print("Distance: ");
|
||||
Serial.println(distance);
|
||||
}
|
||||
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<h3>Code de contrôle des roues -<button id="roues" onclick="showButton('roues')" value="Afficher">Afficher</button></h3>
|
||||
|
||||
<div id="rouesd" style="display: none;">
|
||||
<pre data-enlighter-language="c">
|
||||
/*Vide pour l'instant*/
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<h3>Code de contrôle du servo -<button id="servo" onclick="showButton('servo')" value="Afficher">Afficher</button></h3>
|
||||
|
||||
<div id="servod" style="display: none;">
|
||||
<pre data-enlighter-language="c">
|
||||
/*Vide pour l'instant*/
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<h3>Code complet de l'arduino du robot -<button id="robot" onclick="showButton('robot')" value="Afficher">Afficher</button></h3>
|
||||
|
||||
<div id="robotd" style="display: none;">
|
||||
<pre data-enlighter-language="c">
|
||||
/*
|
||||
INCREMENTATION
|
||||
for (i = 0; i < 5; i++){
|
||||
|
||||
}
|
||||
|
||||
Ce qu'il reste à faire :
|
||||
testDevant
|
||||
demiTour
|
||||
tirageSort
|
||||
avancer
|
||||
*/
|
||||
|
||||
|
||||
|
||||
int libreDevant;
|
||||
int posServo;
|
||||
int resulTirage;
|
||||
int nbDeg;
|
||||
int verifOpp;
|
||||
int distMinLibre;
|
||||
int dist;
|
||||
|
||||
|
||||
int testDevant(){
|
||||
|
||||
//prendre la donnée du capteur
|
||||
|
||||
if(dist >= distMinLibre)
|
||||
{
|
||||
libreDevant = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
libreDevant = 0;
|
||||
//Canard
|
||||
}
|
||||
|
||||
return libreDevant;
|
||||
}
|
||||
|
||||
int tirageSort(){
|
||||
|
||||
|
||||
|
||||
return resulTirage;
|
||||
}
|
||||
|
||||
int checkG(){
|
||||
|
||||
posServo = posServo + nbDeg; //tourner le capteur
|
||||
|
||||
libreDevant = testDevant();
|
||||
//Vérifier si c'est libre devant
|
||||
if (libreDevant == 1)
|
||||
{
|
||||
posServo = 90; //remettre le servo au milieu
|
||||
}
|
||||
else
|
||||
{
|
||||
if (posServo == 180) //on arrive en fin de course
|
||||
{
|
||||
posServo = 90;
|
||||
if(verifOpp = 0)
|
||||
{
|
||||
checkD()
|
||||
}
|
||||
else
|
||||
{
|
||||
verifOpp = 0;
|
||||
demiTour()
|
||||
}
|
||||
}
|
||||
else if(posServo < 180) //On vérifie de l'autre côté
|
||||
{
|
||||
checkG()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int checkD(){
|
||||
|
||||
posServo = posServo - nbDeg; //tourner le capteur
|
||||
|
||||
libreDevant = testDevant();
|
||||
//Vérifier si c'est libre devant
|
||||
if (libreDevant == 1)
|
||||
{
|
||||
posServo = 90; //remettre le servo au milieu
|
||||
}
|
||||
else
|
||||
{
|
||||
if (posServo == 0) //on arrive en fin de course
|
||||
{
|
||||
posServo = 90;
|
||||
if(verifOpp = 0)
|
||||
{
|
||||
checkG()
|
||||
}
|
||||
else
|
||||
{
|
||||
verifOpp = 0;
|
||||
demiTour()
|
||||
}
|
||||
}
|
||||
else if(posServo > 0) //On vérifie de l'autre côté
|
||||
{
|
||||
checkD()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void setup() {
|
||||
|
||||
pinMode(13, OUTPUT); // initialize digital pin 13 as an output.
|
||||
|
||||
}
|
||||
|
||||
// the loop function runs over and over again forever
|
||||
void loop() {
|
||||
posServo = 90;
|
||||
libreDevant = testDevant();
|
||||
if(libreDevant = 1)
|
||||
{
|
||||
avancer()
|
||||
}
|
||||
else
|
||||
{
|
||||
resulTirage = tirageSort();
|
||||
if (resulTirage = 0)
|
||||
{
|
||||
checkG()
|
||||
avancer()
|
||||
}
|
||||
else
|
||||
{
|
||||
checkD()
|
||||
avancer()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
Loading…
Add table
Add a link
Reference in a new issue