[TUTO]- Fabriquer une bombe airsoft avec Arduino

Voir le sujet précédent Voir le sujet suivant Aller en bas

[TUTO]- Fabriquer une bombe airsoft avec Arduino

Message  Predy & Mima le Jeu 27 Fév - 15:18

Suite à de nombreuses demandes par MP, je décide de faire un tuto pour la réalisation de notre bombe airsoft.

1° Listing du matériel nécessaire.
2° Code Arduino.
3° Schémas de câblage.

Le tuto sera fait au fur et à mesure du temps disponible pour sa réalisation.
Des oublies sont possibles, merci d'attendre la fin officielle du tuto avant de réaliser votre modèle.

Je ne suis pas responsable de la casse, du montage ou de l'usage que vous en faite !!!


Dernière édition par Predy & Mima le Mer 5 Mar - 18:55, édité 1 fois

Predy & Mima

Grade : Adjudant - FSG
Messages : 672
Date d'inscription : 06/04/2013
Age : 33
Localisation : Tarn

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: [TUTO]- Fabriquer une bombe airsoft avec Arduino

Message  Predy & Mima le Jeu 27 Fév - 16:05

1° - Listing du matériel nécessaire.

- Une mallette vide
- Un truc qui va faire office de fioles (optionnel)
- Une carte Arduino Uno R3
- Le logiciel pour créer le code: http://arduino.cc/en/Main/Software#.Uw9sXpWPKP8 (prendre le 1.0.5 Windows zip files)
- La librairie pour le clavier: http://arduino.cc/en/Reference/MouseKeyboard#.Uw9u55WPKP8
- 1 Planche à pain (breadboard) assez grande, 400 points
- 2 Planches à pain (breadboard) petites, 170 points
- 1 Led Rouge (pour décompte du temps et animation explosion)
- 1 Led Verte (pour le témoin de désamorçage et animation explosion)
- 2 Led de couleur au choix  (pour les fioles de bactéries ou gaz ect) (Optionnel)
- 1 Transistor (qui va nous servir de relais)
- 1 Interrupteur 3 positions (pour signaler la position de la bombe si isolée)
- 1 Interrupteur 2 positions ou un contacteur à clé (pour allumer le système)  
- 1 Interrupteur poussoir (pour signalement pose bombe)
- 1 Sirène 8 - 12 V
- 1 Relais (pour alimenter la sirène)
- 1 Ecran LCD 16 x2 avec rétro éclairage
- 1 Clavier 12 touches (4x3) http://cgi.ebay.fr/ws/eBayISAPI.dll?ViewItem&item=231070235636&ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649
- Quelques résistances 330 ohm http://cgi.ebay.fr/ws/eBayISAPI.dll?ViewItem&item=111049669980&ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649
- Quelques résistances 150 ohm http://cgi.ebay.fr/ws/eBayISAPI.dll?ViewItem&item=111259833543&ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649
- 1 Fusible 5A
- 1 Tweeter à lames de voiture ou sono (buzzer piezzo)
- 1 Capteur à mercure assez gros car plus tolérant (contact à mercure qui va servir de capteur anti-soulèvement) (optionnel)
- 1 Soixantaine de fils dupont


Dernière édition par Predy & Mima le Jeu 27 Fév - 18:36, édité 5 fois

Predy & Mima

Grade : Adjudant - FSG
Messages : 672
Date d'inscription : 06/04/2013
Age : 33
Localisation : Tarn

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: [TUTO]- Fabriquer une bombe airsoft avec Arduino

Message  Predy & Mima le Jeu 27 Fév - 16:16

2° - Le code - Mis à jours!

/////////////////////////////
//      Bombe Airsoft      //
/////////////////////////////

#include "LiquidCrystal.h"
#include "Keypad.h"
#include "Tone.h"
#define pound 14

Tone tone1;

int Scount = 0; // compteur secondes
int Mcount = 0; // compteur minutes
int Hcount = 0; // compteur heures
int DefuseTimer = 0;

