Binome2019-2

De Wiki de bureau d'études PeiP


Introduction

L'objectif de ce nouveau bureau d'étude est de concevoir et créer une clé USB en créant un circuit électronique, en soudant des composants électroniques et en programmant le micro-processeur. L'objectif supplémentaire de bureau d'étude est d'ajouter à notre clé USB une ou plusieurs fonctionnalités qui la rendra unique.

Matériel utilisé

• Circuit imprimé

• Micro-contrôleur

ATMega8u2.jpg

• Mémoire

Adesto64Mb.jpg

• Alimentation

Ic2B2.jpg

• Micro-interrupteur

BoutonB2.jpg

• Microphone

Microphone.png

• Led

LedB2.jpg

• Résistance

ResistanceB2.jpg

• Inducteur

InducteurB2.jpg

• Condensateur

CondensateurB2.jpg

• Potentiomètre

PotentiometreB2.jpg

• Résonateur quartz

QuartzB2.png

Dé électronique

Code du dé électronique

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define LED1 0
#define LED2 1
#define LED3 2
#define LED4 3
#define LED5 4
#define LED6 5
#define LED7 6
int Tableaupin[7]= {5,4,1,3,6,2,0};
int BROCHE_BOUTON=7;
void setup() {
 // initialisation
 Serial.begin(9600);
 pinMode(Tableaupin[LED1], OUTPUT);
 pinMode(Tableaupin[LED2], OUTPUT);
 pinMode(Tableaupin[LED3], OUTPUT);
 pinMode(Tableaupin[LED4], OUTPUT);
 pinMode(Tableaupin[LED5], OUTPUT);
 pinMode(Tableaupin[LED6], OUTPUT);
 pinMode(Tableaupin[LED7], OUTPUT);
 pinMode(BROCHE_BOUTON,INPUT_PULLUP);
 digitalWrite(Tableaupin[LED1],HIGH);
 delay(200);
 digitalWrite(Tableaupin[LED1],LOW);
 digitalWrite(Tableaupin[LED2],HIGH);
 delay(200);
 digitalWrite(Tableaupin[LED2],LOW);
 digitalWrite(Tableaupin[LED3],HIGH);
 delay(200);
 digitalWrite(Tableaupin[LED3],LOW);
 digitalWrite(Tableaupin[LED4],HIGH);
 delay(200);
 digitalWrite(Tableaupin[LED4],LOW);
 digitalWrite(Tableaupin[LED5],HIGH);
 delay(200);
 digitalWrite(Tableaupin[LED5],LOW);
 digitalWrite(Tableaupin[LED6],HIGH);
 delay(200);
 digitalWrite(Tableaupin[LED6],LOW);
 digitalWrite(Tableaupin[LED7],HIGH);
 delay(200);
 digitalWrite(Tableaupin[LED7],LOW);
 randomSeed(analogRead(0));
}
int random_a_b(int a,int b)
//fonction qui renvoie un nombre entre a inclus et b exclus
{
return random()%(b-a) +a;
}
//fct nombre de leds allumées
void de1T()
{
  digitalWrite(Tableaupin[LED4],HIGH);
  delay(1000);
}
void de2T()
{
  digitalWrite(Tableaupin[LED3],HIGH);
  digitalWrite(Tableaupin[LED5],HIGH);
  delay(1000);
} 
void de3T()
{
  digitalWrite(Tableaupin[LED3],HIGH);
  digitalWrite(Tableaupin[LED4],HIGH);
  digitalWrite(Tableaupin[LED5],HIGH);
  delay(1000);
}
void de4T()
{
  digitalWrite(Tableaupin[LED1],HIGH);
  digitalWrite(Tableaupin[LED3],HIGH);
  digitalWrite(Tableaupin[LED5],HIGH);
  digitalWrite(Tableaupin[LED7],HIGH);
  delay(1000);
}
void de5T()
{
  digitalWrite(Tableaupin[LED1],HIGH);
  digitalWrite(Tableaupin[LED3],HIGH);
  digitalWrite(Tableaupin[LED4],HIGH);
  digitalWrite(Tableaupin[LED5],HIGH);
  digitalWrite(Tableaupin[LED7],HIGH);
  delay(1000);
}
void de6T()
{
  digitalWrite(Tableaupin[LED1],HIGH);
  digitalWrite(Tableaupin[LED2],HIGH);
  digitalWrite(Tableaupin[LED3],HIGH);
  digitalWrite(Tableaupin[LED5],HIGH);
  digitalWrite(Tableaupin[LED6],HIGH);
  digitalWrite(Tableaupin[LED7],HIGH);
  delay(1000);
}
// fonct eteint lampe
void de6F()
{
  digitalWrite(Tableaupin[LED1],LOW);
  digitalWrite(Tableaupin[LED2],LOW);
  digitalWrite(Tableaupin[LED3],LOW);
  digitalWrite(Tableaupin[LED4],LOW);
  digitalWrite(Tableaupin[LED5],LOW);
  digitalWrite(Tableaupin[LED6],LOW);
  digitalWrite(Tableaupin[LED7],LOW);
}
//fonction d'affichage resultat final
void loop()
{
  int LED;
 // partie selection dé
  if (digitalRead(BROCHE_BOUTON) == HIGH){
  LED=random_a_b(0,6);
  de6F();
  }
  unsigned char test=(digitalRead(BROCHE_BOUTON)==LOW);
  switch (LED)
  {
    case 0:
      if (test) de1T(); break;
    case 1:
      if (test) de2T(); break;
    case 2:
      if (test) de3T(); break;
    case 3:
      if (test) de4T(); break;
    case 4:
      if (test) de5T(); break;
    case 5:
      if (test) de6T(); break;
  }
}


