• Aucun résultat trouvé

[PDF] Tutoriel Arduino voiture projet PDF | Cours Arduino

N/A
N/A
Protected

Academic year: 2021

Partager "[PDF] Tutoriel Arduino voiture projet PDF | Cours Arduino"

Copied!
10
0
0

Texte intégral

(1)

Compte rendu

: projet Arduino

Voiture télécommandée via le smartphone

I.

Objectifs

:

Les objectifs principaux de notre projet étaient de pouvoir diriger une voiture avec un smartphone via le module Bluetooth electronics ainsi qu’afficher, sur l’interface du smartphone, la distance à l’avant et à l’arrière entre la voiture et un éventuel obstacle. L’utilisateur aurait donc pu voir sur l’interface du smartphone quatre flèches directionnelles ainsi que deux afficheurs de la distance avant de la voiture/obstacle et arrière de la voiture/obstacle.

En option s’il reste du temps nous avons aussi pensé à afficher la distance entre la voiture et le smartphone pour prévenir l’utilisateur d’une éventuelle perte des commandes quand la portée limite du système Bluetooth serait atteinte. En cas de perte des commandes la voiture aurait pu revenir en arrière en effectuant l’inverse de la dernière action.

II.

Déroulement des différentes séances

:

1. Séance 1

La première semaine nous avons commencé la programmation des sonars avant et arrière ainsi que les tests de ceux-ci. Nous n’avons rencontré aucun problème pour brancher le matériel et

programmer l’envoi des données des sonars dans le moniteur série du logiciel Arduino. Nous avons alors pu mettre en place le module Bluetooth et envoyer les données sur le logiciel du smartphone. En fin de séance on pouvait détecter les objets avec les sonars et afficher les données sur l’interface du smartphone.

2. Séance 2

La deuxième semaine nous avons branché les moteurs et commencé la programmation de ceux-ci. Nous avons commencé par brancher et programmer un seul moteur pour comprendre le

fonctionnement de la programmation, puis nous avons décidé d’utiliser un pont en H pour pouvoir brancher deux moteurs qui pourront fonctionner vers l’avant et vers l’arrière. Le but est de pouvoir faire tourner la voiture en actionnant les moteurs dans des sens différents (faire reculer la roue droite et avancer la roue gauche pour tourner à droite, l’inverse pour tourner à gauche). La solution pour brancher les moteurs avec le pont en H a été trouvée sur internet. A la fin de la séance le programme fait tourner les moteurs dans des sens différents et à des vitesses différentes, sans utiliser le smartphone.

(2)

3. Séance 3

Lors de la troisième semaine nous avons commencé à mettre les différentes fonctions du projet sur la même interface du smartphone. Pour brancher les deux sonars et les deux moteurs nous avons besoin de deux plaquettes de branchement. Avant de mettre en commun les programmes des sonars et des moteurs, nous avons modifié le programme des moteurs afin de pouvoir activer les roues avec l’interface du smartphone, les moteurs tournent donc toujours à la même vitesse et les quatre flèches directrices activent différemment les moteurs. Quand on appui sur la flèche du haut les deux moteurs tournent dans le même sens vers l’avant, si on appui sur la flèche de droite le moteur gauche tourne vers l’avant et le moteur de droite vers l’arrière, quand on appui sur la flèche du bas les deux moteurs tournent dans le même sens vers l’arrière, enfin si on appui sur la flèche de gauche le moteur droit tourne vers l’avant et celui de gauche vers l’arrière. Malheureusement quand on met en commun les programmes des sonars et des moteurs nous avons des problèmes dans l’affichage des distances voiture/obstacle sur le smartphone. Des caractères spéciaux du type ( ; »)^ s’affichent sur l’interface du smartphone alors que la distance est affichée correctement dans le moniteur série.

4. Séance 4

Au cours de la quatrième séance nous avons établi un croquis de la structure de notre voiture, dans laquelle nous allons introduire tous les composants électroniques. Ensuite nous avons commencé la conception de la maquette en carton que nous avons utilisé jusqu’à la fin du projet. La maquette est composée de trois plaques de carton superposées dont une qui est creusée pour pouvoir insérer les composants électroniques (deux plaquettes sur lesquelles sont branchés les moteurs et les sonars, deux batteries pour alimenter les moteurs et l’arduino). On essaie aussi de corriger les problèmes du programme pour l’affichage des distances voiture/obstacle.

