Aller au contenu

Un flip flat pour 4 sous


gehelem

Messages recommandés

merci pour vos encouragements/conseils

 

la difficulté c'est les circonstances :

J'ai pris mon après midi ma journée pour torcher ce truc, et je me retrouve encore à c hercher des bidouilles et des machins sur eBay.

là je suis "agacé"

L'école de la patience... Calme, Gilles, caaaaaalme.

 

Bon déjà j'arrive à faire marcher le servo :

dans le flipflat, j'ai le flip, pas encore le flat 🙂

 

 

allez, je peux pas m'empêcher

 

 

Hop.

 

 

Lien vers le commentaire
Partager sur d’autres sites

Le 19/04/2019 à 15:35, supaii a dit :

tu as un github, je crois. 

je vais probablement proposer un pull sur celui où je l'ai pompé

faudrait voir s'il marche avec Ascom avant, ce serait commerçant.

En attendant :

Révélation

/*
What: LEDLightBoxAlnitak - PC controlled lightbox implmented using the 
    Alnitak (Flip-Flat/Flat-Man) command set found here:
   http://www.optecinc.com/astronomy/pdf/Alnitak Astrosystems GenericCommandsR3.pdf

Who: 
    Created By: Jared Wellman - jared@mainsequencesoftware.com

When: 
    Last modified:  2013/May/05


Typical usage on the command prompt:
Send     : >S000\n      //request state
Recieve  : *S19000\n    //returned state

Send     : >B128\n      //set brightness 128
Recieve  : *B19128\n    //confirming brightness set to 128

Send     : >J000\n      //get brightness
Recieve  : *B19128\n    //brightness value of 128 (assuming as set from above)

Send     : >L000\n      //turn light on (uses set brightness value)
Recieve  : *L19000\n    //confirms light turned on

Send     : >D000\n      //turn light off (brightness value should not be changed)
Recieve  : *D19000\n    //confirms light turned off.
*/

#include <Servo.h>
Servo myservo;

volatile int ledPin   = 6;      // the pin that the LED is attached to, needs to be a PWM pin.
volatile int servoPin = 9;      // the pin that the servo signal is attached to, needs to be a PWM pin.
int brightness = 0;

enum devices
{
    FLAT_MAN_L = 10,
    FLAT_MAN_XL = 15,
    FLAT_MAN = 19,
    FLIP_FLAT = 99
};

enum motorStatuses
{
    STOPPED = 0,
    RUNNING
};

enum lightStatuses
{
    OFF = 0,
    ON
};

enum shutterStatuses
{
    UNKNOWN = 0, // ie not open or closed...could be moving
    CLOSED,
    OPEN
};


int deviceId = FLIP_FLAT;
int motorStatus = STOPPED;
int lightStatus = OFF;
int coverStatus = UNKNOWN;

void setup()
{
  // initialize the serial communication:
  Serial.begin(9600);
  // initialize the ledPin as an output:
  pinMode(ledPin, OUTPUT);
  analogWrite(ledPin, 0);
  myservo.attach(servoPin);  
}

void loop() 
{
  handleSerial();
}


