Projet STI2D gyropode système de verrouillage / deverrouillage

Bonjour à tous.

Actuellement en terminale STI2D, je me suis fait attribué comme projet la création d’un système de verouillage/dévérouillage sur le gyropode Ewee PT qui ressemble à ceci : Ewee.fr :: Ewee-PT - Transporteurs
Pour mener à bien ce projet j’ai à disposition : une carte Arduino Uno , un shield RFID ainsi que des cartes mifare ( http://www.adafruit.com/products/364 ).

N’ayant pas fait d’arduino l’année dernière je me suis vu obligé “d’improviser” avec Internet sur le début de mon projet mais maintenant cela se complique et j’aurais besoin de votre aide.

En ce qui concerne le code , je n’ai pas réellement d’idée excepté le fait que lorsque le shield détecte la bonne carte Mifare cela déverouille ou verrouille le Gyropode. Cependant j’ai le code de la lecture de la carte :

/**************************************************************************/
/*! 
    @file     readMifare.pde
    @author   Adafruit Industries
    @license  BSD (see license.txt)

    This example will wait for any ISO14443A card or tag, and
    depending on the size of the UID will attempt to read from it.
   
    If the card has a 4-byte UID it is probably a Mifare
    Classic card, and the following steps are taken:
   
    - Authenticate block 4 (the first block of Sector 1) using
      the default KEYA of 0XFF 0XFF 0XFF 0XFF 0XFF 0XFF
    - If authentication succeeds, we can then read any of the
      4 blocks in that sector (though only block 4 is read here)
   
    If the card has a 7-byte UID it is probably a Mifare
    Ultralight card, and the 4 byte pages can be read directly.
    Page 4 is read by default since this is the first 'general-
    purpose' page on the tags.


    This is an example sketch for the Adafruit PN532 NFC/RFID breakout boards
    This library works with the Adafruit NFC breakout 
      ----> https://www.adafruit.com/products/364
 
    Check out the links above for our tutorials and wiring diagrams 
    These chips use I2C to communicate

    Adafruit invests time and resources providing this open source code, 
    please support Adafruit and open-source hardware by purchasing 
    products from Adafruit!
*/
/**************************************************************************/
#include <Wire.h>
#include <Adafruit_NFCShield_I2C.h>

#define IRQ   (2)
#define RESET (3)  // Not connected by default on the NFC Shield

Adafruit_NFCShield_I2C nfc(IRQ, RESET);

void setup(void) {
  Serial.begin(115200);
  Serial.println("Hello!");

  nfc.begin();

  uint32_t versiondata = nfc.getFirmwareVersion();
  if (! versiondata) {
    Serial.print("Didn't find PN53x board");
    while (1); // halt
  }
  // Got ok data, print it out!
  Serial.print("Found chip PN5"); Serial.println((versiondata>>24) & 0xFF, HEX); 
  Serial.print("Firmware ver. "); Serial.print((versiondata>>16) & 0xFF, DEC); 
  Serial.print('.'); Serial.println((versiondata>>8) & 0xFF, DEC);
  
  // configure board to read RFID tags
  nfc.SAMConfig();
  
  Serial.println("Waiting for an ISO14443A Card ...");
}


void loop(void) {
  uint8_t success;
  uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 };  // Buffer to store the returned UID
  uint8_t uidLength;                        // Length of the UID (4 or 7 bytes depending on ISO14443A card type)
    
  // Wait for an ISO14443A type cards (Mifare, etc.).  When one is found
  // 'uid' will be populated with the UID, and uidLength will indicate
  // if the uid is 4 bytes (Mifare Classic) or 7 bytes (Mifare Ultralight)
  success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength);
  
  if (success) {
    // Display some basic information about the card
    Serial.println("Found an ISO14443A card");
    Serial.print("  UID Length: ");Serial.print(uidLength, DEC);Serial.println(" bytes");
    Serial.print("  UID Value: ");
    nfc.PrintHex(uid, uidLength);
    Serial.println("");
    
    if (uidLength == 4)
    {
      // We probably have a Mifare Classic card ... 
      Serial.println("Seems to be a Mifare Classic card (4 byte UID)");
    
      // Now we need to try to authenticate it for read/write access
      // Try with the factory default KeyA: 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
      Serial.println("Trying to authenticate block 4 with default KEYA value");
      uint8_t keya[6] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };
    
      // Start with block 4 (the first block of sector 1) since sector 0
      // contains the manufacturer data and it's probably better just
      // to leave it alone unless you know what you're doing
      success = nfc.mifareclassic_AuthenticateBlock(uid, uidLength, 4, 0, keya);
    
      if (success)
      {
        Serial.println("Sector 1 (Blocks 4..7) has been authenticated");
        uint8_t data[16];
    
        // If you want to write something to block 4 to test with, uncomment
        // the following line and this text should be read back in a minute
        //memcpy(data, (const uint8_t[]){ 'a', 'd', 'a', 'f', 'r', 'u', 'i', 't', '.', 'c', 'o', 'm', 0, 0, 0, 0 }, sizeof data);
        //success = nfc.mifareclassic_WriteDataBlock (4, data);

        // Try to read the contents of block 4
        success = nfc.mifareclassic_ReadDataBlock(4, data);
    
        if (success)
        {
          // Data seems to have been read ... spit it out
          Serial.println("Reading Block 4:");
          nfc.PrintHexChar(data, 16);
          Serial.println("");
      
          // Wait a bit before reading the card again
          delay(1000);
        }
        else
        {
          Serial.println("Ooops ... unable to read the requested block.  Try another key?");
        }
      }
      else
      {
        Serial.println("Ooops ... authentication failed: Try another key?");
      }
    }
    
    if (uidLength == 7)
    {
      // We probably have a Mifare Ultralight card ...
      Serial.println("Seems to be a Mifare Ultralight tag (7 byte UID)");
    
      // Try to read the first general-purpose user page (#4)
      Serial.println("Reading page 4");
      uint8_t data[32];
      success = nfc.mifareultralight_ReadPage (4, data);
      if (success)
      {
        // Data seems to have been read ... spit it out
        nfc.PrintHexChar(data, 4);
        Serial.println("");
    
        // Wait a bit before reading the card again
        delay(1000);
      }
      else
      {
        Serial.println("Ooops ... unable to read the requested page!?");
      }
    }
  }
}

