15 Dangerously Mad Projects for the Evil Genius

Biblioteca enigma, sección de libros de consulta general en diferentes formatos
Avatar de Usuario
Enigma
Administrador del Sitio
Administrador del Sitio
Mensajes: 1268
Registrado: 20 Oct 2013, 16:26
Genero: Mujer
Profesion: Webmaster CEO SEO
Ubicacion: Matrix
Navegador: Chrome
Contactar:

15 Dangerously Mad Projects for the Evil Genius

Mensaje sin leer por Enigma » 13 Feb 2016, 11:59

15 Dangerously Mad Projects for the Evil Genius

Imagen

UNLEASH YOUR INNER MAD SCIENTIST!

This wickedly inventive guide explains how to design and build 15 fiendishly fun electronics projects. Filled with photos and illustrations, 15 Dangerously Mad Projects for the Evil Genius includes step-by-step directions, as well as a construction primer for those who are new to electronics projects.

Using easy-to-find components and equipment, this do-it-yourself book shows you how to create a variety of mischievous gadgets, such as a remote-controlled laser, motorized multicolored LEDs that write in the air, and a surveillance robot. You’ll also learn to use the highly popular Arduino microcontroller board with three of the projects.

15 Dangerously Mad Projects for the Evil Genius:

Features step-by-step instructions and helpful illustrations
Covers essential safety measures
Reveals the scientific principles behind the projects
Removes the frustration factor–all required parts are listed, along with sources
Build these devious devices to amaze your friends and confound your enemies!

Coil gun
Trebuchet
Ping pong ball minigun
Mini laser turret
Balloon-popping laser gun
Touch-activated laser sight
Laser-grid intruder alarm
Persistence-of-vision display
Covert radio bug
Laser voice transmitter
Flash bomb
High-brightness LED strobe
Levitation machine
Snailbot
Surveillance robot
Each fun, inexpensive Evil Genius project includes a detailed list of materials, sources for parts, schematics, and lots of clear, well-illustrated instructions for easy assembly. The larger workbook-style layout and convenient two-column format make following the step-by-step instructions a breeze.

VIDEOS, PHOTOS, AND SOURCE CODE ARE AVAILABLE AT http://WWW.DANGEROUSLYMAD.COM

Make Great Stuff!
TAB, an imprint of McGraw-Hill Professional, is a leading publisher of DIY technology books for makers, hackers, and electronics hobbyists.

Table of contents
Chapter 1 Coil Gun
Chapter 2 Trebuchet
Chapter 3 Ping Pong Ball Minigun
Chapter 4 Mini Laser Turret
Chapter 5 Balloon-popping Laser Gun
Chapter 6 Touch Activated Laser Sight
Chapter 7 Laser-grid Intruder Alarm
Chapter 8 Persistence of Vision Display
Chapter 9 Covert Radio Bug
Chapter 10 Laser Voice Transmitter
Chapter 11 Flash Bomb
Chapter 12 High Brightness LED Strobe
Chapter 13 Levitation Machine
Chapter 14 Light Seeking Microbot
Chapter 15 Surveillance Robot
Appendix A Electronics Construction Primer

Book Details
Paperback: 242 pages
Publisher: McGraw-Hill/TAB Electronics (May 2011)
Language: English
ISBN-10: 0071755675
ISBN-13: 978-0071755672

Download [15.8 MiB]

Código: Seleccionar todo

http://prefiles.com/gmxopjbd28qh/McGraw.Hill.15.Dangerously.Mad.Projects.for.the.Evil.Genius.May.2011.rar
Components
Newark Part codes
These part codes are for Newark Electronics.

Código: Seleccionar todo

Coil Gun - Chapter 1.
Coil Wire - 14M1979
Capacitors - 97K4421
SCR - 30K6045
S1 - 98K4962
R1 - 100Ω 2W - 59K8566
R2 - 100Ω 0.5W - 58K4935
D1 - 5mm Red LED - 45T9676
R3 - 2.7kΩ 0.5W - 38K0287
D2 - 5.1V Zener - 42K2854


