ISS Tracker : Différence entre versions

De Les Fabriques du Ponant
Aller à : navigation, rechercher
(Code)
(Arduino)
Ligne 156 : Ligne 156 :
 
</pre>
 
</pre>
  
Ce Code Arduino est celui permettant une simulation du déplacement de l'ISS en accéléré.
+
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.
 
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.
  

Version du 22 janvier 2019 à 22:32

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.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)

Matériel

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

- Une carte arduino uno

- Deux servomoteurs à rotation continue

- Papier

- Corde

- Marteau

- Pistolet à colle

- Carton

- Un bouchon de liège

- Scotch transparent/invisible

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)


- Mise en place des différents servomoteurs


- Mise en place de la bobine et du mat

- Mise en plage du fil puis du support

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

//insérer le fichier boite.svg ainsi qu'un visuel du plan

Code arduino

//insérer le code

Script python pour la récupération des données de l'ISS

//insérer le script python

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

//insérer le fichier fritzing