void handleSerial()
{
  if( Serial.available() >= 5 )  // all incoming communications are fixed length at 6 bytes including the \n
  {
    char* cmd;
    char* data;
    char temp[10];
    
    int len = 0;

    char str[20];
    memset(str, 0, 20);
    
    // I don't personally like using the \n as a command character for reading.  
    // but that's how the command set is.
  //  Serial.readBytesUntil('\n', str, 20);
  Serial.readBytes( str, 5);

    cmd = str + 1;
    data = str + 2;
    
    // useful for debugging to make sure your commands came through and are parsed correctly.
    if( false )
    {
      sprintf( temp, "cmd = >%s%s;", cmd, data);
      Serial.println(temp);
    } 
    


    switch( *cmd )
    {
      /*
        Ping device
            Request: >P000\n
            Return : *Pii000\n
                id = deviceId
      */
      case 'P':
          sprintf(temp, "*P%d000\n", deviceId);
          Serial.print(temp);
          break;

      /*
        Open shutter
            Request: >O000\n
            Return : *Oii000\n
                id = deviceId

            This command is only supported on the Flip-Flat!
      */
      case 'O':
          sprintf(temp, "*O%d000\n", deviceId);
          SetShutter(OPEN);
          Serial.print(temp);
          break;


      /*
        Close shutter
            Request: >C000\n
            Return : *Cii000\n
                id = deviceId

            This command is only supported on the Flip-Flat!
      */
      case 'C':
          sprintf(temp, "*C%d000\n", deviceId);
          SetShutter(CLOSED);
          Serial.print(temp);
          break;

      /*
        Turn light on
            Request: >L000\n
            Return : *Lii000\n
                id = deviceId
      */
      case 'L':
          sprintf(temp, "*L%d000\n", deviceId);
          Serial.print(temp);
          lightStatus = ON;
          analogWrite(ledPin, brightness);
          break;

      /*
        Turn light off
            Request: >D000\n
            Return : *Dii000\n
                id = deviceId
      */
      case 'D':
          sprintf(temp, "*D%d000\n", deviceId);
          Serial.print(temp);
          lightStatus = OFF;
          analogWrite(ledPin, 0);
          break;

      /*
        Set brightness
            Request: >Bxxx\n
                xxx = brightness value from 000-255
            Return : *Biiyyy\n
                id = deviceId
                yyy = value that brightness was set from 000-255
      */
      case 'B':
          brightness = atoi(data);    
          if( lightStatus == ON ) 
              analogWrite(ledPin, brightness);   
          sprintf( temp, "*B%d%03d\n", deviceId, brightness );
          Serial.print(temp);
        break;

      /*
        Get brightness
            Request: >J000\n
            Return : *Jiiyyy\n
                id = deviceId
                yyy = current brightness value from 000-255
      */
      case 'J':
        sprintf( temp, "*J%d%03d\n", deviceId, brightness);
        Serial.print(temp);
        break;
      
      /*
        Get device status:
            Request: >S000\n
            Return : *SidMLC\n
                id = deviceId
                M  = motor status( 0 stopped, 1 running)
                L  = light status( 0 off, 1 on)
                C  = Cover Status( 0 moving, 1 closed, 2 open)
      */
      case 'S': 
        sprintf( temp, "*S%d%d%d%d\n",deviceId, motorStatus, lightStatus, coverStatus);
        Serial.print(temp);
        break;

      /*
        Get firmware version
            Request: >V000\n
            Return : *Vii001\n
                id = deviceId
      */
      case 'V': // get firmware version
          sprintf(temp, "*V%d001\n", deviceId);
          Serial.print(temp);
          break;
    }    

    while( Serial.available() > 0 )
        Serial.read();

  }
}

void SetShutter(int val)
{
    if( val == OPEN && coverStatus != OPEN )
    {
    myservo.write(180);
        coverStatus = OPEN;
        // TODO: Implement code to OPEN the shutter.
    }
    else if( val == CLOSED && coverStatus != CLOSED )
    {
    myservo.write(0);  
        coverStatus = CLOSED;
        // TODO: Implement code to CLOSE the shutter
    }
    else
    {
        // TODO: Actually handle this case
        coverStatus = val;
    }
    
}

 

 

Le 19/04/2019 à 15:39, gehelem a dit :

faudrait voir s'il marche avec Ascom avant, ce serait commerçant.

Alors... en fait... il n'y a pas de driver Ascom 😞

J'ai essayé avec le soft fourni par Alnitak, et bin ça ne marche pas.

D'ailleurs c'est suspect, parce qu'ils disent d'installer les drivers D2XX de FTDI, ce qui sous entend que ce n'est pas un protocole série tout bête.

 

Edit :

D'ailleurs manifestement rien n'est prévu sur Ascom pour supporter ce type de matériel...

Allez, je reste sur Linux moi.

 

  • Merci / Quelle qualité! 1
Lien vers le commentaire
Partager sur d’autres sites

il y a 47 minutes, Batbihirulau a dit :

Voila peut être de l'inspiration pour commander ton EL avec le PWM de l'arduino, avec peu de composants annexes:

https://www.instructables.com/id/Dimming-EL-wire/

ou

http://www.enactiveenvironments.com/enabling/pwm-and-electroluminescent-smooth-dimming/

 

 

Oui, merci, c'est justement en voyant ces schémas que ça m'a coupé les pattes.

Je vais me ressaisir.

 

il y a 50 minutes, supaii a dit :

nope, le délai  de gratuité est terminé depuis, malheureusement...:blush:

T'aurais pas un copain qui l'utilise et qui pourrait tester ?