long secMillis = 0;
long interval = 1000; // delais pour 1 seconde en ms

char password[6]; // nombre de chiffres dans le code
int currentLength = 0; //defini le nombre de caractere écrits par defaut
int i = 0;
int j = 0;
char entered[6];

const int angle = 7;  // capteur d'angle
int etatangle = 0;
int alarme = 4; // tempo alarme
int ledPin2 = 3; // led rouge
int ledPin3 = 2; // led verte

char Hcountset[2];
char Mcountset[2];
char Scountset[2];

LiquidCrystal lcd(8,9,10,11,12,13); // les pins utilisés par le LCD

const byte ROWS = 4; // 4 rows
const byte COLS = 3; // 3 columns
char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
byte rowPins[ROWS] = {5, A5, A4, A2}; // connecté aux pins de sorties des rows clavier
byte colPins[COLS] = {A1, A0, A3}; // connecté aux pins de sorties des column clavier

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );


void setup(){
pinMode(angle, INPUT); //defini le pin du capteur d'angle comme sortie
pinMode(alarme, OUTPUT); // defini le pin du tempo alarme comme sortie
pinMode(ledPin2, OUTPUT); // defini le pin de la led 2 comme sortie
pinMode(ledPin3, OUTPUT); // defini le pin de la led 3 comme sortie
tone1.begin(6);
lcd.begin(16, 2);
Serial.begin(9600);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Definir temps:" );
lcd.setCursor(4,1);
lcd.print("HH:MM:SS" );
while (Hcount < 2)
{
  lcd.setCursor(Hcount + 4, 1);
  lcd.cursor();
  char key = keypad.getKey();
  key == NO_KEY;
  if (key != NO_KEY)
  {
    if ((key != '*')&&(key != '#'))
    {
    lcd.print(key);
    Hcountset[Hcount] = key;
    Hcount++;
    tone1.play(NOTE_C8, 200);
    }
  }
}
Hcount=(int) strtol(Hcountset, (char **)NULL, 10);
  while (Mcount < 2)
{
  lcd.setCursor(Mcount + 7, 1);
  lcd.cursor();
  char key = keypad.getKey();
  key == NO_KEY;
  if (key != NO_KEY)
  {
    if ((key != '*')&&(key != '#'))
    {
      if(((Mcount==0) && atoi(&key)<=5)||Mcount>0){
        lcd.print(key);
        Mcountset[Mcount] = key;
        Mcount++;
        tone1.play(NOTE_C8, 200);
      }
    }
  }
}
Mcount=(int) strtol(Mcountset, (char **)NULL, 10);
while (Scount < 2)
{
  lcd.setCursor(Scount + 10, 1);
  lcd.cursor();
  char key = keypad.getKey();
  key == NO_KEY;
  if (key != NO_KEY)
  {
    if ((key != '*')&&(key != '#'))
    {
      if(((Scount==0) && atoi(&key)<=5)||Scount>0)
       {
          lcd.print(key);
          Scountset[Scount] = key;
          Scount++;
          tone1.play(NOTE_C8, 200);
       }
    }
  }
}
Scount=(int) strtol(Scountset, (char **)NULL, 10);
delay(1000);

lcd.clear();
lcd.setCursor(0,0);
lcd.print("Entrer Code : " );
while (currentLength < 6)
{
  lcd.setCursor(currentLength + 5, 1);
  lcd.cursor();
  char key = keypad.getKey();
  if (key == '#')
  {
    currentLength = 0;
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Entrer Code: " );
  }
  else
  key == NO_KEY;
  if (key != NO_KEY)
  {
    if ((key != '*')&&(key != '#'))
    {
    lcd.print(key);
    password[currentLength] = key;
    currentLength++;
    tone1.play(NOTE_C8, 200);
    }
  }
}


if (currentLength == 6)
{
  delay(500);
  lcd.noCursor();
  lcd.clear();
  lcd.home();
  lcd.print("Code Saisi: " );
  lcd.setCursor(5,1);
  lcd.print(password[0]);
  lcd.print(password[1]);
  lcd.print(password[2]);
  lcd.print(password[3]);
  lcd.print(password[4]);
  lcd.print(password[5]);

  tone1.play(NOTE_C8, 500);
  delay(3000);
  lcd.clear();
  currentLength = 0;
}
}

