Aide débutant

Portrait de Geuks

Salut à tous.

Je suis en licence en développement informatique et j'ai un projet avec une école pour des enfants handicapés. Je dois développer et construire un boîtier relié à pc qui doit recevoir différentes informations à travers des "télécommandes" ou "boutons". Ses transmetteurs peuvent envoyés leurs informations en même temps. Le but final est de les récupérés et de savoir qui à appuyer quand et sur quel bouton.

Je suis débutant dans l'élèctronique et j'aimerais un peu d'aide afin de m'orienter sur le matériel que je dois avoir et les tutoriels qui pourrait m'aider.

Merci beaucoup.

Portrait de Walter

Salut,

C'est assez vague, mais dans un premier temps pour les boutons tu pourrais commencer par simplement utiliser un arduino avec des boutons qui écrit sur le moniteur série.

Il existe sûrement des milliers exemples de base, OpenClassroom propose généralement de bon tutoriel.

https://openclassrooms.com/fr/courses/2778161-programmez-vos-premiers-mo....

Pour aller plus loin, après il faudrait savoir ce que tu veux vraiment faire, surtout ce que doit actionner ces boutons ou télécommande sur le PC.

concernant le matériel, même un coffret basic je ne suis pas sûre que ce soit le meilleur conseil, car il te faudra sans doute racheter des composants séparément.

Je ne sais pas si ici quelqu'un a tester https://www.tinkercad.com/circuits et si c'est adapter au débutant ?

Portrait de Geuks

Bonjour, merci pour ta réponse. En faite les « boutons » permettrons d’envoyer des informations afin de la récupérer sur le pc et la traiter avec un logiciel. Connaître et savoir qui a appuyer sur le bouton et quand.

Portrait de Spy

Si j'ai bien compris, ce qui n'est âs forcément le cas :

Plusieurs boutons sont disposés de façon à ce que tous les participants aient accès à celui qui lui est attribué !

Sur un événement comme une question par exemple, tu voudrais savoir quel boutons ont été actionnés et dans quel ordre. C'est un peu comme ce que l'on voit à la télé avec le fameux Champigon Buzzer.

Est ce cela dont il s'agit ?

Si oui :

Une arduino ayant plusieurs boutons raccordés sur ses entrées, dès qu'un bouton est actionné, on stocke dans des variables la valeur de millis() (c'est la durée en millisecondes depuis que l'on a mis l'Arduiono sous tension et dans une autre variable le numéro de l'entrée qui a changé d'état. On attends quelque secondes que tous les participants aient eu le temps d'appuyer sur leur bouton et on envoi sur le port série dans l'ordre des actions le numéro et la valeur de millis() au moment de l'action de chaque bouton actionné. Si c'est cela c'est relativement simple à exécuter ! 

Portrait de Walter

Désolé mais tu bien trop vague, "un logiciel" c'est un logiciel que vous allez créer ou qui existe déjà.

"Les boutons permettrons d'envoyer des informations", chaque bouton indiquera uniquement si il est enfoncé ou pas, du coup de quelles informations parle tu ?

Ha Spy m'a devancé :)

Portrait de Geuks

Oui Spy c'est à peu prêt ça, mise à part que j'appel cela un bouton mais il y aura sûrement plusieurs choix comme au code la route par exemple. Tout cela sera lié à un logiciel que je créerais par la suite.

Portrait de Spy

Dans un premier temps je considère qu'il n'y a qu'un seul choix et une réponse orale !!

ton message est arrivé trop tard !

Je pense que pour des choix multiples il suffit de multiplier les boutons et d'adapter le code !
J'ai déjà une petite idée de la chose ....

Comme le problème est relativement simple voici le code : (Problème opérationnel !)

// exemple pour 5 Boutons mais ce n'est pas une limite
byte Ordre[5]; // numéro des boutons dans l'ordre des appuis
unsigned long Temps[5]; // Stockage de la valeur de millis() dans l'ordre des appuis
String Classement[5] = {  "Premier   : ", "Deuxième  : ", "Troisième : ", "Quatrième : ", "Cinquième : "};

byte Verrou[5] = {0, 0, 0, 0, 0}; // mémoire des boutons déjà actionné pour éviter des entrées multiples
int Bouton1 = 8;// numéro de la pin sur lesquels sont raccordés les boutons
int Bouton2 = 9; // entre la masse (GND) et cette entrée
int Bouton3 = 10; //               "            "
int Bouton4 = 11; //               "            "
int Bouton5 = 12; //               "            "
float Delai = 10; //exemple 10 secondes pour répondre valeur à régler selon ...
int Bouton_depart = 7; // Dès que ce bouton est appuyé le délais de 10 secondes est
//déclanché
unsigned long TempsFin; // valeur millis() à l'appui de départ augmenté du délai pour répondre
int N ; //numéro d'ordre des actions

void setup() {
  pinMode(Bouton1, INPUT_PULLUP); // Attribution des entrées à leurs Boutons
  pinMode(Bouton2, INPUT_PULLUP);
  pinMode(Bouton3, INPUT_PULLUP);
  pinMode(Bouton4, INPUT_PULLUP);
  pinMode(Bouton5, INPUT_PULLUP);
  pinMode(Bouton_depart, INPUT_PULLUP);
  Serial.begin(9600);// vitesse de transfert du port série
}