J’ai déja cherché sur Internet sans succès , les tutoriels ne m’aidant pas non plus.
N’ayant pas trouvé de documentation technique sur le gyropode Ewee, je me retrouve coincé car je n’ai pas la moindre idée du programme à faire. Si une personne pouvait m’aiguiller j’en serais ravi. Si vous avez des questions je reste à votre écoute pour de plus amples informations si je peux y répondre.

Merci d’avance.

Salut, le problème, ce n’est pas le code, mais l’interfaçage Arduino/bazar à mouvoir.
Puissance absorbée; tension de service…ext…ext…ext…
Remmène des infos si tu veux que les experts aient quelque chose à, se mettre sous la dent. :wink:

N'ayant pas trouvé de documentation technique sur le gyropode Ewee,

Peut tu donner le nom de ton Lycée qu'on y envoie les inspecteurs financiers du Ministère . :grin: Parce que perdre la doc d'un engin qui coûte 979 € j'y crois pas, ou alors tu n'as pas bien cherché. :~

Plus sérieusement tes explications sont incomplètes : Ce que j'ai compris : tu disposes de l'usage d'un gyropode, on a aussi mis des cartes "mifare", je ne sais pas ce que c'est mais cela doit être ce qu'il faut. Question n:1 : la liaison carte mifare/gyropode est-elle déjà faite ou faut-il la faire ? Je parle de liaison Physique avec des fils raccordés, Et/Ou de la partie logicielle.

Question 2 : que reste-t-il à faire

Pour le code si tu n'as pas d'idée il y a une méthode simple et efficace. L'erreur est de se lancer bille en tête à écrire des lignes de code, pire à faire du coupé/coller. Tu écris sur le papier en phrases courtes, courtes c'est essentiel, ce que tu dois faire et tu verra que les principaux paragraphes (fonctions) de ton programme apparaîtront tous seul. Le squelette défini il ne restera plus qu'à développer les points un par un, sans oublier de faire régulièrement des petits tests.

bonjour, il manque des params comme le dit 68tjs. le déverrouillage doit faire quoi? empécher le bestio de démarrer?

si c'est ca, pas trop compliqué, un relais sur le circuit de la batterie et basta. bonne carte, relais ferme, donc courant passe et le module extra lunaire :) avance mauvaise carte, une cartouche de gaz mortel ou une cartouche de chevrotine et hop le gars revient plus 8) etat relais basculant de true à false pour démarrer et arrêter. 1er passage bonne carte, relais en true on se sert plus du module 2eme passage, relais en false

68tjs:

N'ayant pas trouvé de documentation technique sur le gyropode Ewee,

Peut tu donner le nom de ton Lycée qu'on y envoie les inspecteurs financiers du Ministère . :grin: Parce que perdre la doc d'un engin qui coûte 979 € j'y crois pas, ou alors tu n'as pas bien cherché. :~

Plus sérieusement tes explications sont incomplètes : Ce que j'ai compris : tu disposes de l'usage d'un gyropode, on a aussi mis des cartes "mifare", je ne sais pas ce que c'est mais cela doit être ce qu'il faut. Question n:1 : la liaison carte mifare/gyropode est-elle déjà faite ou faut-il la faire ? Je parle de liaison Physique avec des fils raccordés, Et/Ou de la partie logicielle.

Question 2 : que reste-t-il à faire

Pour le code si tu n'as pas d'idée il y a une méthode simple et efficace. L'erreur est de se lancer bille en tête à écrire des lignes de code, pire à faire du coupé/coller. Tu écris sur le papier en phrases courtes, courtes c'est essentiel, ce que tu dois faire et tu verra que les principaux paragraphes (fonctions) de ton programme apparaîtront tous seul. Le squelette défini il ne restera plus qu'à développer les points un par un, sans oublier de faire régulièrement des petits tests.