void loop()
{
timer();
etatangle = digitalRead(angle);
char key2 = keypad.getKey();

if (etatangle == HIGH)
    {
    Hcount = Hcount - 99; // debite 99 heures
    Mcount = Mcount - 59;// debite 59 minutes
    Scount = Scount - 59; // debite 59 secondes
    }
if (interval <= 1)  // si l'intervalle seconde est inferieure ou égale à 0
    {
    Hcount = Hcount - 99; // debite 99 heures
    Mcount = Mcount - 59; // debite 59 minutes
    Scount = Scount - 59; // debite 59 secondes
    }

if (key2 == '*')
  {  
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Code: " );
   
    while (currentLength < 6)
      {
       
        timer();
       
        char key2 = keypad.getKey();
        if (key2 == '#')
          {
            currentLength = 0;
            lcd.clear();
            lcd.setCursor(0,0);
            lcd.print("Code: " );
          }
        else                
        if (key2 != NO_KEY)  
          {
           
            lcd.setCursor(currentLength + 7, 0);
            lcd.cursor();
           
            lcd.print(key2);
            entered[currentLength] = key2;
            currentLength++;
            tone1.play(NOTE_C8, 200);
            delay(100);
            lcd.noCursor();
            lcd.setCursor(currentLength + 6, 0);
            lcd.print("*");
            lcd.setCursor(currentLength + 7, 0);
            lcd.cursor();
          }
      }

    if (currentLength == 6)
      {
        if (entered[0] == password[0] && entered[1] == password[1] && entered[2] == password[2] && entered[3] == password[3] && entered[4] == password[4] && entered[5] == password[5])
          {
            digitalWrite (angle, LOW); // desactive le capteur d'angle
            tone1.play(NOTE_C8, 250);
            delay(350);
            tone1.play(NOTE_C8, 250);
            delay(350);
            tone1.play(NOTE_C8, 250);
            delay(350);
            tone1.play(NOTE_C8, 500);
            lcd.noCursor();
            lcd.clear();
            lcd.home();
            lcd.print("Bombe DESAMORCEE" );
            currentLength = 0;
            digitalWrite(ledPin3, HIGH);
            delay(2500);
            lcd.setCursor(0,1);
            lcd.print("Restart" );
            delay(1000000);
          }
    else
      {
        tone1.play(NOTE_C4, 800);  
        lcd.noCursor();
        lcd.clear();
        lcd.home();
        lcd.print("Erreur Code!" );
        digitalWrite(ledPin2, HIGH);
        delay(125);
        digitalWrite(ledPin2, LOW);
        delay(125);
        digitalWrite(ledPin2, HIGH);
        delay(125);
        digitalWrite(ledPin2, LOW);
        delay(125);
        digitalWrite(ledPin2, HIGH);
        delay(125);
        digitalWrite(ledPin2, LOW);
        delay(125);
        digitalWrite(ledPin2, HIGH);
        interval = interval - 330; // debite l'intervale seconde de 33%
 
        if (Hcount > 0)
          {
            Hcount = Hcount - 99; // debite le compteur d'heures de 99 heures
          }
 
        if (Mcount > 0)
          {
            Mcount = Mcount - 3; // debite le compteur de minutes de 4 minutes
          }
        if (Scount > 0)
          {
            Scount = Scount - 59; // debite le compteur de secondes de 59 secondes
          }
         
      delay(1500);
      currentLength = 0;

      }
    }
  }
}

