Tous les programmes suivants ont été entièrement créés grâce au
logiciel Arduino (illustration ci dessus) Ils sont lu et exécutés
par une carte Arduino également. Uno ou Mega.
La carte Mega présente 4 ports série contre 1 pour la Uno et 256 kB de
mémoire contre 32 kB pour la Uno. Ce sont ces
différences
qui nous ont fait choisir une Mega.
Première séance :
Dans cette première séance nous avons testé un programme de carte Sim, afin d’envoyer des messages texte grâce à la carte Arduino Uno (plus de détail dans l'onglet GSM). Au début il y avait certaines erreurs dans le programme et dans le montage. Après plusieurs essais nous avons réussi à envoyer un message avec Arduino sur le téléphone de clément.
#define numero "+336xxxxxxxx" // Mettre ici le numéro que l'on souhaite appeler float N=43.45635, E=5.85826; int i; String message =" ";
void setup() { Serial.begin(9600); Serial1.begin(9600); // Avec carte Mega on branche le module 800L sur UART 1 par exemple delay(2000); Serial1.println("AT"); // Exemple de commande AT non obligatoire Reponse(); Serial1.println("AT+CNUM"); Serial.print("Numero de telephone emetteur ? "); Reponse(); Serial1.println("AT+CPIN?"); Serial.print("Protection code PIN ? "); Reponse(); Serial1.println("AT+CSQ"); Serial.print("Qualite reseau (OK si superieure a 10) ? "); Reponse(); Serial1.println("AT+CBC"); Serial.print("Batterie 0, pourcentage, tension ? "); Reponse(); Serial.print("Mode SMS au format texte en cours d'activation : "); Serial1.println("AT+CMGF=1"); Reponse(); }
void loop() // run over and over { i++;
Serial1.println("AT+CMGF=1"); Reponse(); Serial.print("AT+CMGS=\""); Serial.print(numero); Serial.println("\""); Serial1.print("AT+CMGS=\""); Serial1.print(numero); Serial1.println("\""); Serial.print("Envoi du message : "); if (message==" ") { Serial1.print("Position GPS num "); Serial1.print(i); Serial1.print(" : https://maps.google.fr/maps?q="); Serial1.print(N,5); Serial1.print(","); Serial1.println(E,5); } else Serial1.print(message); Serial1.write(26); // Caractère de fin 26 <Ctrl-Z> delay(2000); Reponse(); Serial.println(""); Serial.println("Tapez le nouveau message a envoyer... "); while(!Serial.available()); delay(250); message=""; while(Serial.available()) message+=char(Serial.read()); // Vider la memoire tampon
} void Reponse() { delay(1500); while(Serial1.available()) Serial.write(Serial1.read()); } |
Deuxième séance:
Dans cette deuxième séance nous avons réalisé le programme des calculs de coordonnées que le professeur avait fait la simulation pour qu’on puisse la faire.
void CalculCoord() { x=2*n; if(x<6502) Alti=4.3931*x-9.172; else {Alti=1.175994e-9*pow(x,4)-3.861926e-5*pow(x,3)+4.75801e-1*pow(x,2)-2.613544e3*x+5.421484e6;} N=2.42935e-16*pow(x,4)-5.40926e-12*pow(x,3)+4.04274e-8*pow(x,2)-1.001506e-4*x+43.6582; E=1.6529e-15*pow(x,4)-2.6505e-11*pow(x,3)+1.1255e-7*pow(x,2)+8.0558e-6*x+5.0179; if (x>9270) { Alti=654; E=5.69864; N=43.64283;} Tint=((7.424E-7*pow(x,2)- 0.01069*x + 33) + 20)*4; Text=(2.03906E-07*pow(x,2)- 6.74602E-03*x + 25+50)*3; Pext=(4.00474E-05*pow(x,2) - 3.87550E-01*x + 1000)/4; N1=(N-40.0)*10000.0;
E1=E*10000;
Pile=(9.723-2.8094e-4*2*n)*16-14; Sdebug.println(); Sdebug.print((Tint-80.0)/4);Sdebug.print(" C \t"); Sdebug.print(Pext*4);Sdebug.print(" Pa \t"); Sdebug.println(Alti); } |
Troisième séance:
Dans cette deuxième séance nous avons réalisé le programme des trames-octets qui ne nous a pas vraiment posé de soucis. :
void TrameOctets() { Trame[1]=lowByte(Alti); Trame[2]=lowByte(E1); Trame[3]=lowByte(N1); Trame[4]=0; Trame[5]=0; Trame[6]=Tint; Trame[7]=Text; Trame[8]=Pext; // Pile switch (n%5){ case 0: Trame[9] =254; break; case 1: Trame[9] =highByte(N1); break; case 2: Trame[9] =highByte(E1); break; case 3: Trame[9] =highByte(Alti); break; case 4: Trame[9] =Pile; break; } } |
Quatrième séance:
Nous avons réalisé le programme arduino des trames ballons où, il faut l’avouer nous avons bien galéré ! ;) Mais après pas mal d’essais, de sueurs et de prise de tête nous avons réussir à sortir un beau programme.
Cinquième séance:
Nous somme allé au studyrama pour les futurs écoles. C’était une bonne expérience car sommes toutes nous avons bien pu être renseignés sur notre prochaine orientation. Ainsi donc, nous n’avons pas avancé dans le programme, au détriment du futur.
Sixième séance:
Nous avons eu la visite du superviseur de projet. Il nous a expliqué les détails de notre chaîne de ballon ainsi que les démarches à suivre pour son lancement. La politique de sécurité de l’air a également été abordée, elle est importante à prendre en compte.
Septième séance:
Nous avons mis en oeuvre le programme final de simulation, c’est à dire que nous avons mis en place l’échange de données qui va nous permettre de voir si le programme final fonctionne. Pour se faire, nous avons regrouper les différents programme réaliser dans les séances précédentes. Le professeur nous a aiguillé sur le programme débug afin qu’il n’y ait aucunes erreurs.
Huitième séance:
Nous avons pu tester le programme de simulation (programme final) grâce a l’analyseur logique et à l’application “ logic salae”. Tout a fonctionné à merveilles dès la première fois.
Neuvième séance:
Nous avons essayé de récupérer les résultats de notre programme dit de “simulation” (des trames) directement sur un autre arduino. Pour se faire, nous avons réalisé un second programme pour notre arduino méga afin qu’il puisse lire et écrire ce qu’ils reçoit du arduino uno.
Dixième séance:
Nous avons réalisé notre compte rendu afin que le professeur nous mette une excellente note de part notre merveilleux travail !!! (c’est beau de rêver)...