(3)

5. Séance 5

Pendant la dernière séance nous avons finalisé la maquette de la voiture en attachant les roues et les moteurs aux plaques de cartons préalablement collées. Une tige filetée est utilisée comme axe des roues arrière, les roues avant sont directement connectées aux moteurs. Les batteries et les plaquettes sont scotchées au carton. Maintenant que la maquette est achevée on peut tester « en conditions réelles » la voiture et les commandes moteurs. On se rend compte que les moteurs n’ont pas assez de puissance pour faire tourner la voiture alors qu’il n’y a aucun problème pour avancer ou reculer en ligne droite.

Nous avons continué de travailler sur les problèmes du programme et l’affichage des distances voiture/obstacle, on se rend compte que lors de l’affichage des distances sur l’interface du smartphone il y a un lien qui est fait avec les flèches directionnelles, c’est-à-dire que certaines informations des flèches directionnelles sont affichées à la place des distances et qu’une interférence à lieu.

(4)

Nous avons réussi à contrôler la voiture avec le smartphone via l’application Bluetooth, c’est-à-dire que nous pouvons activer les moteurs à distance directement sur le smartphone qui sert de télécommande. Nous avons des problèmes dans l’affichage des distances voiture/obstacle sur l’interface du smartphone, nous savons que le problème vient de l’application Bluetooth electronics car les distances s’affichent

correctement dans le moniteur série sur l’ordinateur. Nous n’avons pas eu le temps de mettre en place l’option énoncée dans les objectifs car nous n’avons déjà pas pu résoudre les problèmes de la fonction principale « affichage des distances voiture/obstacle » malgré de nombreux essais et recherches.

(5)
(6)

Aspect «

Code

» :

Dans un premier temps on déclare toutes nos variables et les ports spéciaux pour le bleutooth et les sonars

ainsi que pour les moteurs .

#include <SoftwareSerial.h> //Software Serial Port #define RxD 10 //Pin 10 pour RX (pin0=serial) vert #define TxD 13 //Pin 11 pour TX, on peut changer noir #include <NewPing.h>

SoftwareSerial BTSerie(RxD,TxD); const int trigAvant=6;

const int echoAvant=7; const int trigArriere=3; const int echoArriere=1; float lecture_echo; float distanceAvant; float distanceArriere; float dAvant; float dArriere; // float portabilite; char BleutoothData;

int pin1Moteur1=12; //pin de commande moteur 1 int pin2Moteur1=8; // pin de commande moteur 1 int pinPMoteur1=11;// pin PWM moteur 1

int pin1Moteur2=2; // pin de commande moteur 2 int pin2Moteur2=4; // pin de commande moteur 2 int pinPMoteur2=5; // pin PWM moteur 2

(7)

Dans un deuxième temps on créer des fonctions qui nous permet de faire avancer la voiture afin de faire

fonctionner les roues dans les deux sens appeler rouler qui prend en paramètre le moteur concernée le

sens dans la quelle tourne le moteur et le pourcentages de la puissance de celui ci pendant sa rotation .

void Rouler(int moteur,int sens,int pourcentage){

int pin1,etat1,pin2,etat2,pinP,puissance; //variable de la fonction

if (moteur==1){

pin1=pin1Moteur1;

pin2=pin2Moteur1;

pinP=pinPMoteur1;

}

else { // on les remets par defaut ne marche pas

pin1=pin1Moteur2;

pin2=pin2Moteur2;

pinP=pinPMoteur2;

}

//test sens du moteur 1 en avant ,-1 sens arrière

if (sens==1){

etat1=1;

etat2=0;

}

else if (sens==-1){

etat1=0;

etat2=1;

}

else { // sinon on remet a défault

etat1=0;

etat2=0;

}

puissance=map(pourcentage,0,100,0,255);

analogWrite(pinP,puissance);

digitalWrite(pin1,etat1);

digitalWrite(pin2,etat2);

}

(8)

Nous avons de plus une fonction que l'on peut qualifier de fonction a « états » qui permet de réagirs

suivants différent cas de commande que l'on exécute afin de rouler et de s’arrêter en effet il correspond a

l'état 5.