Laser Turret - Chapter 4.
IC1 - NE556 - 58K8943
R1, R7 - 1kΩ pot - 26M6734
R2, R4, R6, R9 - 1 kΩ 0.5W - 58K3724
R3, R5, R8, R10 - 10 kΩ 0.5W - 38K5141
R11 - 100Ω 0.5W - 58K3723
T1, T2 - BC548 - 58K8755
C1, C3 - 1µF - 13M5148
C2, C4 - 10 nF - 46P6663
Stripboard - 96K6336

Baloon Popper - Chapter 5.
R1 - 100kΩ pot - 04M8731
R2 - 1 kΩ 0.5W - 58K3724
R3 - 2.2Ω 2W - 78R4797
R4 - 100Ω 0.5W - 58K3723
D1 - 5mm Red LED - 45T9676
T1 - Phototransistor - 62M0339
T2 - FQP33N10 - 20C4478
Connector - 18M9779


Can Jumper - Chapter 5.
R1 - 1MΩ preset pot -04M8535
R2 - 1 kΩ 0.5W - 58K3724
Motor - 07WX1231
D1 - 1N4001 - 10M2938
T1 - Phototransistor - 62M0339
T2 - FQP33N10 - 20C4478
Perf board - 26M2202


Laser Sight - Chapter 6.
R1 - 100Ω 0.5W - 58K3723
R2 - 1MΩ 0.5W - 58K4940
T1 - 2N7000 - 89K1814
Stripboard - 96K6336

Laser Alarm - Chapter 7.
R1 - 1MΩ pot - 14N5359
R2 - 1MΩ 0.5W - 58K4940
R3 - 200Ω 0.5W - 38K5192
R4 - 100Ω 0.5W - 58K3723
T1 - Phototransistor - 62M0339
D1 - 5mm Red LED - 45T9676
T2 - 2N7000 - 89K1814
Buzzer - 97K7578

POV - Chapter 8.
R1-6 - 150Ω 0.5W - 38K0270
R7-18 - 100Ω 0.5W - 58K4935
Stripboard - 96K6336
Headers - 93K5128

POV Motor Controller - Chapter 8.
R1 - 100kΩ pot - 04M8731
R2 - 1 kΩ 0.5W - 58K3724
D1-3 - 1N4001 - 10M2938
C1, C2 - 47nF - 97K4541
T1 - FQP33N10 - 20C4478
Stripboard - 96K6336

Radio Bug - Chapter 9.
R1 - 10kΩ 0.5W - 38K0259
R2-R4 - 47kΩ 0.5W - 38K0305
R5 - 1 kΩ 0.5W - 58K3724
C1, C2 - 1µF - 13M5148
C3 - 100nF - 17F2165
IC1 - 7611 - 57K3882
IC socket - 52K3276
Mic - 25R4387
Stripboard - 96K6336

Bug Detector - Chapter 9.
R1, R3 - 1MΩ 0.5W - 58K4940
R2, R5, R6 - 1 kΩ 0.5W - 58K3724
R4 - 5K pot - 46M2494
C1, C2 - 100µF - 69K7903
D1 - can't find on Newark
Meter - 14J8917

Laser Voice Receiver - Chapter 10.
T1 - Phototransistor - 62M0339
R1 - 10kΩ 0.5W - 38K0259
C1 - 1µF - 13M5148
IC1 - TDA7205 - 07WX3492
Stripboard - 96K6336

Laser Voice Transmitter - Chapter 10.
R1 - 10kΩ 0.5W - 38K0259
R2-R4 - 47kΩ 0.5W - 38K0305
R5, R6 - 1 kΩ 0.5W - 58K3724
R7 - 47Ω 0.5W - 38K0302
C1, C2 - 1µF - 13M5148
T1 - BC548 - 58K8755
IC1 - 7611 - 57K3882
IC socket - 52K3276
Mic - 25R4387
Stripboard - 96K6336