void timer()
{
Serial.print(Scount);
Serial.println();

if (Hcount <= 0) //
{
  if ( Mcount < 0)
  {
    lcd.noCursor();
    lcd.clear();
    lcd.home();
    lcd.setCursor (3,0);
    lcd.print("BOOOOOOOOM");
    lcd.setCursor (5,1);
    lcd.print("PERDU!" );
    digitalWrite(alarme, HIGH); // active le tempo de l'alarme
    digitalWrite (angle, LOW); // desactive le capteur d'angle
   
    while (Mcount < 0)
    {
      digitalWrite(ledPin2, HIGH);
      tone1.play(NOTE_A2, 90);
      delay(50);
      digitalWrite(ledPin2, LOW);
      tone1.play(NOTE_A3, 90);
      delay(50);
      digitalWrite(ledPin3, HIGH);
      tone1.play(NOTE_A2, 90);
      delay(50);
      digitalWrite(ledPin3, LOW);
      tone1.play(NOTE_A3, 90);
      delay(50);
    }
  }
}

lcd.setCursor (1,1);
lcd.print ("Temps:" );

if (Hcount >= 10)
  {
    lcd.setCursor (8,1);
    lcd.print (Hcount);
  }
if (Hcount < 10)
  {
    lcd.setCursor (8,1);
    lcd.print ("0" );
    lcd.setCursor (9,1);
    lcd.print (Hcount);
  }
lcd.print (":" );

if (Mcount >= 10)
  {
    lcd.setCursor (11,1);
    lcd.print (Mcount);
  }
if (Mcount < 10)
  {
    lcd.setCursor (11,1);
    lcd.print ("0" );
    lcd.setCursor (12,1);
    lcd.print (Mcount);
  }
 
lcd.print (":" );

if (Scount >= 10)
  {
    lcd.setCursor (14,1);
    lcd.print (Scount);
  }
if (Scount < 10)
  {
    lcd.setCursor (14,1);
    lcd.print ("0" );
    lcd.setCursor (15,1);
    lcd.print (Scount);
  }

if (Hcount <0)
  {
    Hcount = 0;
  }

if (Mcount <0)
  {
    Hcount --;
    Mcount = 59;
  }

if (Scount <1)
  {
    Mcount --;
    Scount = 59;
  }

if (Scount > 0)
  {
    unsigned long currentMillis = millis();

    if(currentMillis - secMillis > interval)
      {
        tone1.play(NOTE_G6, 200);
        secMillis = currentMillis;
        Scount --;
        digitalWrite(ledPin2, HIGH);
        delay(10);
        digitalWrite(ledPin2, LOW);
        delay(10);
      }
  }
}


Dernière édition par Predy & Mima le Mer 5 Mar - 18:56, édité 2 fois

Predy & Mima

Grade : Adjudant - FSG
Messages : 672
Date d'inscription : 06/04/2013
Age : 33
Localisation : Tarn

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: [TUTO]- Fabriquer une bombe airsoft avec Arduino

Message  Predy & Mima le Mar 4 Mar - 15:06

Le Pont diviseur de tension:

A quoi ça sert?:
A avoir une ligne comprise entre 3 et 5 V de plus pour alimenter diverses choses sans utiliser la sortie 5V de la carte Arduino, cela afin d'éviter de trop tirer sur la carte.

Avec une batterie 7.40V, R1=150ohm et R2=300ohm, on obtient 4.93V sur la 2ème ligne
Avec une batterie 8.40V, R1=300ohm et R2=300ohm, on obtient 4.20V sur la 2ème ligne


Predy & Mima

Grade : Adjudant - FSG
Messages : 672
Date d'inscription : 06/04/2013
Age : 33
Localisation : Tarn

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: [TUTO]- Fabriquer une bombe airsoft avec Arduino

Message  Predy & Mima le Mar 4 Mar - 19:00