void action(String etat){

if (etat=="etat1"){

Rouler(1,-1,100);

Rouler(2,1,100);

}

if(etat=="etat2"){

Rouler(1,-1,100);

Rouler(2,-1,100);

}

if(etat=="etat3"){

Rouler(1,1,100);

Rouler(2,-1,100);

}

if (etat=="etat4"){

Rouler(1,1,100);

Rouler(2,1,100);

}

if (etat=="etat5"){

Rouler(1,0,0) ;

Rouler(2,0,0) ;

}

}

(9)

Et enfin dans la boucle nous déterminons la distance avant et arrière qui nous renvoie de bonnes valeurs

dans le moniteurs série . Suivants plusieurs cas c'est a dire suivant les touches presser dans le téléphone

androïde

void loop() {

char BleutoothData;

String etat;

//On lit caractere par caractere sur le

//BTSerie et on affiche sur le Terminal

//Serie

NewPing sonarAvant(trigAvant,echoAvant,200);

NewPing sonarArriere(trigArriere,echoArriere,200);

distanceAvant=sonarAvant.ping_cm();

distanceArriere=sonarArriere.ping_cm();

dAvant=distanceAvant;;

dArriere=distanceArriere;;

BTSerie.print("*D");

BTSerie.print(String(dAvant)+",");

BTSerie.print("*");

delay(100);

//BTSerie.print("*G");

//BTSerie.print(dAvant);

//BTSerie.print("*");

// BTSerie.print("*G"+(dArriere)+"*");

//BTSerie.print("*G"+String(portabilite,1)+"*");calcul de la distance par rapport au module bleutooth

(non aboutit)

if(dAvant<=10){

etat="etat5";

action(etat);

}

//if(dArriere<=10){ cette condition détecte l'obstacle à 10 cm et arrete la voiture

// etat="etat5";

// action(etat);

//}

(10)

if (BTSerie.available()) {

BleutoothData = BTSerie.read();

if (BleutoothData=='R'){

etat="etat1";

action(etat);

}

if(BleutoothData=='Y'){

etat="etat2";

action(etat);

}

if(BleutoothData=='G'){

etat="etat3";

action(etat);

}

if (BleutoothData=='B'){

etat="etat4";

action(etat);

}

if (BleutoothData=='W'){

etat="etat5";

action(etat);

}

}

}

Références

Documents relatifs

Pour qu'un tribunal puisse inspirer de la confiance aux justiciables, il doit offrir une apparence d'impartialité, c'est-à-dire, au sens de la CEDH, présenter suffisamment de

Pour arriver à leur décision, les juges jouissent donc d’une certaine liberté dans l’exercice de ce pouvoir. Toutefois, rien ne garantit que leur décision sera la meilleure.

De la même façon que la culture littéraire de Cellini, qui nourrit de toute évidence la Vita, était d’abord de nature orale, sa culture juridique, qui fait l’une des

92 ( قحلملا 1 ) ةيلولأا هتروص يف ةيداشرلإا تاجاحلا نايبتسا داعبلأا تاـــــــــــــــــــــجاــــــحلا يناعأ لا هذه نم ةلكشملا اهنم يناعأ ةجردب ةطيسب اهنم

ﲪ ﺪﻴﻬﺸﻟﺍ ﺔﻌﻣﺎﺟ ـ ﺔﻴﺳﺎﻴﺴﻟﺍ ﻡﻮﻠﻌﻟﺍﻭ ﻕﻮﻘﳊﺍ ﺔﻴﻠﻛ ﻱﺩﺍﻮﻟﺍ ـ ﺮﻀﳋ ﺔ ﺔﺤﻔﺻ 171 ﻢـﻗر ﻲﺳﺎﺳﻻا نﻮﻧﺎﻘﻟا ﺎﻬﻴﻠﻋ ﺺﻧ ﺎﻣ ﺐﺴﺣ ﻲﺴﻧﻮﺘﻟا عﺮﺸﳌا ﺎﻫﺪﻤﺘﻋا ﱵﻟا ﺔﻣﺎﻌﻟا ةﺪﻋﺎﻘﻟا 38 ﺔﻨـﺴﻟ

Il réactualise ainsi la ligne poïétique suivie par Robert Smithson, organisée autour d’une tension dialectique entre les expériences du site et les pratiques du « non site

When a read request for line X accesses the L2 cache, if this is a miss or a prefetched hit (i.e., the prefetch bit is set), and if X and X + D lie in the same memory page, a

We also show that, even without considering the self-performance contract, con- ventional cache replacement policies lead to the paradoxical situation that increasing the