ISS Tracker : Différence entre versions

De Les Fabriques du Ponant
Aller à : navigation, rechercher
(Guide d'assemblage)
(Ressources informatiques)
 
(22 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 2 : Ligne 2 :
  
  
L'ISS Tracker (ou traqueur d'ISS) est un montage permettant d'indiquer, en temps réel, la position de la Station spatiale internationale (ou ISS) par rapport à un planisphère représenté sous la forme d'un cylindre
+
L'ISS Tracker (ou traqueur d'ISS) est un montage permettant d'indiquer, en temps réel, la position de la Station spatiale internationale (ou ISS) par rapport à un planisphère représenté sous la forme d'un cylindre.
 
 
//photo du montage finale
 
  
 +
[[Fichier:ISS Tracker.jpg]][[Fichier:Logo enib.jpg]]
  
 
== Matériel ==
 
== Matériel ==
Ligne 11 : Ligne 10 :
  
 
- Une carte arduino uno
 
- Une carte arduino uno
 +
 +
- Une connexion internet
  
 
- Deux servomoteurs à rotation continue
 
- Deux servomoteurs à rotation continue
Ligne 26 : Ligne 27 :
 
- Un bouchon de liège
 
- Un bouchon de liège
  
== ISS Tracker ==
+
- Scotch (invisible/transparant)
 +
 
 +
== Guide d'assemblage ==
 +
 
 +
- Tout d’abord, afin de gagner du temps il est conseiller de lancer la découpe de la plaque de bois afin d’obtenir les différentes parties constituant la boîte ainsi que le mat. Cependant, la face supérieur (là où il est inscrit « ISS Tracker ») possède sur sa partie droite, un trou sous la forme d’un rectangle. Avant de lancer la découpe laser de ce plan, il faut s'assurer que l'un de vos servomoteur loge dans ce trou avec, sur la longueur, un millimètre de marge pour l'installation.
 +
 
 +
[[Fichier:Plan ISS.jpg|700px]]
 +
 
 +
- Lancer la découpe des pièces
 +
 
 +
- Pour réaliser le cylindre nous avons avant tout découper deux (ou plus) disque de carton de 88mm de diamètre. Pour consolider le tout nous avons intégré quelques tiges de bois afin de réaliser la structure du cylindre. A chaque étage nous avons collé chaque tige à chaque bout de carton puis nous avons coller le planisphère en papier sur cette structure (pour cette application, un simple tube de colle blanche suffit). Pour finaliser ce cylindre il faut simplement mettre du scotch pour fixer ensemble les deux extrémités du planisphère.
 +
 
 +
[[Fichier:CylindreISS.jpg|400px]]
 +
 
 +
- Téléverser le programme sur la carte arduino Uno.
  
L'ISS Tracker (ou traqueur d'ISS) est un montage permettant d'indiquer, en temps réel, la position de la Station spatiale internationale (ou ISS) par rapport à un planisphère représenté sous la forme d'un cylindre.
+
- Montez la face supérieur du boîtier avec les faces latérales et la face avant, en effet laisser la face arrière et la face inférieur peuvent compliquer les choses si on les assembles en premier.
  
//photo du montage finale
+
- Pour réaliser la bobine servant à faire monter et descendre l'ISS, nous avons simplement utilisé un demi bouchon de liège et deux disque de carton avec un diamètre légèrement plus large que le diamètre du bouchon (je dis légèrement car ces deux disques doivent pouvoir être contenus dans le socle)
  
 +
[[Fichier:Poulie1.jpeg|400px]]
  
== Matériel ==
+
- En ce qui concerne le mat, il suffit d'assembler les différentes parties avec un pistolet à colle et une fois le tout assemblé, nous avons put le coller sur le socle.
- Une planche de bois (300mm x 600mm)
 
  
- Une carte arduino uno
+
[[Fichier:lemaaaaat.jpg|400px]]
  
- Deux servomoteurs à rotation continue
+
- Mettez ensuite les différents moteurs comme ceci:
  
- Papier
+
[[Fichier:Poulie2.jpg|400px]][[Fichier:socleISS.jpg|400px]]
  
- Corde
+
- Après cette partie terminée, il ne manque plus qu'a fixer le cylindre sur le servomoteur de droite en emboitant la roue dentée du servo dans le disque inférieur du cylindre.
  
