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 1La 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.
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.
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.
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.
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