LED Strobe - Chapter 12.
R1 - 1MΩ pot - 14N5359
R2, R3 - 10kΩ 0.5W - 38K0259
C1 - 1µF - 13M5148
T1 - MOSFET FQP27P06 - 58K1524
IC1 - 555 - 89K1486
IC socket - 52K3276
Stripboard - 96K6336

Magnetic Levitation - Chapter 13.
R1 - 100Ω 0.5W - 58K4935
R2 - 10kΩ 0.5W - 38K0259
D1 - IR sender - 58K2525
T1 - IR phototransistor - 96K7018
T2 - FQP33N10 - 20C4478

Snailbot - Chapter 14.
T1, T3 - Phototransistor - 62M0339
T2, T4 - BC548 - 58K8755
Battery - 25C2368
Stripboard - 96K6336

Robot - Chapter 15.
R1-R3 - 10kΩ 0.5W - 38K0259
R4 - 1 kΩ 0.5W - 58K3724
T1 - BC548 - 58K8755
T2 - MOSFET FQP27P06 - 58K1524
T3 - FQP33N10 - 20C4478
4 way term block - 93K2926
2 way terminal block - 93K2924
Chapter 13. Levitation
Simply copy the code from the box below and paste it into a new Arduino project window.
See Chapter 8 for further details on installing and setting up Arduino.

Imagen

Chapter 13. Levitation

Código: Seleccionar todo

// Project 13 - Anti-gravity
// 15 Dangerous Projects for the Evil Genius

#define coilPin 11
#define irPin 13
#define sensorPin 0

int A = 2;
// Adjust B to improve stability 
int B = 60;
int C = 20;
int D = 1000;

int maxPower = 255; 
long powerCountThreshold = 300000;
int objectPresent = 0;
int monitoring = false;

void setup()
{
  pinMode(coilPin, OUTPUT);
  pinMode(irPin, OUTPUT);
  pinMode(sensorPin, INPUT);
  Serial.begin(9600);
  Serial.println("Ready");
  Serial.println("m - toggle monitoring");
  Serial.println("B - increase B");
  Serial.println("b - decrease B");
}

void loop()
{
  static int count = 0;
  static int oldPosition = 0;
  static int ambient = 0;
  static long powerCount = 0;
  count ++;
  
  if (count == 1000)
  {
    ambient = readAmbient();
    count = 0;
    objectPresent = (powerCount < powerCountThreshold);
    powerCount = 0;
  }
  int raw = 1024 - analogRead(sensorPin);
  // position from top (0) of sensor region to the bottom (650)
  int position = raw - ambient; 
  // positive value means going downwards, negative going upwards
  int velocity = position - oldPosition; 
  int power = position / A + velocity * B + C;

  powerCount += power;
  oldPosition = position;
  
  // clip
  if (power > maxPower) power = maxPower;
  if (power < 0) power = 0;

  checkSerial();
  
  if (monitoring)
  {
    Serial.print(position);  Serial.print(","); 
    Serial.println(velocity); 
  }
  
  analogWrite(coilPin, power * objectPresent);
  delayMicroseconds(D);
}

int readAmbient()   //todo try speding up delay in micros
{
  digitalWrite(irPin, LOW);
   // allow time for LED and phototransistor to settle
  delayMicroseconds(100);
  int ambient = 1024 - analogRead(sensorPin);
  digitalWrite(irPin, HIGH);
  return ambient;
}

void checkSerial()
{
  if (Serial.available())
  {
    char ch = Serial.read();
    if (ch == 'm')
    {
      monitoring = ! monitoring;
    }
    if (ch == 'B') 
    {
      B += 5;
      Serial.println(B);
    }
    if (ch == 'b')
    {
      B -= 5;
      Serial.println(B);
    }
  }
}
Chapter 15. Robot
Simply copy the code from one of the boxes below and paste it into a new Arduino project window.
See Chapter 8 for further details on installing and setting up Arduino.

Imagen

Código: Seleccionar todo

// Survelance Bot

#define HALT 0
#define CLOCKWISE 1
#define COUNTER_CLOCKWISE 2

int leftAPin = 7;
int leftBPin = 6;
int rightAPin = 5;
int rightBPin = 4;

int posPin = 14;
int negPin = 15;
int proxPin = 2;
int pirPin = 3;
int buzzPlusPin = 9;
int buzzMinusPin = 8;

float proxThreshold = 500;
float alpha = 0.5;
int pirThreshold = 10;
int monitorDuration = 120; // seconds
int alarmDuration = 10; // seconds

void setup()
{
 pinMode(leftAPin, OUTPUT);
 pinMode(leftBPin, OUTPUT);
 pinMode(rightAPin, OUTPUT);
 pinMode(rightBPin, OUTPUT);
 pinMode(pirPin, INPUT);

 digitalWrite(leftAPin, LOW);
 digitalWrite(leftBPin, LOW);
 digitalWrite(rightAPin, LOW);
 digitalWrite(rightBPin, LOW);
 
 pinMode(posPin, OUTPUT);
 pinMode(negPin, OUTPUT);
 pinMode(buzzPlusPin, OUTPUT);
 pinMode(buzzMinusPin, OUTPUT);
 digitalWrite(posPin, HIGH);
 digitalWrite(negPin, LOW); 
 Serial.begin(9600);
}

void loop()
{
  monitor();
  moveToNewPlace();
  delay(1000);
}
 
void monitor()
{
  int alarmTimeout = 0;
  for (int i = 1; i < monitorDuration; i++)
  {
     int pirValue = analogRead(pirPin);
     if (pirValue > 10)
     {
        digitalWrite(buzzPlusPin, HIGH);
        alarmTimeout = alarmDuration;
     }
     if (alarmTimeout <= 0)
     {
       digitalWrite(buzzPlusPin, LOW);
     }
     alarmTimeout --;
     delay(1000);
  }
}

void moveToNewPlace()
{
  turnInRandomDirection();
  forwardOrProximity(1500);
}

void turnInRandomDirection()
{
   int duration = random(100, 3000);
   left();
   delay(duration);
   halt();
}

void forwardOrProximity(int duration)
{
  int x = 0;
  forward();
  static float lastProx = 0;
  float prox = 0;
  while (x < duration)
  {
    int rawProx = analogRead(proxPin);
    prox = alpha * rawProx + (1 - alpha) * lastProx;
    Serial.print(rawProx); Serial.print(" "); Serial.print(lastProx); Serial.print(" "); Serial.println(prox);
    lastProx = prox;
    if (prox > proxThreshold)
    {
      halt();
      buzz(50); buzz(50);
      delay(100);
      back();
      delay(700);
      halt();
      return;
    }
    x += 10;
    delay(10); 
  }
}

void forward()
{
 setLeft(CLOCKWISE);
 setRight(CLOCKWISE);
}

void back()
{
 setLeft(COUNTER_CLOCKWISE);
 setRight(COUNTER_CLOCKWISE);
}

void left()
{
 setLeft(CLOCKWISE);
 setRight(COUNTER_CLOCKWISE);
}

void right()
{
 setLeft(COUNTER_CLOCKWISE);
 setRight(CLOCKWISE);
}

void halt()
{
 setLeft(HALT);
 setRight(HALT);
}

void setLeft(int rotation)
{
 if (rotation == HALT)
 {
   digitalWrite(leftAPin, LOW);
   digitalWrite(leftBPin, LOW);
 }
 else if (rotation == CLOCKWISE)
 {
   digitalWrite(leftAPin, HIGH);
   digitalWrite(leftBPin, LOW);
 }
 else if (rotation == COUNTER_CLOCKWISE)
 {
   digitalWrite(leftAPin, LOW);
   digitalWrite(leftBPin, HIGH);
 }
}

void setRight(int rotation)
{
 if (rotation == HALT)
 {
   digitalWrite(rightAPin, LOW);
   digitalWrite(rightBPin, LOW);
 }
 else if (rotation == CLOCKWISE)
 {
   digitalWrite(rightAPin, HIGH);
   digitalWrite(rightBPin, LOW);
 }
 else if (rotation == COUNTER_CLOCKWISE)
 {
   digitalWrite(rightAPin, LOW);
   digitalWrite(rightBPin, HIGH);
 }
}