void loop() {

  if (digitalRead(Bouton_depart) == 0) {
    Serial.print("10 Secondes");
    N = 0;
    TempsFin = millis() + (Delai * 1000);
    while (millis() <= TempsFin ) {
      Serial.println(int((TempsFin - millis()) / 1000));
      if (digitalRead(Bouton1) == 0) {
        if (Verrou[0] == 0) {
          Temps[N]  = millis();
          Verrou[0] = 1;
          Ordre[N] = 1;
          N++;
        }
      }
      else if (digitalRead(Bouton2) == 0) {
        if (Verrou[1] == 0) {
          Temps[N]  = millis();
          Verrou[1] = 1;
          Ordre[N] = 2;
          N++;
        }
      }
      else if (digitalRead(Bouton3) == 0) {
        if (Verrou[2] == 0) {
          Temps[N]  = millis();
          Verrou[2] = 1;
          Ordre[N] = 3;
          N++;
        }
      }
      else if (digitalRead(Bouton4) == 0) {
        if (Verrou[3] == 0) {
          Temps[N]  = millis();
          Verrou[3] = 1;
          Ordre[N] = 4;
          N++;
        }
      }
      else if (digitalRead(Bouton5) == 0) {
        if (Verrou[4] == 0) {
          Temps[N] = millis();
          Verrou[4] = 1;
          Ordre[N] = 5;
          N++;
        }
      }
    }

    Serial.println("Résultats");
    for (N = 0; N < 5; N++) {
      if (TempsFin - Temps[N] < TempsFin) {
        Serial.print(Classement[N] + " Joueur N°");
        Serial.print(Ordre[N]);
        Serial.print("  Temps : ");
        Serial.print((Delai * 1000  - (TempsFin - Temps[N])) / 1000);
        Serial.println(" secondes");
      }

    }
    Serial.println();
    for (N = 0; N < 5; N++) {
      if (Verrou[N] == 0)
        Serial.println("Joueur N°" + String(N + 1) + " Temps dépassé");
      Verrou[N] = 0;
      Ordre[N] = 0;
      Temps[N] = 0;
    }
  }
}

Portrait de Geuks

Merci de ton aide, le problème est que je n'y connais rien en électronique et j'aimerais savoir quel matériel j'aurais besoin. Je suis développeur et au niveau code je pense que j'y arriverais mais merci encore tu m'as mâché le travail ahah.

Portrait de Spy

Avant d"aller plus loin j'ai besoin d'avoir des précisions pour éviter de faire fausse route.
Chaque participant dispose de plusieurs boutons pour donner une réponse entre plusieurs choix, mais est il possible que la bonne réponse soit la combinaison de plusieurs boutons. Par exemple on dispose de 3 boutons A, B et C est ce que la bonne réponse se limite à A ou B ou C, ou alors A+B ou B+C ou tout autre combinaison des trois boutons ?

Dans le cas de réponse A+C ou tout autre combinaison tu auras nécessairement  besoin de voyants pour que le participant visualise la combinaison qu'il a choisi. Ce principe est celui adopté par le système de l'examen au permis de conduire, qui lui ne tient pas compte de la rapidité de la réponse mais limite cette réponse dans un laps de temps.

Il faut savoir que dans ce cas un système filaire devient pratiquement irréalisable et tu seras obligé de passer par un système radio comme la WIFI par exemple.

Donc pour pouvoir te répondre il faut que tu fixes un cahier des charge très précis car le choix du matériel nécessaire en dépend.

Si on considère que les participants sont des personnes handicapées en fauteuil roulant voir alité ou que sais-je le système WIFI devient pratiquement une obligation car chaque liaison filaire devient une source de problème mélange des câbles, solidité des boîtiers etc..

Un autre point est celui du budget attribué à ce projet.

Pour résumé:

  • Combien de participants simultanés ?
  • Combien de boutons dispose chaque participant ?
  • Est ce une sélection de bouton unique ou de combinaison de plusieurs boutons.
  • Les boîtiers sont ils fixés sur une table par exemple ou mobiles pour plus de confort ?
  • Quel est le niveau du budget attribué à ce projet.
  • Autres précisions que tu voudrais nous apporter !
Portrait de Spy

Pour te donner un exemple de prix, il est possible de réaliser un boîtier Wifi avec écran tactile donc pas de bouton physique ni voyant type LED support de pile ou accus rechargeable pour une somme de 20 à 25 euros. Le prix reste pour la fourniture du matériel uniquement sans les chargeurs ! Il faut compter 10 euros de plus par chargeur.

Portrait de Geuks

Laisse moi quelques jours et je répondrais à toutes les questions. C’est super sympa de ta part en tout cas merci encore . Je peux avoir un mail ou quelque part ou l’on puisse communiquer plus directement?

Portrait de Spy

Pour me contacter directement vas ici et clic sur contact !

Quand je uis en ligne on peut chatter, regarde en bas à droite de l'écran du navigateur !!!