Arduino Lightning Detector W / Real Time Graphing: 3 Steps (with Pictures)

Arduino Lightning Detector W / Real Time Graphing: 3 Steps (with Pictures)

Isi kandungan:

Anonim

Hi! Ini adalah Instruktable pertama saya, dan saya akan suka maklum balas!

Projek ini bermula satu hari ketika saya bosan. Saya Googled 'Arduino Projects,' dan ini muncul di taman permainan Arduino.

CATATAN: Ini bukan idea asal saya, saya dapati ia di taman permainan Arduino, tetapi di sini adalah artikel asal: http://runtimeprojects.com/2016/02/a-lightning-detector-for-arduino/. Saya telah membuat pengubahsuaian kepada projek saya, yang saya fikir boleh membuatnya lebih baik.

Awak perlu:

  1. x1 Arduino

    (Saya mula menggunakan Uno tetapi akhirnya menggunakan Mikro)

  2. x1 Breadboard

    (Anda akhirnya boleh menggunakan Perfboard, saya rasa)

  3. x4-7 Jumper wires

    (Untuk menyambung komponen)

  4. x1 Voltan Pembahagi Circut

    Anda mempunyai dua pilihan:

    1. x1 Potentiometer
    2. x3 Resistors
      1. x2 10k ohm
      2. x1 3.3m Ohm

Bekalan:

Langkah 1: Pengetahuan Kilat Latar Belakang

Apabila kilat menyerang ia mengeluarkan pelbagai jenis tenaga. Kebanyakan orang tahu ia mengeluarkan cahaya & bunyi, tetapi Lightning juga melepaskan gelombang radio, khususnya dalam VLF (Frekuensi Sangat Rendah) kepada julat LF (Low Frequency), atau sekitar 3 hingga 300 KHz. Dengan Arduino, frekuensi kira-kira 7 KHz boleh ditangkap, yang berada dalam had frekuensi yang dipancarkan.

Dengan projek ini, kita sepatutnya dapat mengambil petir dalam jarak kira-kira 12.5 batu (20 kilometer).

Langkah 2: Litar

AMARAN: Kilat boleh mendorong kedua-dua arus positif dan negatif dalam wayar, jadi sila ikut arahan dengan berhati-hati 100% pasti pembahagi voltan anda berfungsi untuk mengelakkan merosakkan Arduino anda.

Litar ini sangat mudah. Bahagian yang paling rumit dipanggil pembahagi voltan, ini adalah untuk mengelakkan Arduino kita daripada rosak oleh arus yang disebabkan oleh wayar oleh Lightning.

Memilih racun anda: Pembahagi Voltan

Terdapat beberapa cara yang berbeza yang anda boleh melaksanakan pembahagi voltan ke dalam litar anda.

Pilihan 1: Perintang

Jika anda akan menggunakan perintang, anda perlu melampirkannya seperti dalam gambar ke-2.

Pilihan 2: Potentiometer

Jika anda akan menggunakan potentiometer, anda boleh melampirkannya seperti dalam rajah litar, gambar pertama.

Langkah 3: Kod

Terdapat dua program yang berlainan untuk operasi normal.

Muat turun kod saya & gambar rajah litar dari Github.

  1. Arduino

    Program Arduino sangat mudah.

    void setup () {

    Serial.begin (115200); // Menetapkan komunikasi bersiri pada 115200 baud.

    pinMode (A4, INPUT); // Tentukan pin analog 4 sebagai input

    }

    kekosongan gelung () {

    Serial.println (analogRead (A4)); // Cetak nilai dari pin A4 ke port bersiri

    }

  2. Pemprosesan

    Program Pemprosesan agak rumit

    import processing.serial. *;

    MyPort Serial; // Pelabuhan siri

    int xPos = 1; / // kedudukan mendatar graf float inByte = 0;

    void setup () {

    // tetapkan saiz tetingkap (Nota: boleh disingkat untuk skrin anda):

    saiz (1000, 750);

    // Senaraikan semua port siri yang tersedia

    // jika menggunakan Pengolahan 2.1 atau lebih baru, gunakan Serial.printArray ()

    println (Serial.list ());

    // Buka apa sahaja port yang anda gunakan.

    // Tukar 0 ke apa sahaja # dalam senarai yang anda gunakan (-1)

    myPort = Serial baru (ini, Serial.list () 0, 115200);

    // tidak menjana serialEvent () melainkan anda mendapat watak baru:

    myPort.bufferUntil (' n');

    // set latar belakang inital:

    latar belakang (0);

    }

    kekosongan lukisan () {

    // menarik garisan:

    strok (127, 34, 255);

    talian (xPos, ketinggian, xPos, ketinggian - inByte);

    // di tepi skrin, kembali ke permulaan:

    jika (xPos> = lebar) {

    xPos = 0;

    latar belakang (0);

    }

    lain {

    // tambah kedudukan mendatar:

    xPos ++;

    }

    }

    tidak sah serialEvent (Serial myPort) {

    // dapatkan rentetan ASCII:

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

    jika (inString! = null) {

    / // trim mana-mana ruang kosong:

    inString = trim (inString);

    // tukar ke int dan peta ke ketinggian skrin:

    inByte = float (inString);

    println (inByte);

    inByte = peta (inByte, 0, 1023, 0, ketinggian);

    }

    }