(moi j'ai pas sous la main)

Lien vers le commentaire
Partager sur d’autres sites

il y a 42 minutes, gehelem a dit :

T'aurais pas un copain qui l'utilise et qui pourrait tester ?

(moi j'ai pas sous la main)

Ce soir c'est reunion  avec l'asso.

Je vais voir si il  n'y a pas un astram qui a SGP et qui peut ramener son PC.

Espérons...

  • Merci / Quelle qualité! 1
Lien vers le commentaire
Partager sur d’autres sites

@gehelem@supaii

bon j'ai mis un condo entre le +5 de ma platine d'essai qui vient du +5 de l'arduino et le rst.

pour verifier le bon fonctionnement j'ai lancé un telechargement sur la carte et tout va bien puisque je ne peux pas,

je remet ton fichier ino et remet le condo après et malgré cela j'ai un time out...

 

ce qui me surprend c'est que même dans le serial moniteur de l'arduino je ne peux pas lancer toutes les commandes...

Lien vers le commentaire
Partager sur d’autres sites

il y a 29 minutes, olivier1986 a dit :

ce qui me surprend c'est que même dans le serial moniteur de l'arduino je ne peux pas lancer toutes les commandes...

ça c'est curieux

tu as essayé quoi ?

 

edit

genre ">P000" en désactivant le CRLF ?

ça donne rien ??

Lien vers le commentaire
Partager sur d’autres sites

il y a 7 minutes, olivier1986 a dit :

@gehelem

ba si je tape >C000\n le servo tourne

si je tape >D000\n le servo revient

 

mais des que je fais la commande >L000\n non seulement le moniteur ne retourne rien mais en plus le servo ne veut plus rien savoir!

justement, c'est les trucs qui font merder indi

  1. enlève les \n
  2. enlève les CRFL en bas
  3. clic sur "envoyer" plutôt que sur taper sur entrée

Moi avec >L000 ça donne ça :

image.thumb.png.06463414ade9d9113bb44da0933c1718.png

Lien vers le commentaire
Partager sur d’autres sites

ah ba là comme ça c'est beaucoup mieux!! reste INDI qui veut rien savoir!! dommage... va falloir ressortir le porte monaie :(

 

@gehelem

essai sur SGP, ça se connecte mais derriere ca reste en fenetre "ne répond pas" ... je reste linux mais comme tu voulais savoir ^^

 

J'en profite pour te dire aussi, tout comme sur l'image de supaii, on n'a pas la version du firmware sur la page du fip flat sur le panneau indi aprés connection alors que toi je lis 001 sur ta vidéo...

Lien vers le commentaire
Partager sur d’autres sites

Le 19/04/2019 à 21:19, olivier1986 a dit :

J'en profite pour te dire aussi, tout comme sur l'image de supaii, on n'a pas la version du firmware sur la page du fip flat sur le panneau indi aprés connection alors que toi je lis 001 sur ta vidéo...

ça me parait normal (ou en tout cas logique par rapport à nos recherches)

La version du firmware est rapatriée par le driver une fois qu'il a réussi à établir la communication,

et vu que pour vous il n'y arrive pas il n'affiche rien...

(à l'inverse des autres valeurs qui sont des valeurs "locales" au driver je pense)

 

 

 

Le 19/04/2019 à 21:11, olivier1986 a dit :

@gehelem

essai sur SGP, ça se connecte mais derriere ca reste en fenetre "ne répond pas" ... je reste linux mais comme tu voulais savoir ^^

merci beaucoup d'avoir essayé

en abusant : tu pourrais essayer à nouveau SGP avec le driver original ?

https://github.com/jwellman80/ArduinoLightbox/blob/master/LEDLightBoxAlnitak.ino

 

 

 

Lien vers le commentaire
Partager sur d’autres sites

Si cela fonctionne est reconnu pas SGP, ça va être un truc de fou :):)

Par contre il faudra faire un petit résumé de ce qu'il faut et comment faire pour les personnes comme moi, car je suis le post depuis le début (belle aventure) et à un moment, Largué Complet ;);)

 

Lien vers le commentaire
Partager sur d’autres sites

il y a 1 minute, manudu74 a dit :

Si cela fonctionne est reconnu pas SGP, ça va être un truc de fou :):)

 

 

il n'y a pas de raison qu'on y arrive pas,

mais il faut me motiver parce que moi j'ai ce que je voulais coté électronique logique 🙂

 

Si SGP utilise au pied de la lettre le jeu de commandes fourni ici on sait quoi faire :

https://www.optecinc.com/astronomy/catalog/alnitak/resources/Alnitak_GenericCommandsR4.pdf

 