Branchements de la carte (il faudra récupérer la connectique ou l'acheter, le + est au centre!
On branchera un interrupteur pour éteindre le système plus tard.



Dernière édition par Predy & Mima le Mer 5 Mar - 18:59, édité 3 fois

Predy & Mima

Grade : Adjudant - FSG
Messages : 672
Date d'inscription : 06/04/2013
Age : 33
Localisation : Tarn

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: [TUTO]- Fabriquer une bombe airsoft avec Arduino

Message  Predy & Mima le Mar 4 Mar - 19:03

Branchements de l'écran LCD



Dernière édition par Predy & Mima le Mer 5 Mar - 19:03, édité 3 fois

Predy & Mima

Grade : Adjudant - FSG
Messages : 672
Date d'inscription : 06/04/2013
Age : 33
Localisation : Tarn

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: [TUTO]- Fabriquer une bombe airsoft avec Arduino

Message  Predy & Mima le Mar 4 Mar - 19:05

Branchements du buzzer


Predy & Mima

Grade : Adjudant - FSG
Messages : 672
Date d'inscription : 06/04/2013
Age : 33
Localisation : Tarn

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: [TUTO]- Fabriquer une bombe airsoft avec Arduino

Message  Predy & Mima le Mer 5 Mar - 19:10

Branchement du clavier


Predy & Mima

Grade : Adjudant - FSG
Messages : 672
Date d'inscription : 06/04/2013
Age : 33
Localisation : Tarn

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: [TUTO]- Fabriquer une bombe airsoft avec Arduino

Message  Predy & Mima le Mer 5 Mar - 19:14

Branchements des leds


Predy & Mima

Grade : Adjudant - FSG
Messages : 672
Date d'inscription : 06/04/2013
Age : 33
Localisation : Tarn

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: [TUTO]- Fabriquer une bombe airsoft avec Arduino

Message  Predy & Mima le Jeu 21 Aoû - 17:27

Branchements transistor:


Dernière édition par Predy & Mima le Jeu 21 Aoû - 17:30, édité 1 fois

Predy & Mima

Grade : Adjudant - FSG
Messages : 672
Date d'inscription : 06/04/2013
Age : 33
Localisation : Tarn

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: [TUTO]- Fabriquer une bombe airsoft avec Arduino

Message  Predy & Mima le Jeu 21 Aoû - 17:29

Branchements interrupteurs:


Predy & Mima

Grade : Adjudant - FSG
Messages : 672
Date d'inscription : 06/04/2013
Age : 33
Localisation : Tarn

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: [TUTO]- Fabriquer une bombe airsoft avec Arduino

Message  Predy & Mima le Jeu 21 Aoû - 17:31

Branchements relais

Predy & Mima

Grade : Adjudant - FSG
Messages : 672
Date d'inscription : 06/04/2013
Age : 33
Localisation : Tarn

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: [TUTO]- Fabriquer une bombe airsoft avec Arduino

Message  Predy & Mima le Jeu 21 Aoû - 17:34

Branchements alarme:

Predy & Mima

Grade : Adjudant - FSG
Messages : 672
Date d'inscription : 06/04/2013
Age : 33
Localisation : Tarn

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: [TUTO]- Fabriquer une bombe airsoft avec Arduino

Message  Predy & Mima le Jeu 21 Aoû - 17:38

Branchements du capteur d'angle:

Predy & Mima

Grade : Adjudant - FSG
Messages : 672
Date d'inscription : 06/04/2013
Age : 33
Localisation : Tarn

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: [TUTO]- Fabriquer une bombe airsoft avec Arduino

Message  Predy & Mima le Jeu 21 Aoû - 17:40

Branchements interrupteur général:



Predy & Mima

Grade : Adjudant - FSG
Messages : 672
Date d'inscription : 06/04/2013
Age : 33
Localisation : Tarn

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: [TUTO]- Fabriquer une bombe airsoft avec Arduino

Message  Predy & Mima le Jeu 21 Aoû - 17:40

FINI!

Predy & Mima

Grade : Adjudant - FSG
Messages : 672
Date d'inscription : 06/04/2013
Age : 33
Localisation : Tarn

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: [TUTO]- Fabriquer une bombe airsoft avec Arduino

Message  Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum