Buzz Lightning

Proximity sensor and alert system useful for home, workplace, and museum security.

EasyFull instructions provided21
Buzz Lightning

Things used in this project

Hardware components

Grove Starter Kit for LaunchPad
Seeed Grove Starter Kit for LaunchPad
×1
Grove - Ultrasonic Ranger
Seeed Grove - Ultrasonic Ranger
×1
grove 4-Digit Display
×1
Grove - Relay
Seeed Grove - Relay
×1
Grove - OLED Display 1.12'' V2
Seeed Grove - OLED Display 1.12'' V2
×1
Seeed Grove Piezzo Buzzer
×1

Software apps and online services

Energia
Texas Instruments Energia

Story

Read more

Schematics

Buzz Lightining Schematic

Grove Shield is used in place of Grove Base Boosterpack as this part did not exist in fritzing parts collection. Ultrasonic Ranger, Launchpad, and Relay are custom imported parts.

Schematics Image

Grove Shield is used in place of Grove Base Boosterpack as fritzing did not contain this part.
Buzz lightning schematic bb 186kxuldhl

Code

Buzz Lightning Code

C/C++
/*
  Ultrasonic-Ranger
 * Note: position a jumper to connect pin39 and pin19 when you use
         LaunchPad MSP430G2553

 This example code is in the public domain.
 http://www.seeedstudio.com/wiki/Grove_-_Ultrasonic_Ranger
 */

#include "TM1637.h"
#include "Ultrasonic.h"
/* Macro Define */
#define CLK               40                  /* 4-digital display clock pin */
#define DIO               39                 /* 4-digiral display data pin */
#define BLINK_LED         RED_LED            /* blink led */
#define ULTRASONIC_PIN    38                 /* pin of the Ultrasonic Ranger */
#define LED               RED_LED           /* LED pin*/
#define ON                HIGH              /* led on */
#define OFF               LOW              /* led off */
#define _handle_led(x)    digitalWrite(LED, x)  /* handle led */
#define BUZZER_PIN        24            /* sig pin of the buzzer */
#define RELAY_PIN    9

/* Global Varibles */
TM1637 tm1637(CLK, DIO);                  /* 4-digital display object */
Ultrasonic ultrasonic(ULTRASONIC_PIN);    /* Ultrasonic Ranger object */
int distance = 0;                         /* varible to store the distance to obstacles in front */
int blink_interval = 0;                   /* led delay time */
int8_t bits[4] = {0};                     /* array to store the single bits of the value */
int length = 10;         /* the number of notes */
char notes[] = "aa";    /* the notes "ccggaaffeeddc "*/
int beats[] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 };  /* the beats*/
int tempo = 300;    /* the tempo */
int THRESHOLD_DIST = 20; /* distance in cm */

/* the setup() method runs once, when the sketch starts */
void setup() {
    Serial.begin(9600);
    /* Initialize 4-digital display */
    tm1637.init();
    tm1637.set(BRIGHT_TYPICAL);
    /* Initialize led pin */
    pinMode(LED, OUTPUT);
    digitalWrite(LED, LOW);
    
    /* declare the red_led pin as an OUTPUT */
    pinMode(RED_LED, OUTPUT);

    /* set buzzer pin as output */
    pinMode(BUZZER_PIN, OUTPUT);
    pinMode(RELAY_PIN, OUTPUT);

}

/* the loop() method runs over and over again */
void loop() {

    distance = ultrasonic.MeasureInCentimeters(); 
 /* read the value from the sensor */
     if(distance < THRESHOLD_DIST){
      
      Serial.print("in if");
      digitalWrite(RELAY_PIN, HIGH);   // turn the relay on (HIGH is the voltage level)
      delay(100);                     // wait for a second
      digitalWrite(RELAY_PIN, LOW);    // turn the relay off by making the voltage LOW
      delay(100);               // wait for a second
      for(int i = 0; i < length; i++) {
        if(notes[i] == ' ') {
            delay(beats[i] * tempo);
        } else {
            playNote(notes[i], beats[i] * tempo);
        }
        delay(tempo / 2);    /* delay between notes */
    }
    } else {
      Serial.print("off");
        digitalWrite(BUZZER_PIN, LOW);
        digitalWrite(RELAY_PIN, LOW);
    }
    Serial.print("distance =");
    Serial.println(distance);
    memset(bits, 0, 4);                             /* reset array when we use it */
    for(int i = 3; i >= 0; i--) {
        /* get single bits of the analog value */
        bits[i] = distance % 10;
        distance = distance / 10;
        tm1637.display(i, bits[i]);                 /* display by 4-digital display */
    }
    delay(100);
    Serial.print("thresh =");
    Serial.println(THRESHOLD_DIST);
    Serial.print("dist < thresh");
    Serial.println(distance < THRESHOLD_DIST);
}

void playTone(int _tone, int duration) {

    for(long i = 0; i < duration * 1000L; i += _tone*2 ) {
        digitalWrite(BUZZER_PIN, HIGH);
        delayMicroseconds(_tone);
        digitalWrite(BUZZER_PIN, LOW);
        delayMicroseconds(_tone);
    }
}
/* play notes */
void playNote(char note, int duration) {
    char name[] = {'c', 'd', 'e', 'f', 'g', 'a', 'b', 'c'};
    int _tone[] = {1915, 1700, 1519, 1432, 1275, 1136, 1014, 956};
    /* play the tone corresponding to the tone name */
    for(int i = 0; i < 8; i++) {
        if(name[i] == note) {
            playTone(_tone[i], duration);
        }
    }
}

Credits

Samantha Fuentes

Samantha Fuentes

0 projects • 1 follower
Sharon Taylor

Sharon Taylor

0 projects • 1 follower
Oluwapelumi Fafowora

Oluwapelumi Fafowora

0 projects • 0 followers
Julian Hudspeth

Julian Hudspeth

0 projects • 0 followers
Yvette Martinez

Yvette Martinez

0 projects • 0 followers
Alexus Arizola

Alexus Arizola

0 projects • 0 followers

Comments

Add projectSign up / Login