- Marteau
+
- Astuce bonus : lorsque nous avons réalisé notre projet nous avons décidé de relier le cylindre et le mat par le haut afin de solidifier quelque peut le cylindre et surtout pour s'assurer que son axe reste suffisamment droit. Pour cela nous avons simplement découpé un morceau de carton avec un trou au bout et nous avons scotché l'autre extrémité du carton au sommet du mat.
  
- Pistolet à colle
+
== Code ==
 +
===Script python===
 +
<pre>
 +
import serial
 +
import time
 +
import urllib2
 +
import json
  
- Carton
+
ArduinoSerial = serial.Serial(port='/dev/ttyS6',baudrate=9600)
  
- Un bouchon de liège
+
while 1 :
  
- Scotch transparent/invisible
+
time.sleep(1)
  
== Guide d'assemblage ==
+
req = urllib2.Request("http://api.open-notify.org/iss-now.json")
 +
response = urllib2.urlopen(req)
  
- Tout d’abord, afin de gagner du temps il est conseiller de lancer la découpe de la plaque de bois afin d’obtenir les différentes parties constituant la boîte ainsi que le mat. Cependant, la face supérieur (là où il est inscrit « ISS Tracker ») possède sur sa partie droite, un trou sous la forme d’un rectangle. Avant de lancer la découpe laser de ce plan, il faut s'assurer que l'un de vos servomoteur loge dans ce trou avec, sur la longueur, un millimètre de marge pour l'installation.
+
obj = json.loads(response.read())
  
- Lancer la découpe des pièces
+
data = ""
 +
data = obj['iss_position']['latitude'] + " " + obj['iss_position']['longitude']
 +
databytes = data.encode('utf-8')
  
- Pour réaliser le cylindre nous avons avant tout découper deux (ou plus) disque de carton de 88mm de diamètre. Pour consolider le tout nous avons intégré quelques tiges de bois afin de réaliser la structure du cylindre. A chaque étage nous avons collé chaque tige à chaque bout de carton puis nous avons coller le planisphère en papier sur cette structure (pour cette application, un simple tube de colle blanche suffit). Pour finaliser ce cylindre il faut simplement mettre du scotch pour fixer ensemble les deux extrémités du planisphère.
+
print 'donnee envoyee'
 +
print data
  
- Téléverser le programme sur la carte arduino Uno.
+
ArduinoSerial.write(databytes)
  
- Montez la face supérieur du boîtier avec les faces latérales et la face avant, en effet laisser la face arrière et la face inférieur peuvent compliquer les choses si on les assembles en premier.
+
time.sleep(4)
 +
</pre>
  