void buzz(int duration)
{
  digitalWrite(buzzPlusPin, HIGH);
  delay(duration);
  digitalWrite(buzzPlusPin, LOW);  
  delay(duration);
}

Chapter 15. Robot Test

Código: Seleccionar todo

// Survelance Bot

#define HALT 0
#define CLOCKWISE 1
#define COUNTER_CLOCKWISE 2

int leftAPin = 7;
int leftBPin = 6;
int rightAPin = 5;
int rightBPin = 4;

int posPin = 14;
int negPin = 15;
int proxPin = 2;
int pirPin = 3;
int buzzPlusPin = 9;
int buzzMinusPin = 8;

float proxThreshold = 500;
float alpha = 0.5;
int pirThreshold = 10;
int monitorDuration = 120; // seconds
int alarmDuration = 10; // seconds

void setup()
{
 pinMode(leftAPin, OUTPUT);
 pinMode(leftBPin, OUTPUT);
 pinMode(rightAPin, OUTPUT);
 pinMode(rightBPin, OUTPUT);
 pinMode(pirPin, INPUT);

 digitalWrite(leftAPin, LOW);
 digitalWrite(leftBPin, LOW);
 digitalWrite(rightAPin, LOW);
 digitalWrite(rightBPin, LOW);
 
 pinMode(posPin, OUTPUT);
 pinMode(negPin, OUTPUT);
 pinMode(buzzPlusPin, OUTPUT);
 pinMode(buzzMinusPin, OUTPUT);
 digitalWrite(posPin, HIGH);
 digitalWrite(negPin, LOW); 
 Serial.begin(9600);
}

void loop()
{
  if (Serial.available())
  {
    char command = Serial.read();
    if (command == 'l')
    {
      left();
    }
    else if (command == 'r')
    {
      right();
    }
    else if (command == 'f')
    {
      forward();
    }
    else if (command == 'b')
    {
      back();
    }
    else if (command == 'h')
    {
      halt();
    }
  }
  Serial.print("PIR="); Serial.println(analogRead(pirPin));
  Serial.print("Prox="); Serial.println(analogRead(proxPin));
  delay(500);
}
 


void forward()
{
 setLeft(CLOCKWISE);
 setRight(CLOCKWISE);
}


void back()
{
 setLeft(COUNTER_CLOCKWISE);
 setRight(COUNTER_CLOCKWISE);
}


void left()
{
 setLeft(CLOCKWISE);
 setRight(COUNTER_CLOCKWISE);
}


void right()
{
 setLeft(COUNTER_CLOCKWISE);
 setRight(CLOCKWISE);
}


void halt()
{
 setLeft(HALT);
 setRight(HALT);
}

void setLeft(int rotation)
{
 if (rotation == HALT)
 {
   digitalWrite(leftAPin, LOW);
   digitalWrite(leftBPin, LOW);
 }
 else if (rotation == CLOCKWISE)
 {
   digitalWrite(leftAPin, HIGH);
   digitalWrite(leftBPin, LOW);
 }
 else if (rotation == COUNTER_CLOCKWISE)
 {
   digitalWrite(leftAPin, LOW);
   digitalWrite(leftBPin, HIGH);
 }
}

void setRight(int rotation)
{
 if (rotation == HALT)
 {
   digitalWrite(rightAPin, LOW);
   digitalWrite(rightBPin, LOW);
 }
 else if (rotation == CLOCKWISE)
 {
   digitalWrite(rightAPin, HIGH);
   digitalWrite(rightBPin, LOW);
 }
 else if (rotation == COUNTER_CLOCKWISE)
 {
   digitalWrite(rightAPin, LOW);
   digitalWrite(rightBPin, HIGH);
 }
}