Illustration du dé électronique

Devant du dé

DédevantB2.jpg

Derrière du dé

DéderrièreB2.jpg

Vidéo du dé

Média:dévidéoB2.mp4

Fichier fritzing de notre dé

Fichier:DéB2.zip

Clé USB

Code de la clé USB

Illustration de la clé USB

Circuit imprimé de notre clé USB:

CircuitB2.png

Zoom sur le schematic du micro de notre clé USB:

SchematicmicroB2.png

Fichier contenant la forme de notre clé USB réalisé sur Inkscape :

Fichier:FormeB2.zip

Fichier contenant la version finale du fritzing de notre clé USB:

Fichier:CleFritzingB2.zip

Chronologie

Janvier

27/01/2020

Idée : Synthèse vocale qui décrit tout ce que la clef fait

Février

10/02/2020

Nouvelle idée pour remplacer la précédente : Clé qui se verrouille/déverrouille et pour la déverrouiller de façon originale : crier dessus

Recherche de notre microphone : https://fr.farnell.com/kingstate/kecg2740pbj/microphone-miniature-electret/dp/1299885?gclid=EAIaIQobChMIntmX98TG5wIVVJnVCh1wkga7EAQYAiABEgL_XfD_BwE&gross_price=true&mckv=GxWpbYpX_dc%7Cpcrid%7C80993908502%7C&CMP=KNC-GFR-GEN-SHOPPING-1299885

17/02/2020 & 02/03/2020

Nous avons appris à utiliser le logiciel Fritzing en réalisant le Schematic et le PCB d'un circuit imprimé. Le but est ici de créer un dé avec des leds.

Voici le circuit du dé (face avant) que nous avons réalisé :

Alixevefavant.png

Voici le circuit du dé (face arrière) que nous avons réalisé :

Alixevefarriere.png

Mars

09/03/2020

Programmation du dé et début de la soudure

12/03/2020

Fin de la soudure et de la programmation du dé


Test ReX 15/03/2020, Après quelques soudures le programme suivant passe sur l'ATtiny84 :

#define MAX_LED 7
int leds[]={0,1,2,3,4,5,6};
void setup() {
  int i;
  for(i=0;i<MAX_LED;i++) pinMode(leds[i], OUTPUT);
}
void loop() {
  int i;
  for(i=0;i<MAX_LED;i++) digitalWrite(leds[i], HIGH);
  delay(1000);
  for(i=0;i<MAX_LED;i++) digitalWrite(leds[i], LOW);
  delay(1000);
}

Démonstration de l'exécution : media:binome2019-2-test1.mp4.


16/03/2020

Première séance via chat.plil.fr Test sur la carte, corrections de bugs dans le programme Test à l'aide d'un Arduino Uno et des composants disponibles chez Eve : Testeve.jpg

19/03/2020

Finalisation du dé électronique et début de la conception de la carte de la clef USB sur Fritzing.

23/03/2020

Nous avions pris la cle_usb_bis du wiki mais nous avons remarqué qu'il n'y avait pas d'I/O analogique donc nous avons pris la clé "plus simple" (cle_usb sur le wiki). Nous avons ensuite ajouté un microphone et un amplificateur.

26/03/2020

Nous avons modifié notre schematic afin qu'il soit plus clair et nous avons changé d'I/O de l'ATMega8u2 le micro afin d'être sur une I/O analogique.

31/03/2020

Nous avons commencé à regarder le wiki et avons avancé sur le fritzing de la clé. Nous avons appris à l'aide de Inkscape à créer une forme personnalisée pour la clé, voici la forme que nous avons choisi : Fichier:FormeB2.zip

Avril

02/04/2020

Nous avons continué le circuit imprimé de notre clé en mettant tous nos composants ajoutés en composants de surface sauf le micro.

06/04/2020

Nous avons continué le circuit imprimé de notre clé en réorganisant les différents éléments dessus afin d'optimiser la place prise par les composants.

09/04/2020

Nous avons fini le fritzing de notre clé USB en l'optimisant au maximum au niveau des fils et de la place prise. Au niveau de la partie programmation, nous avons fait les modifications nécessaires comme indiqué sur le wiki au niveau des dossiers et de la modification de fichiers. Nous avons également mis la vidéo de notre dé sur le wiki.

28/04/2020

Nous avons complété notre wiki dans la partie "matériel utilisé" et l'avons optimisé afin de séparer les choses terminées de la chronologie afin que ce soit plus clair. Nous avons commencé à réfléchir à un programme permettant d'échantillonner le son et l'écrire dans une mémoire, nous avons écrit ceci:

const int pinMicro = A0; void setup() {

// put your setup code here, to run once:
Serial.begin(9600);

}

void loop() {

// put your main code here, to run repeatedly:
if (analogRead(pinMicro) >= 30) {
  Serial.println("dévérouillage");
}

}

Cependant, sur le microcontrôleur il n'y a pas de convertisseur et il faut donc utiliser un comparateur, nous allons essayer de modifier cela à la prochaine séance.

Conclusion