Arduino Lightning Detector W / Real Time Graphing: 3 trin (med billeder)

Arduino Lightning Detector W / Real Time Graphing: 3 trin (med billeder)

Indholdsfortegnelse:

Anonim

Hej! Dette er min første instruktion, og jeg vil elske feedback!

Dette projekt startede en dag da jeg keder mig. Jeg Googled 'Arduino Projekter', og dette kom op på Arduino legepladsen.

BEMÆRK: Dette var ikke min oprindelige ide, jeg opdagede det på Arduino legepladsen, men her er den oprindelige artikel: http://runtimeprojects.com/2016/02/a-lightning-detector-for-arduino/. Jeg har foretaget ændringer til mit projekt, som jeg tror kan gøre det bedre.

Du mangler:

  1. x1 Arduino

    (Jeg startede på en Uno men endte med at bruge en Micro)

  2. x1 Breadboard

    (Du kan til sidst ende med at bruge en Perfboard, tror jeg)

  3. x4-7 jumper ledninger

    (For at forbinde komponenter)

  4. x1 Spændingsdeler Circuit

    Du har to muligheder:

    1. x1 Potentiometer
    2. x3 modstande
      1. x2 10K ohm
      2. x1 3,3 M ohm

forsyninger:

Trin 1: Background Lightning Knowledge

Når lynnedslag rammer det frigiver mange slags energi. De fleste mennesker ved, at det udsender lys og lyd, men Lightning frigiver også radiobølger, specielt i VLF (Very Low Frequency) til LF (Low Frequency) intervallerne eller ca. 3 til 300 KHz. Med Arduino kan frekvenser på ca. 7 KHz fanges, hvilket er godt inden for grænserne for udsender frekvenser.

Med dette projekt skal vi kunne hente lyn indenfor omkring 12,5 mil (20 kilometer).

Trin 2: Kredsløbet

ADVARSEL: Lyn kan fremkalde både positive og negative strømninger i ledningen, så følg venligst vejledningen omhyggeligt 100% Sørg for, at din spændingsdeler arbejder for at undgå at skade din Arduino.

Kredsløbet er meget simpelt. Den mest komplicerede del kaldes en spændingsdeler, for at forhindre, at vores Arduino bliver beskadiget af strømmen induceret i ledningen af ​​Lightning.

Plukker dit gift: Spændingsdividere

Der er et par forskellige måder, du kan implementere en spændingsdeler i dit kredsløb.

Mulighed 1: Modstand

Hvis du skal bruge modstande, skal du vedhæfte dem som i 2. billede.

Mulighed 2: Potentiometer

Hvis du skal bruge et potentiometer, kan du vedhæfte det som i kredsløbsdiagrammet, det første billede.

Trin 3: Koden

Der er to forskellige programmer, der kører til normal drift.

Download min kode & Kredsløbsdiagrammer fra Github.

  1. Arduino

    Arduino-programmet er meget enkelt.

    void setup () {

    Serial.begin (115200); // Setup seriel kommunikation ved 115200 baud.

    pinMode (A4, INPUT); // Definer analog pin 4 som input

    }

    void loop () {

    Serial.println (analogRead (A4)); // Print værdien fra pin A4 til seriel port

    }

  2. Forarbejdning

    Behandlingsprogrammet er lidt mere kompliceret

    import processing.serial. *;

    Serie myPort; // Seriel porten

    int xPos = 1; // horisontal position af grafen float inByte = 0;

    void setup () {

    // Indstil vinduets størrelse (Bemærk: Kan skaleres til din skærm):

    størrelse (1000, 750);

    // Liste over alle tilgængelige serielle porte

    // Hvis du bruger Behandling 2.1 eller nyere, skal du bruge Serial.printArray ()

    println (Serial.list ());

    // Åbn hvilken som helst port, den du bruger.

    // Skift 0 til hvad som helst # i listen du bruger (-1)

    myPort = nyt serielt (dette, Serial.list () 0, 115200);

    // generer ikke en serialEvent (), medmindre du får en newline-karakter:

    myPort.bufferUntil (' n');

    // indledende baggrund:

    baggrund (0);

    }

    void draw () {

    // slå en streg i sandet:

    slagtilfælde (127, 34, 255);

    linje (xPos, højde, xPos, højde - inByte);

    // i kanten af ​​skærmen, gå tilbage til begyndelsen:

    hvis (xPos> = bredde) {

    xPos = 0;

    baggrund (0);

    }

    ellers {

    // øge den vandrette position:

    xPos ++;

    }

    }

    void serialEvent (Serial myPort) {

    // få ASCII-strengen:

    String inString = myPort.readStringUntil (' n');

    hvis (inString! = null) {

    // trimme ethvert hvide rum

    inString = trimme (inString);

    // konvertere til et int og kort til skærmens højde:

    inByte = float (inString);

    println (inByte);

    inByte = map (inByte, 0, 1023, 0, højde);

    }

    }