- Mise en place des différents servomoteurs
+
Ce script python, à lancer depuis un terminal met en relation l'API utilisée pour récupérer la position de l'ISS (http://api.open-notify.org/iss-now.json) avec l'Arduino Uno utilisée pour notre projet. Ici, l'arduino est branchée sur le port série '''COM6''' (information disponible dans le gestionnaire de périphérique ou le logiciel Arduino). Le terminal utilisé étant le bash Ubuntu pour Windows 10 nous oblige a passer par le port '/dev/ttyS'''6''''.
  
- Réalisation de la bobine, du mat ainsi que du support de l’aiguille
+
===Arduino===
 +
<pre>
 +
#include <Servo.h>
  
- Mise en place de la bobine et du mat
+
char data, latitude, longitude;
 +
int count = 0;
 +
bool montee = false;
  
- Mise en plage du fil puis du support
+
Servo servolong, servolat;
  
== Ressources informatiques ==
+
void setup() {
 +
  Serial.begin(9600);
 +
  servolong.attach(9);
 +
  servolat.attach(10);
 +
}
  
Le plan de découpe du boitier ainsi que du mat
+
void loop() {
 +
  if (montee) {
 +
    servolat.write(0);
 +
    delay(120);
 +
    servolat.write(92);
 +
    count = count + 1;
 +
  }
 +
  else {
 +
    servolat.write(180);
 +
    delay(100);
 +
    servolat.write(92);
 +
    count = count + 1;
 +
  }
  
//insérer le fichier boite.svg ainsi qu'un visuel du plan
+
  if (count > 25){
 +
    if (montee){
 +
      montee = false;
 +
    }
 +
    else {
 +
      montee = true;
 +
    }
 +
    count = 0;
 +
  }
 +
 +
servolong.write(120);
 +
delay(50);
 +
servolong.write(90);
 +
delay(2000);
 +
}
 +
</pre>
  
Code arduino
+
Ce code Arduino est celui permettant une simulation du déplacement de l'ISS en accéléré.
  
//insérer le code
+
Afin de pouvoir régler la position du module vertical, deux codes arduino sont déposés dans les ressources permettant de monter ou descendre le module.
  
Pour ce qui est du montage, ici le fichier fritzing qui reprend tout le câblage que nous avons réalisé:
+
===Communication entre l'arduino et le script python===
 +
<pre>
 +
while (Serial.available()){
 +
    datastring = Serial.readString();                            //On récupère les données envoyées par le script python
 +
    index = datastring.indexOf(' ');                              //On sépare la chaine de charactères en deux données indépendantes
 +
   
 +
    latitude = datastring.substring(0,index);
 +
    longitude = datastring.substring(index + 1);
 +
   
 +
    nextlat = latitude.toInt();
 +
    nextlong = longitude.toInt();
 +
</pre>
  
//insérer le fichier fritzing
+
Ce code permet de récupérer dans deux données de type ''int'' les valeurs respectives de la latitude et de la longitude de l'ISS.
  
 
== Ressources informatiques ==
 
== Ressources informatiques ==
Ligne 92 : Ligne 164 :
 
Le plan de découpe du boitier ainsi que du mat
 
Le plan de découpe du boitier ainsi que du mat
  
//insérer le fichier boite.svg ainsi qu'un visuel du plan
+
[[Media:BoitierISS.svg]]
 +
 
 +
Pour ce qui est du montage, ici le fichier fritzing qui reprend tout le câblage que nous avons réalisé:
  
Code arduino
+
[[Fichier:CablageISS.jpg|400px]]
  
//insérer le code
+
Compléments de gestion du module vertical
 +
* Montée
 +
<pre>
 +
#include <Servo.h>
  
Pour ce qui est du montage, ici le fichier fritzing qui reprend tout le câblage que nous avons réalisé:
+
Servo servolat;
 +
 
 +
void setup() {
 +
  // put your setup code here, to run once:
 +
  Serial.begin(9600);
 +
  servolat.attach(10);
 +
}
 +
 
 +
void loop() {
 +
  servolat.write(0);
 +
  delay(200);
 +
  servolat.write(92);
 +
  delay(1000);
 +
}
 +
</pre>
 +
* Descente
 +
<pre>
 +
#include <Servo.h>
 +
 
 +
Servo servolat;
 +
 
 +
void setup() {
 +
  // put your setup code here, to run once:
 +
  Serial.begin(9600);
 +
  servolat.attach(10);
 +
}
 +
 
 +
void loop() {
 +
  servolat.write(180);
 +
  delay(200);
 +
  servolat.write(92);
 +
  delay(1000);
 +
}
 +
</pre>
  
//insérer le fichier fritzing
+
[[catégorie:enib2019]]

Version actuelle datée du 23 janvier 2019 à 10:34

ISS Tracker

L'ISS Tracker (ou traqueur d'ISS) est un montage permettant d'indiquer, en temps réel, la position de la Station spatiale internationale (ou ISS) par rapport à un planisphère représenté sous la forme d'un cylindre.

ISS Tracker.jpgLogo enib.jpg

Matériel

- Une planche de bois (300mm x 600mm)

- Une carte arduino uno

- Une connexion internet

- Deux servomoteurs à rotation continue

- Papier

- Corde

- Marteau

- Pistolet à colle

- Carton

- Un bouchon de liège

- Scotch (invisible/transparant)

Guide d'assemblage

- Tout d’abord, afin de gagner du temps il est conseiller de lancer la découpe de la plaque de bois afin d’obtenir les différentes parties constituant la boîte ainsi que le mat. Cependant, la face supérieur (là où il est inscrit « ISS Tracker ») possède sur sa partie droite, un trou sous la forme d’un rectangle. Avant de lancer la découpe laser de ce plan, il faut s'assurer que l'un de vos servomoteur loge dans ce trou avec, sur la longueur, un millimètre de marge pour l'installation.

Plan ISS.jpg

- Lancer la découpe des pièces

- Pour réaliser le cylindre nous avons avant tout découper deux (ou plus) disque de carton de 88mm de diamètre. Pour consolider le tout nous avons intégré quelques tiges de bois afin de réaliser la structure du cylindre. A chaque étage nous avons collé chaque tige à chaque bout de carton puis nous avons coller le planisphère en papier sur cette structure (pour cette application, un simple tube de colle blanche suffit). Pour finaliser ce cylindre il faut simplement mettre du scotch pour fixer ensemble les deux extrémités du planisphère.

CylindreISS.jpg

- Téléverser le programme sur la carte arduino Uno.

- Montez la face supérieur du boîtier avec les faces latérales et la face avant, en effet laisser la face arrière et la face inférieur peuvent compliquer les choses si on les assembles en premier.

- Pour réaliser la bobine servant à faire monter et descendre l'ISS, nous avons simplement utilisé un demi bouchon de liège et deux disque de carton avec un diamètre légèrement plus large que le diamètre du bouchon (je dis légèrement car ces deux disques doivent pouvoir être contenus dans le socle)

Poulie1.jpeg

- En ce qui concerne le mat, il suffit d'assembler les différentes parties avec un pistolet à colle et une fois le tout assemblé, nous avons put le coller sur le socle.

Lemaaaaat.jpg

- Mettez ensuite les différents moteurs comme ceci:

Poulie2.jpgSocleISS.jpg

- Après cette partie terminée, il ne manque plus qu'a fixer le cylindre sur le servomoteur de droite en emboitant la roue dentée du servo dans le disque inférieur du cylindre.

- Astuce bonus : lorsque nous avons réalisé notre projet nous avons décidé de relier le cylindre et le mat par le haut afin de solidifier quelque peut le cylindre et surtout pour s'assurer que son axe reste suffisamment droit. Pour cela nous avons simplement découpé un morceau de carton avec un trou au bout et nous avons scotché l'autre extrémité du carton au sommet du mat.

Code

Script python

import serial
import time
import urllib2
import json

ArduinoSerial = serial.Serial(port='/dev/ttyS6',baudrate=9600)

while 1 :

	time.sleep(1)

	req = urllib2.Request("http://api.open-notify.org/iss-now.json")
	response = urllib2.urlopen(req)

	obj = json.loads(response.read())

	data = ""
	data = obj['iss_position']['latitude'] + " " + obj['iss_position']['longitude']
	databytes = data.encode('utf-8')

	print 'donnee envoyee'
	print data

	ArduinoSerial.write(databytes)

	time.sleep(4)

Ce script python, à lancer depuis un terminal met en relation l'API utilisée pour récupérer la position de l'ISS (http://api.open-notify.org/iss-now.json) avec l'Arduino Uno utilisée pour notre projet. Ici, l'arduino est branchée sur le port série COM6 (information disponible dans le gestionnaire de périphérique ou le logiciel Arduino). Le terminal utilisé étant le bash Ubuntu pour Windows 10 nous oblige a passer par le port '/dev/ttyS6'.

Arduino

#include <Servo.h>

char data, latitude, longitude;
int count = 0;
bool montee = false;

Servo servolong, servolat;

void setup() {
  Serial.begin(9600);
  servolong.attach(9);
  servolat.attach(10);
}

void loop() {
  if (montee) {
    servolat.write(0);
    delay(120);
    servolat.write(92);
    count = count + 1;
  }
  else {
    servolat.write(180);
    delay(100);
    servolat.write(92);
    count = count + 1;
  }

  if (count > 25){
    if (montee){
      montee = false;
    }
    else {
      montee = true;
    }
    count = 0;
  }
 
 servolong.write(120);
 delay(50);
 servolong.write(90);
 delay(2000);
}

Ce code Arduino est celui permettant une simulation du déplacement de l'ISS en accéléré.

Afin de pouvoir régler la position du module vertical, deux codes arduino sont déposés dans les ressources permettant de monter ou descendre le module.

Communication entre l'arduino et le script python

while (Serial.available()){
    datastring = Serial.readString();                             //On récupère les données envoyées par le script python
    index = datastring.indexOf(' ');                              //On sépare la chaine de charactères en deux données indépendantes
    
    latitude = datastring.substring(0,index);
    longitude = datastring.substring(index + 1);
    
    nextlat = latitude.toInt();
    nextlong = longitude.toInt();

Ce code permet de récupérer dans deux données de type int les valeurs respectives de la latitude et de la longitude de l'ISS.

Ressources informatiques

Le plan de découpe du boitier ainsi que du mat

Media:BoitierISS.svg

Pour ce qui est du montage, ici le fichier fritzing qui reprend tout le câblage que nous avons réalisé:

CablageISS.jpg

Compléments de gestion du module vertical

  • Montée
#include <Servo.h>

Servo servolat;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  servolat.attach(10);
}

void loop() {
  servolat.write(0);
  delay(200);
  servolat.write(92);
  delay(1000);
}
  • Descente
#include <Servo.h>

Servo servolat;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  servolat.attach(10);
}

void loop() {
  servolat.write(180);
  delay(200);
  servolat.write(92);
  delay(1000);
}