void buzz(int duration)
{
  digitalWrite(buzzPlusPin, HIGH);
  delay(duration);
  digitalWrite(buzzPlusPin, LOW);  
  delay(duration);
}
Chapter 08. POV
Simply copy the code from one of the boxes below and paste it into a new Arduino project window.
See Chapter 8 for further details on installing and setting up Arduino.

Imagen

Chapter 8. Persistence of Vision

Código: Seleccionar todo

long period = 400;

int ledPins[6][3] = {{4, 3, 2}, {7, 6, 5}, {10, 9, 8}, {13, 12, 11}, {16, 15, 14}, {19, 18, 17}};

int n = 128;
char *message[6] = {
"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000770000000000000",
"11111110022000002200033330004400000000000000000055555500666666600110001100022220003300033000444440000000000000000770000000000000",
"11000000002200022000003300004400000007777000000550000000660000000111001100002200003300033004400000000000000000000770000000000000",
"11111000000220220000003300004400000007777000000555555000666660000111101100002200003300033000444440000000000000000770000000000000",
"11000000000022200000003300004400000000000000000550005500660000000110011100002200003300033000000044000000000000000770000000000000",
"11111110000002000000033330004444400000000000000055555000666666600110001100022220000333330004444440000000000000000770000000000000"
};

void setup()
{
 for (int led = 0; led < 6; led ++)
 {
   for (int color = 0; color < 3; color++)
   {
     pinMode(ledPins[led][color], OUTPUT);
   }
 }
}

void loop()
{
  for (int col = 0; col < n; col++)
  {
    for (int row = 0; row < 6; row++)
    {
      int color = (int)(message[5-row][col] - '0');
      setLed(row, color); 
    }
    delayMicroseconds(period);
    allOff();
    delayMicroseconds(period / 16);
  }
}

void setLed(int led, int color)
{
 digitalWrite(ledPins[led][0], !(color & 1));
 digitalWrite(ledPins[led][1], !(color & 2));
 digitalWrite(ledPins[led][2], !(color & 4)); 
}

void allOff()
{
   for (int led = 0; led < 6; led ++)
 {
   for (int color = 0; color < 3; color++)
   {
     digitalWrite(ledPins[led][color], HIGH);
   }
 }
}
Chapter 8. Test Application

Código: Seleccionar todo

int ledPins[6][3] = {{4, 3, 2}, {7, 6, 5}, {10, 9, 8}, {13, 12, 11}, {16, 15, 14}, {19, 18, 17}};

// 1 - red
// 2 - green
// 3 - yellow
// 4 - blue
// 5 - mauve
// 6 - cyan
// 7 - white


void setup()
{
 for (int led = 0; led < 6; led ++)
 {
   for (int color = 0; color < 3; color++)
   {
     pinMode(ledPins[led][color], OUTPUT);
   }
 }
}

void loop()
{
    for (int row = 0; row < 6; row++)
    {
      for (int color = 0; color < 7; color++)
      {
        allOff();
        setLed(row, color); 
        delay(500);
      }
    }
}

void setLed(int led, int color)
{
 digitalWrite(ledPins[led][0], !(color & 1));
 digitalWrite(ledPins[led][1], !(color & 2));
 digitalWrite(ledPins[led][2], !(color & 4)); 
}

void allOff()
{
   for (int led = 0; led < 6; led ++)
 {
   for (int color = 0; color < 3; color++)
   {
     digitalWrite(ledPins[led][color], HIGH);
   }
 }
}
ERRATA EBOOK
This is the first edition and there may be bugs in the book, so I am always grateful for any reports of errors that people find. I will record any such errors here, so that others can make use of the information. Have fun with the book

Page 152. Figure 12-3 has some of the track breaks in the wrong place. The corrected figure is below:
Imagen

The problem is in columns 14 and 15. The photograph of the back of the stripboard (Figure 12-4) is correct.


Page 191. Figure 15-9. The wiring for the PIR power supply is swapped over. It should be GND to GND and +V to the switch and batter +.



Volver a “Area Ingenieria - Electrónica - Electricidad”