Je viens de voir que j'avais seulement la document d'un autre gyropode mais qui est fort similaire. Pour expliquer le système , je dispose d'un gyropode et à l'aide de carte Mifare qui sont des sortes de badges je dois verrouiller ou déverrouiller le gyropode à l'aide d'un shield RFID qui a été programmé sous Arduino. Pour votre question n° 1 : le shield RFID n'a pas encore été installé sur le gyropode , je dois déja trouvé le programme nécessaire et lorsque j'aurais peut etre le bon je devrais l'installer puis le tester sur le gyropode. Donc pour l'instant rien de fait. Question n°2 : J'aurais envie de dire tout , la programmation est le coeur meme du système mais il reste le fait que je dois trouver un moyen de programmer en Arduino le shield RFID pour qu'il soit relié au système qui gère le "démarrage" du gyropode.

infobarquee: bonjour, il manque des params comme le dit 68tjs. le déverrouillage doit faire quoi? empécher le bestio de démarrer?

si c'est ca, pas trop compliqué, un relais sur le circuit de la batterie et basta. bonne carte, relais ferme, donc courant passe et le module extra lunaire :) avance mauvaise carte, une cartouche de gaz mortel ou une cartouche de chevrotine et hop le gars revient plus 8) etat relais basculant de true à false pour démarrer et arrêter. 1er passage bonne carte, relais en true on se sert plus du module 2eme passage, relais en false

Le déverouillage doit au contraire lancer la machine. Quand je passe mon "badge" le gyropode doit démarrer, un peu quand on passe une porte avec un badge , je passe mon badge et la porte s'ouvre bah la c'est presque la même chose. Après en ce qui concerne le verouillage ce n'est pas dit si je dois aborder cette partie donc je me contente du deverouillage pour l'instant. Je ne comprend pas vraiment ce que vous avez écrit , je débute et à vrai dire l'électronique j'en ai jamais pratiqué ...

bon je vais la refaire autrement

bonne carte, relais ferme, donc courant passe et le module extra lunaire démarre mauvaise carte, une cartouche de gaz mortel ou une cartouche de chevrotine et hop le gars revient plus tu connecte un relais sur le + de la batterie en NO (normalement ouvert), donc le courant passe pas

etat relais basculant de true à false pour démarrer et arrêter. on bascule le relais en mode NF ou NO (voir boolean) 1er passage bonne carte, relais en true (donc on ferme le relais) le courant passe on se sert plus du module (on a marre de faire mumuse) 2eme passage bonne carte, relais en false (donc on ouvre le relais) le courant passe plus

ca revient au même que si tu mettais un bouton marche/arrêt en fait, sauf que la, tu utilise un badge

en utilisant l'exemple du rfid (pas installé pour ma part), on doit avoir ca en stock

notre cher ami a même fait un tuto ;) http://skyduino.wordpress.com/2011/12/17/arduino-lecteur-rfid-a-ecran-lcd-avec-stockage-du-tag-valide-en-eeprom-externe-i2c/

infobarquee:
bon je vais la refaire autrement

bonne carte, relais ferme, donc courant passe et le module extra lunaire démarre
mauvaise carte, une cartouche de gaz mortel ou une cartouche de chevrotine et hop le gars revient plus
tu connecte un relais sur le + de la batterie en NO (normalement ouvert), donc le courant passe pas

etat relais basculant de true à false pour démarrer et arrêter.
on bascule le relais en mode NF ou NO (voir boolean)
1er passage bonne carte, relais en true (donc on ferme le relais) le courant passe
on se sert plus du module (on a marre de faire mumuse)
2eme passage bonne carte, relais en false (donc on ouvre le relais) le courant passe plus

ca revient au même que si tu mettais un bouton marche/arrêt en fait, sauf que la, tu utilise un badge

en utilisant l’exemple du rfid (pas installé pour ma part), on doit avoir ca en stock

notre cher ami a même fait un tuto :wink:
http://skyduino.wordpress.com/2011/12/17/arduino-lecteur-rfid-a-ecran-lcd-avec-stockage-du-tag-valide-en-eeprom-externe-i2c/

Hmm. Et tout ça est faisable sous arduino , si oui je vais essayer de voir s’il existe des tutoriels car cela m’a l’air un peu compliqué ? Oui j’avais déja vu ce tutoriel mais il est légèrement différent car il y a des composants supplémentaires mais je vais m’en servir alors ^^’.

Hmm. Et tout ça est faisable sous arduino , si oui je vais essayer de voir s'il existe des tutoriels car cela m'a l'air un peu compliqué ? Oui j'avais déja vu ce tutoriel mais il est légèrement différent car il y a des composants supplémentaires mais je vais m'en servir alors ^^'.

on est bien sur le forum arduino? j'ai comme un doute d'un coup en donnant une réponse :grin: A moins qu'il faille un server de 256Go de ram et 10To de hd pour piloter un relais? :fearful:

Oui enfin je voulais dire , il y a des manipulations avec des cables ou autres à faire ou seul la programation suffit ? Je vais essayer dès que je pourrais , merci :).