L'histoire du port série sur les arduino se règle facilement en utilisant un "arduino pro micro"

Le seul truc qui m'embête, c'est que le code serait différent selon qu'on veut l'utiliser sur indilib ou sur SGP, ce serait couillon.

D'ailleurs il est possible que le protocole indi prenne quelques libertés sur ces histoires de CRLF

Avec vos retours, je remonterai peut-être ça sur le forum indi

Lien vers le commentaire
Partager sur d’autres sites

il y a 1 minute, gehelem a dit :

 

il n'y a pas de raison qu'on y arrive pas,

mais il faut me motiver parce que moi j'ai ce que je voulais coté électronique logique 🙂

 

Si SGP utilise au pied de la lettre le jeu de commandes fourni ici on sait quoi faire :

https://www.optecinc.com/astronomy/catalog/alnitak/resources/Alnitak_GenericCommandsR4.pdf

 

L'histoire du port série sur les arduino se règle facilement en utilisant un "arduino pro micro"

Le seul truc qui m'embête, c'est que le code serait différent selon qu'on veut l'utiliser sur indilib ou sur SGP, ce serait couillon.

D'ailleurs il est possible que le protocole indi prenne quelques libertés sur ces histoires de CRLF

Avec vos retours, je remonterai peut-être ça sur le forum indi

 

👄 un gros bisous pour la motivation, ça va ;);););)

Lien vers le commentaire
Partager sur d’autres sites

@gehelem

Alors oui oui il me demande bien un port COM.

Mais je prendrais avec des pincettes mes dires car vu que j'utilise un arduino nano ou uno qui est un peu ennuyeux je serais prudent.

 

Pour SGP avec le firmware original je recable le tout et je viens redire.

 

Par contre avant de tout ranger, histoire d'avoir un peu plus de billes, malgré que la connexion a INDI ne se fasse pas (il réclacle toujours le ">S300" et du coup timeout) parfois, en lui demandant, par exemple, d'allumer la led a 150 ba au bout d'un moment ca fonctionne, et ce même si tout est au rouge!! faut juste être trés patient et ne pas lancer sa soirée dans ces conditions -> en mode simu pour le scope et la ccd ba avec le flip flat ca a fermé ma soirée et sans retour au park!! reste que c'est de la simu a 66%!!!

 

  • Merci / Quelle qualité! 1
Lien vers le commentaire
Partager sur d’autres sites

il y a 5 minutes, olivier1986 a dit :

Alors oui oui il me demande bien un port COM.

merci (j'avais un doute avec les histoires D2XX...)

 

il y a 6 minutes, olivier1986 a dit :

(il réclacle toujours le ">S300" et du coup timeout)

>S300

ça m'épate cette valeur...

tu peux mettre en débug sur un fichier ?

(cliquer sur débug dans option, et cocher "to log file" + récupérer le fichier une fois que ça a planté)

 

tu devrais obtenir qqch comme ça :

INFO	30.806522 sec	: Session log file /home/gilles/.indi/logs/2019-04-19/indi_flipflat/indi_flipflat_09:05:42.log
DEBUG	55.346298 sec	: Connecting to /dev/ttyACM0
DEBUG	55.346619 sec	: Port FD 4
DEBUG	55.346692 sec	: Connection successful, attempting handshake...
DEBUG	55.346858 sec	: CMD <>P000>
DEBUG	55.397691 sec	: RES <>
ERROR	55.397758 sec	: Unable to parse input ()
ERROR	55.397783 sec	: Device ping failed.
DEBUG	55.397804 sec	: Handshake failed.

 

 

Lien vers le commentaire
Partager sur d’autres sites

En regardant la photo de @supaii, j'ai bien l'impression que la connexion se fait...

c'est après que ça part en sucette

 

Donc deux idées me viennent :

- vous êtes bien à 9600 sur le baudrate ?

- est-ce que par hasard vous n'auriez pas d'autres arduinos qui seraient branchés en même temps (même s'ils ne servent pas)

 

EDIT IMPORTANT = 4000 messages !!! 

Lien vers le commentaire
Partager sur d’autres sites

il y a 1 minute, gehelem a dit :

- vous êtes bien à 9600 sur le baudrate ?

- est-ce que par hasard vous n'auriez pas d'autres arduinos qui seraient branchés en même temps (même s'ils ne servent pas)

yep mais ça change rien (testé)

 

edit: et sur deux machine differentes

Modifié par supaii
Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation !

Vous pouvez répondre maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous pour poster avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.